Geant4 Cross Reference |
1 // 1 2 // ******************************************* 3 // * License and Disclaimer 4 // * 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 // 26 // 27 // 28 // ------------------------------------------- 29 // GEANT 4 class implementation file 30 // 31 // ---------------- G4Parton ------------ 32 // by Gunter Folger, June 1998. 33 // class for Parton (inside a string) us 34 // ------------------------------------------- 35 36 #include "G4Parton.hh" 37 #include "G4HadronicException.hh" 38 39 G4Parton::G4Parton(G4int PDGcode) 40 { 41 PDGencoding=PDGcode; 42 theX = 0; 43 theDefinition=G4ParticleTable::GetParticleTa 44 if (theDefinition == NULL) 45 { 46 G4cout << "Encoding = "<<PDGencoding<<G4en 47 const G4String& text = "G4Parton::GetDefin 48 throw G4HadronicException(__FILE__, __LINE 49 } 50 // 51 // colour by random in (1,2,3)=(R,G,B) for q 52 // in (-1,-2,-3)=(Rbar,Gbar 53 // 54 if (theDefinition->GetParticleType() == "qua 55 theColour = ((G4int)(3.*G4UniformRand())+1 56 } 57 // 58 // colour by random in (-1,-2,-3)=(Rbar,Gbar 59 // in (1,2,3)=(R,G,B)=(GB,R 60 // 61 else if (theDefinition->GetParticleType() == 62 theColour = -((G4int)(3.*G4UniformRand())+ 63 } 64 // 65 // colour by random in (-11,-12,...,-33)=(RR 66 // 67 else if (theDefinition->GetParticleType() == 68 theColour = -(((G4int)(3.*G4UniformRand()) 69 } 70 else { 71 G4cout << "Encoding = "<<PDGencoding<<G4en 72 const G4String& text = "G4Parton::GetDefin 73 throw G4HadronicException(__FILE__, __LINE 74 } 75 // 76 // isospin-z from PDG-encoded isospin-z for 77 // quarks, anti-quarks, di-quarks, and anti- 78 // 79 if ((theDefinition->GetParticleType() == "qu 80 theIsoSpinZ = theDefinition->GetPDGIsospin 81 } 82 // 83 // isospin-z choosen at random from PDG-enco 84 // 85 else { 86 G4int thisPDGiIsospin=theDefinition->GetPD 87 if (thisPDGiIsospin == 0) { 88 theIsoSpinZ = 0; 89 } 90 else { 91 theIsoSpinZ = ((G4int)((thisPDGiIsospin+ 92 } 93 } 94 // 95 // spin-z choosen at random from PDG-encoded 96 // 97 G4int thisPDGiSpin=theDefinition->GetPDGiSpi 98 if (thisPDGiSpin == 0) { 99 theSpinZ = 0; 100 } 101 else { 102 G4int rand=((G4int)((thisPDGiSpin+1)*G4Uni 103 theSpinZ = rand-thisPDGiSpin*0.5;; 104 } 105 } 106 107 G4Parton::G4Parton(const G4Parton &right) 108 { 109 PDGencoding = right.PDGencoding; 110 theMomentum = right.theMomentum; 111 thePosition = right.thePosition; 112 theX = right.theX; 113 theDefinition = right.theDefinition; 114 theColour = right.theColour; 115 theIsoSpinZ = right.theIsoSpinZ; 116 theSpinZ = right.theSpinZ; 117 } 118 119 G4Parton & G4Parton::operator=(const G4Parton 120 { 121 if (this != &right) 122 { 123 PDGencoding=right.GetPDGcode(); 124 theMomentum=right.Get4Momentum(); 125 thePosition=right.GetPosition(); 126 theX = right.theX; 127 theDefinition = right.theDefinition; 128 theColour = right.theColour; 129 theIsoSpinZ = right.theIsoSpinZ; 130 theSpinZ = right.theSpinZ; 131 } 132 133 return *this; 134 } 135 136 G4Parton::~G4Parton() 137 { 138 // cout << "G4Parton::~G4Parton(): this = "<< 139 // cout << "break here"<<this <<endl; 140 } 141 142 void G4Parton::DefineMomentumInZ(G4double aLig 143 { 144 G4double Mass = GetMass(); 145 G4LorentzVector a4Momentum = Get4Momentum(); 146 aLightConeMomentum*=theX; 147 G4double TransverseMass2 = sqr(a4Momentum.px 148 a4Momentum.setPz(0.5*(aLightConeMomentum - T 149 a4Momentum.setE( 0.5*(aLightConeMomentum + T 150 Set4Momentum(a4Momentum); 151 } 152 153 void G4Parton::DefineMomentumInZ(G4double aLig 154 { 155 G4double Mass = GetMass(); 156 G4LorentzVector a4Momentum = Get4Momentum(); 157 aLightConeMomentum*=theX; 158 aLightConeE*=theX; 159 G4double TransverseMass2 = sqr(a4Momentum.px 160 a4Momentum.setPz(0.5*(aLightConeMomentum - a 161 a4Momentum.setE( 0.5*(aLightConeMomentum + a 162 Set4Momentum(a4Momentum); 163 } 164