#include <G4VKinkyStringDecay.hh>
Public Member Functions | |
G4VKinkyStringDecay (G4VLongitudinalStringDecay *theModal) | |
virtual | ~G4VKinkyStringDecay () |
G4KineticTrackVector * | FragmentString (const G4ExcitedString &String) |
virtual G4double | GetLightConeGluonZ (G4double zmin, G4double zmax) |
void | SetLongitudinalStringDecay (G4VLongitudinalStringDecay *) |
Definition at line 43 of file G4VKinkyStringDecay.hh.
G4VKinkyStringDecay::G4VKinkyStringDecay | ( | G4VLongitudinalStringDecay * | theModal | ) |
Definition at line 43 of file G4VKinkyStringDecay.cc.
References SetLongitudinalStringDecay().
00044 { 00045 this->SetLongitudinalStringDecay(theModal); 00046 }
virtual G4VKinkyStringDecay::~G4VKinkyStringDecay | ( | ) | [inline, virtual] |
G4KineticTrackVector * G4VKinkyStringDecay::FragmentString | ( | const G4ExcitedString & | String | ) |
Definition at line 63 of file G4VKinkyStringDecay.cc.
References G4VLongitudinalStringDecay::FragmentString(), G4Parton::Get4Momentum(), G4ExcitedString::GetAntiColorParton(), G4ExcitedString::GetColorParton(), G4ExcitedString::GetDirection(), G4ExcitedString::GetGluon(), GetLightConeGluonZ(), G4Parton::GetPosition(), G4VLongitudinalStringDecay::SampleQuarkFlavor(), G4VLongitudinalStringDecay::SampleQuarkPt(), G4Parton::Set4Momentum(), and G4Parton::SetPosition().
00064 { 00065 G4LorentzVector Mom = String.GetGluon()->Get4Momentum(); 00066 G4ThreeVector Pos = String.GetGluon()->GetPosition(); 00067 G4int QuarkEncoding = theLongitudinalStringDecay->SampleQuarkFlavor(); 00068 G4ThreeVector Pquark=theLongitudinalStringDecay->SampleQuarkPt(); 00069 G4double Pt2 = Pquark.mag2(); 00070 G4double z = GetLightConeGluonZ(0, 1); 00071 G4double w = Mom.e() + Mom.pz(); 00072 //... now compute quark longitudinal momentum and energy 00073 00074 Pquark.setZ( (z*w - Pt2/(z*w))*0.5); 00075 G4double E = (z*w + Pt2/(z*w))*0.5; 00076 00077 G4Parton* AntiColor = new G4Parton(-QuarkEncoding); 00078 AntiColor->SetPosition(Pos); 00079 G4LorentzVector AntiColorMom(-Pquark, E); 00080 AntiColor->Set4Momentum(AntiColorMom); 00081 G4Parton* Color = new G4Parton(*String.GetColorParton()); 00082 G4ExcitedString Str1(Color, AntiColor, String.GetDirection()); 00083 G4KineticTrackVector* KTV1 = theLongitudinalStringDecay->FragmentString(Str1); 00084 00085 Color = new G4Parton(QuarkEncoding); 00086 Color->SetPosition(Pos); 00087 G4LorentzVector ColorMom(Pquark, E); 00088 Color->Set4Momentum(ColorMom); 00089 AntiColor = new G4Parton(*String.GetAntiColorParton()); 00090 G4ExcitedString Str2(Color, AntiColor, String.GetDirection()); 00091 G4KineticTrackVector* KTV2 = theLongitudinalStringDecay->FragmentString(Str2); 00092 00093 if (KTV1 && KTV2) 00094 while(!KTV2->empty()) 00095 { 00096 KTV1->push_back(KTV2->back()); 00097 KTV1->erase(KTV1->end()-1); 00098 } 00099 return KTV1; 00100 }
Definition at line 50 of file G4VKinkyStringDecay.cc.
References G4UniformRand, and sqr().
Referenced by FragmentString().
00051 { 00052 G4double z, yf; 00053 do { 00054 z = zmin + G4UniformRand()*(zmax-zmin); 00055 yf = z*z +sqr(1 - z); 00056 } 00057 while (G4UniformRand() > yf); 00058 return z; 00059 }
void G4VKinkyStringDecay::SetLongitudinalStringDecay | ( | G4VLongitudinalStringDecay * | ) | [inline] |