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.7.p3)


  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                     26 // G4Ions class implementation
 27 //                                                 27 //
 28 // Authors: G.Cosmo, 4 April 1996 - Object mod     28 // Authors: G.Cosmo, 4 April 1996 - Object model
 29 //          H.Kurashige, 27 June 1998 - First      29 //          H.Kurashige, 27 June 1998 - First implementation
 30 // -------------------------------------------     30 // --------------------------------------------------------------------
 31                                                    31 
 32 #include "G4Ions.hh"                           <<  32 #include <fstream>
                                                   >>  33 #include <iomanip>
 33                                                    34 
                                                   >>  35 #include "G4Ions.hh"
 34 #include "G4PhysicalConstants.hh"                  36 #include "G4PhysicalConstants.hh"
 35 #include "G4SystemOfUnits.hh"                      37 #include "G4SystemOfUnits.hh"
 36                                                    38 
 37 #include <fstream>                             <<  39 // ######################################################################
 38 #include <iomanip>                             <<  40 // ###                           Ions                                ###
                                                   >>  41 // ######################################################################
 39                                                    42 
 40 // clang-format off                            << 
 41 G4Ions::G4Ions(                                    43 G4Ions::G4Ions(
 42        const G4String&     aName,        G4dou     44        const G4String&     aName,        G4double            mass,
 43        G4double            width,        G4dou     45        G4double            width,        G4double            charge,   
 44        G4int               iSpin,        G4int     46        G4int               iSpin,        G4int               iParity,    
 45        G4int               iConjugation, G4int     47        G4int               iConjugation, G4int               iIsospin,   
 46        G4int               iIsospin3,    G4int     48        G4int               iIsospin3,    G4int               gParity,
 47        const G4String&     pType,        G4int     49        const G4String&     pType,        G4int               lepton,      
 48        G4int               baryon,       G4int     50        G4int               baryon,       G4int               encoding,
 49        G4bool              stable,       G4dou     51        G4bool              stable,       G4double            lifetime,
 50        G4DecayTable        *decaytable , G4boo     52        G4DecayTable        *decaytable , G4bool              shortlived,
 51        const G4String&     subType,                53        const G4String&     subType,
 52        G4int               anti_encoding,          54        G4int               anti_encoding,
 53        G4double            excitation,             55        G4double            excitation,
 54        G4int               isomer                  56        G4int               isomer
 55 )                                                  57 )
 56   : G4ParticleDefinition( aName,mass,width,cha     58   : G4ParticleDefinition( aName,mass,width,charge,iSpin,iParity,
 57                           iConjugation,iIsospi     59                           iConjugation,iIsospin,iIsospin3,gParity,pType,
 58                           lepton,baryon,encodi     60                           lepton,baryon,encoding,stable,lifetime,decaytable,
 59         shortlived, subType, anti_encoding),       61         shortlived, subType, anti_encoding),
 60     theExcitationEnergy(excitation),               62     theExcitationEnergy(excitation),
 61     theIsomerLevel(isomer)                     <<  63     theIsomerLevel(isomer),
 62 // clang-format on                             <<  64     floatLevelBase(G4FloatLevelBase::no_Float)
 63 {                                                  65 {
 64   if ((aName == "proton") || (aName == "neutro <<  66    if ((aName == "proton") || (aName == "neutron")) { 
 65     isGeneralIon = false;                      <<  67      isGeneralIon = false ;
 66   }                                            <<  68    } else if (   (aName == "GenericIon") || (aName == "alpha") 
 67   else if ((aName == "GenericIon") || (aName = <<  69        || (aName == "He3") || (aName == "deuteron")|| (aName == "triton")) {
 68            || (aName == "deuteron") || (aName  <<  70      isGeneralIon = false ;
 69   {                                            <<  71    } else if ( (aName == "anti_He3") || (aName == "anti_deuteron")
 70     isGeneralIon = false;                      <<  72   || (aName == "anti_triton") || (aName == "anti_alpha") ) {
 71   }                                            <<  73      isGeneralIon = false ;
 72   else if ((aName == "anti_He3") || (aName ==  <<  74    } else if ( (aName == "iron") || (aName == "oxygen") || (aName == "nitrogen")
 73            || (aName == "anti_alpha"))         <<  75         || (aName == "carbon") || (aName == "helium") || (aName == "alpha+")
 74   {                                            <<  76         || (aName == "hydrogen") || (aName == "Ps-1s") || (aName == "Ps-2s")) {
 75     isGeneralIon = false;                      <<  77      isGeneralIon = false ;
 76   }                                            <<  78    } else {
 77   else if ((aName == "iron") || (aName == "oxy <<  79      isGeneralIon = true;
 78            || (aName == "helium") || (aName == <<  80    }
 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                                                    81 
 95   // isomer level isset to 9                   <<  82   // isomer level isset to 9 
 96   // if isomer level is set to 0 for excited s     83   // if isomer level is set to 0 for excited state
 97   //                                               84   //
 98   if ((theExcitationEnergy > 0.0) && (isomer = <<  85   if ((theExcitationEnergy > 0.0) && (isomer==0)) isomer =9; 
 99                                                    86 
100   if (GetAtomicNumber() == 0) {                <<  87    if (GetAtomicNumber() == 0  )
101     // AtomicNumber/Mass is positive even for  <<  88    {
102     SetAtomicNumber(std::abs(G4int(GetPDGCharg <<  89      // AtomicNumber/Mass is positive even for anti_nulceus
103     SetAtomicMass(std::abs(GetBaryonNumber())) <<  90      SetAtomicNumber( std::abs(G4int(GetPDGCharge()/eplus)) );
104   }                                            <<  91      SetAtomicMass( std::abs(GetBaryonNumber()) );
                                                   >>  92    }
                                                   >>  93 }
                                                   >>  94 
                                                   >>  95 G4Ions::G4Ions()
                                                   >>  96 {
                                                   >>  97 }
                                                   >>  98 
                                                   >>  99 G4Ions::~G4Ions()
                                                   >> 100 {
105 }                                                 101 }
106                                                   102 
107 G4Ions::G4FloatLevelBase G4Ions::FloatLevelBas    103 G4Ions::G4FloatLevelBase G4Ions::FloatLevelBase(char flbChar)
108 {                                                 104 {
109   G4Ions::G4FloatLevelBase flb = noFloat;         105   G4Ions::G4FloatLevelBase flb = noFloat;
110   switch (flbChar) {                           << 106   switch(flbChar)
111     case 'x':                                  << 107   {
112     case 'X':                                  << 108    case 'x': case 'X':
113       flb = plusX;                             << 109     flb = plusX;
114       break;                                   << 110     break;
115     case 'y':                                  << 111    case 'y': case 'Y':
116     case 'Y':                                  << 112     flb = plusY;
117       flb = plusY;                             << 113     break;
118       break;                                   << 114    case 'z': case 'Z':
119     case 'z':                                  << 115     flb = plusZ;
120     case 'Z':                                  << 116     break;
121       flb = plusZ;                             << 117    case 'u': case 'U':
122       break;                                   << 118     flb = plusU;
123     case 'u':                                  << 119     break;
124     case 'U':                                  << 120    case 'v': case 'V':
125       flb = plusU;                             << 121     flb = plusV;
126       break;                                   << 122     break;
127     case 'v':                                  << 123    case 'w': case 'W':
128     case 'V':                                  << 124     flb = plusW;
129       flb = plusV;                             << 125     break;
130       break;                                   << 126    case 'r': case 'R':
131     case 'w':                                  << 127     flb = plusR;
132     case 'W':                                  << 128     break;
133       flb = plusW;                             << 129    case 's': case 'S':
134       break;                                   << 130     flb = plusS;
135     case 'r':                                  << 131     break;
136     case 'R':                                  << 132    case 't': case 'T':
137       flb = plusR;                             << 133     flb = plusT;
138       break;                                   << 134     break;
139     case 's':                                  << 135    case 'a': case 'A':
140     case 'S':                                  << 136     flb = plusA;
141       flb = plusS;                             << 137     break;
142       break;                                   << 138    case 'b': case 'B':
143     case 't':                                  << 139     flb = plusB;
144     case 'T':                                  << 140     break;
145       flb = plusT;                             << 141    case 'c': case 'C':
146       break;                                   << 142     flb = plusC;
147     case 'a':                                  << 143     break;
148     case 'A':                                  << 144    case 'd': case 'D':
149       flb = plusA;                             << 145     flb = plusD;
150       break;                                   << 146     break;
151     case 'b':                                  << 147    case 'e': case 'E':
152     case 'B':                                  << 148     flb = plusE;
153       flb = plusB;                             << 149     break;
154       break;                                   << 150    case '\0': default:
155     case 'c':                                  << 151     break;
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   }                                               152   }
171   return flb;                                     153   return flb;
172 }                                                 154 }
173                                                   155 
174 G4Ions::G4FloatLevelBase G4Ions::FloatLevelBas    156 G4Ions::G4FloatLevelBase G4Ions::FloatLevelBase(G4int flbIdx)
175 {                                                 157 {
176   // clang-format off                          << 
177   static G4Ions::G4FloatLevelBase flb[] =         158   static G4Ions::G4FloatLevelBase flb[] = 
178   { noFloat,                                      159   { noFloat,
179     plusX, plusY, plusZ, plusU, plusV, plusW,     160     plusX, plusY, plusZ, plusU, plusV, plusW, 
180     plusR, plusS, plusT, plusA, plusB, plusC,     161     plusR, plusS, plusT, plusA, plusB, plusC, plusD, plusE };
181   // clang-format on                           << 162   return flb[flbIdx];
182   return (flbIdx >= 0 && flbIdx < 15) ? flb[fl << 
183 }                                                 163 }
184                                                   164 
185 char G4Ions::FloatLevelBaseChar(G4Ions::G4Floa    165 char G4Ions::FloatLevelBaseChar(G4Ions::G4FloatLevelBase flb)
186 {                                                 166 {
187   // clang-format off                          << 167   static char flbChar[] = {'\0','X','Y','Z','U','V','W',
188   static char flbChar[] = {'\0', 'X', 'Y', 'Z' << 168                                 'R','S','T','A','B','C','D','E'};
189                            'S',  'T', 'A', 'B' << 
190   // clang-format on                           << 
191   return flbChar[static_cast<G4int>(flb)];        169   return flbChar[static_cast<G4int>(flb)];
192 }                                                 170 }
193                                                   171