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 // G4ParticleDefinition 26 // G4ParticleDefinition 27 // 27 // 28 // Class description: 28 // Class description: 29 // 29 // 30 // This class contains all the static data of 30 // This class contains all the static data of a particle. 31 // It uses the process manager in order to col 31 // It uses the process manager in order to collect all the processes 32 // this kind of particle can undertake. 32 // this kind of particle can undertake. 33 33 34 // Authors: G.Cosmo, 2 December 1995 - Design, 34 // Authors: G.Cosmo, 2 December 1995 - Design, based on object model 35 // M.Asai, 29 January 1996 - First im 35 // M.Asai, 29 January 1996 - First implementation 36 // History: 36 // History: 37 // - 1996-2003, H.Kurashige - Revisions 37 // - 1996-2003, H.Kurashige - Revisions 38 // - 11.03.2003, H.Kurashige - Restructuring f 38 // - 11.03.2003, H.Kurashige - Restructuring for Cuts per Region 39 // - 25.01.2013, G.Cosmo, A.Dotti - Introduced 39 // - 25.01.2013, G.Cosmo, A.Dotti - Introduced thread-safety for MT 40 // - 15.06.2017, K.L.Genser - Added support fo 40 // - 15.06.2017, K.L.Genser - Added support for MuonicAtom 41 // ------------------------------------------- 41 // -------------------------------------------------------------------- 42 #ifndef G4ParticleDefinition_hh 42 #ifndef G4ParticleDefinition_hh 43 #define G4ParticleDefinition_hh 1 43 #define G4ParticleDefinition_hh 1 44 44 45 #include "G4PDefManager.hh" 45 #include "G4PDefManager.hh" 46 #include "G4ios.hh" 46 #include "G4ios.hh" 47 #include "globals.hh" 47 #include "globals.hh" 48 48 49 #include <CLHEP/Units/PhysicalConstants.h> 49 #include <CLHEP/Units/PhysicalConstants.h> 50 50 51 #include <vector> 51 #include <vector> 52 52 53 class G4ProcessManager; 53 class G4ProcessManager; 54 class G4DecayTable; 54 class G4DecayTable; 55 class G4ParticleTable; 55 class G4ParticleTable; 56 class G4ParticlePropertyTable; 56 class G4ParticlePropertyTable; 57 class G4VTrackingManager; 57 class G4VTrackingManager; 58 58 59 using G4ParticleDefinitionSubInstanceManager = 59 using G4ParticleDefinitionSubInstanceManager = G4PDefManager; 60 60 61 class G4ParticleDefinition 61 class G4ParticleDefinition 62 { 62 { 63 friend class G4ParticlePropertyTable; 63 friend class G4ParticlePropertyTable; 64 64 65 public: 65 public: 66 // Only one type of constructor can be use 66 // Only one type of constructor can be used for G4ParticleDefinition. 67 // If you want to create new particle, you 67 // If you want to create new particle, you must set name of the particle 68 // at construction. Most of members seen a 68 // at construction. Most of members seen as arguments of the constructor 69 // (except last 3 arguments concerning wit 69 // (except last 3 arguments concerning with decay ) are "constant" 70 // and can not be changed later. (No "SET" 70 // and can not be changed later. (No "SET" methods are available) 71 // Each type of particle must be construct 71 // Each type of particle must be constructed as a unique object 72 // of special class derived from G4Particl 72 // of special class derived from G4ParticleDefinition. 73 // See G4ParticleTypes for detail 73 // See G4ParticleTypes for detail 74 // clang-format off 74 // clang-format off 75 G4ParticleDefinition(const G4String& aName 75 G4ParticleDefinition(const G4String& aName, G4double mass, G4double width, G4double charge, 76 G4int iSpin, G4int iP 76 G4int iSpin, G4int iParity, G4int iConjugation, G4int iIsospin, 77 G4int iIsospinZ, G4in 77 G4int iIsospinZ, G4int gParity, const G4String& pType, G4int lepton, 78 G4int baryon, G4int e 78 G4int baryon, G4int encoding, G4bool stable, G4double lifetime, 79 G4DecayTable* decayta 79 G4DecayTable* decaytable, G4bool shortlived = false, 80 const G4String& subTy 80 const G4String& subType = "", G4int anti_encoding = 0, 81 G4double magneticMome 81 G4double magneticMoment = 0.0); 82 // clang-format on 82 // clang-format on 83 83 84 virtual ~G4ParticleDefinition(); 84 virtual ~G4ParticleDefinition(); 85 85 86 // Can not use "copy constructor", equalit 86 // Can not use "copy constructor", equality nor "default constructor"! 87 G4ParticleDefinition(const G4ParticleDefin 87 G4ParticleDefinition(const G4ParticleDefinition&) = delete; 88 G4ParticleDefinition& operator=(const G4Pa 88 G4ParticleDefinition& operator=(const G4ParticleDefinition&) = delete; 89 89 90 G4bool operator==(const G4ParticleDefiniti 90 G4bool operator==(const G4ParticleDefinition& right) const; 91 G4bool operator!=(const G4ParticleDefiniti 91 G4bool operator!=(const G4ParticleDefinition& right) const; 92 92 93 // With the following Getxxxx methods, one 93 // With the following Getxxxx methods, one can get values 94 // for members which can not be changed 94 // for members which can not be changed 95 95 96 const G4String& GetParticleName() const { 96 const G4String& GetParticleName() const { return theParticleName; } 97 97 98 G4double GetPDGMass() const { return thePD 98 G4double GetPDGMass() const { return thePDGMass; } 99 G4double GetPDGWidth() const { return theP 99 G4double GetPDGWidth() const { return thePDGWidth; } 100 G4double GetPDGCharge() const { return the 100 G4double GetPDGCharge() const { return thePDGCharge; } 101 101 102 G4double GetPDGSpin() const { return thePD 102 G4double GetPDGSpin() const { return thePDGSpin; } 103 G4int GetPDGiSpin() const { return thePDGi 103 G4int GetPDGiSpin() const { return thePDGiSpin; } 104 G4int GetPDGiParity() const { return thePD 104 G4int GetPDGiParity() const { return thePDGiParity; } 105 G4int GetPDGiConjugation() const { return 105 G4int GetPDGiConjugation() const { return thePDGiConjugation; } 106 G4double GetPDGIsospin() const { return th 106 G4double GetPDGIsospin() const { return thePDGIsospin; } 107 G4double GetPDGIsospin3() const { return t 107 G4double GetPDGIsospin3() const { return thePDGIsospin3; } 108 G4int GetPDGiIsospin() const { return theP 108 G4int GetPDGiIsospin() const { return thePDGiIsospin; } 109 G4int GetPDGiIsospin3() const { return the 109 G4int GetPDGiIsospin3() const { return thePDGiIsospin3; } 110 G4int GetPDGiGParity() const { return theP 110 G4int GetPDGiGParity() const { return thePDGiGParity; } 111 111 112 G4double GetPDGMagneticMoment() const { re 112 G4double GetPDGMagneticMoment() const { return thePDGMagneticMoment; } 113 inline void SetPDGMagneticMoment(G4double 113 inline void SetPDGMagneticMoment(G4double mageticMoment); 114 114 115 // Gives the anomaly of magnetic moment fo 115 // Gives the anomaly of magnetic moment for spin 1/2 particles 116 G4double CalculateAnomaly() const; 116 G4double CalculateAnomaly() const; 117 117 118 const G4String& GetParticleType() const { 118 const G4String& GetParticleType() const { return theParticleType; } 119 const G4String& GetParticleSubType() const 119 const G4String& GetParticleSubType() const { return theParticleSubType; } 120 G4int GetLeptonNumber() const { return the 120 G4int GetLeptonNumber() const { return theLeptonNumber; } 121 G4int GetBaryonNumber() const { return the 121 G4int GetBaryonNumber() const { return theBaryonNumber; } 122 122 123 G4int GetPDGEncoding() const { return theP 123 G4int GetPDGEncoding() const { return thePDGEncoding; } 124 G4int GetAntiPDGEncoding() const { return 124 G4int GetAntiPDGEncoding() const { return theAntiPDGEncoding; } 125 inline void SetAntiPDGEncoding(G4int aEnco 125 inline void SetAntiPDGEncoding(G4int aEncoding); 126 126 127 // Returns the number of quark with flavor 127 // Returns the number of quark with flavor contained in this particle. 128 // The value of flavor is assigned as foll 128 // The value of flavor is assigned as follows 129 // 1:d, 2:u, 3:s, 4:c, 5:b, 6:t 129 // 1:d, 2:u, 3:s, 4:c, 5:b, 6:t 130 inline G4int GetQuarkContent(G4int flavor) 130 inline G4int GetQuarkContent(G4int flavor) const; 131 inline G4int GetAntiQuarkContent(G4int fla 131 inline G4int GetAntiQuarkContent(G4int flavor) const; 132 132 133 G4bool IsShortLived() const { return fShor 133 G4bool IsShortLived() const { return fShortLivedFlag; } 134 134 135 inline G4bool GetPDGStable() const; 135 inline G4bool GetPDGStable() const; 136 void SetPDGStable(const G4bool aFlag) { th 136 void SetPDGStable(const G4bool aFlag) { thePDGStable = aFlag; } 137 137 138 inline G4double GetPDGLifeTime() const; 138 inline G4double GetPDGLifeTime() const; 139 void SetPDGLifeTime(G4double aLifeTime) { 139 void SetPDGLifeTime(G4double aLifeTime) { thePDGLifeTime = aLifeTime; } 140 140 141 // Get life time of a generic ion through 141 // Get life time of a generic ion through G4NuclideTable. 142 inline G4double GetIonLifeTime() const; 142 inline G4double GetIonLifeTime() const; 143 143 144 // Set/Get Decay Table 144 // Set/Get Decay Table 145 // !! Decay Table can be modified !! 145 // !! Decay Table can be modified !! 146 inline G4DecayTable* GetDecayTable() const 146 inline G4DecayTable* GetDecayTable() const; 147 inline void SetDecayTable(G4DecayTable* aD 147 inline void SetDecayTable(G4DecayTable* aDecayTable); 148 148 149 // Set/Get Process Manager 149 // Set/Get Process Manager 150 // !! Process Manager can be modified !! 150 // !! Process Manager can be modified !! 151 G4ProcessManager* GetProcessManager() cons 151 G4ProcessManager* GetProcessManager() const; 152 void SetProcessManager(G4ProcessManager* a 152 void SetProcessManager(G4ProcessManager* aProcessManager); 153 153 154 // Set/Get Tracking Manager; nullptr means 154 // Set/Get Tracking Manager; nullptr means the default 155 // !! Tracking Manager can be modified ! 155 // !! Tracking Manager can be modified !! 156 G4VTrackingManager* GetTrackingManager() c 156 G4VTrackingManager* GetTrackingManager() const; 157 void SetTrackingManager(G4VTrackingManager 157 void SetTrackingManager(G4VTrackingManager* aTrackingManager); 158 158 159 // Get pointer to the particle table 159 // Get pointer to the particle table 160 inline G4ParticleTable* GetParticleTable() 160 inline G4ParticleTable* GetParticleTable() const; 161 161 162 // Get AtomicNumber and AtomicMass 162 // Get AtomicNumber and AtomicMass 163 // These properties are defined for nucleu 163 // These properties are defined for nucleus 164 inline G4int GetAtomicNumber() const; 164 inline G4int GetAtomicNumber() const; 165 inline G4int GetAtomicMass() const; 165 inline G4int GetAtomicMass() const; 166 166 167 // Prints information of data members. 167 // Prints information of data members. 168 void DumpTable() const; 168 void DumpTable() const; 169 169 170 // Control flag for output message 170 // Control flag for output message 171 // 0: Silent 171 // 0: Silent 172 // 1: Warning message 172 // 1: Warning message 173 // 2: More 173 // 2: More 174 inline void SetVerboseLevel(G4int value); 174 inline void SetVerboseLevel(G4int value); 175 inline G4int GetVerboseLevel() const; 175 inline G4int GetVerboseLevel() const; 176 176 177 void SetApplyCutsFlag(G4bool); 177 void SetApplyCutsFlag(G4bool); 178 inline G4bool GetApplyCutsFlag() const; 178 inline G4bool GetApplyCutsFlag() const; 179 179 180 // True only if the particle is G4Ions 180 // True only if the particle is G4Ions 181 // (it means that theProcessManager is sam 181 // (it means that theProcessManager is same as one for G4GenricIon) 182 inline G4bool IsGeneralIon() const; 182 inline G4bool IsGeneralIon() const; 183 183 184 // True only if the particle is a G4Muonic 184 // True only if the particle is a G4MuonicAtom 185 // (it means that theProcessManager is sam 185 // (it means that theProcessManager is same as the one for G4MuonicAtom) 186 inline G4bool IsMuonicAtom() const; 186 inline G4bool IsMuonicAtom() const; 187 187 188 // Returns the process manager master poin 188 // Returns the process manager master pointer. 189 inline G4ProcessManager* GetMasterProcessM 189 inline G4ProcessManager* GetMasterProcessManager() const; 190 190 191 // Sets the shadow master pointer (not to 191 // Sets the shadow master pointer (not to be used by user) 192 inline void SetMasterProcessManager(G4Proc 192 inline void SetMasterProcessManager(G4ProcessManager* aNewPM); 193 193 194 // Returns the instance ID 194 // Returns the instance ID 195 inline G4int GetInstanceID() const; 195 inline G4int GetInstanceID() const; 196 196 197 // Returns the private data instance manag 197 // Returns the private data instance manager 198 static const G4PDefManager& GetSubInstance 198 static const G4PDefManager& GetSubInstanceManager(); 199 199 200 // Clear memory allocated by sub-instance 200 // Clear memory allocated by sub-instance manager 201 static void Clean(); 201 static void Clean(); 202 202 203 void SetParticleDefinitionID(G4int id = -1 203 void SetParticleDefinitionID(G4int id = -1); 204 inline G4int GetParticleDefinitionID() con 204 inline G4int GetParticleDefinitionID() const; 205 205 206 // The first two methods return "false" an 206 // The first two methods return "false" and 0, respectively, 207 // if the particle is not an hypernucleus; 207 // if the particle is not an hypernucleus; else, they return 208 // "true" and the number of Lambdas bound 208 // "true" and the number of Lambdas bound in the nucleus. 209 // Similarly, the last two methods return 209 // Similarly, the last two methods return "false" and 0, 210 // respectively, if the particle is not an 210 // respectively, if the particle is not an anti-hypernucleus; 211 // else, they return "true" and the number 211 // else, they return "true" and the number of anti-Lambdas 212 // bound in the anti-nucleus. 212 // bound in the anti-nucleus. 213 // Notice that, for the time being, we are 213 // Notice that, for the time being, we are assuming that 214 // (anti-)Lambda is the only type of (anti 214 // (anti-)Lambda is the only type of (anti-)hyperon present 215 // in all (anti-)hypernuclei. 215 // in all (anti-)hypernuclei. 216 inline G4bool IsHypernucleus() const; 216 inline G4bool IsHypernucleus() const; 217 inline G4int GetNumberOfLambdasInHypernucl 217 inline G4int GetNumberOfLambdasInHypernucleus() const; 218 inline G4bool IsAntiHypernucleus() const; 218 inline G4bool IsAntiHypernucleus() const; 219 inline G4int GetNumberOfAntiLambdasInAntiH 219 inline G4int GetNumberOfAntiLambdasInAntiHypernucleus() const; 220 220 221 protected: 221 protected: 222 // Cannot be used 222 // Cannot be used 223 G4ParticleDefinition(); 223 G4ParticleDefinition(); 224 224 225 // Calculates quark and anti-quark content 225 // Calculates quark and anti-quark contents 226 // return value is the PDG encoding for th 226 // return value is the PDG encoding for this particle. 227 // It means error if the return value is d 227 // It means error if the return value is different from 228 // this->thePDGEncoding. 228 // this->thePDGEncoding. 229 G4int FillQuarkContents(); 229 G4int FillQuarkContents(); 230 230 231 inline void SetParticleSubType(const G4Str 231 inline void SetParticleSubType(const G4String& subtype); 232 232 233 inline void SetAtomicNumber(G4int); 233 inline void SetAtomicNumber(G4int); 234 inline void SetAtomicMass(G4int); 234 inline void SetAtomicMass(G4int); 235 235 236 enum 236 enum 237 { 237 { 238 NumberOfQuarkFlavor = 6 238 NumberOfQuarkFlavor = 6 239 }; 239 }; 240 240 241 // the number of quark (minus Sign means 241 // the number of quark (minus Sign means anti-quark) contents 242 // The value of flavor is assigned as fol 242 // The value of flavor is assigned as follows 243 // 0:d, 1:u, 2:s, 3:c, 4:b, 5:t 243 // 0:d, 1:u, 2:s, 3:c, 4:b, 5:t 244 G4int theQuarkContent[NumberOfQuarkFlavor] 244 G4int theQuarkContent[NumberOfQuarkFlavor]; 245 G4int theAntiQuarkContent[NumberOfQuarkFla 245 G4int theAntiQuarkContent[NumberOfQuarkFlavor]; 246 246 247 G4bool isGeneralIon = false; 247 G4bool isGeneralIon = false; 248 G4bool isMuonicAtom = false; 248 G4bool isMuonicAtom = false; 249 249 250 private: 250 private: 251 // --- Shadow of master pointers 251 // --- Shadow of master pointers 252 252 253 // Each worker thread can access this fiel 253 // Each worker thread can access this field from the master thread 254 // through this pointer. 254 // through this pointer. 255 G4ProcessManager* theProcessManagerShadow 255 G4ProcessManager* theProcessManagerShadow = nullptr; 256 256 257 // This field is used as instance ID. 257 // This field is used as instance ID. 258 G4int g4particleDefinitionInstanceID = 0; 258 G4int g4particleDefinitionInstanceID = 0; 259 259 260 // This field helps to use the class G4PDe 260 // This field helps to use the class G4PDefManager introduced above. 261 G4PART_DLL static G4PDefManager subInstanc 261 G4PART_DLL static G4PDefManager subInstanceManager; 262 262 263 // --- Following values can not be change 263 // --- Following values can not be changed 264 // --- i.e. No Setxxxx Methods for them 264 // --- i.e. No Setxxxx Methods for them 265 265 266 // The name of the particle. 266 // The name of the particle. 267 // Each object must have its specific name 267 // Each object must have its specific name!! 268 G4String theParticleName = ""; 268 G4String theParticleName = ""; 269 269 270 // --- Following member values must be de 270 // --- Following member values must be defined with Units 271 271 272 // The mass of the particle, in units of e 272 // The mass of the particle, in units of equivalent energy. 273 G4double thePDGMass = 0.0; 273 G4double thePDGMass = 0.0; 274 274 275 // The decay width of the particle, usuall 275 // The decay width of the particle, usually the width of a 276 // Breit-Wigner function, assuming that yo 276 // Breit-Wigner function, assuming that you are near the 277 // mass center anyway. (in units of equiva 277 // mass center anyway. (in units of equivalent energy) 278 G4double thePDGWidth = 0.0; 278 G4double thePDGWidth = 0.0; 279 279 280 // The charge of the particle.(in units of 280 // The charge of the particle.(in units of Coulomb) 281 G4double thePDGCharge = 0.0; 281 G4double thePDGCharge = 0.0; 282 282 283 // --- Following members are quantum num 283 // --- Following members are quantum number 284 // i.e. discrete numbers can be allo 284 // i.e. discrete numbers can be allowed 285 // So, you can define them only by u 285 // So, you can define them only by using integer in constructor 286 286 287 // The total spin of the particle, also of 287 // The total spin of the particle, also often denoted as 288 // capital J, in units of 1/2. 288 // capital J, in units of 1/2. 289 G4int thePDGiSpin = 0; 289 G4int thePDGiSpin = 0; 290 290 291 // The total spin of the particle, in unit 291 // The total spin of the particle, in units of 1. 292 G4double thePDGSpin = 0.0; 292 G4double thePDGSpin = 0.0; 293 293 294 // The parity quantum number, in units of 294 // The parity quantum number, in units of 1. If the parity 295 // is not defined for this particle, we wi 295 // is not defined for this particle, we will set this to 0. 296 G4int thePDGiParity = 0; 296 G4int thePDGiParity = 0; 297 297 298 // This charge conjugation quantum number 298 // This charge conjugation quantum number in units of 1. 299 G4int thePDGiConjugation = 0; 299 G4int thePDGiConjugation = 0; 300 300 301 // The value of the G-parity quantum numbe 301 // The value of the G-parity quantum number. 302 G4int thePDGiGParity = 0; 302 G4int thePDGiGParity = 0; 303 303 304 // The isospin and its 3rd-component in un 304 // The isospin and its 3rd-component in units of 1/2. 305 G4int thePDGiIsospin = 0; 305 G4int thePDGiIsospin = 0; 306 G4int thePDGiIsospin3 = 0; 306 G4int thePDGiIsospin3 = 0; 307 307 308 // The isospin quantum number in units of 308 // The isospin quantum number in units of 1. 309 G4double thePDGIsospin = 0.0; 309 G4double thePDGIsospin = 0.0; 310 G4double thePDGIsospin3 = 0.0; 310 G4double thePDGIsospin3 = 0.0; 311 311 312 // The magnetic moment. 312 // The magnetic moment. 313 G4double thePDGMagneticMoment = 0.0; 313 G4double thePDGMagneticMoment = 0.0; 314 314 315 // The lepton quantum number. 315 // The lepton quantum number. 316 G4int theLeptonNumber = 0; 316 G4int theLeptonNumber = 0; 317 317 318 // The baryon quantum number. 318 // The baryon quantum number. 319 G4int theBaryonNumber = 0; 319 G4int theBaryonNumber = 0; 320 320 321 // More general textual type description o 321 // More general textual type description of the particle. 322 G4String theParticleType = ""; 322 G4String theParticleType = ""; 323 323 324 // Textual type description of the particl 324 // Textual type description of the particle 325 // eg. pion, lamda etc. 325 // eg. pion, lamda etc. 326 G4String theParticleSubType = ""; 326 G4String theParticleSubType = ""; 327 327 328 // The Particle Data Group integer identif 328 // The Particle Data Group integer identifier of this particle 329 G4int thePDGEncoding = 0; 329 G4int thePDGEncoding = 0; 330 330 331 // The Particle Data Group integer identif 331 // The Particle Data Group integer identifier of the anti-particle 332 G4int theAntiPDGEncoding = 0; 332 G4int theAntiPDGEncoding = 0; 333 333 334 // --- Following members can be changed af 334 // --- Following members can be changed after construction 335 335 336 // Particles which have true value of this 336 // Particles which have true value of this flag 337 // will not be tracked by TrackingManager 337 // will not be tracked by TrackingManager 338 G4bool fShortLivedFlag = false; 338 G4bool fShortLivedFlag = false; 339 339 340 // Is an indicator that this particle is s 340 // Is an indicator that this particle is stable. It must 341 // not decay. If the user tries to assign 341 // not decay. If the user tries to assign a kind of decay 342 // object to it, it will refuse to take it 342 // object to it, it will refuse to take it. 343 G4bool thePDGStable = false; 343 G4bool thePDGStable = false; 344 344 345 // Is related to the decay width of the pa 345 // Is related to the decay width of the particle. The mean 346 // life time is given in seconds. 346 // life time is given in seconds. 347 G4double thePDGLifeTime = 0.0; 347 G4double thePDGLifeTime = 0.0; 348 348 349 // Points DecayTable 349 // Points DecayTable 350 G4DecayTable* theDecayTable = nullptr; 350 G4DecayTable* theDecayTable = nullptr; 351 351 352 G4ParticleTable* theParticleTable = nullpt 352 G4ParticleTable* theParticleTable = nullptr; 353 353 354 G4int theAtomicNumber = 0; 354 G4int theAtomicNumber = 0; 355 G4int theAtomicMass = 0; 355 G4int theAtomicMass = 0; 356 356 357 G4int verboseLevel = 1; 357 G4int verboseLevel = 1; 358 G4bool fApplyCutsFlag = false; 358 G4bool fApplyCutsFlag = false; 359 }; 359 }; 360 360 361 #include "G4ParticleDefinition.icc" 361 #include "G4ParticleDefinition.icc" 362 362 363 #endif 363 #endif 364 364