Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/particles/management/src/G4Ions.cc

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

Diff markup

Differences between /particles/management/src/G4Ions.cc (Version 11.3.0) and /particles/management/src/G4Ions.cc (Version 7.1)


  1 //                                                  1 //
  2 // *******************************************      2 // ********************************************************************
  3 // * License and Disclaimer                    <<   3 // * DISCLAIMER                                                       *
  4 // *                                                4 // *                                                                  *
  5 // * The  Geant4 software  is  copyright of th <<   5 // * The following disclaimer summarizes all the specific disclaimers *
  6 // * the Geant4 Collaboration.  It is provided <<   6 // * of contributors to this software. The specific disclaimers,which *
  7 // * conditions of the Geant4 Software License <<   7 // * govern, are listed with their locations in:                      *
  8 // * LICENSE and available at  http://cern.ch/ <<   8 // *   http://cern.ch/geant4/license                                  *
  9 // * include a list of copyright holders.      << 
 10 // *                                                9 // *                                                                  *
 11 // * Neither the authors of this software syst     10 // * Neither the authors of this software system, nor their employing *
 12 // * institutes,nor the agencies providing fin     11 // * institutes,nor the agencies providing financial support for this *
 13 // * work  make  any representation or  warran     12 // * work  make  any representation or  warranty, express or implied, *
 14 // * regarding  this  software system or assum     13 // * regarding  this  software system or assume any liability for its *
 15 // * use.  Please see the license in the file  <<  14 // * use.                                                             *
 16 // * for the full disclaimer and the limitatio << 
 17 // *                                               15 // *                                                                  *
 18 // * This  code  implementation is the result  <<  16 // * This  code  implementation is the  intellectual property  of the *
 19 // * technical work of the GEANT4 collaboratio <<  17 // * GEANT4 collaboration.                                            *
 20 // * By using,  copying,  modifying or  distri <<  18 // * By copying,  distributing  or modifying the Program (or any work *
 21 // * any work based  on the software)  you  ag <<  19 // * based  on  the Program)  you indicate  your  acceptance of  this *
 22 // * use  in  resulting  scientific  publicati <<  20 // * statement, and all its terms.                                    *
 23 // * acceptance of all terms of the Geant4 Sof << 
 24 // *******************************************     21 // ********************************************************************
 25 //                                                 22 //
 26 // G4Ions class implementation                 << 
 27 //                                                 23 //
 28 // Authors: G.Cosmo, 4 April 1996 - Object mod <<  24 // $Id: G4Ions.cc,v 1.9 2003/06/16 16:58:27 gunter Exp $
 29 //          H.Kurashige, 27 June 1998 - First  <<  25 // GEANT4 tag $Name: geant4-07-01 $
 30 // ------------------------------------------- <<  26 //
 31                                                <<  27 // 
 32 #include "G4Ions.hh"                           <<  28 // ----------------------------------------------------------------------
 33                                                <<  29 //      GEANT 4 class implementation file
 34 #include "G4PhysicalConstants.hh"              <<  30 //
 35 #include "G4SystemOfUnits.hh"                  <<  31 //      History: first implementation, based on object model of
                                                   >>  32 //      4th April 1996, G.Cosmo
                                                   >>  33 // **********************************************************************
 36                                                    34 
 37 #include <fstream>                                 35 #include <fstream>
 38 #include <iomanip>                                 36 #include <iomanip>
 39                                                    37 
 40 // clang-format off                            <<  38 #include "G4Ions.hh"
                                                   >>  39 
                                                   >>  40  // ######################################################################
                                                   >>  41 // ###                           Ions                                ###
                                                   >>  42 // ######################################################################
                                                   >>  43 
 41 G4Ions::G4Ions(                                    44 G4Ions::G4Ions(
 42        const G4String&     aName,        G4dou     45        const G4String&     aName,        G4double            mass,
 43        G4double            width,        G4dou     46        G4double            width,        G4double            charge,   
 44        G4int               iSpin,        G4int     47        G4int               iSpin,        G4int               iParity,    
 45        G4int               iConjugation, G4int     48        G4int               iConjugation, G4int               iIsospin,   
 46        G4int               iIsospin3,    G4int     49        G4int               iIsospin3,    G4int               gParity,
 47        const G4String&     pType,        G4int     50        const G4String&     pType,        G4int               lepton,      
 48        G4int               baryon,       G4int     51        G4int               baryon,       G4int               encoding,
 49        G4bool              stable,       G4dou     52        G4bool              stable,       G4double            lifetime,
 50        G4DecayTable        *decaytable , G4boo <<  53        G4DecayTable        *decaytable )
 51        const G4String&     subType,            << 
 52        G4int               anti_encoding,      << 
 53        G4double            excitation,         << 
 54        G4int               isomer              << 
 55 )                                              << 
 56   : G4ParticleDefinition( aName,mass,width,cha     54   : G4ParticleDefinition( aName,mass,width,charge,iSpin,iParity,
 57                           iConjugation,iIsospi <<  55            iConjugation,iIsospin,iIsospin3,gParity,pType,
 58                           lepton,baryon,encodi <<  56            lepton,baryon,encoding,stable,lifetime,decaytable )
 59         shortlived, subType, anti_encoding),   << 
 60     theExcitationEnergy(excitation),           << 
 61     theIsomerLevel(isomer)                     << 
 62 // clang-format on                             << 
 63 {                                                  57 {
 64   if ((aName == "proton") || (aName == "neutro <<  58   SetParticleSubType("generic");
 65     isGeneralIon = false;                      <<  59   // initialize excitation energy/level
 66   }                                            <<  60    theExcitationEnergy = 0.0;
 67   else if ((aName == "GenericIon") || (aName = << 
 68            || (aName == "deuteron") || (aName  << 
 69   {                                            << 
 70     isGeneralIon = false;                      << 
 71   }                                            << 
 72   else if ((aName == "anti_He3") || (aName ==  << 
 73            || (aName == "anti_alpha"))         << 
 74   {                                            << 
 75     isGeneralIon = false;                      << 
 76   }                                            << 
 77   else if ((aName == "iron") || (aName == "oxy << 
 78            || (aName == "helium") || (aName == << 
 79            || (aName == "Ps-1s") || (aName ==  << 
 80   {                                            << 
 81     isGeneralIon = false;                      << 
 82   }                                            << 
 83   else if (aName == "hypertriton" || aName ==  << 
 84            || aName == "anti_hyperalpha" || aN << 
 85            || aName == "doublehyperH4" || aNam << 
 86            || aName == "doublehyperdoubleneutr << 
 87            || aName == "hyperHe5" || aName ==  << 
 88   {                                            << 
 89     isGeneralIon = false;                      << 
 90   }                                            << 
 91   else {                                       << 
 92     isGeneralIon = true;                       << 
 93   }                                            << 
 94                                                << 
 95   // isomer level isset to 9                   << 
 96   // if isomer level is set to 0 for excited s << 
 97   //                                           << 
 98   if ((theExcitationEnergy > 0.0) && (isomer = << 
 99                                                << 
100   if (GetAtomicNumber() == 0) {                << 
101     // AtomicNumber/Mass is positive even for  << 
102     SetAtomicNumber(std::abs(G4int(GetPDGCharg << 
103     SetAtomicMass(std::abs(GetBaryonNumber())) << 
104   }                                            << 
105 }                                                  61 }
106                                                    62 
107 G4Ions::G4FloatLevelBase G4Ions::FloatLevelBas <<  63 G4Ions* G4Ions::IonsDefinition()
108 {                                                  64 {
109   G4Ions::G4FloatLevelBase flb = noFloat;      <<  65   return this;
110   switch (flbChar) {                           << 
111     case 'x':                                  << 
112     case 'X':                                  << 
113       flb = plusX;                             << 
114       break;                                   << 
115     case 'y':                                  << 
116     case 'Y':                                  << 
117       flb = plusY;                             << 
118       break;                                   << 
119     case 'z':                                  << 
120     case 'Z':                                  << 
121       flb = plusZ;                             << 
122       break;                                   << 
123     case 'u':                                  << 
124     case 'U':                                  << 
125       flb = plusU;                             << 
126       break;                                   << 
127     case 'v':                                  << 
128     case 'V':                                  << 
129       flb = plusV;                             << 
130       break;                                   << 
131     case 'w':                                  << 
132     case 'W':                                  << 
133       flb = plusW;                             << 
134       break;                                   << 
135     case 'r':                                  << 
136     case 'R':                                  << 
137       flb = plusR;                             << 
138       break;                                   << 
139     case 's':                                  << 
140     case 'S':                                  << 
141       flb = plusS;                             << 
142       break;                                   << 
143     case 't':                                  << 
144     case 'T':                                  << 
145       flb = plusT;                             << 
146       break;                                   << 
147     case 'a':                                  << 
148     case 'A':                                  << 
149       flb = plusA;                             << 
150       break;                                   << 
151     case 'b':                                  << 
152     case 'B':                                  << 
153       flb = plusB;                             << 
154       break;                                   << 
155     case 'c':                                  << 
156     case 'C':                                  << 
157       flb = plusC;                             << 
158       break;                                   << 
159     case 'd':                                  << 
160     case 'D':                                  << 
161       flb = plusD;                             << 
162       break;                                   << 
163     case 'e':                                  << 
164     case 'E':                                  << 
165       flb = plusE;                             << 
166       break;                                   << 
167     case '\0':                                 << 
168     default:                                   << 
169       break;                                   << 
170   }                                            << 
171   return flb;                                  << 
172 }                                                  66 }
173                                                    67 
174 G4Ions::G4FloatLevelBase G4Ions::FloatLevelBas <<  68 G4int G4Ions::GetAtomicNumber() const 
175 {                                                  69 {
176   // clang-format off                          <<  70   return G4int(GetPDGCharge()/eplus); 
177   static G4Ions::G4FloatLevelBase flb[] =      << 
178   { noFloat,                                   << 
179     plusX, plusY, plusZ, plusU, plusV, plusW,  << 
180     plusR, plusS, plusT, plusA, plusB, plusC,  << 
181   // clang-format on                           << 
182   return (flbIdx >= 0 && flbIdx < 15) ? flb[fl << 
183 }                                                  71 }
184                                                    72 
185 char G4Ions::FloatLevelBaseChar(G4Ions::G4Floa <<  73 G4int G4Ions::GetAtomicMass() const 
186 {                                                  74 {
187   // clang-format off                          <<  75   return GetBaryonNumber();
188   static char flbChar[] = {'\0', 'X', 'Y', 'Z' << 
189                            'S',  'T', 'A', 'B' << 
190   // clang-format on                           << 
191   return flbChar[static_cast<G4int>(flb)];     << 
192 }                                                  76 }
193                                                    77