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