108 Kappa = 1.0 * GeV/fermi;
131 throw G4HadronicException(__FILE__, __LINE__,
"G4VLongitudinalStringDecay::operator== forbidden");
139 throw G4HadronicException(__FILE__, __LINE__,
"G4VLongitudinalStringDecay::operator!= forbidden");
171 if ( hadrons.second ==0 )
185 std::sqrt(Mom3.
mag2() +
186 sqr(hadrons.first->GetPDGMass())));
194#ifdef DEBUG_LightFragmentationTest
195 G4cout <<
"VlongSF Warning replacing qq-qqbar string by TWO hadrons "
196 << hadrons.first->GetParticleName() <<
" / "
197 << hadrons.second->GetParticleName()
198 <<
"string .. " <<
string->Get4Momentum() <<
" "
199 <<
string->Get4Momentum().m() <<
G4endl;
204 &Mom2,hadrons.second->GetPDGMass(),
214 G4ThreeVector Velocity =
string->Get4Momentum().boostVector();
215 result->
Boost(Velocity);
230 static G4bool NeedInit(
true);
231 static std::vector<double> nomix;
237 for (
G4int i=0; i<6 ; i++ ) nomix[i]=0;
252 Hadron1 = (minMassHadronizer->*build)(string->
GetLeftParton(),
253 string->GetRightParton());
255 mass= (Hadron1)->GetPDGMass();
264 Hadron1 = (minMassHadronizer->*build)(string->
GetLeftParton(),
268 mass = (Hadron1)->GetPDGMass() + (Hadron2)->GetPDGMass();
273 pdefs->first = Hadron1;
274 pdefs->second = Hadron2;
287 G4cout <<
"Particle with encoding "<<Encoding<<
" does not exist!!!"<<
G4endl;
333 string->SetLeftPartonStable();
336 string->SetRightPartonStable();
356 delete newString; newString=0;
359 if ( HadronMomentum != 0 ) {
367 delete HadronMomentum;
383 created = QuarkPair.second;
402 G4int Swap = stableQuarkEncoding;
403 stableQuarkEncoding = decayQuarkEncoding;
404 decayQuarkEncoding = Swap;
407 G4int IsParticle=(decayQuarkEncoding>0) ? -1 : +1;
411 G4int QuarkEncoding=QuarkPair.second->GetPDGEncoding();
412 G4int i10 = std::max(std::abs(QuarkEncoding), std::abs(stableQuarkEncoding));
413 G4int i20 = std::min(std::abs(QuarkEncoding), std::abs(stableQuarkEncoding));
415 G4int NewDecayEncoding = -1*IsParticle*(i10 * 1000 + i20 * 100 + spin);
428 created = QuarkPair.second;
456 G4int PDGcode = (std::max(q1,q2) * 1000 + std::min(q1,q2) * 100 + spin) * NeedParticle;
481 return G4ThreeVector(Pt * std::cos(phi),Pt * std::sin(phi),0);
492 for(
size_t c1 = 0; c1 < Hadrons->size(); c1++)
496 for(
size_t c2 = 0; c2 < c1; c2++)
498 SumPz += Hadrons->operator[](c2)->Get4Momentum().pz();
499 SumE += Hadrons->operator[](c2)->Get4Momentum().e();
501 G4double HadronE = Hadrons->operator[](c1)->Get4Momentum().e();
502 G4double HadronPz = Hadrons->operator[](c1)->Get4Momentum().pz();
503 Hadrons->operator[](c1)->SetFormationTime(
504(theInitialStringMass - 2.*SumPz + HadronE - HadronPz)/(2.*kappa)/c_light);
507(theInitialStringMass - 2.*SumE - HadronE + HadronPz)/(2.*kappa));
508 Hadrons->operator[](c1)->SetPosition(aPosition);
518 throw G4HadronicException(__FILE__, __LINE__,
"4VLongitudinalStringDecay::SetSigmaTransverseMomentum after FragmentString() not allowed");
529 throw G4HadronicException(__FILE__, __LINE__,
"4VLongitudinalStringDecay::SetStrangenessSuppression after FragmentString() not allowed");
540 throw G4HadronicException(__FILE__, __LINE__,
"4VLongitudinalStringDecay::SetDiquarkSuppression after FragmentString() not allowed");
551 throw G4HadronicException(__FILE__, __LINE__,
"4VLongitudinalStringDecay::SetDiquarkBreakProbability after FragmentString() not allowed");
562 throw G4HadronicException(__FILE__, __LINE__,
"G4VLongitudinalStringDecay::SetVectorMesonProbability after FragmentString() not allowed");
576 throw G4HadronicException(__FILE__, __LINE__,
"G4VLongitudinalStringDecay::SetSpinThreeHalfBarionProbability after FragmentString() not allowed");
590 throw G4HadronicException(__FILE__, __LINE__,
"G4VLongitudinalStringDecay::SetScalarMesonMixings after FragmentString() not allowed");
592 if ( aVector.size() < 6 )
593 throw G4HadronicException(__FILE__, __LINE__,
"G4VLongitudinalStringDecay::SetScalarMesonMixings( argument Vector too small");
611 throw G4HadronicException(__FILE__, __LINE__,
"G4VLongitudinalStringDecay::SetVectorMesonMixings after FragmentString() not allowed");
613 if ( aVector.size() < 6 )
614 throw G4HadronicException(__FILE__, __LINE__,
"G4VLongitudinalStringDecay::SetVectorMesonMixings( argument Vector too small");
631 Kappa = aValue * GeV/fermi;
CLHEP::Hep3Vector G4ThreeVector
G4DLLIMPORT std::ostream G4cout
const G4ThreeVector & GetPosition() const
G4int GetDirection(void) const
G4Parton * GetRightParton(void) const
G4Parton * GetLeftParton(void) const
G4LorentzVector Get4Momentum() const
G4ParticleDefinition * GetLeftParton(void) const
G4ParticleDefinition * GetRightParton(void) const
G4ParticleDefinition * GetDecayParton() const
G4bool FourQuarkString(void) const
G4ParticleDefinition * Build(G4ParticleDefinition *black, G4ParticleDefinition *white)
G4ParticleDefinition * BuildLowSpin(G4ParticleDefinition *black, G4ParticleDefinition *white)
void Boost(G4ThreeVector &Velocity)
G4int GetPDGEncoding() const
G4ParticleDefinition * FindParticle(G4int PDGEncoding)
static G4ParticleTable * GetParticleTable()
std::vector< G4double > scalarMesonMix
G4ThreeVector SampleQuarkPt(G4double ptMax=-1.)
G4KineticTrack * Splitup(G4FragmentingString *string, G4FragmentingString *&newString)
G4HadronBuilder * hadronizer
void SetSpinThreeHalfBarionProbability(G4double aValue)
G4int SampleQuarkFlavor(void)
G4VLongitudinalStringDecay()
std::pair< G4ParticleDefinition *, G4ParticleDefinition * > pDefPair
virtual G4LorentzVector * SplitEandP(G4ParticleDefinition *pHadron, G4FragmentingString *string, G4FragmentingString *newString)=0
G4ParticleDefinition * FindParticle(G4int Encoding)
void SetVectorMesonProbability(G4double aValue)
std::vector< G4double > vectorMesonMix
G4double GetStringTensionParameter()
G4ParticleDefinition * QuarkSplitup(G4ParticleDefinition *decay, G4ParticleDefinition *&created)
void SetScalarMesonMixings(std::vector< G4double > aVector)
G4int ClusterLoopInterrupt
virtual void SetMassCut(G4double aValue)
void SetDiquarkSuppression(G4double aValue)
void SetStrangenessSuppression(G4double aValue)
virtual void Sample4Momentum(G4LorentzVector *Mom, G4double Mass, G4LorentzVector *AntiMom, G4double AntiMass, G4double InitialMass)=0
G4int StringLoopInterrupt
void SetVectorMesonMixings(std::vector< G4double > aVector)
void SetDiquarkBreakProbability(G4double aValue)
G4ParticleDefinition * DiQuarkSplitup(G4ParticleDefinition *decay, G4ParticleDefinition *&created)
pDefPair CreatePartonPair(G4int NeedParticle, G4bool AllowDiquarks=true)
void SetSigmaTransverseMomentum(G4double aQT)
virtual ~G4VLongitudinalStringDecay()
void SetStringTensionParameter(G4double aValue)
void CalculateHadronTimePosition(G4double theInitialStringMass, G4KineticTrackVector *)
G4double DiquarkBreakProb
G4ExcitedString * CPExcited(const G4ExcitedString &string)
G4double FragmentationMass(const G4FragmentingString *const string, Pcreate build=0, pDefPair *pdefs=0)
G4KineticTrackVector * LightFragmentationTest(const G4ExcitedString *const theString)