46 arho(0.5), aphi(0.),
an(-0.5), ala(-0.75), aksi(-1.), alft(0.5)
63 if ( LeftVector != 0 )
return LeftVector;
72 G4bool success=
false, inner_sucess=
true;
84 while (! StopFragmenting(currentString) )
88 if ( Hadron != 0 && IsFragmentable(newString))
91 LeftVector->push_back(Hadron);
93 RightVector->push_back(Hadron);
95 currentString=newString;
98 if (newString)
delete newString;
99 if (Hadron)
delete Hadron;
106 SplitLast(currentString,LeftVector, RightVector) )
110 delete currentString;
113 delete theStringInCMS;
125 while(!RightVector->empty())
127 LeftVector->push_back(RightVector->back());
128 RightVector->erase(RightVector->end()-1);
136 for(
size_t C1 = 0;
C1 < LeftVector->size();
C1++)
140 Momentum = toObserverFrame*Momentum;
143 Momentum = toObserverFrame*Coordinate;
160 G4int absCode = std::abs( PartonEncoding );
163 if(absCode == 1 || absCode == 2) theA = arho;
164 else if(absCode == 3) theA = aphi;
165 else throw G4HadronicException(__FILE__, __LINE__,
"Unknown PDGencoding in G4QGSMFragmentation::G4LightConeZ");
172 yf = std::pow(d1, d2);
178 if(absCode == 1103 || absCode == 2101 ||
179 absCode == 2203 || absCode == 2103)
181 d2 = (alft - (2.*an - arho));
183 else if(absCode == 3101 || absCode == 3103 ||
184 absCode == 3201 || absCode == 3203)
186 d2 = (alft - (2.*ala - arho));
190 d2 = (alft - (2.*aksi - arho));
197 yf = std::pow(d1, d2);
225 G4double zMin = HadronMass2T/(
string->Mass2());
226 G4double zMax = 1. - DecayQuarkMass2/(
string->Mass2());
227 if (zMin >= zMax)
return 0;
229 G4double z = GetLightConeZ(zMin, zMax,
231 HadronPt.
x(), HadronPt.
y());
237 (z *
string->LightConeDecay() -
238 HadronMass2T/(z *
string->LightConeDecay())));
239 G4double HadronE = 0.5* (z *
string->LightConeDecay() +
240 HadronMass2T/(z *
string->LightConeDecay()));
255 G4ThreeVector ClusterVel =
string->Get4Momentum().boostVector();
256 G4double ResidualMass =
string->Mass();
258 G4int cClusterInterrupt = 0;
267 string->SetLeftPartonStable();
276 IsParticle=(
string->GetLeftParton()->GetPDGEncoding()>0) ? -1 : +1;
278 IsParticle=(
string->GetLeftParton()->GetPDGEncoding()>0) ? +1 : -1;
281 quark = QuarkPair.second;
291 while (ResidualMass <= LeftHadron->GetPDGMass() + RightHadron->
GetPDGMass() + ClusterMassCut);
296 Sample4Momentum(&LeftMom, LeftHadron->
GetPDGMass(), &RightMom, RightHadron->
GetPDGMass(), ResidualMass);
297 LeftMom.
boost(ClusterVel);
298 RightMom.
boost(ClusterVel);
299 LeftVector->push_back(
new G4KineticTrack(LeftHadron, 0, Pos, LeftMom));
300 RightVector->push_back(
new G4KineticTrack(RightHadron, 0, Pos, RightMom));
320 string->Get4Momentum().mag2();
329 G4double r_val =
sqr(InitialMass*InitialMass - Mass*Mass - AntiMass*AntiMass) -
sqr(2.*Mass*AntiMass);
330 G4double Pabs = (r_val > 0.)? std::sqrt(r_val)/(2.*InitialMass) : 0;
334 G4double st = std::sqrt(1. - pz * pz)*Pabs;
341 Mom->
setE(std::sqrt(Pabs*Pabs + Mass*Mass));
344 AntiMom->
setE (std::sqrt(Pabs*Pabs + AntiMass*AntiMass));