Geant4 Cross Reference |
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 // G4IonTable 26 // G4IonTable 27 // 27 // 28 // Class description: 28 // Class description: 29 // 29 // 30 // G4IonTable stores all pointers to G4Particl 30 // G4IonTable stores all pointers to G4ParticleDefinition. 31 31 32 // Author: H.Kurashige, 27 June 1998 32 // Author: H.Kurashige, 27 June 1998 33 // ------------------------------------------- 33 // -------------------------------------------------------------------- 34 #ifndef G4IonTable_hh 34 #ifndef G4IonTable_hh 35 #define G4IonTable_hh 1 35 #define G4IonTable_hh 1 36 36 37 #include "G4Ions.hh" << 38 #include "G4ParticleDefinition.hh" << 39 #include "G4ParticleTable.hh" << 40 #include "G4ios.hh" << 41 #include "globals.hh" << 42 << 43 #include <cmath> 37 #include <cmath> 44 #include <map> << 45 #include <vector> 38 #include <vector> >> 39 #include <map> >> 40 >> 41 #include "G4ios.hh" >> 42 #include "globals.hh" >> 43 #include "G4ParticleDefinition.hh" >> 44 #include "G4ParticleTable.hh" >> 45 #include "G4Ions.hh" 46 46 47 class G4ParticleTable; 47 class G4ParticleTable; 48 class G4VIsotopeTable; << 48 class G4VIsotopeTable; 49 class G4IsotopeProperty; 49 class G4IsotopeProperty; 50 class G4NuclideTable; << 50 class G4NuclideTable; 51 51 52 class G4IonTable 52 class G4IonTable 53 { 53 { 54 public: 54 public: 55 using G4IonList = std::multimap<G4int, con << 56 using G4IonListIterator = std::multimap<G4 << 57 55 58 // Constructor, destructor << 56 using G4IonList = >> 57 std::multimap<G4int, const G4ParticleDefinition*>; >> 58 using G4IonListIterator = >> 59 std::multimap<G4int, const G4ParticleDefinition*>::iterator; >> 60 59 G4IonTable(); 61 G4IonTable(); 60 ~G4IonTable(); << 62 ~G4IonTable(); >> 63 // Constructor, destructor 61 64 62 // Forbidden copy constructor and assignme << 63 G4IonTable(const G4IonTable&) = delete; 65 G4IonTable(const G4IonTable&) = delete; 64 G4IonTable& operator=(const G4IonTable&) = << 66 G4IonTable& operator= (const G4IonTable&) = delete; >> 67 // Forbidden copy constructor and assignment operator 65 68 66 static G4IonTable* GetIonTable(); 69 static G4IonTable* GetIonTable(); 67 70 68 // Method is used by each worker thread to << 69 // from the master thread. << 70 void WorkerG4IonTable(); 71 void WorkerG4IonTable(); >> 72 // Method is used by each worker thread to copy the content >> 73 // from the master thread. 71 74 72 // Destructor for worker << 73 void DestroyWorkerG4IonTable(); 75 void DestroyWorkerG4IonTable(); >> 76 // Destructor for worker 74 77 75 // Get number of elements defined in the I << 76 G4int GetNumberOfElements() const; 78 G4int GetNumberOfElements() const; >> 79 // Get number of elements defined in the IonTable 77 80 78 // Register Isotope table << 79 void RegisterIsotopeTable(G4VIsotopeTable* 81 void RegisterIsotopeTable(G4VIsotopeTable* table); >> 82 // Register Isotope table 80 83 81 // G4IonTable asks properties of isotopes << 84 G4VIsotopeTable* GetIsotopeTable(std::size_t idx=0) const; 82 // by using FindIsotope(G4IsotopeProperty* << 85 // G4IonTable asks properties of isotopes to G4VIsotopeTable 83 G4VIsotopeTable* GetIsotopeTable(std::size << 86 // by using FindIsotope(G4IsotopeProperty* property) method 84 << 87 85 // All ground state ions are created. << 86 // Stable ground states are defined in G4N << 87 void CreateAllIon(); 88 void CreateAllIon(); 88 << 89 // All ground state ions are created. 89 // All excited ions with long life time (> << 90 // Stable ground states are defined in G4NuclearProperty 90 // Isomers are defined in G4VIsotopeTable << 91 91 void CreateAllIsomer(); 92 void CreateAllIsomer(); 92 << 93 // All excited ions with long life time (>1.0*ns) are created. 93 // All nuclide with a life time longer tha << 94 // Isomers are defined in G4VIsotopeTable 94 // prior to the event loop << 95 95 void PrepareNuclideTable(); 96 void PrepareNuclideTable(); 96 void PreloadNuclide(); 97 void PreloadNuclide(); >> 98 // All nuclide with a life time longer than certain value are created >> 99 // prior to the event loop 97 100 98 // --------------------------------------- 101 // -------------------------------------------------------------- 99 // FindIon/GetIon 102 // FindIon/GetIon 100 // FindIon() methods return pointer of i 103 // FindIon() methods return pointer of ion if it exists. 101 // GetIon() methods also return pointer 104 // GetIon() methods also return pointer of ion; the designated 102 // ion is created if it does not exist. 105 // ion is created if it does not exist. 103 // 106 // 104 // !! PDGCharge in G4ParticleDefinition of 107 // !! PDGCharge in G4ParticleDefinition of ions is !! 105 // !! electric charge of nucleus (i.e. ful 108 // !! electric charge of nucleus (i.e. fully ionized ions) !! 106 // --------------------------------------- 109 // -------------------------------------------------------------- 107 110 108 // Find/Get "ground state" and "excited st 111 // Find/Get "ground state" and "excited state" 109 // 112 // 110 G4ParticleDefinition* GetIon(G4int Z, G4in << 113 G4ParticleDefinition* GetIon(G4int Z, G4int A, G4int lvl=0); 111 G4ParticleDefinition* GetIon(G4int Z, G4in 114 G4ParticleDefinition* GetIon(G4int Z, G4int A, G4int nL, G4int lvl); 112 G4ParticleDefinition* GetIon(G4int Z, G4in << 115 G4ParticleDefinition* GetIon(G4int Z, G4int A, G4double E, G4int J=0); 113 G4ParticleDefinition* GetIon(G4int Z, G4in << 116 G4ParticleDefinition* GetIon(G4int Z, G4int A, G4double E, 114 G4int J = 0); << 117 G4Ions::G4FloatLevelBase flb, G4int J=0); 115 G4ParticleDefinition* GetIon(G4int Z, G4in << 118 G4ParticleDefinition* GetIon(G4int Z, G4int A, G4double E, 116 G4ParticleDefinition* GetIon(G4int Z, G4in << 119 char flbChar, G4int J=0); >> 120 G4ParticleDefinition* GetIon(G4int Z, G4int A, G4int nL, G4double E, >> 121 G4int J=0); >> 122 G4ParticleDefinition* GetIon(G4int Z, G4int A, G4int nL, G4double E, >> 123 G4Ions::G4FloatLevelBase flb, G4int J=0); 117 G4ParticleDefinition* GetIon(G4int Z, G4in 124 G4ParticleDefinition* GetIon(G4int Z, G4int A, G4int nL, G4double E, 118 G4Ions::G4Flo << 125 char flbChar, G4int J=0); 119 G4ParticleDefinition* GetIon(G4int Z, G4in << 120 // Z: Atomic Number 126 // Z: Atomic Number 121 // A: Atomic Mass (nn + np +nlambda) 127 // A: Atomic Mass (nn + np +nlambda) 122 // nL: Number of Lambda 128 // nL: Number of Lambda 123 // E: Excitation energy 129 // E: Excitation energy 124 // lvl: Isomer Level 0: ground state) 130 // lvl: Isomer Level 0: ground state) 125 // flb: Floating level base (enum defined 131 // flb: Floating level base (enum defined in G4Ions.hh) 126 // flbChar: Floating level base denoted b 132 // flbChar: Floating level base denoted by a character 127 // (<null>,X,Y,Z,U,V,W,R,S,T,A,B 133 // (<null>,X,Y,Z,U,V,W,R,S,T,A,B,C,D,E) 128 // J: Total Angular momentum (in unit of 1 134 // J: Total Angular momentum (in unit of 1/2) : not used 129 135 130 // The ion can be retrieved by using PDG e << 131 // !! Only ground state can be obtained .i << 132 G4ParticleDefinition* GetIon(G4int encodin 136 G4ParticleDefinition* GetIon(G4int encoding); 133 << 137 // The ion can be retrieved by using PDG encoding >> 138 // !! Only ground state can be obtained .i.e. Isomer = 0 >> 139 134 // Find/Get "excited state" 140 // Find/Get "excited state" 135 // 141 // 136 G4ParticleDefinition* FindIon(G4int Z, G4i << 142 G4ParticleDefinition* FindIon(G4int Z, G4int A, G4int lvl=0); 137 G4ParticleDefinition* FindIon(G4int Z, G4i 143 G4ParticleDefinition* FindIon(G4int Z, G4int A, G4int nL, G4int lvl); 138 G4ParticleDefinition* FindIon(G4int Z, G4i << 144 G4ParticleDefinition* FindIon(G4int Z, G4int A, G4double E, G4int J=0); 139 G4ParticleDefinition* FindIon(G4int Z, G4i << 145 G4ParticleDefinition* FindIon(G4int Z, G4int A, G4double E, 140 G4int J = 0) << 146 G4Ions::G4FloatLevelBase flb, G4int J=0); 141 G4ParticleDefinition* FindIon(G4int Z, G4i << 147 G4ParticleDefinition* FindIon(G4int Z, G4int A, G4double E, 142 G4ParticleDefinition* FindIon(G4int Z, G4i << 148 char flbChar, G4int J=0); >> 149 G4ParticleDefinition* FindIon(G4int Z, G4int A, G4int nL, G4double E, >> 150 G4int J=0); 143 G4ParticleDefinition* FindIon(G4int Z, G4i 151 G4ParticleDefinition* FindIon(G4int Z, G4int A, G4int nL, G4double E, 144 G4Ions::G4Fl << 152 G4Ions::G4FloatLevelBase flb, G4int J=0); 145 G4ParticleDefinition* FindIon(G4int Z, G4i << 153 G4ParticleDefinition* FindIon(G4int Z, G4int A, G4int nL, G4double E, 146 G4int J = 0) << 154 char flbChar, G4int J=0); 147 // Z: Atomic Number 155 // Z: Atomic Number 148 // A: Atomic Mass (nn + np +nlambda) 156 // A: Atomic Mass (nn + np +nlambda) 149 // nL: Number of Lambda 157 // nL: Number of Lambda 150 // E: Excitaion energy 158 // E: Excitaion energy 151 // lvl: Isomer Level 0: ground state) 159 // lvl: Isomer Level 0: ground state) 152 // flb: Floating level base (enum defined 160 // flb: Floating level base (enum defined in G4Ions.hh) 153 // flbChar: Floating level base denoted b 161 // flbChar: Floating level base denoted by a character 154 // (<null>,X,Y,Z,U,V,W,R,S,T,A,B 162 // (<null>,X,Y,Z,U,V,W,R,S,T,A,B,C,D,E) 155 // J: Total Angular momentum (in unit of 1 163 // J: Total Angular momentum (in unit of 1/2) : not used 156 << 164 157 // Return true if the particle is ion << 158 static G4bool IsIon(const G4ParticleDefini 165 static G4bool IsIon(const G4ParticleDefinition*); >> 166 // Return true if the particle is ion 159 167 160 // Return true if the particle is anti_ion << 161 static G4bool IsAntiIon(const G4ParticleDe 168 static G4bool IsAntiIon(const G4ParticleDefinition*); >> 169 // Return true if the particle is anti_ion 162 170 163 // Get ion name << 171 const G4String& GetIonName(G4int Z, G4int A, G4int lvl=0) const; 164 G4String GetIonName(G4int Z, G4int A, G4in << 172 const G4String& GetIonName(G4int Z, G4int A, G4double E, 165 G4String GetIonName(G4int Z, G4int A, G4do << 173 G4Ions::G4FloatLevelBase flb=G4Ions::G4FloatLevelBase::no_Float) const; 166 G4Ions::G4FloatLevelBa << 174 const G4String& GetIonName(G4int Z, G4int A, G4int nL, G4double E, 167 G4String GetIonName(G4int Z, G4int A, G4in << 175 G4Ions::G4FloatLevelBase flb=G4Ions::G4FloatLevelBase::no_Float) const; 168 G4Ions::G4FloatLevelBa << 176 const G4String& GetIonName(G4int Z, G4int A, G4int nL, G4int lvl) const; 169 G4String GetIonName(G4int Z, G4int A, G4in << 177 // Get ion name 170 << 178 171 // Get PDG code for Ions. << 179 static G4int GetNucleusEncoding(G4int Z, G4int A, 172 // Nuclear codes are given as 10-digit num << 180 G4double E=0.0, G4int lvl=0); 173 // For a nucleus consisting of np protons << 181 // Get PDG code for Ions. 174 // A = np + nn and Z = np. << 182 // Nuclear codes are given as 10-digit numbers +-100ZZZAAAI. 175 // I gives the isomer level, with I = 0 co << 183 // For a nucleus consisting of np protons and nn neutrons 176 // to the ground state and I >0 to excitat << 184 // A = np + nn and Z = np. 177 static G4int GetNucleusEncoding(G4int Z, G << 185 // I gives the isomer level, with I = 0 corresponding 178 << 186 // to the ground state and I >0 to excitations 179 // Get PDG code for Hyper-Nucleus Ions. << 187 180 // Nuclear codes are given as 10-digit num << 188 static G4int GetNucleusEncoding(G4int Z, G4int A, G4int nL, 181 // For a nucleus consisting of np protons << 189 G4double E=0.0, G4int lvl=0); 182 // A = np + nn +nlambda and Z = np. << 190 // Get PDG code for Hyper-Nucleus Ions. 183 // nL = nlambda << 191 // Nuclear codes are given as 10-digit numbers +-10LZZZAAAI. 184 // I gives the isomer level, with I = 0 co << 192 // For a nucleus consisting of np protons and nn neutrons 185 // to the ground state and I >0 to excitat << 193 // A = np + nn +nlambda and Z = np. 186 static G4int GetNucleusEncoding(G4int Z, G << 194 // nL = nlambda 187 << 195 // I gives the isomer level, with I = 0 corresponding 188 static G4bool GetNucleusByEncoding(G4int e << 196 // to the ground state and I >0 to excitations 189 static G4bool GetNucleusByEncoding(G4int e << 197 190 G4int& << 198 static G4bool GetNucleusByEncoding(G4int encoding, 191 // Energy will not be given even for excit << 199 G4int& Z, G4int& A, 192 << 200 G4double& E, G4int& lvl); 193 // These methods returns Nucleus (i.e. ful << 201 static G4bool GetNucleusByEncoding(G4int encoding, 194 // Z is Atomic Number (number of protons) << 202 G4int& Z, G4int& A, G4int& L, 195 // A is Atomic Number (number of nucleons << 203 G4double& E, G4int& lvl); 196 // nL is number of lambda (A= nn + np + n << 204 // Energy will not be given even for excited state!! 197 // lvl is isomer level << 205 198 G4double GetIonMass(G4int Z, G4int A, G4in << 206 G4double GetIonMass(G4int Z, G4int A, G4int nL=0, G4int lvl=0) const; 199 G4double GetNucleusMass(G4int Z, G4int A, << 207 G4double GetNucleusMass(G4int Z, G4int A, G4int nL=0, G4int lvl=0) const; 200 G4double GetIsomerMass(G4int Z, G4int A, G << 208 G4double GetIsomerMass(G4int Z, G4int A, G4int lvl=0) const; 201 << 209 // These methods returns Nucleus (i.e. full ionized atom) mass, where 202 // Returns a life time of an ion. -1 for s << 210 // Z is Atomic Number (number of protons) and 203 // that is not listed in G4NuclideTable << 211 // A is Atomic Number (number of nucleons and hyperons) >> 212 // nL is number of lambda (A= nn + np + nlambda) >> 213 // lvl is isomer level >> 214 204 G4double GetLifeTime(const G4ParticleDefin 215 G4double GetLifeTime(const G4ParticleDefinition*) const; 205 G4double GetLifeTime(G4int Z, G4int A, G4d 216 G4double GetLifeTime(G4int Z, G4int A, G4double E, 206 G4Ions::G4FloatLevelB << 217 G4Ions::G4FloatLevelBase flb=G4Ions::G4FloatLevelBase::no_Float) const; 207 G4double GetLifeTime(G4int Z, G4int A, G4d 218 G4double GetLifeTime(G4int Z, G4int A, G4double E, char flbChar) const; 208 << 219 // Returns a life time of an ion. -1 for stable ion, and -1001 for ion >> 220 // that is not listed in G4NuclideTable >> 221 209 G4ParticleDefinition* GetMuonicAtom(G4Ions 222 G4ParticleDefinition* GetMuonicAtom(G4Ions const*); 210 G4ParticleDefinition* GetMuonicAtom(G4int 223 G4ParticleDefinition* GetMuonicAtom(G4int Z, G4int A); 211 224 212 // Return number of ions in the table << 213 G4int Entries() const; 225 G4int Entries() const; >> 226 // Return number of ions in the table 214 227 215 // Return the pointer of index-th ion in t << 216 G4ParticleDefinition* GetParticle(G4int in 228 G4ParticleDefinition* GetParticle(G4int index) const; 217 << 229 // Return the pointer of index-th ion in the table 218 // Return 'true' if the ion exists << 230 219 G4bool Contains(const G4ParticleDefinition 231 G4bool Contains(const G4ParticleDefinition* particle) const; >> 232 // Return 'true' if the ion exists 220 233 221 // Insert/Remove an ion in the table << 222 void Insert(const G4ParticleDefinition* pa 234 void Insert(const G4ParticleDefinition* particle); 223 void Remove(const G4ParticleDefinition* pa 235 void Remove(const G4ParticleDefinition* particle); >> 236 // Insert/Remove an ion in the table 224 237 225 // Erase all contents in the list (not del << 226 void clear(); 238 void clear(); >> 239 // Erase all contents in the list (not delete just remove) 227 240 228 // Return number of ions in the table << 229 G4int size() const; 241 G4int size() const; >> 242 // Return number of ions in the table 230 243 231 // Dump information of particles specified << 232 void DumpTable(const G4String& particle_na 244 void DumpTable(const G4String& particle_name = "ALL") const; >> 245 // Dump information of particles specified by name 233 246 234 public: 247 public: 235 // Needed for MT << 248 236 void InitializeLightIons(); 249 void InitializeLightIons(); >> 250 // Needed for MT 237 251 238 // It is very important for multithreaded << 252 static G4ThreadLocal G4IonList* fIonList; 239 // the particle table pointer and the ion << 253 static G4ThreadLocal std::vector<G4VIsotopeTable*> * fIsotopeTableList; 240 // to let each worker thread hold its own << 254 static G4IonList* fIonListShadow; 241 // and the ion list. This implementation i << 255 static std::vector<G4VIsotopeTable*> * fIsotopeTableListShadow; 242 // table thread private. The two shadow po << 256 // It is very important for multithreaded Geant4 to keep only one copy of 243 // thread to copy the content from the mas << 257 // the particle table pointer and the ion table pointer. However, we try 244 static G4ThreadLocal G4IonList* fIonList; << 258 // to let each worker thread hold its own copy of the particle dictionary 245 static G4ThreadLocal std::vector<G4VIsotop << 259 // and the ion list. This implementation is equivalent to make the ion 246 static G4IonList* fIonListShadow; << 260 // table thread private. The two shadow ponters are used by each worker 247 static std::vector<G4VIsotopeTable*>* fIso << 261 // thread to copy the content from the master thread 248 << 262 249 enum << 263 enum { numberOfElements = 118}; 250 { << 251 numberOfElements = 118 << 252 }; << 253 static const G4String elementName[numberOf 264 static const G4String elementName[numberOfElements]; 254 265 255 #ifdef G4MULTITHREADED 266 #ifdef G4MULTITHREADED 256 static G4Mutex ionTableMutex; 267 static G4Mutex ionTableMutex; 257 #endif 268 #endif 258 269 259 protected: 270 protected: 260 G4ParticleDefinition* FindIonInMaster(G4in << 271 >> 272 G4ParticleDefinition* FindIonInMaster(G4int Z, G4int A, G4int lvl=0); 261 G4ParticleDefinition* FindIonInMaster(G4in 273 G4ParticleDefinition* FindIonInMaster(G4int Z, G4int A, G4int nL, G4int lvl); 262 G4ParticleDefinition* FindIonInMaster(G4in 274 G4ParticleDefinition* FindIonInMaster(G4int Z, G4int A, G4double E, 263 G4Io << 275 G4Ions::G4FloatLevelBase flb, G4int J=0); 264 G4ParticleDefinition* FindIonInMaster(G4in << 276 G4ParticleDefinition* FindIonInMaster(G4int Z, G4int A, G4int nL, 265 G4Io << 277 G4double E, G4Ions::G4FloatLevelBase flb, G4int J=0); 266 278 267 G4ParticleDefinition* CreateIon(G4int Z, G << 279 G4ParticleDefinition* CreateIon(G4int Z, G4int A, G4double E, >> 280 G4Ions::G4FloatLevelBase flb); 268 G4ParticleDefinition* CreateIon(G4int Z, G 281 G4ParticleDefinition* CreateIon(G4int Z, G4int A, G4int nL, G4double E, 269 G4Ions::G4 << 282 G4Ions::G4FloatLevelBase flb); 270 G4ParticleDefinition* CreateIon(G4int Z, G << 283 G4ParticleDefinition* CreateIon(G4int Z, G4int A, G4int lvl=0); 271 G4ParticleDefinition* CreateIon(G4int Z, G 284 G4ParticleDefinition* CreateIon(G4int Z, G4int A, G4int nL, G4int lvl); 272 285 273 void InsertWorker(const G4ParticleDefiniti 286 void InsertWorker(const G4ParticleDefinition* particle); 274 287 275 // Create Ion << 288 // Create Ion 276 << 289 277 G4IsotopeProperty* FindIsotope(G4int Z, G4 290 G4IsotopeProperty* FindIsotope(G4int Z, G4int A, G4double E, 278 G4Ions::G4F << 291 G4Ions::G4FloatLevelBase flb) const; 279 G4IsotopeProperty* FindIsotope(G4int Z, G4 << 292 G4IsotopeProperty* FindIsotope(G4int Z, G4int A, G4int lvl) const; 280 // Ask properties of isotopes << 293 // Ask properties of isotopes 281 << 294 282 G4ParticleDefinition* GetLightIon(G4int Z, 295 G4ParticleDefinition* GetLightIon(G4int Z, G4int A) const; 283 G4ParticleDefinition* GetLightAntiIon(G4in 296 G4ParticleDefinition* GetLightAntiIon(G4int Z, G4int A) const; 284 << 297 285 // Return true if the particle is pre-defi << 286 G4bool IsLightIon(const G4ParticleDefiniti 298 G4bool IsLightIon(const G4ParticleDefinition*) const; 287 G4bool IsLightAntiIon(const G4ParticleDefi 299 G4bool IsLightAntiIon(const G4ParticleDefinition*) const; 288 << 300 // Return true if the particle is pre-defined ion 289 // Add process manager to ions with name o << 301 290 void AddProcessManager(G4ParticleDefinitio 302 void AddProcessManager(G4ParticleDefinition*); >> 303 // Add process manager to ions with name of 'ionName' 291 304 292 // Get Verbose Level defined in G4Particle << 293 G4int GetVerboseLevel() const; 305 G4int GetVerboseLevel() const; >> 306 // Get Verbose Level defined in G4ParticleTable 294 307 295 private: 308 private: >> 309 296 G4NuclideTable* pNuclideTable = nullptr; 310 G4NuclideTable* pNuclideTable = nullptr; 297 311 298 // Isomer table and flag of creation << 299 G4bool isIsomerCreated = false; 312 G4bool isIsomerCreated = false; >> 313 // Isomer table and flag of creation 300 }; 314 }; 301 315 302 // ------------------------ 316 // ------------------------ 303 // Inline methods 317 // Inline methods 304 // ------------------------ 318 // ------------------------ 305 319 306 inline G4int G4IonTable::GetNumberOfElements() << 320 inline >> 321 G4int G4IonTable::GetNumberOfElements() const 307 { 322 { 308 return numberOfElements; 323 return numberOfElements; 309 } 324 } 310 325 311 #endif 326 #endif 312 327