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 10.5.p1)


  1 //                                                  1 //
  2 // *******************************************      2 // ********************************************************************
  3 // * License and Disclaimer                         3 // * License and Disclaimer                                           *
  4 // *                                                4 // *                                                                  *
  5 // * The  Geant4 software  is  copyright of th      5 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
  6 // * the Geant4 Collaboration.  It is provided      6 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
  7 // * conditions of the Geant4 Software License      7 // * conditions of the Geant4 Software License,  included in the file *
  8 // * LICENSE and available at  http://cern.ch/      8 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
  9 // * include a list of copyright holders.           9 // * include a list of copyright holders.                             *
 10 // *                                               10 // *                                                                  *
 11 // * Neither the authors of this software syst     11 // * Neither the authors of this software system, nor their employing *
 12 // * institutes,nor the agencies providing fin     12 // * institutes,nor the agencies providing financial support for this *
 13 // * work  make  any representation or  warran     13 // * work  make  any representation or  warranty, express or implied, *
 14 // * regarding  this  software system or assum     14 // * regarding  this  software system or assume any liability for its *
 15 // * use.  Please see the license in the file      15 // * use.  Please see the license in the file  LICENSE  and URL above *
 16 // * for the full disclaimer and the limitatio     16 // * for the full disclaimer and the limitation of liability.         *
 17 // *                                               17 // *                                                                  *
 18 // * This  code  implementation is the result      18 // * This  code  implementation is the result of  the  scientific and *
 19 // * technical work of the GEANT4 collaboratio     19 // * technical work of the GEANT4 collaboration.                      *
 20 // * By using,  copying,  modifying or  distri     20 // * By using,  copying,  modifying or  distributing the software (or *
 21 // * any work based  on the software)  you  ag     21 // * any work based  on the software)  you  agree  to acknowledge its *
 22 // * use  in  resulting  scientific  publicati     22 // * use  in  resulting  scientific  publications,  and indicate your *
 23 // * acceptance of all terms of the Geant4 Sof     23 // * acceptance of all terms of the Geant4 Software license.          *
 24 // *******************************************     24 // ********************************************************************
 25 //                                                 25 //
 26 // G4Ions class implementation                 << 
 27 //                                                 26 //
 28 // Authors: G.Cosmo, 4 April 1996 - Object mod <<  27 //
 29 //          H.Kurashige, 27 June 1998 - First  <<  28 // 
 30 // ------------------------------------------- <<  29 // ----------------------------------------------------------------------
                                                   >>  30 //      GEANT 4 class implementation file
                                                   >>  31 //
                                                   >>  32 //      History: first implementation, based on object model of
                                                   >>  33 //      4th April 1996, G.Cosmo
                                                   >>  34 // **********************************************************************
 31                                                    35 
 32 #include "G4Ions.hh"                           <<  36 #include <fstream>
                                                   >>  37 #include <iomanip>
 33                                                    38 
                                                   >>  39 #include "G4Ions.hh"
 34 #include "G4PhysicalConstants.hh"                  40 #include "G4PhysicalConstants.hh"
 35 #include "G4SystemOfUnits.hh"                      41 #include "G4SystemOfUnits.hh"
 36                                                    42 
 37 #include <fstream>                             <<  43  // ######################################################################
 38 #include <iomanip>                             <<  44 // ###                           Ions                                ###
                                                   >>  45 // ######################################################################
 39                                                    46 
 40 // clang-format off                            << 
 41 G4Ions::G4Ions(                                    47 G4Ions::G4Ions(
 42        const G4String&     aName,        G4dou     48        const G4String&     aName,        G4double            mass,
 43        G4double            width,        G4dou     49        G4double            width,        G4double            charge,   
 44        G4int               iSpin,        G4int     50        G4int               iSpin,        G4int               iParity,    
 45        G4int               iConjugation, G4int     51        G4int               iConjugation, G4int               iIsospin,   
 46        G4int               iIsospin3,    G4int     52        G4int               iIsospin3,    G4int               gParity,
 47        const G4String&     pType,        G4int     53        const G4String&     pType,        G4int               lepton,      
 48        G4int               baryon,       G4int     54        G4int               baryon,       G4int               encoding,
 49        G4bool              stable,       G4dou     55        G4bool              stable,       G4double            lifetime,
 50        G4DecayTable        *decaytable , G4boo     56        G4DecayTable        *decaytable , G4bool              shortlived,
 51        const G4String&     subType,                57        const G4String&     subType,
 52        G4int               anti_encoding,          58        G4int               anti_encoding,
 53        G4double            excitation,             59        G4double            excitation,
 54        G4int               isomer                  60        G4int               isomer
 55 )                                                  61 )
 56   : G4ParticleDefinition( aName,mass,width,cha     62   : G4ParticleDefinition( aName,mass,width,charge,iSpin,iParity,
 57                           iConjugation,iIsospi <<  63            iConjugation,iIsospin,iIsospin3,gParity,pType,
 58                           lepton,baryon,encodi <<  64            lepton,baryon,encoding,stable,lifetime,decaytable,
 59         shortlived, subType, anti_encoding),       65         shortlived, subType, anti_encoding),
 60     theExcitationEnergy(excitation),               66     theExcitationEnergy(excitation),
 61     theIsomerLevel(isomer)                     <<  67     theIsomerLevel(isomer),
 62 // clang-format on                             <<  68     floatLevelBase(G4FloatLevelBase::no_Float)
 63 {                                                  69 {
 64   if ((aName == "proton") || (aName == "neutro <<  70    if ((aName == "proton") || (aName == "neutron")) { 
 65     isGeneralIon = false;                      <<  71      isGeneralIon = false ;
 66   }                                            <<  72    } else if (   (aName == "GenericIon") || (aName == "alpha") 
 67   else if ((aName == "GenericIon") || (aName = <<  73        || (aName == "He3") || (aName == "deuteron")|| (aName == "triton")) {
 68            || (aName == "deuteron") || (aName  <<  74      isGeneralIon = false ;
 69   {                                            <<  75    } else if ( (aName == "anti_He3") || (aName == "anti_deuteron")
 70     isGeneralIon = false;                      <<  76   || (aName == "anti_triton") || (aName == "anti_alpha") ) {
 71   }                                            <<  77      isGeneralIon = false ;
 72   else if ((aName == "anti_He3") || (aName ==  <<  78    } else if ( (aName == "iron") || (aName == "oxygen") ||  (aName == "nitrogen")
 73            || (aName == "anti_alpha"))         <<  79         || (aName == "carbon") || (aName == "helium") || (aName == "alpha+")
 74   {                                            <<  80         || (aName == "hydrogen") || (aName == "Ps-1s") || (aName == "Ps-2s")) {
 75     isGeneralIon = false;                      <<  81      isGeneralIon = false ;
 76   }                                            <<  82    } else {
 77   else if ((aName == "iron") || (aName == "oxy <<  83      isGeneralIon = true;
 78            || (aName == "helium") || (aName == <<  84    }
 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                                                    85 
 95   // isomer level isset to 9                   <<  86   // isomer level isset to 9 
 96   // if isomer level is set to 0 for excited s     87   // if isomer level is set to 0 for excited state
 97   //                                           <<  88   if ((theExcitationEnergy > 0.0) && (isomer==0)) isomer =9; 
 98   if ((theExcitationEnergy > 0.0) && (isomer = << 
 99                                                    89 
100   if (GetAtomicNumber() == 0) {                <<  90    if (GetAtomicNumber() == 0  ) {
101     // AtomicNumber/Mass is positive even for  <<  91      // AtomicNumber/Mass is positve even for anti_nulceus
102     SetAtomicNumber(std::abs(G4int(GetPDGCharg <<  92      SetAtomicNumber( std::abs(G4int(GetPDGCharge()/eplus)) );
103     SetAtomicMass(std::abs(GetBaryonNumber())) <<  93      SetAtomicMass( std::abs(GetBaryonNumber()) );
104   }                                            <<  94    }
105 }                                                  95 }
106                                                    96 
107 G4Ions::G4FloatLevelBase G4Ions::FloatLevelBas << 
108 {                                              << 
109   G4Ions::G4FloatLevelBase flb = noFloat;      << 
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 }                                              << 
173                                                    97 
174 G4Ions::G4FloatLevelBase G4Ions::FloatLevelBas <<  98 G4Ions::~G4Ions()
175 {                                                  99 {
176   // clang-format off                          << 
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 }                                                 100 }
184                                                   101 
185 char G4Ions::FloatLevelBaseChar(G4Ions::G4Floa << 102 
186 {                                              << 103 
187   // clang-format off                          << 104 
188   static char flbChar[] = {'\0', 'X', 'Y', 'Z' << 105 
189                            'S',  'T', 'A', 'B' << 
190   // clang-format on                           << 
191   return flbChar[static_cast<G4int>(flb)];     << 
192 }                                              << 
193                                                   106