00001 // 00002 // ******************************************************************** 00003 // * License and Disclaimer * 00004 // * * 00005 // * The Geant4 software is copyright of the Copyright Holders of * 00006 // * the Geant4 Collaboration. It is provided under the terms and * 00007 // * conditions of the Geant4 Software License, included in the file * 00008 // * LICENSE and available at http://cern.ch/geant4/license . These * 00009 // * include a list of copyright holders. * 00010 // * * 00011 // * Neither the authors of this software system, nor their employing * 00012 // * institutes,nor the agencies providing financial support for this * 00013 // * work make any representation or warranty, express or implied, * 00014 // * regarding this software system or assume any liability for its * 00015 // * use. Please see the license in the file LICENSE and URL above * 00016 // * for the full disclaimer and the limitation of liability. * 00017 // * * 00018 // * This code implementation is the result of the scientific and * 00019 // * technical work of the GEANT4 collaboration. * 00020 // * By using, copying, modifying or distributing the software (or * 00021 // * any work based on the software) you agree to acknowledge its * 00022 // * use in resulting scientific publications, and indicate your * 00023 // * acceptance of all terms of the Geant4 Software license. * 00024 // ******************************************************************** 00025 // 00026 // 00027 // $Id$ 00028 // 00029 // 00030 // ------------------------------------------------------------ 00031 // GEANT 4 class header file 00032 // 00033 // History: 00034 // ---------------- G4ParticlePropertyData ---------------- 00035 // first implementation by H Kurashige 9 June 2003 00036 // Add magnetic moment by H Kurashige Mar 2007 00037 // ------------------------------------------------------------ 00038 00039 #ifndef G4ParticlePropertyData_h 00040 #define G4ParticlePropertyData_h 1 00041 00042 #include "globals.hh" 00043 #include "G4ios.hh" 00044 00045 class G4ParticlePropertyTable; 00046 class G4ParticlePropertyData 00047 { 00048 // Class Description 00049 // This class containes properties of a particle which are subset 00050 // of properties in G4ParticleDefinition class. 00051 // This class is used only for G4ParticlePropertyTable. 00052 // 00053 00054 friend class G4ParticlePropertyTable; 00055 00056 public: // With Description 00057 00058 G4ParticlePropertyData(const G4String& particleName = ""); 00059 // The particle name should be assigned 00060 // This particle name can not be changed except for assignment operator 00061 00062 G4ParticlePropertyData(const G4ParticlePropertyData &right); 00063 00064 virtual ~G4ParticlePropertyData(); 00065 00066 G4ParticlePropertyData & operator=(const G4ParticlePropertyData &right); 00067 00068 G4int operator==(const G4ParticlePropertyData &right) const; 00069 G4int operator!=(const G4ParticlePropertyData &right) const; 00070 00071 public: // With Description 00072 // By these following Getxxxx methods, you can get values 00073 // for members which can not be changed 00074 const G4String& GetParticleName() const { return theParticleName; } 00075 00076 G4double GetPDGMass() const { return thePDGMass; } 00077 G4double GetPDGWidth() const { return thePDGWidth; } 00078 G4double GetPDGCharge() const { return thePDGCharge; } 00079 00080 G4int GetPDGiSpin() const { return thePDGiSpin; } 00081 G4int GetPDGiParity() const { return thePDGiParity; } 00082 G4int GetPDGiConjugation() const { return thePDGiConjugation; } 00083 G4int GetPDGiIsospin() const { return thePDGiIsospin; } 00084 G4int GetPDGiIsospin3() const { return thePDGiIsospin3; } 00085 G4int GetPDGiGParity() const { return thePDGiGParity; } 00086 00087 G4double GetPDGMagneticMoment() const { return thePDGMagneticMoment; } 00088 00089 G4int GetLeptonNumber() const { return theLeptonNumber; } 00090 G4int GetBaryonNumber() const { return theBaryonNumber; } 00091 00092 G4int GetPDGEncoding() const { return thePDGEncoding; } 00093 G4int GetAntiPDGEncoding() const { return theAntiPDGEncoding; } 00094 00095 G4int GetQuarkContent(G4int flavor) const; 00096 G4int GetAntiQuarkContent(G4int flavor) const; 00097 // return the number of quark with flavor contained in this particle. 00098 // The value of flavor is assigned as follows 00099 // 1:d, 2:u, 3:s, 4:c, 5:b, 6:t 00100 00101 G4double GetPDGLifeTime() const { return thePDGLifeTime; } 00102 00103 // SetXXX methods 00104 void SetPDGMass(G4double newMass); 00105 void SetPDGWidth(G4double newWidth); 00106 void SetPDGCharge(G4double newCharge); 00107 00108 void SetPDGiSpin(G4int newSpin); 00109 void SetPDGiParity(G4int newParity); 00110 void SetPDGiConjugation(G4int newConjugation); 00111 void SetPDGiIsospin(G4int newIsospin); 00112 void SetPDGiIsospin3(G4int newIsospin3); 00113 void SetPDGiGParity(G4int newGParity); 00114 00115 void SetPDGMagneticMoment(G4double mageticMoment); 00116 00117 void SetLeptonNumber(G4int newLeptonNumber); 00118 void SetBaryonNumber(G4int newBaryonNumber); 00119 00120 void SetPDGEncoding(G4int newEncoding); 00121 void SetAntiPDGEncoding(G4int newAntiEncoding); 00122 00123 void SetQuarkContent(G4int flavor, G4int newContent); 00124 void SetAntiQuarkContent(G4int flavor, G4int newContent); 00125 void SetPDGLifeTime(G4double newLifeTime); 00126 00127 public: // With Description 00128 void Print() const; 00129 // Prints information of data members. 00130 00131 public: 00132 void SetVerboseLevel(G4int value); 00133 G4int GetVerboseLevel() const; 00134 // controle flag for output message 00135 // 0: Silent 00136 // 1: Warning message 00137 // 2: More 00138 00139 00140 private: 00141 G4String theParticleName; 00142 // The name of the particle. 00143 00144 G4double thePDGMass; 00145 // The mass of the particle, in units of equivalent energy. 00146 00147 G4double thePDGWidth; 00148 // The decay width of the particle, usually the width of a 00149 // Breit-Wigner function, assuming that you are near the 00150 // mass center anyway. (in units of equivalent energy) 00151 00152 G4double thePDGCharge; 00153 // The charge of the particle.(in units of Coulomb) 00154 00155 // ---- following members are quantum number 00156 // i.e. discrete numbers can be allowded 00157 // So, you can defined only by using integer in constructor 00158 00159 G4int thePDGiSpin; 00160 // The total spin of the particle, also often denoted as 00161 // capital J, in units of 1/2. 00162 00163 G4int thePDGiParity; 00164 // The parity quantum number, in units of 1. If the parity 00165 // is not defined for this particle, we will set this to 0. 00166 00167 G4int thePDGiConjugation; 00168 // This charge conjugation quantum number in units of 1. 00169 00170 G4int thePDGiGParity; 00171 // The value of the G-parity quantum number. 00172 00173 G4int thePDGiIsospin; 00174 G4int thePDGiIsospin3; 00175 // The isospin and its 3rd-component in units of 1/2. 00176 00177 G4double thePDGMagneticMoment; 00178 // The magnetic moment. 00179 00180 G4int theLeptonNumber; 00181 // The lepton quantum number. 00182 00183 G4int theBaryonNumber; 00184 // The baryon quantum number. 00185 00186 G4int thePDGEncoding; 00187 // The Particle Data Group integer identifier of this particle 00188 00189 G4int theAntiPDGEncoding; 00190 // The Particle Data Group integer identifier of the anti-particle 00191 00192 G4double thePDGLifeTime; 00193 // The Particle Life Time 00194 00195 enum {NumberOfQuarkFlavor = 6}; 00196 G4int theQuarkContent[NumberOfQuarkFlavor]; 00197 G4int theAntiQuarkContent[NumberOfQuarkFlavor]; 00198 // the number of quark (minus Sign means anti-quark) contents 00199 00200 private: 00201 G4bool fPDGMassModified; 00202 G4bool fPDGWidthModified; 00203 G4bool fPDGChargeModified; 00204 G4bool fPDGiSpinModified; 00205 G4bool fPDGiParityModified; 00206 G4bool fPDGiConjugationModified; 00207 G4bool fPDGiGParityModified; 00208 G4bool fPDGiIsospinModified; 00209 G4bool fPDGiIsospin3Modified; 00210 G4bool fPDGIsospinModified; 00211 G4bool fPDGIsospin3Modified; 00212 G4bool fPDGMagneticMomentModified; 00213 G4bool fLeptonNumberModified; 00214 G4bool fBaryonNumberModified; 00215 G4bool fPDGEncodingModified; 00216 G4bool fAntiPDGEncodingModified; 00217 G4bool fQuarkContentModified; 00218 G4bool fAntiQuarkContentModified; 00219 G4bool fPDGLifeTimeModified; 00220 00221 private: 00222 G4int verboseLevel; 00223 00224 }; 00225 00226 #include "G4ParticlePropertyData.icc" 00227 00228 #endif 00229 00230