00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051
00052
00053 #ifndef G4ParticleDefinition_h
00054 #define G4ParticleDefinition_h 1
00055
00056 #include <vector>
00057 #include <CLHEP/Units/PhysicalConstants.h>
00058
00059 #include "globals.hh"
00060 #include "G4ios.hh"
00061
00062 class G4ProcessManager;
00063 class G4DecayTable;
00064 class G4ParticleTable;
00065 class G4ParticlePropertyTable;
00066
00067 class G4ParticleDefinition
00068 {
00069
00070
00071
00072
00073
00074
00075 friend class G4ParticlePropertyTable;
00076
00077 public:
00078
00079
00080
00081
00082
00083
00084
00085
00086
00087 G4ParticleDefinition(const G4String& aName,
00088 G4double mass,
00089 G4double width,
00090 G4double charge,
00091 G4int iSpin,
00092 G4int iParity,
00093 G4int iConjugation,
00094 G4int iIsospin,
00095 G4int iIsospinZ,
00096 G4int gParity,
00097 const G4String& pType,
00098 G4int lepton,
00099 G4int baryon,
00100 G4int encoding,
00101 G4bool stable,
00102 G4double lifetime,
00103 G4DecayTable *decaytable,
00104 G4bool shortlived = false,
00105 const G4String& subType ="",
00106 G4int anti_encoding =0,
00107 G4double magneticMoment = 0.0);
00108
00109 virtual ~G4ParticleDefinition();
00110
00111 public:
00112
00113
00114
00115 const G4String& GetParticleName() const { return theParticleName; }
00116
00117 G4double GetPDGMass() const { return thePDGMass; }
00118 G4double GetPDGWidth() const { return thePDGWidth; }
00119 G4double GetPDGCharge() const { return thePDGCharge; }
00120
00121 G4double GetPDGSpin() const { return thePDGSpin; }
00122 G4int GetPDGiSpin() const { return thePDGiSpin; }
00123 G4int GetPDGiParity() const { return thePDGiParity; }
00124 G4int GetPDGiConjugation() const { return thePDGiConjugation; }
00125 G4double GetPDGIsospin() const { return thePDGIsospin; }
00126 G4double GetPDGIsospin3() const { return thePDGIsospin3; }
00127 G4int GetPDGiIsospin() const { return thePDGiIsospin; }
00128 G4int GetPDGiIsospin3() const { return thePDGiIsospin3; }
00129 G4int GetPDGiGParity() const { return thePDGiGParity; }
00130
00131 G4double GetPDGMagneticMoment() const { return thePDGMagneticMoment; }
00132 void SetPDGMagneticMoment(G4double mageticMoment);
00133 G4double CalculateAnomaly() const;
00134
00135
00136 const G4String& GetParticleType() const { return theParticleType; }
00137 const G4String& GetParticleSubType() const { return theParticleSubType; }
00138 G4int GetLeptonNumber() const { return theLeptonNumber; }
00139 G4int GetBaryonNumber() const { return theBaryonNumber; }
00140
00141 G4int GetPDGEncoding() const { return thePDGEncoding; }
00142 G4int GetAntiPDGEncoding() const { return theAntiPDGEncoding; }
00143 void SetAntiPDGEncoding(G4int aEncoding);
00144
00145
00146 G4int GetQuarkContent(G4int flavor) const;
00147 G4int GetAntiQuarkContent(G4int flavor) const;
00148
00149
00150
00151
00152
00153 public:
00154
00155 G4bool IsShortLived() const { return fShortLivedFlag; }
00156
00157 G4bool GetPDGStable() const { return thePDGStable; }
00158 void SetPDGStable(const G4bool aFlag) { thePDGStable=aFlag; }
00159
00160 G4double GetPDGLifeTime() const { return thePDGLifeTime; }
00161 void SetPDGLifeTime(G4double aLifeTime) { thePDGLifeTime = aLifeTime; }
00162
00163 public:
00164 G4DecayTable* GetDecayTable() const;
00165 void SetDecayTable(G4DecayTable* aDecayTable);
00166
00167
00168
00169 public:
00170 G4ProcessManager* GetProcessManager() const;
00171 void SetProcessManager(G4ProcessManager* aProcessManager);
00172
00173
00174
00175 G4ParticleTable* GetParticleTable() const;
00176
00177
00178 void DumpTable() const;
00179
00180
00181 protected:
00182 G4int FillQuarkContents();
00183
00184
00185
00186
00187
00188 void SetParticleSubType(const G4String& subtype);
00189
00190 public:
00191
00192
00193 G4int GetAtomicNumber() const;
00194 G4int GetAtomicMass() const;
00195
00196 protected:
00197 void SetAtomicNumber(G4int );
00198 void SetAtomicMass(G4int );
00199
00200 public:
00201 void SetVerboseLevel(G4int value);
00202 G4int GetVerboseLevel() const;
00203
00204
00205
00206
00207
00208 protected:
00209
00210 G4ParticleDefinition(const G4ParticleDefinition &right);
00211 G4ParticleDefinition();
00212
00213 private:
00214
00215 const G4ParticleDefinition & operator=(const G4ParticleDefinition &right);
00216
00217 public:
00218 G4int operator==(const G4ParticleDefinition &right) const;
00219 G4int operator!=(const G4ParticleDefinition &right) const;
00220
00221 private:
00222
00223
00224
00225 G4String theParticleName;
00226
00227
00228
00229
00230 G4double thePDGMass;
00231
00232
00233 G4double thePDGWidth;
00234
00235
00236
00237
00238 G4double thePDGCharge;
00239
00240
00241
00242
00243
00244 G4int thePDGiSpin;
00245
00246
00247 G4double thePDGSpin;
00248
00249
00250 G4int thePDGiParity;
00251
00252
00253
00254 G4int thePDGiConjugation;
00255
00256
00257 G4int thePDGiGParity;
00258
00259
00260 G4int thePDGiIsospin;
00261 G4int thePDGiIsospin3;
00262
00263 G4double thePDGIsospin;
00264 G4double thePDGIsospin3;
00265
00266
00267 G4double thePDGMagneticMoment;
00268
00269
00270 G4int theLeptonNumber;
00271
00272
00273 G4int theBaryonNumber;
00274
00275
00276 G4String theParticleType;
00277
00278
00279 G4String theParticleSubType;
00280
00281
00282
00283 G4int thePDGEncoding;
00284
00285
00286 G4int theAntiPDGEncoding;
00287
00288
00289 protected:
00290 enum {NumberOfQuarkFlavor = 6};
00291 G4int theQuarkContent[NumberOfQuarkFlavor];
00292 G4int theAntiQuarkContent[NumberOfQuarkFlavor];
00293
00294
00295
00296
00297 private:
00298
00299
00300 G4bool fShortLivedFlag;
00301
00302
00303
00304 G4bool thePDGStable;
00305
00306
00307
00308
00309 G4double thePDGLifeTime;
00310
00311
00312
00313 class G4DecayTable *theDecayTable;
00314
00315
00316 private:
00317 class G4ProcessManager *theProcessManager;
00318
00319
00320 G4ParticleTable* theParticleTable;
00321
00322 private:
00323 G4int theAtomicNumber;
00324 G4int theAtomicMass;
00325
00326 private:
00327 G4int verboseLevel;
00328
00329 private:
00330 G4bool fApplyCutsFlag;
00331 public:
00332
00333 void SetApplyCutsFlag(G4bool);
00334 G4bool GetApplyCutsFlag() const;
00335
00336 };
00337
00338 #include "G4ParticleDefinition.icc"
00339
00340 #endif