128 throw G4HadronicException(__FILE__, __LINE__,
"G4VLongitudinalStringDecay::operator== forbidden");
136 throw G4HadronicException(__FILE__, __LINE__,
"G4VLongitudinalStringDecay::operator!= forbidden");
166 if ( hadrons.second ==0 )
170 #ifdef debug_VStringDecay
171 G4cout <<
"VlongSF Warning replacing string by single hadron (G4VLongitudinalStringDecay)" <<
G4endl;
172 G4cout << hadrons.first->GetParticleName()<<G4endl
173 <<
"string .. " <<
string->Get4Momentum() <<
" "
174 <<
string->Get4Momentum().m() <<
G4endl;
179 std::sqrt(Mom3.
mag2() +
180 sqr(hadrons.first->GetPDGMass())));
188 #ifdef debug_VStringDecay
189 G4cout <<
"VlongSF Warning replacing qq-qqbar string by TWO hadrons (G4VLongitudinalStringDecay)"
190 << hadrons.first->GetParticleName() <<
" / "
191 << hadrons.second->GetParticleName()
192 <<
"string .. " <<
string->Get4Momentum() <<
" "
193 <<
string->Get4Momentum().m() <<
G4endl;
198 &Mom2,hadrons.second->GetPDGMass(),
199 string->Get4Momentum().
mag());
208 G4ThreeVector Velocity =
string->Get4Momentum().boostVector();
209 result->
Boost(Velocity);
233 #ifdef debug_VStringDecay
234 G4cout<<
"Quarks at the string ends "<<
string->GetLeftParton()->GetParticleName()<<
" "<<
string->GetRightParton()->GetParticleName()<<
G4endl;
237 mass= (Hadron1)->GetPDGMass();
248 mass = (Hadron1)->GetPDGMass() + (Hadron2)->GetPDGMass();
253 pdefs->first = Hadron1;
254 pdefs->second = Hadron2;
267 G4cout <<
"Particle with encoding "<<Encoding<<
" does not exist!!!"<<
G4endl;
305 created = QuarkPair.second;
354 return G4ThreeVector(Pt * std::cos(phi),Pt * std::sin(phi),0);
365 for(
size_t c1 = 0;
c1 < Hadrons->size();
c1++)
371 SumPz += Hadrons->operator[](
c2)->Get4Momentum().pz();
372 SumE += Hadrons->operator[](
c2)->Get4Momentum().e();
374 G4double HadronE = Hadrons->operator[](
c1)->Get4Momentum().e();
375 G4double HadronPz = Hadrons->operator[](
c1)->Get4Momentum().pz();
376 Hadrons->operator[](
c1)->SetFormationTime(
377 (theInitialStringMass - 2.*SumPz + HadronE - HadronPz)/(2.*kappa)/
c_light);
380 (theInitialStringMass - 2.*SumE - HadronE + HadronPz)/(2.*kappa));
381 Hadrons->operator[](
c1)->SetPosition(aPosition);
391 throw G4HadronicException(__FILE__, __LINE__,
"4VLongitudinalStringDecay::SetSigmaTransverseMomentum after FragmentString() not allowed");
424 throw G4HadronicException(__FILE__, __LINE__,
"4VLongitudinalStringDecay::SetDiquarkBreakProbability after FragmentString() not allowed");
435 throw G4HadronicException(__FILE__, __LINE__,
"G4VLongitudinalStringDecay::SetVectorMesonProbability after FragmentString() not allowed");
449 throw G4HadronicException(__FILE__, __LINE__,
"G4VLongitudinalStringDecay::SetSpinThreeHalfBarionProbability after FragmentString() not allowed");
463 throw G4HadronicException(__FILE__, __LINE__,
"G4VLongitudinalStringDecay::SetScalarMesonMixings after FragmentString() not allowed");
465 if ( aVector.size() < 6 )
466 throw G4HadronicException(__FILE__, __LINE__,
"G4VLongitudinalStringDecay::SetScalarMesonMixings( argument Vector too small");
484 throw G4HadronicException(__FILE__, __LINE__,
"G4VLongitudinalStringDecay::SetVectorMesonMixings after FragmentString() not allowed");
486 if ( aVector.size() < 6 )
487 throw G4HadronicException(__FILE__, __LINE__,
"G4VLongitudinalStringDecay::SetVectorMesonMixings( argument Vector too small");
G4ParticleDefinition * FindParticle(G4int PDGEncoding)
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
ParticleList decay(Cluster *const c)
Carries out a cluster decay.
T max(const T t1, const T t2)
brief Return the largest of the two arguments
G4Parton * GetRightParton(void) const
G4ParticleDefinition * Build(G4ParticleDefinition *black, G4ParticleDefinition *white)
CLHEP::Hep3Vector G4ThreeVector
const G4ThreeVector & GetPosition() const
static G4ParticleTable * GetParticleTable()
void SetDiquarkSuppression(G4double aValue)
G4ParticleDefinition * BuildLowSpin(G4ParticleDefinition *black, G4ParticleDefinition *white)
G4ParticleDefinition * GetRightParton(void) const
virtual void SetMassCut(G4double aValue)
void Boost(G4ThreeVector &Velocity)
G4int StringLoopInterrupt
void SetStringTensionParameter(G4double aValue)
const G4String & GetParticleName() const
void SetVectorMesonMixings(std::vector< G4double > aVector)
G4double FragmentationMass(const G4FragmentingString *const string, Pcreate build=0, pDefPair *pdefs=0)
void SetScalarMesonMixings(std::vector< G4double > aVector)
int operator==(const G4VLongitudinalStringDecay &right) const
G4double GetPDGMass() const
void SetSpinThreeHalfBarionProbability(G4double aValue)
void SetDiquarkBreakProbability(G4double aValue)
G4double G4Log(G4double x)
std::vector< G4double > vectorMesonMix
G4int GetDirection(void) const
static constexpr double fermi
void SetVectorMesonProbability(G4double aValue)
G4ParticleDefinition * FindParticle(G4int Encoding)
G4ThreeVector SampleQuarkPt(G4double ptMax=-1.)
G4double GetStringTensionParameter()
void CalculateHadronTimePosition(G4double theInitialStringMass, G4KineticTrackVector *)
G4KineticTrackVector * LightFragmentationTest(const G4ExcitedString *const theString)
G4int SampleQuarkFlavor(void)
void SetSigmaTransverseMomentum(G4double aQT)
virtual ~G4VLongitudinalStringDecay()
void SetStrangenessSuppression(G4double aValue)
G4VLongitudinalStringDecay()
G4Parton * GetLeftParton(void) const
ThreeVector shoot(const G4int Ap, const G4int Af)
int operator!=(const G4VLongitudinalStringDecay &right) const
G4ParticleDefinition * QuarkSplitup(G4ParticleDefinition *decay, G4ParticleDefinition *&created)
G4double G4ParticleHPJENDLHEData::G4double result
virtual void Sample4Momentum(G4LorentzVector *Mom, G4double Mass, G4LorentzVector *AntiMom, G4double AntiMass, G4double InitialMass)=0
static constexpr double c_light
G4ParticleDefinition * GetLeftParton(void) const
G4bool FourQuarkString(void) const
pDefPair CreatePartonPair(G4int NeedParticle, G4bool AllowDiquarks=true)
G4int GetPDGEncoding() const
G4GLOB_DLL std::ostream G4cout
G4int ClusterLoopInterrupt
G4ExcitedString * CopyExcited(const G4ExcitedString &string)
static constexpr double pi
G4HadronBuilder * hadronizer
std::pair< G4ParticleDefinition *, G4ParticleDefinition * > pDefPair
std::vector< G4double > scalarMesonMix
static constexpr double GeV
G4double DiquarkBreakProb
T min(const T t1, const T t2)
brief Return the smallest of the two arguments