Geant4 Cross Reference |
>> 1 // This code implementation is the intellectual property of >> 2 // the GEANT4 collaboration. 1 // 3 // 2 // ******************************************* << 4 // By copying, distributing or modifying the Program (or any work 3 // * License and Disclaimer << 5 // based on the Program) you indicate your acceptance of this statement, 4 // * << 6 // and all its terms. 5 // * The Geant4 software is copyright of th << 6 // * the Geant4 Collaboration. It is provided << 7 // * conditions of the Geant4 Software License << 8 // * LICENSE and available at http://cern.ch/ << 9 // * include a list of copyright holders. << 10 // * << 11 // * Neither the authors of this software syst << 12 // * institutes,nor the agencies providing fin << 13 // * work make any representation or warran << 14 // * regarding this software system or assum << 15 // * use. Please see the license in the file << 16 // * for the full disclaimer and the limitatio << 17 // * << 18 // * This code implementation is the result << 19 // * technical work of the GEANT4 collaboratio << 20 // * By using, copying, modifying or distri << 21 // * any work based on the software) you ag << 22 // * use in resulting scientific publicati << 23 // * acceptance of all terms of the Geant4 Sof << 24 // ******************************************* << 25 // 7 // 26 // G4ParticleDefinition << 8 // $Id: G4ParticleDefinition.hh,v 1.8 2001/03/12 05:58:21 kurasige Exp $ >> 9 // GEANT4 tag $Name: geant4-03-01 $ 27 // 10 // 28 // Class description: << 11 // >> 12 // ------------------------------------------------------------ >> 13 // GEANT 4 class header file 29 // 14 // 30 // This class contains all the static data of << 15 // For information related to this code contact: 31 // It uses the process manager in order to col << 16 // CERN, CN Division, ASD group 32 // this kind of particle can undertake. << 17 // History: first implementation, based on object model of 33 << 18 // 2nd December 1995, G.Cosmo 34 // Authors: G.Cosmo, 2 December 1995 - Design, << 19 // ---------------- G4ParticleDefinition ---------------- 35 // M.Asai, 29 January 1996 - First im << 20 // first implementation by Makoto Asai, 29 January 1996 36 // History: << 21 // revised by G.Cosmo, 29 February 1996 37 // - 1996-2003, H.Kurashige - Revisions << 22 // revised by H.Kurashige, 19 April 1996 38 // - 11.03.2003, H.Kurashige - Restructuring f << 23 // revised by H.Kurashige, 4 July 1996 39 // - 25.01.2013, G.Cosmo, A.Dotti - Introduced << 24 // added GetEnergyCuts() and GetLengthCuts() by G.Cosmo, 11 July 1996 40 // - 15.06.2017, K.L.Genser - Added support fo << 25 // added Set/GetVerboseLevel() H.Kurashige 11 Nov. 1997 41 // ------------------------------------------- << 26 // added SetCuts() and ResetCuts H.Kurashige 15 Nov.1996 42 #ifndef G4ParticleDefinition_hh << 27 // change SetProcessManager as public H.Kurashige 06 June 1998 43 #define G4ParticleDefinition_hh 1 << 28 // added GetEnergyThreshold H.Kurashige 08 June 1998 >> 29 // added ShortLived flag and ApplyCuts flag H.Kurashige 27 June 1998 >> 30 // fixed some improper codings H.Kurashige 08 Apr. 1999 >> 31 // added sub-type H.Kurashige 15 Feb. 2000 >> 32 // added RestoreCuts H.Kurashige 09 Mar. 2001 >> 33 // ------------------------------------------------------------ 44 34 45 #include "G4PDefManager.hh" << 35 #ifndef G4ParticleDefinition_h 46 #include "G4ios.hh" << 36 #define G4ParticleDefinition_h 1 47 #include "globals.hh" << 48 37 49 #include <CLHEP/Units/PhysicalConstants.h> << 38 #include "globals.hh" 50 << 39 #include "G4ios.hh" 51 #include <vector> << 52 40 53 class G4ProcessManager; 41 class G4ProcessManager; 54 class G4DecayTable; 42 class G4DecayTable; 55 class G4ParticleTable; 43 class G4ParticleTable; 56 class G4ParticlePropertyTable; << 44 class G4Material; 57 class G4VTrackingManager; << 58 << 59 using G4ParticleDefinitionSubInstanceManager = << 60 45 61 class G4ParticleDefinition << 46 class G4ParticleDefinition 62 { 47 { 63 friend class G4ParticlePropertyTable; << 48 // Class Description >> 49 // This class containes all the static data of a particle. >> 50 // It also has uses a process manager in order to collect >> 51 // all the processes this kind of particle can undertake. >> 52 // >> 53 >> 54 public: // With Description >> 55 // Only one type of constructor can be used for G4ParticleDefinition. >> 56 // If you want to create new particle, you must set name of the particle >> 57 // at construction. Most of members seen as arguments of the constructor >> 58 // (except last 3 arguments concerning with decay ) are "constant" >> 59 // and can not be changed later. (No "SET" methods are available) >> 60 // Each type of particle must be constructed as a unique static object >> 61 // of special class derived from G4ParticleDefinition. >> 62 // see G4ParticleTypes for detail >> 63 >> 64 G4ParticleDefinition(const G4String& aName, >> 65 G4double mass, >> 66 G4double width, >> 67 G4double charge, >> 68 G4int iSpin, >> 69 G4int iParity, >> 70 G4int iConjugation, >> 71 G4int iIsospin, >> 72 G4int iIsospinZ, >> 73 G4int gParity, >> 74 const G4String& pType, >> 75 G4int lepton, >> 76 G4int baryon, >> 77 G4int encoding, >> 78 G4bool stable, >> 79 G4double lifetime, >> 80 G4DecayTable *decaytable, >> 81 G4bool shortlived = false); >> 82 >> 83 virtual ~G4ParticleDefinition(); >> 84 >> 85 public: // With Description >> 86 // These methods concerning cut values are provided >> 87 // to invoke corresponding methods for each particle type. >> 88 // Actual implementation can be seen in the class >> 89 // G4ParticleWithCuts >> 90 virtual void ResetCuts(); >> 91 virtual void SetCuts(G4double ); >> 92 virtual void ReCalcCuts(); >> 93 virtual G4double GetLengthCuts() const; >> 94 virtual G4double* GetEnergyCuts() const; >> 95 virtual G4double GetEnergyThreshold(const G4Material* ) const; >> 96 >> 97 // applyCuts flag >> 98 G4bool GetApplyCutsFlag() const; >> 99 void SetApplyCutsFlag(G4bool flag); >> 100 >> 101 public: >> 102 // This method concerning cut values is supposed to be used by >> 103 // G4VUserPhysicsList to restore cutvalues witout calculation >> 104 // Actual implementation can be seen in the class G4ParticleWithCuts >> 105 virtual void RestoreCuts(G4double cutInLength, >> 106 const G4double* cutInEnergy ){} >> 107 >> 108 >> 109 public: // With Description >> 110 // By these following Getxxxx methods, you can get values >> 111 // for members which can not be changed >> 112 // >> 113 const G4String& GetParticleName() const { return theParticleName; } >> 114 >> 115 G4double GetPDGMass() const { return thePDGMass; } >> 116 G4double GetPDGWidth() const { return thePDGWidth; } >> 117 G4double GetPDGCharge() const { return thePDGCharge; } >> 118 >> 119 G4double GetPDGSpin() const { return thePDGSpin; } >> 120 G4int GetPDGiSpin() const { return thePDGiSpin; } >> 121 G4int GetPDGiParity() const { return thePDGiParity; } >> 122 G4int GetPDGiConjugation() const { return thePDGiConjugation; } >> 123 G4double GetPDGIsospin() const { return thePDGiIsospin; } >> 124 G4double GetPDGIsospin3() const { return thePDGiIsospin3; } >> 125 G4int GetPDGiIsospin() const { return thePDGiIsospin; } >> 126 G4int GetPDGiIsospin3() const { return thePDGiIsospin3; } >> 127 G4int GetPDGiGParity() const { return thePDGiGParity; } >> 128 >> 129 const G4String& GetParticleType() const { return theParticleType; } >> 130 const G4String& GetParticleSubType() const { return theParticleSubType; } >> 131 G4int GetLeptonNumber() const { return theLeptonNumber; } >> 132 G4int GetBaryonNumber() const { return theBaryonNumber; } >> 133 >> 134 G4int GetPDGEncoding() const { return thePDGEncoding; } >> 135 G4int GetAntiPDGEncoding() const { return theAntiPDGEncoding; } >> 136 void SetAntiPDGEncoding(G4int aEncoding); >> 137 >> 138 >> 139 G4int GetQuarkContent(G4int flavor) const; >> 140 G4int GetAntiQuarkContent(G4int flavor) const; >> 141 // return 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, 7:l(down type quark) 8:h(up type quark) >> 144 >> 145 public: // With Description >> 146 // ShortLived flag >> 147 G4bool IsShortLived() const { return fShortLivedFlag; } >> 148 >> 149 G4bool GetPDGStable() const { return thePDGStable; } >> 150 void SetPDGStable(const G4bool aFlag) { thePDGStable=aFlag; } >> 151 >> 152 G4double GetPDGLifeTime() const { return thePDGLifeTime; } >> 153 void SetPDGLifeTime(G4double aLifeTime) { thePDGLifeTime = aLifeTime; } >> 154 >> 155 public:// With Description >> 156 G4DecayTable* GetDecayTable(); >> 157 void SetDecayTable(G4DecayTable* aDecayTable); >> 158 // Set/Get Decay Table >> 159 // !! Decay Table can be modified !! >> 160 >> 161 public: // With Description >> 162 G4ProcessManager* GetProcessManager() const; >> 163 void SetProcessManager(G4ProcessManager* aProcessManager); >> 164 // Set/Get Process Manager >> 165 // !! Process Manager can be modified !! 64 166 65 public: << 167 G4ParticleTable* GetParticleTable(); 66 // Only one type of constructor can be use << 168 // get pointer to the particle table 67 // If you want to create new particle, you << 169 68 // at construction. Most of members seen a << 170 void DumpTable() const; 69 // (except last 3 arguments concerning wit << 171 // Prints information of data members. 70 // and can not be changed later. (No "SET" << 71 // Each type of particle must be construct << 72 // of special class derived from G4Particl << 73 // See G4ParticleTypes for detail << 74 // clang-format off << 75 G4ParticleDefinition(const G4String& aName << 76 G4int iSpin, G4int iP << 77 G4int iIsospinZ, G4in << 78 G4int baryon, G4int e << 79 G4DecayTable* decayta << 80 const G4String& subTy << 81 G4double magneticMome << 82 // clang-format on << 83 << 84 virtual ~G4ParticleDefinition(); << 85 << 86 // Can not use "copy constructor", equalit << 87 G4ParticleDefinition(const G4ParticleDefin << 88 G4ParticleDefinition& operator=(const G4Pa << 89 << 90 G4bool operator==(const G4ParticleDefiniti << 91 G4bool operator!=(const G4ParticleDefiniti << 92 << 93 // With the following Getxxxx methods, one << 94 // for members which can not be changed << 95 << 96 const G4String& GetParticleName() const { << 97 << 98 G4double GetPDGMass() const { return thePD << 99 G4double GetPDGWidth() const { return theP << 100 G4double GetPDGCharge() const { return the << 101 << 102 G4double GetPDGSpin() const { return thePD << 103 G4int GetPDGiSpin() const { return thePDGi << 104 G4int GetPDGiParity() const { return thePD << 105 G4int GetPDGiConjugation() const { return << 106 G4double GetPDGIsospin() const { return th << 107 G4double GetPDGIsospin3() const { return t << 108 G4int GetPDGiIsospin() const { return theP << 109 G4int GetPDGiIsospin3() const { return the << 110 G4int GetPDGiGParity() const { return theP << 111 << 112 G4double GetPDGMagneticMoment() const { re << 113 inline void SetPDGMagneticMoment(G4double << 114 << 115 // Gives the anomaly of magnetic moment fo << 116 G4double CalculateAnomaly() const; << 117 << 118 const G4String& GetParticleType() const { << 119 const G4String& GetParticleSubType() const << 120 G4int GetLeptonNumber() const { return the << 121 G4int GetBaryonNumber() const { return the << 122 << 123 G4int GetPDGEncoding() const { return theP << 124 G4int GetAntiPDGEncoding() const { return << 125 inline void SetAntiPDGEncoding(G4int aEnco << 126 << 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) << 131 inline G4int GetAntiQuarkContent(G4int fla << 132 << 133 G4bool IsShortLived() const { return fShor << 134 << 135 inline G4bool GetPDGStable() const; << 136 void SetPDGStable(const G4bool aFlag) { th << 137 << 138 inline G4double GetPDGLifeTime() const; << 139 void SetPDGLifeTime(G4double aLifeTime) { << 140 << 141 // Get life time of a generic ion through << 142 inline G4double GetIonLifeTime() const; << 143 << 144 // Set/Get Decay Table << 145 // !! Decay Table can be modified !! << 146 inline G4DecayTable* GetDecayTable() const << 147 inline void SetDecayTable(G4DecayTable* aD << 148 << 149 // Set/Get Process Manager << 150 // !! Process Manager can be modified !! << 151 G4ProcessManager* GetProcessManager() cons << 152 void SetProcessManager(G4ProcessManager* a << 153 << 154 // Set/Get Tracking Manager; nullptr means << 155 // !! Tracking Manager can be modified ! << 156 G4VTrackingManager* GetTrackingManager() c << 157 void SetTrackingManager(G4VTrackingManager << 158 << 159 // Get pointer to the particle table << 160 inline G4ParticleTable* GetParticleTable() << 161 << 162 // Get AtomicNumber and AtomicMass << 163 // These properties are defined for nucleu << 164 inline G4int GetAtomicNumber() const; << 165 inline G4int GetAtomicMass() const; << 166 << 167 // Prints information of data members. << 168 void DumpTable() const; << 169 << 170 // Control flag for output message << 171 // 0: Silent << 172 // 1: Warning message << 173 // 2: More << 174 inline void SetVerboseLevel(G4int value); << 175 inline G4int GetVerboseLevel() const; << 176 << 177 void SetApplyCutsFlag(G4bool); << 178 inline G4bool GetApplyCutsFlag() const; << 179 << 180 // True only if the particle is G4Ions << 181 // (it means that theProcessManager is sam << 182 inline G4bool IsGeneralIon() const; << 183 << 184 // True only if the particle is a G4Muonic << 185 // (it means that theProcessManager is sam << 186 inline G4bool IsMuonicAtom() const; << 187 << 188 // Returns the process manager master poin << 189 inline G4ProcessManager* GetMasterProcessM << 190 << 191 // Sets the shadow master pointer (not to << 192 inline void SetMasterProcessManager(G4Proc << 193 << 194 // Returns the instance ID << 195 inline G4int GetInstanceID() const; << 196 << 197 // Returns the private data instance manag << 198 static const G4PDefManager& GetSubInstance << 199 << 200 // Clear memory allocated by sub-instance << 201 static void Clean(); << 202 << 203 void SetParticleDefinitionID(G4int id = -1 << 204 inline G4int GetParticleDefinitionID() con << 205 << 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 G4int GetNumberOfLambdasInHypernucl << 218 inline G4bool IsAntiHypernucleus() const; << 219 inline G4int GetNumberOfAntiLambdasInAntiH << 220 172 221 protected: 173 protected: 222 // Cannot be used << 174 G4int FillQuarkContents(); 223 G4ParticleDefinition(); << 175 // calculate quark and anti-quark contents >> 176 // return value is PDG encoding for this particle. >> 177 // It means error if the return value is deffernt from >> 178 // this->thePDGEncoding. >> 179 >> 180 void SetParticleSubType(const G4String& subtype); >> 181 >> 182 public: >> 183 void SetVerboseLevel(G4int value); >> 184 G4int GetVerboseLevel() const; >> 185 // controle flag for output message >> 186 // 0: Silent >> 187 // 1: Warning message >> 188 // 2: More 224 189 225 // Calculates quark and anti-quark content << 190 private: 226 // return value is the PDG encoding for th << 191 // !!! can not use "copy constructor" nor "default constructor" !!!! 227 // It means error if the return value is d << 192 G4ParticleDefinition(const G4ParticleDefinition &right); 228 // this->thePDGEncoding. << 193 G4ParticleDefinition(); 229 G4int FillQuarkContents(); << 194 230 << 195 private: 231 inline void SetParticleSubType(const G4Str << 196 // !!! Assignment operation is forbidden !!! 232 << 197 const G4ParticleDefinition & operator=(const G4ParticleDefinition &right); 233 inline void SetAtomicNumber(G4int); << 234 inline void SetAtomicMass(G4int); << 235 << 236 enum << 237 { << 238 NumberOfQuarkFlavor = 6 << 239 }; << 240 << 241 // the number of quark (minus Sign means << 242 // The value of flavor is assigned as fol << 243 // 0:d, 1:u, 2:s, 3:c, 4:b, 5:t << 244 G4int theQuarkContent[NumberOfQuarkFlavor] << 245 G4int theAntiQuarkContent[NumberOfQuarkFla << 246 198 247 G4bool isGeneralIon = false; << 199 public: 248 G4bool isMuonicAtom = false; << 200 G4int operator==(const G4ParticleDefinition &right) const; >> 201 G4int operator!=(const G4ParticleDefinition &right) const; 249 202 250 private: 203 private: 251 // --- Shadow of master pointers << 204 // Values following can not be changed >> 205 // i.e. No Setxxxx Methods for them 252 206 253 // Each worker thread can access this fiel << 207 G4String theParticleName; 254 // through this pointer. << 208 // The name of the particle. 255 G4ProcessManager* theProcessManagerShadow << 209 // Each object must have its specific name!! >> 210 >> 211 // --- following member values must be defined with Units >> 212 G4double thePDGMass; >> 213 // The mass of the particle, in units of equivalent energy. >> 214 >> 215 G4double thePDGWidth; >> 216 // The decay width of the particle, usually the width of a >> 217 // Breit-Wigner function, assuming that you are near the >> 218 // mass center anyway. (in units of equivalent energy) >> 219 >> 220 G4double thePDGCharge; >> 221 // The charge of the particle.(in units of Coulomb) >> 222 >> 223 // ---- following members are quantum number >> 224 // i.e. discrete numbers can be allowded >> 225 // So, you can defined only by using integer in constructor >> 226 G4int thePDGiSpin; >> 227 // The total spin of the particle, also often denoted as >> 228 // capital J, in units of 1/2. >> 229 G4double thePDGSpin; >> 230 // The total spin of the particle, in units of 1. >> 231 >> 232 G4int thePDGiParity; >> 233 // The parity quantum number, in units of 1. If the parity >> 234 // is not defined for this particle, we will set this to 0. >> 235 >> 236 G4int thePDGiConjugation; >> 237 // This charge conjugation quantum number in units of 1. >> 238 >> 239 G4int thePDGiIsospin; >> 240 G4int thePDGiIsospin3; >> 241 // The isospin and its 3rd-component in units of 1/2. >> 242 G4double thePDGIsospin; >> 243 G4double thePDGIsospin3; >> 244 // The isospin quantum number in units of 1. >> 245 >> 246 G4int thePDGiGParity; >> 247 // The value of the G-parity quantum number. >> 248 >> 249 G4int theLeptonNumber; >> 250 // The lepton quantum number. >> 251 >> 252 G4int theBaryonNumber; >> 253 // The baryon quantum number. >> 254 >> 255 G4String theParticleType; >> 256 // More general textual type description of the particle. >> 257 >> 258 G4String theParticleSubType; >> 259 // Textual type description of the particle >> 260 // eg. pion, lamda etc. >> 261 >> 262 G4int thePDGEncoding; >> 263 // The Particle Data Group integer identifier of this particle >> 264 >> 265 G4int theAntiPDGEncoding; >> 266 // The Particle Data Group integer identifier of the anti-particle 256 267 257 // This field is used as instance ID. << 268 protected: 258 G4int g4particleDefinitionInstanceID = 0; << 269 enum {NumberOfQuarkFlavor = 8}; >> 270 G4int theQuarkContent[NumberOfQuarkFlavor]; >> 271 G4int theAntiQuarkContent[NumberOfQuarkFlavor]; >> 272 // the number of quark (minus Sign means anti-quark) contents >> 273 // The value of flavor is assigned as follows >> 274 // 0:d, 1:u, 2:s, 3:c, >> 275 // 4:b, 5:t, 6:l(down type quark) 7:h(up type quark) 259 276 260 // This field helps to use the class G4PDe << 261 G4PART_DLL static G4PDefManager subInstanc << 262 277 263 // --- Following values can not be change << 278 private: 264 // --- i.e. No Setxxxx Methods for them << 279 // Following members can be changed after construction 265 280 266 // The name of the particle. << 281 G4bool fShortLivedFlag; 267 // Each object must have its specific name << 282 // Particles which have true value of this flag 268 G4String theParticleName = ""; << 283 // will not be tracked by TrackingManager >> 284 >> 285 G4bool thePDGStable; >> 286 // Is an indicator that this particle is stable. It must >> 287 // not decay. If the user tries to assign a kind of decay >> 288 // object to it, it will refuse to take it. >> 289 >> 290 G4double thePDGLifeTime; >> 291 // Is related to the decay width of the particle. The mean >> 292 // life time is given in seconds. >> 293 >> 294 class G4DecayTable *theDecayTable; >> 295 // Points DecayTable >> 296 >> 297 private: >> 298 class G4ProcessManager *theProcessManager; >> 299 // Points to G4ProcessManager >> 300 >> 301 G4ParticleTable* theParticleTable; >> 302 >> 303 // ApplyCuts flag >> 304 G4bool fApplyCutsFlag; >> 305 >> 306 >> 307 private: >> 308 G4int verboseLevel; >> 309 }; 269 310 270 // --- Following member values must be de << 311 inline >> 312 G4ParticleTable* G4ParticleDefinition::GetParticleTable() >> 313 { >> 314 return theParticleTable; >> 315 } >> 316 >> 317 inline >> 318 G4DecayTable* G4ParticleDefinition::GetDecayTable() >> 319 { >> 320 return theDecayTable; >> 321 } >> 322 >> 323 inline >> 324 void G4ParticleDefinition::SetDecayTable(G4DecayTable* aDecayTable) >> 325 { >> 326 theDecayTable = aDecayTable; >> 327 } 271 328 272 // The mass of the particle, in units of e << 329 inline 273 G4double thePDGMass = 0.0; << 330 void G4ParticleDefinition::SetApplyCutsFlag(G4bool flag) >> 331 { >> 332 fApplyCutsFlag = flag; >> 333 } 274 334 275 // The decay width of the particle, usuall << 335 inline 276 // Breit-Wigner function, assuming that yo << 336 G4bool G4ParticleDefinition::GetApplyCutsFlag() const 277 // mass center anyway. (in units of equiva << 337 { 278 G4double thePDGWidth = 0.0; << 338 return fApplyCutsFlag; >> 339 } 279 340 280 // The charge of the particle.(in units of << 341 inline 281 G4double thePDGCharge = 0.0; << 342 void G4ParticleDefinition::SetVerboseLevel(G4int value) >> 343 { >> 344 verboseLevel = value; >> 345 } 282 346 283 // --- Following members are quantum num << 347 inline 284 // i.e. discrete numbers can be allo << 348 G4int G4ParticleDefinition::GetVerboseLevel() const 285 // So, you can define them only by u << 349 { >> 350 return verboseLevel; >> 351 } >> 352 >> 353 inline >> 354 G4ProcessManager* G4ParticleDefinition::GetProcessManager() const >> 355 { >> 356 return theProcessManager; >> 357 } 286 358 287 // The total spin of the particle, also of << 359 inline 288 // capital J, in units of 1/2. << 360 void G4ParticleDefinition::SetProcessManager(G4ProcessManager *aProcessManager) 289 G4int thePDGiSpin = 0; << 361 { >> 362 theProcessManager = aProcessManager; >> 363 } 290 364 291 // The total spin of the particle, in unit << 365 inline 292 G4double thePDGSpin = 0.0; << 366 G4int G4ParticleDefinition::GetQuarkContent(G4int flavor) const >> 367 { >> 368 if ((flavor>0) && (flavor<NumberOfQuarkFlavor)){ >> 369 return theQuarkContent[flavor-1]; >> 370 }else { >> 371 if (verboseLevel >0) { >> 372 G4cout << "Invalid Quark Flavor for G4ParticleDefinition::GetQuarkContent"; >> 373 G4cout << ": flavor=" << flavor <<G4endl; >> 374 } >> 375 return 0; >> 376 } >> 377 } >> 378 >> 379 inline >> 380 G4int G4ParticleDefinition::GetAntiQuarkContent(G4int flavor) const >> 381 { >> 382 if ((flavor>0) && (flavor<NumberOfQuarkFlavor)){ >> 383 return theAntiQuarkContent[flavor-1]; >> 384 }else { >> 385 if (verboseLevel >0) { >> 386 G4cout <<"Invalid Quark Flavor for G4ParticleDefinition::GetAntiQuarkContent"; >> 387 G4cout << ": flavor=" << flavor <<G4endl; >> 388 } >> 389 return 0; >> 390 } >> 391 } 293 392 294 // The parity quantum number, in units of << 393 inline void G4ParticleDefinition::SetParticleSubType(const G4String& subtype) 295 // is not defined for this particle, we wi << 394 { 296 G4int thePDGiParity = 0; << 395 theParticleSubType = subtype; >> 396 } >> 397 >> 398 inline void G4ParticleDefinition::ResetCuts(){} >> 399 >> 400 inline void G4ParticleDefinition::SetCuts(G4double ){} >> 401 >> 402 inline void G4ParticleDefinition::ReCalcCuts(){} >> 403 >> 404 inline G4double G4ParticleDefinition::GetLengthCuts() const {return -1.0;} >> 405 >> 406 inline G4double* G4ParticleDefinition::GetEnergyCuts() const {return 0;} >> 407 >> 408 inline G4double G4ParticleDefinition::GetEnergyThreshold(const G4Material* ) const >> 409 { >> 410 return -1.0 * eV; >> 411 } >> 412 >> 413 inline void G4ParticleDefinition::SetAntiPDGEncoding(G4int aEncoding) >> 414 { >> 415 theAntiPDGEncoding = aEncoding; >> 416 } >> 417 >> 418 #endif 297 419 298 // This charge conjugation quantum number << 299 G4int thePDGiConjugation = 0; << 300 420 301 // The value of the G-parity quantum numbe << 302 G4int thePDGiGParity = 0; << 303 421 304 // The isospin and its 3rd-component in un << 305 G4int thePDGiIsospin = 0; << 306 G4int thePDGiIsospin3 = 0; << 307 422 308 // The isospin quantum number in units of << 309 G4double thePDGIsospin = 0.0; << 310 G4double thePDGIsospin3 = 0.0; << 311 423 312 // The magnetic moment. << 313 G4double thePDGMagneticMoment = 0.0; << 314 424 315 // The lepton quantum number. << 316 G4int theLeptonNumber = 0; << 317 425 318 // The baryon quantum number. << 319 G4int theBaryonNumber = 0; << 320 426 321 // More general textual type description o << 322 G4String theParticleType = ""; << 323 427 324 // Textual type description of the particl << 325 // eg. pion, lamda etc. << 326 G4String theParticleSubType = ""; << 327 428 328 // The Particle Data Group integer identif << 329 G4int thePDGEncoding = 0; << 330 429 331 // The Particle Data Group integer identif << 332 G4int theAntiPDGEncoding = 0; << 333 430 334 // --- Following members can be changed af << 335 431 336 // Particles which have true value of this << 337 // will not be tracked by TrackingManager << 338 G4bool fShortLivedFlag = false; << 339 432 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; << 344 433 345 // Is related to the decay width of the pa << 346 // life time is given in seconds. << 347 G4double thePDGLifeTime = 0.0; << 348 434 349 // Points DecayTable << 350 G4DecayTable* theDecayTable = nullptr; << 351 435 352 G4ParticleTable* theParticleTable = nullpt << 353 436 354 G4int theAtomicNumber = 0; << 355 G4int theAtomicMass = 0; << 356 437 357 G4int verboseLevel = 1; << 358 G4bool fApplyCutsFlag = false; << 359 }; << 360 438 361 #include "G4ParticleDefinition.icc" << 362 439 363 #endif << 364 440