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 // G4ParticlePropertyData class implementation << 26 // $Id: G4ParticlePropertyData.cc 67971 2013-03-13 10:13:24Z gcosmo $ 27 // 27 // 28 // Author: H.Kurashige, 9 June 2003 << 28 // class G4ParticlePropertyData 29 // ------------------------------------------- << 29 // 30 << 30 // Implementation 31 #include "G4ParticlePropertyData.hh" << 31 // >> 32 // History: >> 33 // first implementation by H Kurashige 9 June 2003 >> 34 // Add magnetic moment by H Kurashige Mar 2007 32 35 33 #include "G4PhysicalConstants.hh" << 34 #include "G4SystemOfUnits.hh" << 35 #include "G4ios.hh" 36 #include "G4ios.hh" 36 #include "globals.hh" 37 #include "globals.hh" >> 38 #include "G4PhysicalConstants.hh" >> 39 #include "G4SystemOfUnits.hh" >> 40 #include "G4ParticlePropertyData.hh" >> 41 37 42 38 G4ParticlePropertyData::G4ParticlePropertyData << 43 ///////////////////////////////////////////////////////////// 39 : theParticleName(particleName) << 44 G4ParticlePropertyData::~G4ParticlePropertyData() 40 { 45 { 41 for (std::size_t flv = 0; flv < NumberOfQuar << 42 theQuarkContent[flv] = 0; << 43 theAntiQuarkContent[flv] = 0; << 44 } << 45 } 46 } 46 47 47 G4ParticlePropertyData::G4ParticlePropertyData << 48 ///////////////////////////////////////////////////////////// 48 { << 49 G4ParticlePropertyData::G4ParticlePropertyData(const G4String& particleName): 49 verboseLevel = right.verboseLevel; << 50 theParticleName(particleName), 50 theParticleName = right.theParticleName; << 51 thePDGMass(0.0), 51 thePDGMass = right.thePDGMass; << 52 thePDGWidth(0.0), 52 thePDGWidth = right.thePDGWidth; << 53 thePDGCharge(0.0), 53 thePDGCharge = right.thePDGCharge; << 54 thePDGiSpin(0), 54 thePDGiSpin = right.thePDGiSpin; << 55 thePDGiParity(0), 55 thePDGiParity = right.thePDGiParity; << 56 thePDGiConjugation(0), 56 thePDGiConjugation = right.thePDGiConjugatio << 57 thePDGiGParity(0), 57 thePDGiGParity = right.thePDGiGParity; << 58 thePDGiIsospin(0), 58 thePDGiIsospin = right.thePDGiIsospin; << 59 thePDGiIsospin3(0), 59 thePDGiIsospin3 = right.thePDGiIsospin3; << 60 thePDGMagneticMoment(0.0), 60 thePDGMagneticMoment = right.thePDGMagneticM << 61 theLeptonNumber(0), 61 theLeptonNumber = right.theLeptonNumber; << 62 theBaryonNumber(0), 62 theBaryonNumber = right.theBaryonNumber; << 63 thePDGEncoding(0), 63 thePDGEncoding = right.thePDGEncoding; << 64 theAntiPDGEncoding(0), 64 theAntiPDGEncoding = right.theAntiPDGEncodin << 65 thePDGLifeTime(-1.0), 65 for (std::size_t flv = 0; flv < NumberOfQuar << 66 fPDGMassModified(false), 66 theQuarkContent[flv] = right.theQuarkConte << 67 fPDGWidthModified(false), 67 theAntiQuarkContent[flv] = right.theAntiQu << 68 fPDGChargeModified(false), >> 69 fPDGiSpinModified(false), >> 70 fPDGiParityModified(false), >> 71 fPDGiConjugationModified(false), >> 72 fPDGiGParityModified(false), >> 73 fPDGiIsospinModified(false), >> 74 fPDGiIsospin3Modified(false), >> 75 fPDGIsospinModified(false), >> 76 fPDGIsospin3Modified(false), >> 77 fPDGMagneticMomentModified(false), >> 78 fLeptonNumberModified(false), >> 79 fBaryonNumberModified(false), >> 80 fPDGEncodingModified(false), >> 81 fAntiPDGEncodingModified(false), >> 82 fQuarkContentModified(false), >> 83 fAntiQuarkContentModified(false), >> 84 fPDGLifeTimeModified(false), >> 85 verboseLevel(1) >> 86 { >> 87 for (size_t flv=0; flv<NumberOfQuarkFlavor; ++flv) { >> 88 theQuarkContent[flv] =0; >> 89 theAntiQuarkContent[flv]=0; 68 } 90 } 69 thePDGLifeTime = right.thePDGLifeTime; << 70 } 91 } 71 92 72 G4ParticlePropertyData& G4ParticlePropertyData << 93 >> 94 //////////////////////// >> 95 G4ParticlePropertyData::G4ParticlePropertyData(const G4ParticlePropertyData &right): >> 96 fPDGMassModified(false), >> 97 fPDGWidthModified(false), >> 98 fPDGChargeModified(false), >> 99 fPDGiSpinModified(false), >> 100 fPDGiParityModified(false), >> 101 fPDGiConjugationModified(false), >> 102 fPDGiGParityModified(false), >> 103 fPDGiIsospinModified(false), >> 104 fPDGiIsospin3Modified(false), >> 105 fPDGIsospinModified(false), >> 106 fPDGIsospin3Modified(false), >> 107 fPDGMagneticMomentModified(false), >> 108 fLeptonNumberModified(false), >> 109 fBaryonNumberModified(false), >> 110 fPDGEncodingModified(false), >> 111 fAntiPDGEncodingModified(false), >> 112 fQuarkContentModified(false), >> 113 fAntiQuarkContentModified(false), >> 114 fPDGLifeTimeModified(false) >> 115 { >> 116 verboseLevel = right.verboseLevel; >> 117 theParticleName = right.theParticleName; >> 118 thePDGMass = right.thePDGMass; >> 119 thePDGWidth = right. thePDGWidth; >> 120 thePDGCharge = right.thePDGCharge; >> 121 thePDGiSpin = right.thePDGiSpin; >> 122 thePDGiParity = right.thePDGiParity; >> 123 thePDGiConjugation = right.thePDGiConjugation; >> 124 thePDGiGParity = right.thePDGiGParity; >> 125 thePDGiIsospin = right.thePDGiIsospin; >> 126 thePDGiIsospin3 = right.thePDGiIsospin3; >> 127 thePDGMagneticMoment = right.thePDGMagneticMoment; >> 128 theLeptonNumber = right.theLeptonNumber; >> 129 theBaryonNumber = right.theBaryonNumber; >> 130 thePDGEncoding = right.thePDGEncoding; >> 131 theAntiPDGEncoding = right.theAntiPDGEncoding; >> 132 for (size_t flv=0; flv<NumberOfQuarkFlavor; ++flv) { >> 133 theQuarkContent[flv] = right.theQuarkContent[flv]; >> 134 theAntiQuarkContent[flv]= right.theAntiQuarkContent[flv]; >> 135 } >> 136 thePDGLifeTime = right.thePDGLifeTime; >> 137 } >> 138 >> 139 //////////////////////// >> 140 G4ParticlePropertyData & G4ParticlePropertyData::operator=(const G4ParticlePropertyData &right) 73 { 141 { 74 if (this != &right) { 142 if (this != &right) { 75 verboseLevel = right.verboseLevel; << 143 verboseLevel = right.verboseLevel; 76 theParticleName = right.theParticleName; << 144 theParticleName = right.theParticleName; 77 thePDGMass = right.thePDGMass; << 145 thePDGMass = right.thePDGMass; 78 thePDGWidth = right.thePDGWidth; << 146 thePDGWidth = right. thePDGWidth; 79 thePDGCharge = right.thePDGCharge; << 147 thePDGCharge = right.thePDGCharge; 80 thePDGiSpin = right.thePDGiSpin; << 148 thePDGiSpin = right.thePDGiSpin; 81 thePDGiParity = right.thePDGiParity; << 149 thePDGiParity = right.thePDGiParity; 82 thePDGiConjugation = right.thePDGiConjugat << 150 thePDGiConjugation = right.thePDGiConjugation; 83 thePDGiGParity = right.thePDGiGParity; << 151 thePDGiGParity = right.thePDGiGParity; 84 thePDGiIsospin = right.thePDGiIsospin; << 152 thePDGiIsospin = right.thePDGiIsospin; 85 thePDGiIsospin3 = right.thePDGiIsospin3; << 153 thePDGiIsospin3 = right.thePDGiIsospin3; 86 thePDGMagneticMoment = right.thePDGMagneti << 154 thePDGMagneticMoment = right.thePDGMagneticMoment; 87 theLeptonNumber = right.theLeptonNumber; << 155 theLeptonNumber = right.theLeptonNumber; 88 theBaryonNumber = right.theBaryonNumber; << 156 theBaryonNumber = right.theBaryonNumber; 89 thePDGEncoding = right.thePDGEncoding; << 157 thePDGEncoding = right.thePDGEncoding; 90 theAntiPDGEncoding = right.theAntiPDGEncod << 158 theAntiPDGEncoding = right.theAntiPDGEncoding; 91 for (std::size_t flv = 0; flv < NumberOfQu << 159 for (size_t flv=0; flv<NumberOfQuarkFlavor; ++flv) { 92 theQuarkContent[flv] = right.theQuarkCon << 160 theQuarkContent[flv] = right.theQuarkContent[flv]; 93 theAntiQuarkContent[flv] = right.theAnti << 161 theAntiQuarkContent[flv]= right.theAntiQuarkContent[flv]; 94 } 162 } 95 thePDGLifeTime = right.thePDGLifeTime; << 163 thePDGLifeTime = right.thePDGLifeTime; 96 fPDGMassModified = true; << 164 fPDGMassModified = true; 97 fPDGWidthModified = true; << 165 fPDGWidthModified = true; 98 fPDGChargeModified = true; << 166 fPDGChargeModified = true; 99 fPDGiSpinModified = true; << 167 fPDGiSpinModified = true; 100 fPDGiParityModified = true; << 168 fPDGiParityModified = true; 101 fPDGiConjugationModified = true; << 169 fPDGiConjugationModified = true; 102 fPDGiGParityModified = true; << 170 fPDGiGParityModified = true; 103 fPDGiIsospinModified = true; << 171 fPDGiIsospinModified = true; 104 fPDGiIsospin3Modified = true; << 172 fPDGiIsospin3Modified = true; 105 fPDGIsospinModified = true; << 173 fPDGIsospinModified = true; 106 fPDGIsospin3Modified = true; << 174 fPDGIsospin3Modified = true; 107 fPDGMagneticMomentModified = true; 175 fPDGMagneticMomentModified = true; 108 fLeptonNumberModified = true; << 176 fLeptonNumberModified = true; 109 fBaryonNumberModified = true; << 177 fBaryonNumberModified = true; 110 fPDGEncodingModified = true; << 178 fPDGEncodingModified = true; 111 fAntiPDGEncodingModified = true; << 179 fAntiPDGEncodingModified = true; 112 fQuarkContentModified = true; << 180 fQuarkContentModified = true; 113 fAntiQuarkContentModified = true; << 181 fAntiQuarkContentModified = true; 114 fPDGLifeTimeModified = true; << 182 fPDGLifeTimeModified = true; 115 } 183 } 116 return *this; 184 return *this; 117 } 185 } 118 << 186 119 G4bool G4ParticlePropertyData::operator==(cons << 187 //////////////////////// >> 188 G4int G4ParticlePropertyData::operator==(const G4ParticlePropertyData &right) const 120 { 189 { 121 return (this == &right); 190 return (this == &right); 122 } 191 } 123 192 124 G4bool G4ParticlePropertyData::operator!=(cons << 193 //////////////////////// >> 194 G4int G4ParticlePropertyData::operator!=(const G4ParticlePropertyData &right) const 125 { 195 { 126 return (this != &right); 196 return (this != &right); 127 } 197 } 128 198 >> 199 //////////////////////// 129 void G4ParticlePropertyData::Print() const 200 void G4ParticlePropertyData::Print() const 130 { 201 { 131 #ifdef G4VERBOSE 202 #ifdef G4VERBOSE 132 G4cout << " Particle Name : " << theParticle 203 G4cout << " Particle Name : " << theParticleName << G4endl; 133 G4cout << " PDG particle code : " << thePDGE 204 G4cout << " PDG particle code : " << thePDGEncoding; 134 G4cout << " [PDG anti-particle code: " << th << 205 G4cout << " [PDG anti-particle code: " << this->GetAntiPDGEncoding() << "]"<< G4endl; 135 G4cout << " Mass [GeV/c2] : " << thePDGMass << 206 G4cout << " Mass [GeV/c2] : " << thePDGMass/GeV ; 136 G4cout << " Width : " << thePDGWidth / G << 207 G4cout << " Width : " << thePDGWidth/GeV << G4endl; 137 G4cout << " Lifetime [nsec] : " << thePDGLif << 208 G4cout << " Lifetime [nsec] : " << thePDGLifeTime/ns << G4endl; 138 G4cout << " Charge [e]: " << thePDGCharge / << 209 G4cout << " Charge [e]: " << thePDGCharge/eplus << G4endl; 139 G4cout << " Spin : " << thePDGiSpin << "/2" 210 G4cout << " Spin : " << thePDGiSpin << "/2" << G4endl; 140 G4cout << " Parity : " << thePDGiParity << G 211 G4cout << " Parity : " << thePDGiParity << G4endl; 141 G4cout << " Charge conjugation : " << thePDG 212 G4cout << " Charge conjugation : " << thePDGiConjugation << G4endl; 142 G4cout << " Isospin : (I,Iz): (" << thePDGiI << 213 G4cout << " Isospin : (I,Iz): (" << thePDGiIsospin <<"/2"; 143 G4cout << " , " << thePDGiIsospin3 << "/2 ) 214 G4cout << " , " << thePDGiIsospin3 << "/2 ) " << G4endl; 144 G4cout << " GParity : " << thePDGiGParity << 215 G4cout << " GParity : " << thePDGiGParity << G4endl; 145 G4cout << " MagneticMoment [MeV/T]: "; 216 G4cout << " MagneticMoment [MeV/T]: "; 146 if (thePDGMagneticMoment != 0.0) { 217 if (thePDGMagneticMoment != 0.0) { 147 G4cout << thePDGMagneticMoment / MeV * tes << 218 G4cout << thePDGMagneticMoment/MeV*tesla << G4endl; 148 } << 219 }else { 149 else { << 150 G4cout << "not defined " << G4endl; 220 G4cout << "not defined " << G4endl; 151 } 221 } 152 G4cout << " Lepton number : " << theLeptonNu 222 G4cout << " Lepton number : " << theLeptonNumber; 153 G4cout << " Baryon number : " << theBaryonNu << 223 G4cout << " Baryon number : " << theBaryonNumber << G4endl; 154 G4cout << " Quark contents (d,u,s,c,b,t) 224 G4cout << " Quark contents (d,u,s,c,b,t) : " << theQuarkContent[0]; 155 G4cout << ", " << theQuarkContent[1]; 225 G4cout << ", " << theQuarkContent[1]; 156 G4cout << ", " << theQuarkContent[2]; 226 G4cout << ", " << theQuarkContent[2]; 157 G4cout << ", " << theQuarkContent[3]; 227 G4cout << ", " << theQuarkContent[3]; 158 G4cout << ", " << theQuarkContent[4]; 228 G4cout << ", " << theQuarkContent[4]; 159 G4cout << ", " << theQuarkContent[5] << G4en 229 G4cout << ", " << theQuarkContent[5] << G4endl; 160 G4cout << " AntiQuark contents 230 G4cout << " AntiQuark contents : " << theAntiQuarkContent[0]; 161 G4cout << ", " << theAntiQuarkContent[1]; 231 G4cout << ", " << theAntiQuarkContent[1]; 162 G4cout << ", " << theAntiQuarkContent[2]; 232 G4cout << ", " << theAntiQuarkContent[2]; 163 G4cout << ", " << theAntiQuarkContent[3]; 233 G4cout << ", " << theAntiQuarkContent[3]; 164 G4cout << ", " << theAntiQuarkContent[4]; 234 G4cout << ", " << theAntiQuarkContent[4]; 165 G4cout << ", " << theAntiQuarkContent[5] << 235 G4cout << ", " << theAntiQuarkContent[5] << G4endl; 166 #endif 236 #endif 167 } 237 } >> 238 >> 239 >> 240 >> 241 >> 242 >> 243 >> 244 >> 245 >> 246 168 247