Geant4-11
Public Member Functions | Data Fields | Protected Types | Protected Member Functions | Protected Attributes | Private Member Functions | Private Attributes
G4QGSMFragmentation Class Reference

#include <G4QGSMFragmentation.hh>

Inheritance diagram for G4QGSMFragmentation:
G4VLongitudinalStringDecay G4HadronicInteraction

Public Member Functions

void ActivateFor (const G4Element *anElement)
 
void ActivateFor (const G4Material *aMaterial)
 
void AddNewParticles ()
 
G4HadFinalStateApplyYourself (const G4HadProjectile &, G4Nucleus &) final
 
virtual void BuildPhysicsTable (const G4ParticleDefinition &)
 
void DeActivateFor (const G4Element *anElement)
 
void DeActivateFor (const G4Material *aMaterial)
 
void EraseNewParticles ()
 
virtual G4KineticTrackVectorFragmentString (const G4ExcitedString &theString)
 
 G4QGSMFragmentation ()
 
virtual std::pair< G4double, G4doubleGetEnergyMomentumCheckLevels () const
 
virtual const std::pair< G4double, G4doubleGetFatalEnergyCheckLevels () const
 
G4double GetMaxEnergy () const
 
G4double GetMaxEnergy (const G4Material *aMaterial, const G4Element *anElement) const
 
G4double GetMinEnergy () const
 
G4double GetMinEnergy (const G4Material *aMaterial, const G4Element *anElement) const
 
const G4StringGetModelName () const
 
G4double GetRecoilEnergyThreshold () const
 
G4int GetVerboseLevel () const
 
virtual void InitialiseModel ()
 
virtual G4bool IsApplicable (const G4HadProjectile &aTrack, G4Nucleus &targetNucleus)
 
G4bool IsBlocked (const G4Element *anElement) const
 
G4bool IsBlocked (const G4Material *aMaterial) const
 
virtual void ModelDescription (std::ostream &outFile) const
 
G4bool operator!= (const G4HadronicInteraction &right) const =delete
 
G4bool operator== (const G4HadronicInteraction &right) const =delete
 
virtual G4double SampleInvariantT (const G4ParticleDefinition *p, G4double plab, G4int Z, G4int A)
 
G4int SampleQuarkFlavor (void)
 
G4ThreeVector SampleQuarkPt (G4double ptMax=-1.)
 
void SetDiquarkBreakProbability (G4double aValue)
 
void SetDiquarkSuppression (G4double aValue)
 
void SetEnergyMomentumCheckLevels (G4double relativeLevel, G4double absoluteLevel)
 
void SetMaxEnergy (const G4double anEnergy)
 
void SetMaxEnergy (G4double anEnergy, const G4Element *anElement)
 
void SetMaxEnergy (G4double anEnergy, const G4Material *aMaterial)
 
void SetMinEnergy (G4double anEnergy)
 
void SetMinEnergy (G4double anEnergy, const G4Element *anElement)
 
void SetMinEnergy (G4double anEnergy, const G4Material *aMaterial)
 
void SetMinimalStringMass (const G4FragmentingString *const string)
 
void SetMinimalStringMass2 (const G4double aValue)
 
void SetMinMasses ()
 
void SetProbBBbar (G4double aValue)
 
void SetProbCCbar (G4double aValue)
 
void SetProbEta_b (G4double aValue)
 
void SetProbEta_c (G4double aValue)
 
void SetRecoilEnergyThreshold (G4double val)
 
void SetScalarMesonMixings (std::vector< G4double > aVector)
 
void SetSigmaTransverseMomentum (G4double aQT)
 
void SetSpinThreeHalfBarionProbability (G4double aValue)
 
void SetStrangenessSuppression (G4double aValue)
 
void SetStringTensionParameter (G4double aValue)
 
void SetVectorMesonMixings (std::vector< G4double > aVector)
 
void SetVectorMesonProbability (G4double aValue)
 
void SetVerboseLevel (G4int value)
 
 ~G4QGSMFragmentation ()
 

Data Fields

G4int Baryon [5][5][5][4]
 
G4double BaryonWeight [5][5][5][4]
 
G4int DecayQuark
 
G4ParticleDefinitionFS_LeftHadron [350]
 
G4ParticleDefinitionFS_RightHadron [350]
 
G4double FS_Weight [350]
 
G4double Mass_of_b_quark
 
G4double Mass_of_c_quark
 
G4double Mass_of_light_quark
 
G4double Mass_of_s_quark
 
G4double Mass_of_string_junction
 
G4int Meson [5][5][7]
 
G4double MesonWeight [5][5][7]
 
G4double MinimalStringMass
 
G4double MinimalStringMass2
 
G4double minMassQDiQStr [5][5][5]
 
G4double minMassQQbarStr [5][5]
 
G4int NewQuark
 
G4int NumberOf_FS
 
G4double Prob_QQbar [5]
 
G4int Qcharge [5]
 

Protected Types

typedef G4ParticleDefinition *(G4HadronBuilder::* Pcreate) (G4ParticleDefinition *, G4ParticleDefinition *)
 
typedef std::pair< G4ParticleDefinition *, G4ParticleDefinition * > pDefPair
 

Protected Member Functions

void Block ()
 
void CalculateHadronTimePosition (G4double theInitialStringMass, G4KineticTrackVector *)
 
void ConstructParticle ()
 
G4ExcitedStringCopyExcited (const G4ExcitedString &string)
 
G4ParticleDefinitionCreateHadron (G4int id1, G4int id2, G4bool theGivenSpin, G4int theSpin)
 
pDefPair CreatePartonPair (G4int NeedParticle, G4bool AllowDiquarks=true)
 
G4ParticleDefinitionFindParticle (G4int Encoding)
 
G4int GetClusterLoopInterrupt ()
 
G4double GetDiquarkBreakProb ()
 
G4double GetDiquarkSuppress ()
 
G4double GetMassCut ()
 
G4double GetProbBBbar ()
 
G4double GetProbCCbar ()
 
G4double GetProbEta_b ()
 
G4double GetProbEta_c ()
 
G4double GetStrangeSuppress ()
 
G4double GetStringTensionParameter ()
 
G4bool IsBlocked () const
 
G4double PossibleHadronMass (const G4FragmentingString *const string, Pcreate build=0, pDefPair *pdefs=0)
 
G4KineticTrackVectorProduceOneHadron (const G4ExcitedString *const theString)
 
virtual G4ParticleDefinitionQuarkSplitup (G4ParticleDefinition *decay, G4ParticleDefinition *&created)
 
virtual void SetMassCut (G4double aValue)
 
void SetModelName (const G4String &nam)
 

Protected Attributes

G4int ClusterLoopInterrupt
 
G4double DiquarkBreakProb
 
G4double DiquarkSuppress
 
G4HadronBuilderhadronizer
 
G4bool isBlocked
 
G4double Kappa
 
G4double MassCut
 
G4double MaxMass
 
std::vector< G4ParticleDefinition * > NewParticles
 
G4bool PastInitPhase
 
G4double ProbBBbar
 
G4double ProbCB
 
G4double ProbCCbar
 
G4double ProbEta_b
 
G4double ProbEta_c
 
G4double pspin_barion
 
G4double pspin_meson
 
std::vector< G4doublescalarMesonMix
 
G4double SigmaQT
 
G4double StrangeSuppress
 
G4int StringLoopInterrupt
 
G4double theMaxEnergy
 
G4double theMinEnergy
 
G4HadFinalState theParticleChange
 
std::vector< G4doublevectorMesonMix
 
G4int verboseLevel
 

Private Member Functions

virtual G4ParticleDefinitionDiQuarkSplitup (G4ParticleDefinition *decay, G4ParticleDefinition *&created)
 
 G4QGSMFragmentation (const G4QGSMFragmentation &right)
 
virtual G4double GetLightConeZ (G4double zmin, G4double zmax, G4int PartonEncoding, G4ParticleDefinition *pHadron, G4double Px, G4double Py)
 
virtual G4bool IsItFragmentable (const G4FragmentingString *string)
 
G4bool operator!= (const G4QGSMFragmentation &right) const
 
const G4QGSMFragmentationoperator= (const G4QGSMFragmentation &right)
 
G4bool operator== (const G4QGSMFragmentation &right) const
 
virtual void Sample4Momentum (G4LorentzVector *Mom, G4double Mass, G4LorentzVector *AntiMom, G4double AntiMass, G4double InitialMass)
 
void SetFFq2q ()
 
void SetFFq2qq ()
 
void SetFFqq2q ()
 
void SetFFqq2qq ()
 
virtual G4LorentzVectorSplitEandP (G4ParticleDefinition *pHadron, G4FragmentingString *string, G4FragmentingString *newString)
 
virtual G4bool SplitLast (G4FragmentingString *string, G4KineticTrackVector *LeftVector, G4KineticTrackVector *RightVector)
 
virtual G4KineticTrackSplitup (G4FragmentingString *string, G4FragmentingString *&newString)
 
virtual G4bool StopFragmenting (const G4FragmentingString *string)
 

Private Attributes

G4double aJPs
 
G4double aksi
 
G4double ala
 
G4double alaB
 
G4double alaC
 
G4double alft
 
G4double an
 
G4double aphi
 
G4double arho
 
G4double aUps
 
G4double aXi
 
G4double aXiB
 
G4double aXiBB
 
G4double aXiC
 
G4double aXiCB
 
G4double aXiCC
 
std::pair< G4double, G4doubleepCheckLevels
 
G4double FFq2q [5][5][2]
 
G4double FFq2qq [5][15][2]
 
G4double FFqq2q [15][5][2]
 
G4double FFqq2qq [15][5][2]
 
G4int IndexDiQ [5][5]
 
G4double recoilEnergyThreshold
 
G4HadronicInteractionRegistryregistry
 
std::vector< const G4Material * > theBlockedList
 
std::vector< const G4Element * > theBlockedListElements
 
std::vector< std::pair< G4double, const G4Material * > > theMaxEnergyList
 
std::vector< std::pair< G4double, const G4Element * > > theMaxEnergyListElements
 
std::vector< std::pair< G4double, const G4Material * > > theMinEnergyList
 
std::vector< std::pair< G4double, const G4Element * > > theMinEnergyListElements
 
G4String theModelName
 

Detailed Description

Definition at line 39 of file G4QGSMFragmentation.hh.

Member Typedef Documentation

◆ Pcreate

typedef G4ParticleDefinition *(G4HadronBuilder::* G4VLongitudinalStringDecay::Pcreate) (G4ParticleDefinition *, G4ParticleDefinition *)
protectedinherited

Definition at line 86 of file G4VLongitudinalStringDecay.hh.

◆ pDefPair

Definition at line 83 of file G4VLongitudinalStringDecay.hh.

Constructor & Destructor Documentation

◆ G4QGSMFragmentation() [1/2]

G4QGSMFragmentation::G4QGSMFragmentation ( )

Definition at line 49 of file G4QGSMFragmentation.cc.

50{
51 SigmaQT = 0.45 * GeV; // Uzhi June 2020
52
53 MassCut = 0.35*GeV;
54
55 SetStrangenessSuppression((1.0 - 0.12)/2.); // Uzhi June 2020 0.16 -> 0.12
56
57 // Check if charmed and bottom hadrons are enabled: if this is the case, then
58 // set the non-zero probabilities for c-cbar and b-bbar creation from the vacuum,
59 // else set them to 0.0. If these probabilities are/aren't zero then charmed or bottom
60 // hadrons can't/can be created during the string fragmentation of ordinary
61 // (i.e. not heavy) projectile hadron nuclear reactions.
62 if ( G4HadronicParameters::Instance()->EnableBCParticles() ) {
63 SetProbCCbar(0.005); // According to O.I. Piskunova Yad. Fiz. 56 (1993) 1094
64 SetProbBBbar(5.0e-5); // According to O.I. Piskunova Yad. Fiz. 56 (1993) 1094
65 } else {
66 SetProbCCbar(0.0);
67 SetProbBBbar(0.0);
68 }
69
70 SetDiquarkSuppression(0.195); // Uzhi June 2020 0.32 -> 0.195
71 SetDiquarkBreakProbability(0.0); // Uzhi June 2020 0.7 -> 0.0
72
74
75 arho = 0.5; // alpha_rho0
76 aphi = 0.0; // alpha_fi
77 aJPs =-2.2; // alpha_J/Psi
78 aUps =-8.0; // alpha_Y ??? O. Piskunova Yad. Phys. 56 (1993) 1094.
79
80 aksi =-1.0;
81 alft = 0.5; // 2 * alpha'_R *<Pt^2>
82
83 an = -0.5 ;
84 ala = -0.75; // an - arho/2 + aphi/2
85 alaC = an - arho/2.0 + aJPs/2.0;
86 alaB = an - arho/2.0 + aUps/2.0;
87 aXi = 0.0; // ??
88 aXiC = 0.0; // ??
89 aXiB = 0.0; // ??
90 aXiCC = 0.0; // ??
91 aXiCB = 0.0; // ??
92 aXiBB = 0.0; // ??
93
94 SetFFq2q();
95 SetFFq2qq();
96 SetFFqq2q();
97 SetFFqq2qq();
98 // d u s c b
99 G4int Index[5][5] = { { 0, 1, 2, 3, 4 }, // d
100 { 1, 5, 6, 7, 8 }, // u
101 { 2, 6, 9, 10, 11 }, // s
102 { 3, 7, 10, 12, 13 }, // c
103 { 4, 8, 11, 13, 14 } }; // b
104 for (G4int i = 0; i < 5; i++ ) {
105 for ( G4int j = 0; j < 5; j++ ) {
106 IndexDiQ[i][j] = Index[i][j];
107 }
108 };
109}
static constexpr double GeV
Definition: G4SIunits.hh:203
int G4int
Definition: G4Types.hh:85
static G4HadronicParameters * Instance()
void SetDiquarkSuppression(G4double aValue)
void SetStrangenessSuppression(G4double aValue)
void SetDiquarkBreakProbability(G4double aValue)

References aJPs, aksi, ala, alaB, alaC, alft, an, aphi, arho, aUps, aXi, aXiB, aXiBB, aXiC, aXiCB, aXiCC, GeV, IndexDiQ, G4HadronicParameters::Instance(), G4VLongitudinalStringDecay::MassCut, G4VLongitudinalStringDecay::SetDiquarkBreakProbability(), G4VLongitudinalStringDecay::SetDiquarkSuppression(), SetFFq2q(), SetFFq2qq(), SetFFqq2q(), SetFFqq2qq(), G4VLongitudinalStringDecay::SetMinMasses(), G4VLongitudinalStringDecay::SetProbBBbar(), G4VLongitudinalStringDecay::SetProbCCbar(), G4VLongitudinalStringDecay::SetStrangenessSuppression(), and G4VLongitudinalStringDecay::SigmaQT.

◆ ~G4QGSMFragmentation()

G4QGSMFragmentation::~G4QGSMFragmentation ( )

Definition at line 111 of file G4QGSMFragmentation.cc.

112{}

◆ G4QGSMFragmentation() [2/2]

G4QGSMFragmentation::G4QGSMFragmentation ( const G4QGSMFragmentation right)
private

Member Function Documentation

◆ ActivateFor() [1/2]

void G4HadronicInteraction::ActivateFor ( const G4Element anElement)
inlineinherited

◆ ActivateFor() [2/2]

void G4HadronicInteraction::ActivateFor ( const G4Material aMaterial)
inlineinherited

◆ AddNewParticles()

void G4VLongitudinalStringDecay::AddNewParticles ( )
inherited

◆ ApplyYourself()

G4HadFinalState * G4VLongitudinalStringDecay::ApplyYourself ( const G4HadProjectile ,
G4Nucleus  
)
finalvirtualinherited

Reimplemented from G4HadronicInteraction.

Definition at line 131 of file G4VLongitudinalStringDecay.cc.

132{
133 return nullptr;
134}

◆ Block()

void G4HadronicInteraction::Block ( )
inlineprotectedinherited

◆ BuildPhysicsTable()

void G4HadronicInteraction::BuildPhysicsTable ( const G4ParticleDefinition )
virtualinherited

◆ CalculateHadronTimePosition()

void G4VLongitudinalStringDecay::CalculateHadronTimePosition ( G4double  theInitialStringMass,
G4KineticTrackVector Hadrons 
)
protectedinherited

Definition at line 435 of file G4VLongitudinalStringDecay.cc.

437{
438 // `yo-yo` formation time
439 // const G4double kappa = 1.0 * GeV/fermi/4.;
441 for (size_t c1 = 0; c1 < Hadrons->size(); c1++)
442 {
443 G4double SumPz = 0;
444 G4double SumE = 0;
445 for (size_t c2 = 0; c2 < c1; c2++)
446 {
447 SumPz += Hadrons->operator[](c2)->Get4Momentum().pz();
448 SumE += Hadrons->operator[](c2)->Get4Momentum().e();
449 }
450 G4double HadronE = Hadrons->operator[](c1)->Get4Momentum().e();
451 G4double HadronPz = Hadrons->operator[](c1)->Get4Momentum().pz();
452 Hadrons->operator[](c1)->SetFormationTime(
453 (theInitialStringMass - 2.*SumPz + HadronE - HadronPz ) / (2.*kappa) / c_light );
454 G4ThreeVector aPosition( 0, 0,
455 (theInitialStringMass - 2.*SumE - HadronE + HadronPz) / (2.*kappa) );
456 Hadrons->operator[](c1)->SetPosition(aPosition);
457 }
458}
double G4double
Definition: G4Types.hh:83
float c_light
Definition: hepunit.py:256

References source.hepunit::c_light, and G4VLongitudinalStringDecay::GetStringTensionParameter().

Referenced by FragmentString().

◆ ConstructParticle()

void G4VLongitudinalStringDecay::ConstructParticle ( )
protectedinherited

◆ CopyExcited()

G4ExcitedString * G4VLongitudinalStringDecay::CopyExcited ( const G4ExcitedString string)
protectedinherited

Definition at line 326 of file G4VLongitudinalStringDecay.cc.

327{
328 G4Parton *Left=new G4Parton(*in.GetLeftParton());
329 G4Parton *Right=new G4Parton(*in.GetRightParton());
330 return new G4ExcitedString(Left,Right,in.GetDirection());
331}

References G4ExcitedString::GetDirection(), G4ExcitedString::GetLeftParton(), and G4ExcitedString::GetRightParton().

Referenced by FragmentString().

◆ CreateHadron()

G4ParticleDefinition * G4VLongitudinalStringDecay::CreateHadron ( G4int  id1,
G4int  id2,
G4bool  theGivenSpin,
G4int  theSpin 
)
protectedinherited

◆ CreatePartonPair()

G4VLongitudinalStringDecay::pDefPair G4VLongitudinalStringDecay::CreatePartonPair ( G4int  NeedParticle,
G4bool  AllowDiquarks = true 
)
protectedinherited

Definition at line 360 of file G4VLongitudinalStringDecay.cc.

362{
363 // NeedParticle = +1 for Particle, -1 for Antiparticle
364 if ( AllowDiquarks && G4UniformRand() < DiquarkSuppress )
365 {
366 // Create a Diquark - AntiDiquark pair , first in pair is anti to IsParticle
367 #ifdef debug_VStringDecay
368 G4cout<<"VlongSD Create a Diquark - AntiDiquark pair"<<G4endl;
369 #endif
370 G4int q1(0), q2(0), spin(0), PDGcode(0);
371
372 q1 = SampleQuarkFlavor();
373 q2 = SampleQuarkFlavor();
374
375 spin = (q1 != q2 && G4UniformRand() <= 0.5)? 1 : 3;
376 // convention: quark with higher PDG number is first
377 PDGcode = (std::max(q1,q2) * 1000 + std::min(q1,q2) * 100 + spin) * NeedParticle;
378
379 return pDefPair (FindParticle(-PDGcode),FindParticle(PDGcode));
380
381 } else {
382 // Create a Quark - AntiQuark pair, first in pair IsParticle
383 #ifdef debug_VStringDecay
384 G4cout<<"VlongSD Create a Quark - AntiQuark pair"<<G4endl;
385 #endif
386 G4int PDGcode=SampleQuarkFlavor()*NeedParticle;
387 return pDefPair (FindParticle(PDGcode),FindParticle(-PDGcode));
388 }
389}
#define G4endl
Definition: G4ios.hh:57
G4GLOB_DLL std::ostream G4cout
#define G4UniformRand()
Definition: Randomize.hh:52
std::pair< G4ParticleDefinition *, G4ParticleDefinition * > pDefPair
G4ParticleDefinition * FindParticle(G4int Encoding)
T max(const T t1, const T t2)
brief Return the largest of the two arguments
T min(const T t1, const T t2)
brief Return the smallest of the two arguments

References G4VLongitudinalStringDecay::DiquarkSuppress, G4VLongitudinalStringDecay::FindParticle(), G4cout, G4endl, G4UniformRand, G4INCL::Math::max(), G4INCL::Math::min(), and G4VLongitudinalStringDecay::SampleQuarkFlavor().

Referenced by G4LundStringFragmentation::DiQuarkSplitup(), DiQuarkSplitup(), G4VLongitudinalStringDecay::QuarkSplitup(), and SplitLast().

◆ DeActivateFor() [1/2]

void G4HadronicInteraction::DeActivateFor ( const G4Element anElement)
inherited

Definition at line 186 of file G4HadronicInteraction.cc.

187{
188 Block();
189 theBlockedListElements.push_back(anElement);
190}
std::vector< const G4Element * > theBlockedListElements

References G4HadronicInteraction::Block(), and G4HadronicInteraction::theBlockedListElements.

◆ DeActivateFor() [2/2]

void G4HadronicInteraction::DeActivateFor ( const G4Material aMaterial)
inherited

Definition at line 180 of file G4HadronicInteraction.cc.

181{
182 Block();
183 theBlockedList.push_back(aMaterial);
184}
std::vector< const G4Material * > theBlockedList

References G4HadronicInteraction::Block(), and G4HadronicInteraction::theBlockedList.

Referenced by G4HadronHElasticPhysics::ConstructProcess().

◆ DiQuarkSplitup()

G4ParticleDefinition * G4QGSMFragmentation::DiQuarkSplitup ( G4ParticleDefinition decay,
G4ParticleDefinition *&  created 
)
privatevirtual

Implements G4VLongitudinalStringDecay.

Definition at line 397 of file G4QGSMFragmentation.cc.

399{
400 //... can Diquark break or not?
401 if (G4UniformRand() < DiquarkBreakProb ) //... Diquark break
402 {
403 G4int stableQuarkEncoding = decay->GetPDGEncoding()/1000;
404 G4int decayQuarkEncoding = (decay->GetPDGEncoding()/100)%10;
405
406 if (G4UniformRand() < 0.5)
407 {
408 G4int Swap = stableQuarkEncoding;
409 stableQuarkEncoding = decayQuarkEncoding;
410 decayQuarkEncoding = Swap;
411 }
412
413 G4int IsParticle=(decayQuarkEncoding>0) ? -1 : +1; // if we have a quark, we need antiquark
414
416 SetStrangenessSuppression((1.0 - 0.07)/2.); // Prob qq->K qq' 0.07
417 pDefPair QuarkPair = CreatePartonPair(IsParticle,false); // no diquarks wanted
419
420 //... Build new Diquark
421 G4int QuarkEncoding=QuarkPair.second->GetPDGEncoding();
422 G4int i10 = std::max(std::abs(QuarkEncoding), std::abs(stableQuarkEncoding));
423 G4int i20 = std::min(std::abs(QuarkEncoding), std::abs(stableQuarkEncoding));
424 G4int spin = (i10 != i20 && G4UniformRand() <= 0.5)? 1 : 3;
425 G4int NewDecayEncoding = -1*IsParticle*(i10 * 1000 + i20 * 100 + spin);
426
427 created = FindParticle(NewDecayEncoding);
428 G4ParticleDefinition * decayQuark=FindParticle(decayQuarkEncoding);
429 G4ParticleDefinition * had=hadronizer->Build(QuarkPair.first, decayQuark);
430
431 DecayQuark = decay->GetPDGEncoding(); //Uzhi June 2020 decayQuarkEncoding;
432 NewQuark = NewDecayEncoding; //Uzhi June 2020 QuarkPair.first->GetPDGEncoding();
433
434 return had;
435
436 } else { //... Diquark does not break
437
438 G4int IsParticle=(decay->GetPDGEncoding()>0) ? +1 : -1; // if we have a diquark, we need quark)
439 G4double StrSup=GetStrangeSuppress(); // for changing s-sbar production
440 SetStrangenessSuppression((1.0 - 0.07)/2.);
441 pDefPair QuarkPair = CreatePartonPair(IsParticle,false); // no diquarks wanted
443
444 created = QuarkPair.second;
445
446 DecayQuark = decay->GetPDGEncoding();
447 NewQuark = created->GetPDGEncoding();
448
449 G4ParticleDefinition * had=hadronizer->Build(QuarkPair.first, decay);
450 return had;
451 }
452}
G4ParticleDefinition * Build(G4ParticleDefinition *black, G4ParticleDefinition *white)
pDefPair CreatePartonPair(G4int NeedParticle, G4bool AllowDiquarks=true)
ParticleList decay(Cluster *const c)
Carries out a cluster decay.

References G4HadronBuilder::Build(), G4VLongitudinalStringDecay::CreatePartonPair(), G4INCL::ClusterDecay::decay(), G4VLongitudinalStringDecay::DecayQuark, G4VLongitudinalStringDecay::DiquarkBreakProb, G4VLongitudinalStringDecay::FindParticle(), G4UniformRand, G4ParticleDefinition::GetPDGEncoding(), G4VLongitudinalStringDecay::GetStrangeSuppress(), G4VLongitudinalStringDecay::hadronizer, G4INCL::Math::max(), G4INCL::Math::min(), G4VLongitudinalStringDecay::NewQuark, and G4VLongitudinalStringDecay::SetStrangenessSuppression().

Referenced by Splitup().

◆ EraseNewParticles()

void G4VLongitudinalStringDecay::EraseNewParticles ( )
inherited

◆ FindParticle()

G4ParticleDefinition * G4VLongitudinalStringDecay::FindParticle ( G4int  Encoding)
protectedinherited

Definition at line 280 of file G4VLongitudinalStringDecay.cc.

281{
282 /*
283 G4cout<<Encoding<<" G4VLongitudinalStringDecay::FindParticle Check di-quarks *******************"<<G4endl;
284 for (G4int i=4; i<6;i++){
285 for (G4int j=1;j<6;j++){
286 G4cout<<i<<" "<<j<<" ";
287 G4int Code = 1000 * i + 100 * j +1;
288 G4ParticleDefinition* ptr1 = G4ParticleTable::GetParticleTable()->FindParticle(Code);
289 Code +=2;
290 G4ParticleDefinition* ptr2 = G4ParticleTable::GetParticleTable()->FindParticle(Code);
291 G4cout<<"Code "<<Code - 2<<" ptr "<<ptr1<<" :: Code "<<Code<<" ptr "<<ptr2<<G4endl;
292 }
293 G4cout<<G4endl;
294 }
295 */
296
298
299 if (ptr == nullptr)
300 {
301 for (size_t i=0; i < NewParticles.size(); i++)
302 {
303 if ( Encoding == NewParticles[i]->GetPDGEncoding() ) { ptr = NewParticles[i]; return ptr;}
304 }
305 }
306
307 return ptr;
308}
G4ParticleDefinition * FindParticle(G4int PDGEncoding)
static G4ParticleTable * GetParticleTable()
std::vector< G4ParticleDefinition * > NewParticles

References G4ParticleTable::FindParticle(), G4ParticleTable::GetParticleTable(), and G4VLongitudinalStringDecay::NewParticles.

Referenced by G4VLongitudinalStringDecay::CreatePartonPair(), G4LundStringFragmentation::Diquark_AntiDiquark_belowThreshold_lastSplitting(), G4LundStringFragmentation::DiQuarkSplitup(), DiQuarkSplitup(), G4VLongitudinalStringDecay::PossibleHadronMass(), G4VLongitudinalStringDecay::SetMinMasses(), and SplitLast().

◆ FragmentString()

G4KineticTrackVector * G4QGSMFragmentation::FragmentString ( const G4ExcitedString theString)
virtual

Implements G4VLongitudinalStringDecay.

Definition at line 116 of file G4QGSMFragmentation.cc.

117{
118
119 G4FragmentingString aString(theString);
120 SetMinimalStringMass(&aString);
121
122 #ifdef debug_QGSMfragmentation
123 G4cout<<G4endl<<"QGSM StringFragm: String Mass "
124 <<theString.Get4Momentum().mag()<<" Pz "
125 <<theString.Get4Momentum().pz()
126 <<"------------------------------------"<<G4endl;
127 G4cout<<"String ends Direct "<<theString.GetLeftParton()->GetPDGcode()<<" "
128 <<theString.GetRightParton()->GetPDGcode()<<" "
129 <<theString.GetDirection()<< G4endl;
130 G4cout<<"Left mom "<<theString.GetLeftParton()->Get4Momentum()<<G4endl;
131 G4cout<<"Right mom "<<theString.GetRightParton()->Get4Momentum()<<G4endl;
132 G4cout<<"Check for Fragmentation "<<G4endl;
133 #endif
134
135 // Can no longer modify Parameters for Fragmentation.
136 PastInitPhase=true;
137
138 // Check if string has enough mass to fragment...
139 G4KineticTrackVector * LeftVector=NULL;
140
141 if ( !IsItFragmentable(&aString) ) {
142 LeftVector=ProduceOneHadron(&theString);
143
144 #ifdef debug_QGSMfragmentation
145 if ( LeftVector != 0 ) G4cout<<"Non fragmentable - the string is converted to one hadron "<<G4endl;
146 #endif
147
148 if ( LeftVector == nullptr ) LeftVector = new G4KineticTrackVector;
149 return LeftVector;
150 }
151
152 #ifdef debug_QGSMfragmentation
153 G4cout<<"The string will be fragmented. "<<G4endl;
154 #endif
155
156 LeftVector = new G4KineticTrackVector;
158
159 G4ExcitedString *theStringInCMS=CopyExcited(theString);
160 G4LorentzRotation toCms=theStringInCMS->TransformToAlignedCms();
161
162 G4bool success=false, inner_sucess=true;
163 G4int attempt=0;
164 while ( !success && attempt++ < StringLoopInterrupt ) /* Loop checking, 07.08.2015, A.Ribon */
165 {
166 #ifdef debug_QGSMfragmentation
167 G4cout<<"Loop_toFrag "<<theStringInCMS->GetLeftParton()->GetPDGcode()<<" "
168 <<theStringInCMS->GetRightParton()->GetPDGcode()<<" "
169 <<theStringInCMS->GetDirection()<< G4endl;
170 #endif
171
172 G4FragmentingString *currentString=new G4FragmentingString(*theStringInCMS);
173
174 std::for_each(LeftVector->begin(), LeftVector->end(), DeleteKineticTrack());
175 LeftVector->clear();
176 std::for_each(RightVector->begin(), RightVector->end(), DeleteKineticTrack());
177 RightVector->clear();
178
179 inner_sucess=true; // set false on failure..
180 const G4int maxNumberOfLoops = 1000;
181 G4int loopCounter = -1;
182 while (! StopFragmenting(currentString) && ++loopCounter < maxNumberOfLoops ) /* Loop checking, 07.08.2015, A.Ribon */
183 { // Split current string into hadron + new string
184
185 #ifdef debug_QGSMfragmentation
186 G4cout<<"The string can fragment. "<<G4endl;;
187 #endif
188 G4FragmentingString *newString=0; // used as output from SplitUp...
189 G4KineticTrack * Hadron=Splitup(currentString,newString);
190
191 if ( Hadron != 0 )
192 {
193 #ifdef debug_QGSMfragmentation
194 G4cout<<"Hadron prod at fragm. "<<Hadron->GetDefinition()->GetParticleName()<<G4endl;
195 #endif
196 // To close the production of hadrons at fragmentation stage
197 if ( currentString->GetDecayDirection() > 0 )
198 LeftVector->push_back(Hadron);
199 else
200 RightVector->push_back(Hadron);
201
202 delete currentString;
203 currentString=newString;
204
205 } else {
206
207 #ifdef debug_QGSMfragmentation
208 G4cout<<"abandon ... start from the beginning ---------------"<<G4endl;
209 #endif
210
211 // Abandon ... start from the beginning
212 if (newString) delete newString;
213 inner_sucess=false;
214 break;
215 }
216 }
217 if ( loopCounter >= maxNumberOfLoops ) {
218 inner_sucess=false;
219 }
220
221 // Split current string into 2 final Hadrons
222 #ifdef debug_QGSMfragmentation
223 if( inner_sucess ) { // Uzhi June 2020
224 G4cout<<"Split remaining string into 2 final hadrons."<<G4endl;
225 } else {
226 G4cout<<" New attempt to fragment string"<<G4endl;
227 } // Uzhi June 2020
228 #endif
229 // To the close production of hadrons at last string decay
230 if ( inner_sucess &&
231 SplitLast(currentString,LeftVector, RightVector) )
232 {
233 success=true;
234 }
235 delete currentString;
236 }
237
238 delete theStringInCMS;
239
240 if ( ! success )
241 {
242 std::for_each(LeftVector->begin(), LeftVector->end(), DeleteKineticTrack());
243 LeftVector->clear();
244 std::for_each(RightVector->begin(), RightVector->end(), DeleteKineticTrack());
245 delete RightVector;
246 return LeftVector;
247 }
248
249 // Join Left- and RightVector into LeftVector in correct order.
250 while(!RightVector->empty()) /* Loop checking, 07.08.2015, A.Ribon */
251 {
252 LeftVector->push_back(RightVector->back());
253 RightVector->erase(RightVector->end()-1);
254 }
255 delete RightVector;
256
257 CalculateHadronTimePosition(theString.Get4Momentum().mag(), LeftVector);
258
259 G4LorentzRotation toObserverFrame(toCms.inverse());
260
261 for (size_t C1 = 0; C1 < LeftVector->size(); C1++)
262 {
263 G4KineticTrack* Hadron = LeftVector->operator[](C1);
265 Momentum = toObserverFrame*Momentum;
266 Hadron->Set4Momentum(Momentum);
267 G4LorentzVector Coordinate(Hadron->GetPosition(), Hadron->GetFormationTime());
268 Momentum = toObserverFrame*Coordinate;
269 Hadron->SetFormationTime(Momentum.e());
270 G4ThreeVector aPosition(Momentum.vect());
271 Hadron->SetPosition(theString.GetPosition()+aPosition);
272 }
273 return LeftVector;
274}
bool G4bool
Definition: G4Types.hh:86
const double C1
HepLorentzRotation inverse() const
const G4ThreeVector & GetPosition() const
G4int GetDirection(void) const
G4LorentzRotation TransformToAlignedCms()
G4Parton * GetRightParton(void) const
G4Parton * GetLeftParton(void) const
G4LorentzVector Get4Momentum() const
G4int GetDecayDirection() const
G4double GetFormationTime() const
void SetPosition(const G4ThreeVector aPosition)
void Set4Momentum(const G4LorentzVector &a4Momentum)
const G4ThreeVector & GetPosition() const
const G4ParticleDefinition * GetDefinition() const
void SetFormationTime(G4double aFormationTime)
const G4LorentzVector & Get4Momentum() const
const G4String & GetParticleName() const
G4int GetPDGcode() const
Definition: G4Parton.hh:127
const G4LorentzVector & Get4Momentum() const
Definition: G4Parton.hh:143
virtual G4KineticTrack * Splitup(G4FragmentingString *string, G4FragmentingString *&newString)
virtual G4bool SplitLast(G4FragmentingString *string, G4KineticTrackVector *LeftVector, G4KineticTrackVector *RightVector)
virtual G4bool IsItFragmentable(const G4FragmentingString *string)
virtual G4bool StopFragmenting(const G4FragmentingString *string)
G4KineticTrackVector * ProduceOneHadron(const G4ExcitedString *const theString)
void CalculateHadronTimePosition(G4double theInitialStringMass, G4KineticTrackVector *)
void SetMinimalStringMass(const G4FragmentingString *const string)
G4ExcitedString * CopyExcited(const G4ExcitedString &string)

References C1, G4VLongitudinalStringDecay::CalculateHadronTimePosition(), G4VLongitudinalStringDecay::CopyExcited(), G4cout, G4endl, G4ExcitedString::Get4Momentum(), G4KineticTrack::Get4Momentum(), G4Parton::Get4Momentum(), G4FragmentingString::GetDecayDirection(), G4KineticTrack::GetDefinition(), G4ExcitedString::GetDirection(), G4KineticTrack::GetFormationTime(), G4ExcitedString::GetLeftParton(), G4ParticleDefinition::GetParticleName(), G4Parton::GetPDGcode(), G4ExcitedString::GetPosition(), G4KineticTrack::GetPosition(), G4ExcitedString::GetRightParton(), CLHEP::HepLorentzRotation::inverse(), IsItFragmentable(), CLHEP::HepLorentzVector::mag(), G4VLongitudinalStringDecay::PastInitPhase, G4VLongitudinalStringDecay::ProduceOneHadron(), CLHEP::HepLorentzVector::pz(), G4KineticTrack::Set4Momentum(), G4KineticTrack::SetFormationTime(), G4VLongitudinalStringDecay::SetMinimalStringMass(), G4KineticTrack::SetPosition(), SplitLast(), Splitup(), StopFragmenting(), G4VLongitudinalStringDecay::StringLoopInterrupt, and G4ExcitedString::TransformToAlignedCms().

◆ GetClusterLoopInterrupt()

G4int G4VLongitudinalStringDecay::GetClusterLoopInterrupt ( )
inlineprotectedinherited

◆ GetDiquarkBreakProb()

G4double G4VLongitudinalStringDecay::GetDiquarkBreakProb ( )
inlineprotectedinherited

◆ GetDiquarkSuppress()

G4double G4VLongitudinalStringDecay::GetDiquarkSuppress ( )
inlineprotectedinherited

◆ GetEnergyMomentumCheckLevels()

std::pair< G4double, G4double > G4HadronicInteraction::GetEnergyMomentumCheckLevels ( ) const
virtualinherited

◆ GetFatalEnergyCheckLevels()

const std::pair< G4double, G4double > G4HadronicInteraction::GetFatalEnergyCheckLevels ( ) const
virtualinherited

Reimplemented in G4FissLib, G4LFission, G4LENDFission, G4ParticleHPCapture, G4ParticleHPElastic, G4ParticleHPFission, G4ParticleHPInelastic, and G4ParticleHPThermalScattering.

Definition at line 210 of file G4HadronicInteraction.cc.

211{
212 // default level of Check
213 return std::pair<G4double, G4double>(2.*perCent, 1. * GeV);
214}
static constexpr double perCent
Definition: G4SIunits.hh:325

References GeV, and perCent.

Referenced by G4HadronicProcess::CheckResult().

◆ GetLightConeZ()

G4double G4QGSMFragmentation::GetLightConeZ ( G4double  zmin,
G4double  zmax,
G4int  PartonEncoding,
G4ParticleDefinition pHadron,
G4double  Px,
G4double  Py 
)
privatevirtual

Implements G4VLongitudinalStringDecay.

Definition at line 558 of file G4QGSMFragmentation.cc.

560{
561 G4double lambda = 2.0*(sqr(ptx)+sqr(pty))/sqr(GeV); // Uzhi June 2020
562
563 #ifdef debug_QGSMfragmentation
564 G4cout<<"GetLightConeZ zmin zmax Parton pHadron "<<zmin<<" "<<zmax<<" "/*<< PartonEncoding */
565 <<" "/*<< pHadron->GetParticleName() */ <<G4endl;
566 #endif
567
568 G4double z(0.);
569 G4int DiQold(0), DiQnew(0);
570 G4double d1(-1.0), d2(0.);
571 G4double invD1(0.),invD2(0.), r1(0.),r2(0.),r12(0.);
572
573 G4int absDecayQuarkCode = std::abs( DecayQuark );
574 G4int absNewQuarkCode = std::abs( NewQuark );
575
576 G4int q1(0), q2(0);
577 // q1 = absDecayQuarkCode/1000; q2 = (absDecayQuarkCode % 1000)/100;
578
579 G4int qA(0), qB(0);
580 // qA = absNewQuarkCode/1000; qB = (absNewQuarkCode % 1000)/100;
581
582 if ( (absDecayQuarkCode < 6) && (absNewQuarkCode < 6) ) {
583 d1 = FFq2q[absDecayQuarkCode-1][absNewQuarkCode-1][0]; d2 = FFq2q[absDecayQuarkCode-1][absNewQuarkCode-1][1];
584 }
585
586 if ( (absDecayQuarkCode < 6) && (absNewQuarkCode > 6) ) {
587 qA = absNewQuarkCode/1000; qB = (absNewQuarkCode % 1000)/100; DiQnew = IndexDiQ[qA-1][qB-1];
588 d1 = FFq2qq[absDecayQuarkCode-1][DiQnew][0]; d2 = FFq2q[absDecayQuarkCode-1][DiQnew][1];
589 }
590
591 if ( (absDecayQuarkCode > 6) && (absNewQuarkCode < 6) ) {
592 q1 = absDecayQuarkCode/1000; q2 = (absDecayQuarkCode % 1000)/100; DiQold = IndexDiQ[q1-1][q2-1];
593 d1 = FFqq2q[DiQold][absNewQuarkCode-1][0]; d2 = FFqq2q[DiQold][absNewQuarkCode-1][1];
594 }
595
596 if ( d1 < 0. ) {
597 q1 = absDecayQuarkCode/1000; q2 = (absDecayQuarkCode % 1000)/100; DiQold = IndexDiQ[q1-1][q2-1];
598 d1 = FFqq2qq[DiQold][absNewQuarkCode-1][0]; d2 = FFqq2qq[DiQold][absNewQuarkCode-1][1];
599 }
600
601 d2 +=lambda; // Uzhi June 2020
602 d1+=1.0; d2+=1.0;
603
604 invD1=1./d1; invD2=1./d2;
605
606 const G4int maxNumberOfLoops = 10000;
607 G4int loopCounter = 0;
608 do // Jong's algorithm
609 {
612 r12=r1+r2;
613 z=r1/r12;
614 } while ( ( (r12 > 1.0) || !((zmin <= z)&&(z <= zmax))) &&
615 ++loopCounter < maxNumberOfLoops ); /* Loop checking, 07.08.2015, A.Ribon */
616
617 if ( loopCounter >= maxNumberOfLoops ) {
618 z = 0.5*(zmin + zmax); // Just a value between zmin and zmax, no physics considerations at all!
619 }
620
621 return z;
622}
static const G4double d1
static const G4double d2
static G4Pow * GetInstance()
Definition: G4Pow.cc:41
G4double powA(G4double A, G4double y) const
Definition: G4Pow.hh:230
G4double FFqq2qq[15][5][2]
G4double FFq2qq[5][15][2]
G4double FFqq2q[15][5][2]
G4double FFq2q[5][5][2]
T sqr(const T &x)
Definition: templates.hh:128

References d1, d2, G4VLongitudinalStringDecay::DecayQuark, FFq2q, FFq2qq, FFqq2q, FFqq2qq, G4cout, G4endl, G4UniformRand, G4Pow::GetInstance(), GeV, IndexDiQ, G4InuclParticleNames::lambda, G4VLongitudinalStringDecay::NewQuark, G4Pow::powA(), and sqr().

Referenced by SplitEandP().

◆ GetMassCut()

G4double G4VLongitudinalStringDecay::GetMassCut ( )
protectedinherited

◆ GetMaxEnergy() [1/2]

G4double G4HadronicInteraction::GetMaxEnergy ( ) const
inlineinherited

◆ GetMaxEnergy() [2/2]

G4double G4HadronicInteraction::GetMaxEnergy ( const G4Material aMaterial,
const G4Element anElement 
) const
inherited

Definition at line 131 of file G4HadronicInteraction.cc.

133{
134 if(!IsBlocked()) { return theMaxEnergy; }
135 if( IsBlocked(aMaterial) || IsBlocked(anElement) ) { return 0.0; }
136 if(!theMaxEnergyListElements.empty()) {
137 for(auto const& elmlist : theMaxEnergyListElements) {
138 if( anElement == elmlist.second )
139 { return elmlist.first; }
140 }
141 }
142 if(!theMaxEnergyList.empty()) {
143 for(auto const& matlist : theMaxEnergyList) {
144 if( aMaterial == matlist.second )
145 { return matlist.first; }
146 }
147 }
148 return theMaxEnergy;
149}
std::vector< std::pair< G4double, const G4Material * > > theMaxEnergyList
std::vector< std::pair< G4double, const G4Element * > > theMaxEnergyListElements

References G4HadronicInteraction::IsBlocked(), G4HadronicInteraction::theMaxEnergy, G4HadronicInteraction::theMaxEnergyList, and G4HadronicInteraction::theMaxEnergyListElements.

◆ GetMinEnergy() [1/2]

G4double G4HadronicInteraction::GetMinEnergy ( ) const
inlineinherited

◆ GetMinEnergy() [2/2]

G4double G4HadronicInteraction::GetMinEnergy ( const G4Material aMaterial,
const G4Element anElement 
) const
inherited

Definition at line 81 of file G4HadronicInteraction.cc.

83{
84 if(!IsBlocked()) { return theMinEnergy; }
85 if( IsBlocked(aMaterial) || IsBlocked(anElement) ) { return DBL_MAX; }
86 if(!theMinEnergyListElements.empty()) {
87 for(auto const& elmlist : theMinEnergyListElements) {
88 if( anElement == elmlist.second )
89 { return elmlist.first; }
90 }
91 }
92 if(!theMinEnergyList.empty()) {
93 for(auto const & matlist : theMinEnergyList) {
94 if( aMaterial == matlist.second )
95 { return matlist.first; }
96 }
97 }
98 return theMinEnergy;
99}
std::vector< std::pair< G4double, const G4Element * > > theMinEnergyListElements
std::vector< std::pair< G4double, const G4Material * > > theMinEnergyList
#define DBL_MAX
Definition: templates.hh:62

References DBL_MAX, G4HadronicInteraction::IsBlocked(), G4HadronicInteraction::theMinEnergy, G4HadronicInteraction::theMinEnergyList, and G4HadronicInteraction::theMinEnergyListElements.

◆ GetModelName()

const G4String & G4HadronicInteraction::GetModelName ( ) const
inlineinherited

Definition at line 115 of file G4HadronicInteraction.hh.

116 { return theModelName; }

References G4HadronicInteraction::theModelName.

Referenced by G4MuMinusCapturePrecompound::ApplyYourself(), G4HadronElastic::ApplyYourself(), G4INCLXXInterface::ApplyYourself(), G4TheoFSGenerator::ApplyYourself(), G4HadronStoppingProcess::AtRestDoIt(), G4VHadronPhysics::BuildModel(), G4HadronicProcess::CheckEnergyMomentumConservation(), G4HadronicProcess::CheckResult(), G4ChargeExchangePhysics::ConstructProcess(), G4MuonicAtomDecay::DecayIt(), G4LENDModel::DumpLENDTargetInfo(), G4AblaInterface::G4AblaInterface(), G4ElectroVDNuclearModel::G4ElectroVDNuclearModel(), G4EMDissociation::G4EMDissociation(), G4ExcitedStringDecay::G4ExcitedStringDecay(), G4LEHadronProtonElastic::G4LEHadronProtonElastic(), G4LENDModel::G4LENDModel(), G4LENDorBERTModel::G4LENDorBERTModel(), G4LEnp::G4LEnp(), G4LEpp::G4LEpp(), G4LFission::G4LFission(), G4LowEGammaNuclearModel::G4LowEGammaNuclearModel(), G4LowEIonFragmentation::G4LowEIonFragmentation(), G4MuonVDNuclearModel::G4MuonVDNuclearModel(), G4NeutrinoElectronCcModel::G4NeutrinoElectronCcModel(), G4NeutrinoNucleusModel::G4NeutrinoNucleusModel(), G4WilsonAbrasionModel::G4WilsonAbrasionModel(), G4INCLXXInterface::GetDeExcitationModelName(), G4EnergyRangeManager::GetHadronicInteraction(), G4VHighEnergyGenerator::GetProjectileNucleus(), G4NeutronRadCapture::InitialiseModel(), G4BinaryCascade::ModelDescription(), G4LMsdGenerator::ModelDescription(), G4VPartonStringModel::ModelDescription(), G4TheoFSGenerator::ModelDescription(), G4VHadronPhysics::NewModel(), G4NeutrinoElectronProcess::PostStepDoIt(), G4HadronicProcess::PostStepDoIt(), G4ElNeutrinoNucleusProcess::PostStepDoIt(), G4HadronElasticProcess::PostStepDoIt(), G4MuNeutrinoNucleusProcess::PostStepDoIt(), G4HadronicProcessStore::PrintModelHtml(), G4BinaryCascade::PropagateModelDescription(), G4HadronicProcessStore::RegisterInteraction(), and G4LENDModel::returnUnchanged().

◆ GetProbBBbar()

G4double G4VLongitudinalStringDecay::GetProbBBbar ( )
inlineprotectedinherited

◆ GetProbCCbar()

G4double G4VLongitudinalStringDecay::GetProbCCbar ( )
inlineprotectedinherited

◆ GetProbEta_b()

G4double G4VLongitudinalStringDecay::GetProbEta_b ( )
inlineprotectedinherited

◆ GetProbEta_c()

G4double G4VLongitudinalStringDecay::GetProbEta_c ( )
inlineprotectedinherited

◆ GetRecoilEnergyThreshold()

G4double G4HadronicInteraction::GetRecoilEnergyThreshold ( ) const
inlineinherited

◆ GetStrangeSuppress()

G4double G4VLongitudinalStringDecay::GetStrangeSuppress ( )
inlineprotectedinherited

◆ GetStringTensionParameter()

G4double G4VLongitudinalStringDecay::GetStringTensionParameter ( )
inlineprotectedinherited

◆ GetVerboseLevel()

G4int G4HadronicInteraction::GetVerboseLevel ( ) const
inlineinherited

Definition at line 109 of file G4HadronicInteraction.hh.

References G4HadronicInteraction::verboseLevel.

◆ InitialiseModel()

void G4HadronicInteraction::InitialiseModel ( )
virtualinherited

◆ IsApplicable()

G4bool G4HadronicInteraction::IsApplicable ( const G4HadProjectile aTrack,
G4Nucleus targetNucleus 
)
virtualinherited

◆ IsBlocked() [1/3]

G4bool G4HadronicInteraction::IsBlocked ( ) const
inlineprotectedinherited

◆ IsBlocked() [2/3]

G4bool G4HadronicInteraction::IsBlocked ( const G4Element anElement) const
inherited

Definition at line 202 of file G4HadronicInteraction.cc.

203{
204 for (auto const& elm : theBlockedListElements) {
205 if (anElement == elm) return true;
206 }
207 return false;
208}

References G4HadronicInteraction::theBlockedListElements.

◆ IsBlocked() [3/3]

G4bool G4HadronicInteraction::IsBlocked ( const G4Material aMaterial) const
inherited

Definition at line 193 of file G4HadronicInteraction.cc.

194{
195 for (auto const& mat : theBlockedList) {
196 if (aMaterial == mat) return true;
197 }
198 return false;
199}

References G4HadronicInteraction::theBlockedList.

◆ IsItFragmentable()

G4bool G4QGSMFragmentation::IsItFragmentable ( const G4FragmentingString string)
privatevirtual

Implements G4VLongitudinalStringDecay.

Definition at line 278 of file G4QGSMFragmentation.cc.

279{
280 //Uzhi June 2020 return sqr( PossibleHadronMass(string) + MassCut ) < string->Mass2();
281 return sqr( MinimalStringMass + MassCut ) < string->Mass2(); // Uzhi June 2020
282}

References G4VLongitudinalStringDecay::MassCut, G4VLongitudinalStringDecay::MinimalStringMass, and sqr().

Referenced by FragmentString().

◆ ModelDescription()

void G4HadronicInteraction::ModelDescription ( std::ostream &  outFile) const
virtualinherited

◆ operator!=() [1/2]

G4bool G4HadronicInteraction::operator!= ( const G4HadronicInteraction right) const
deleteinherited

◆ operator!=() [2/2]

G4bool G4QGSMFragmentation::operator!= ( const G4QGSMFragmentation right) const
private

◆ operator=()

const G4QGSMFragmentation & G4QGSMFragmentation::operator= ( const G4QGSMFragmentation right)
private

◆ operator==() [1/2]

G4bool G4HadronicInteraction::operator== ( const G4HadronicInteraction right) const
deleteinherited

◆ operator==() [2/2]

G4bool G4QGSMFragmentation::operator== ( const G4QGSMFragmentation right) const
private

◆ PossibleHadronMass()

G4double G4VLongitudinalStringDecay::PossibleHadronMass ( const G4FragmentingString *const  string,
Pcreate  build = 0,
pDefPair pdefs = 0 
)
protectedinherited

Definition at line 202 of file G4VLongitudinalStringDecay.cc.

204{
205 G4double mass = 0.0;
206
207 if ( build==0 ) build=&G4HadronBuilder::BuildLowSpin;
208
209 G4ParticleDefinition* Hadron1 = nullptr;
210 G4ParticleDefinition* Hadron2 = nullptr;
211
212 if (!string->IsAFourQuarkString() )
213 {
214 // spin 0 meson or spin 1/2 barion will be built
215
216 Hadron1 = (hadronizer->*build)(string->GetLeftParton(), string->GetRightParton());
217 #ifdef debug_VStringDecay
218 G4cout<<"VlongSD PossibleHadronMass"<<G4endl;
219 G4cout<<"VlongSD Quarks at the string ends "<<string->GetLeftParton()->GetParticleName()
220 <<" "<<string->GetRightParton()->GetParticleName()<<G4endl;
221 if ( Hadron1 != nullptr) {
222 G4cout<<"(G4VLongitudinalStringDecay) Hadron "<<Hadron1->GetParticleName()
223 <<" "<<Hadron1->GetPDGMass()<<G4endl;
224 }
225 #endif
226 if ( Hadron1 != nullptr) { mass = (Hadron1)->GetPDGMass();}
227 else { mass = MaxMass;}
228 } else
229 {
230 //... string is qq--qqbar: Build two stable hadrons,
231
232 #ifdef debug_VStringDecay
233 G4cout<<"VlongSD PossibleHadronMass"<<G4endl;
234 G4cout<<"VlongSD string is qq--qqbar: Build two stable hadrons"<<G4endl;
235 #endif
236
237 G4double StringMass = string->Mass();
238 G4int cClusterInterrupt = 0;
239 do
240 {
241 if (cClusterInterrupt++ >= ClusterLoopInterrupt) return false;
242
243 G4int LeftQuark1= string->GetLeftParton()->GetPDGEncoding()/1000;
244 G4int LeftQuark2=(string->GetLeftParton()->GetPDGEncoding()/100)%10;
245
246 G4int RightQuark1= string->GetRightParton()->GetPDGEncoding()/1000;
247 G4int RightQuark2=(string->GetRightParton()->GetPDGEncoding()/100)%10;
248
249 if (G4UniformRand()<0.5) {
250 Hadron1 =hadronizer->Build(FindParticle(LeftQuark1), FindParticle(RightQuark1));
251 Hadron2 =hadronizer->Build(FindParticle(LeftQuark2), FindParticle(RightQuark2));
252 } else {
253 Hadron1 =hadronizer->Build(FindParticle(LeftQuark1), FindParticle(RightQuark2));
254 Hadron2 =hadronizer->Build(FindParticle(LeftQuark2), FindParticle(RightQuark1));
255 }
256 //... repeat procedure, if mass of cluster is too low to produce hadrons
257 //... ClusterMassCut = 0.15*GeV model parameter
258 }
259 while ( Hadron1 == nullptr || Hadron2 == nullptr ||
260 ( StringMass <= Hadron1->GetPDGMass() + Hadron2->GetPDGMass() ) );
261
262 mass = (Hadron1)->GetPDGMass() + (Hadron2)->GetPDGMass();
263 }
264
265 #ifdef debug_VStringDecay
266 G4cout<<"VlongSD *Hadrons 1 and 2, proposed mass "<<Hadron1<<" "<<Hadron2<<" "<<mass<<G4endl;
267 #endif
268
269 if ( pdefs != 0 )
270 { // need to return hadrons as well....
271 pdefs->first = Hadron1;
272 pdefs->second = Hadron2;
273 }
274
275 return mass;
276}
G4bool IsAFourQuarkString(void) const
G4ParticleDefinition * GetLeftParton(void) const
G4ParticleDefinition * BuildLowSpin(G4ParticleDefinition *black, G4ParticleDefinition *white)

References G4HadronBuilder::Build(), G4HadronBuilder::BuildLowSpin(), G4VLongitudinalStringDecay::ClusterLoopInterrupt, G4VLongitudinalStringDecay::FindParticle(), G4cout, G4endl, G4UniformRand, G4FragmentingString::GetLeftParton(), G4ParticleDefinition::GetParticleName(), G4ParticleDefinition::GetPDGMass(), G4VLongitudinalStringDecay::hadronizer, G4FragmentingString::IsAFourQuarkString(), and G4VLongitudinalStringDecay::MaxMass.

Referenced by G4VLongitudinalStringDecay::ProduceOneHadron().

◆ ProduceOneHadron()

G4KineticTrackVector * G4VLongitudinalStringDecay::ProduceOneHadron ( const G4ExcitedString *const  theString)
protectedinherited

Definition at line 146 of file G4VLongitudinalStringDecay.cc.

147{
148 G4KineticTrackVector* result = nullptr;
149 pDefPair hadrons( nullptr, nullptr );
150 G4FragmentingString aString( *string );
151
152 #ifdef debug_VStringDecay
153 G4cout<<"G4VLongitudinalStringDecay::ProduceOneHadron: PossibleHmass StrMass "
154 <<aString.Mass()<<" MassCut "<<MassCut<<G4endl;
155 #endif
156
157 SetMinimalStringMass( &aString );
158 PossibleHadronMass( &aString, 0, &hadrons );
159 result = new G4KineticTrackVector;
160 if ( hadrons.first != nullptr ) {
161 if ( hadrons.second == nullptr ) {
162 // Substitute string by light hadron, Note that Energy is not conserved here!
163
164 #ifdef debug_VStringDecay
165 G4cout << "VlongSD Warning replacing string by single hadron (G4VLongitudinalStringDecay)" <<G4endl;
166 G4cout << hadrons.first->GetParticleName()<<G4endl
167 << "string .. " << string->Get4Momentum() << " "
168 << string->Get4Momentum().m() << G4endl;
169 #endif
170
171 G4ThreeVector Mom3 = string->Get4Momentum().vect();
172 G4LorentzVector Mom( Mom3, std::sqrt( Mom3.mag2() + sqr( hadrons.first->GetPDGMass() ) ) );
173 result->push_back( new G4KineticTrack( hadrons.first, 0, string->GetPosition(), Mom ) );
174 } else {
175 //... string was qq--qqbar type: Build two stable hadrons,
176
177 #ifdef debug_VStringDecay
178 G4cout << "VlongSD Warning replacing qq-qqbar string by TWO hadrons (G4VLongitudinalStringDecay)"
179 << hadrons.first->GetParticleName() << " / "
180 << hadrons.second->GetParticleName()
181 << "string .. " << string->Get4Momentum() << " "
182 << string->Get4Momentum().m() << G4endl;
183 #endif
184
185 G4LorentzVector Mom1, Mom2;
186 Sample4Momentum( &Mom1, hadrons.first->GetPDGMass(),
187 &Mom2, hadrons.second->GetPDGMass(),
188 string->Get4Momentum().mag() );
189
190 result->push_back( new G4KineticTrack( hadrons.first, 0, string->GetPosition(), Mom1 ) );
191 result->push_back( new G4KineticTrack( hadrons.second, 0, string->GetPosition(), Mom2 ) );
192
193 G4ThreeVector Velocity = string->Get4Momentum().boostVector();
194 result->Boost(Velocity);
195 }
196 }
197 return result;
198}
double mag2() const
void Boost(G4ThreeVector &Velocity)
G4double PossibleHadronMass(const G4FragmentingString *const string, Pcreate build=0, pDefPair *pdefs=0)
virtual void Sample4Momentum(G4LorentzVector *Mom, G4double Mass, G4LorentzVector *AntiMom, G4double AntiMass, G4double InitialMass)=0

References G4KineticTrackVector::Boost(), G4cout, G4endl, G4ExcitedString::Get4Momentum(), G4ExcitedString::GetPosition(), CLHEP::HepLorentzVector::mag(), CLHEP::Hep3Vector::mag2(), G4FragmentingString::Mass(), G4VLongitudinalStringDecay::MassCut, G4VLongitudinalStringDecay::PossibleHadronMass(), G4VLongitudinalStringDecay::Sample4Momentum(), G4VLongitudinalStringDecay::SetMinimalStringMass(), and sqr().

Referenced by G4LundStringFragmentation::FragmentString(), and FragmentString().

◆ QuarkSplitup()

G4ParticleDefinition * G4VLongitudinalStringDecay::QuarkSplitup ( G4ParticleDefinition decay,
G4ParticleDefinition *&  created 
)
protectedvirtualinherited

Definition at line 335 of file G4VLongitudinalStringDecay.cc.

337{
338 #ifdef debug_VStringDecay
339 G4cout<<"VlongSD QuarkSplitup: quark ID "<<decay->GetPDGEncoding()<<G4endl;
340 #endif
341
342 G4int IsParticle=(decay->GetPDGEncoding()>0) ? -1 : +1; // if we have a quark, we need antiquark (or diquark)
343
344 pDefPair QuarkPair = CreatePartonPair(IsParticle);
345 created = QuarkPair.second;
346
347 DecayQuark = decay->GetPDGEncoding();
348 NewQuark = created->GetPDGEncoding();
349
350 #ifdef debug_VStringDecay
351 G4cout<<"VlongSD QuarkSplitup: "<<decay->GetPDGEncoding()<<" -> "<<QuarkPair.second->GetPDGEncoding()<<G4endl;
352 G4cout<<"hadronizer->Build(QuarkPair.first, decay)"<<G4endl;
353 #endif
354
355 return hadronizer->Build(QuarkPair.first, decay);
356}

References G4HadronBuilder::Build(), G4VLongitudinalStringDecay::CreatePartonPair(), G4INCL::ClusterDecay::decay(), G4VLongitudinalStringDecay::DecayQuark, G4cout, G4endl, G4ParticleDefinition::GetPDGEncoding(), G4VLongitudinalStringDecay::hadronizer, and G4VLongitudinalStringDecay::NewQuark.

Referenced by G4LundStringFragmentation::Splitup(), and Splitup().

◆ Sample4Momentum()

void G4QGSMFragmentation::Sample4Momentum ( G4LorentzVector Mom,
G4double  Mass,
G4LorentzVector AntiMom,
G4double  AntiMass,
G4double  InitialMass 
)
privatevirtual

Implements G4VLongitudinalStringDecay.

Definition at line 742 of file G4QGSMFragmentation.cc.

744{
745 #ifdef debug_QGSMfragmentation // Uzhi June 2020
746 G4cout<<"Sample4Momentum Last-----------------------------------------"<<G4endl;
747 G4cout<<" StrMass "<<InitialMass<<" Mass1 "<<Mass<<" Mass2 "<<AntiMass<<G4endl;
748 G4cout<<" SumMass "<<Mass+AntiMass<<G4endl;
749 #endif
750
751 G4double r_val = sqr(InitialMass*InitialMass - Mass*Mass - AntiMass*AntiMass) - sqr(2.*Mass*AntiMass);
752 G4double Pabs = (r_val > 0.)? std::sqrt(r_val)/(2.*InitialMass) : 0;
753
754 //... sample unit vector
755 G4double pz = 1. - 2.*G4UniformRand();
756 G4double st = std::sqrt(1. - pz * pz)*Pabs;
757 G4double phi = 2.*pi*G4UniformRand();
758 G4double px = st*std::cos(phi);
759 G4double py = st*std::sin(phi);
760 pz *= Pabs;
761
762 Mom->setPx(px); Mom->setPy(py); Mom->setPz(pz);
763 Mom->setE(std::sqrt(Pabs*Pabs + Mass*Mass));
764
765 AntiMom->setPx(-px); AntiMom->setPy(-py); AntiMom->setPz(-pz);
766 AntiMom->setE (std::sqrt(Pabs*Pabs + AntiMass*AntiMass));
767}
static constexpr double pi
Definition: G4SIunits.hh:55

References G4cout, G4endl, G4UniformRand, pi, CLHEP::HepLorentzVector::setE(), CLHEP::HepLorentzVector::setPx(), CLHEP::HepLorentzVector::setPy(), CLHEP::HepLorentzVector::setPz(), and sqr().

Referenced by SplitLast().

◆ SampleInvariantT()

G4double G4HadronicInteraction::SampleInvariantT ( const G4ParticleDefinition p,
G4double  plab,
G4int  Z,
G4int  A 
)
virtualinherited

◆ SampleQuarkFlavor()

G4int G4VLongitudinalStringDecay::SampleQuarkFlavor ( void  )
inherited

Definition at line 393 of file G4VLongitudinalStringDecay.cc.

394{
395 G4int quark(1);
396 G4double ksi = G4UniformRand();
397 if ( ksi < ProbCB ) {
398 if ( ksi < ProbCCbar ) {quark = 4;} // c quark
399 else {quark = 5;} // b quark
400 #ifdef debug_heavyHadrons
401 G4cout << "G4VLongitudinalStringDecay::SampleQuarkFlavor : sampled from the vacuum HEAVY quark = "
402 << quark << G4endl;
403 #endif
404 } else {
405 quark = 1 + (int)(G4UniformRand()/StrangeSuppress);
406 }
407 #ifdef debug_VStringDecay
408 G4cout<<"VlongSD SampleQuarkFlavor "<<quark<<" (ProbCB ProbCCbar ProbBBbar "<<ProbCB
409 <<" "<<ProbCCbar<<" "<<ProbBBbar<<" )"<<G4endl;
410 #endif
411 return quark;
412}

References G4cout, G4endl, G4UniformRand, G4VLongitudinalStringDecay::ProbBBbar, G4VLongitudinalStringDecay::ProbCB, G4VLongitudinalStringDecay::ProbCCbar, and G4VLongitudinalStringDecay::StrangeSuppress.

Referenced by G4VLongitudinalStringDecay::CreatePartonPair().

◆ SampleQuarkPt()

G4ThreeVector G4VLongitudinalStringDecay::SampleQuarkPt ( G4double  ptMax = -1.)
inherited

Definition at line 416 of file G4VLongitudinalStringDecay.cc.

417{
418 G4double Pt;
419 if ( ptMax < 0 ) {
420 // sample full gaussian
421 Pt = -G4Log(G4UniformRand());
422 } else {
423 // sample in limited range
424 G4double q = ptMax/SigmaQT;
425 G4double ymin = (q > 20.) ? 0.0 : G4Exp(-q*q);
426 Pt = -G4Log(G4RandFlat::shoot(ymin, 1.));
427 }
428 Pt = SigmaQT * std::sqrt(Pt);
429 G4double phi = 2.*pi*G4UniformRand();
430 return G4ThreeVector(Pt * std::cos(phi),Pt * std::sin(phi),0);
431}
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
Definition: G4Exp.hh:179
G4double G4Log(G4double x)
Definition: G4Log.hh:226
CLHEP::Hep3Vector G4ThreeVector
ThreeVector shoot(const G4int Ap, const G4int Af)

References G4Exp(), G4Log(), G4UniformRand, pi, G4INCL::DeJongSpin::shoot(), and G4VLongitudinalStringDecay::SigmaQT.

Referenced by G4LundStringFragmentation::Sample4Momentum().

◆ SetDiquarkBreakProbability()

void G4VLongitudinalStringDecay::SetDiquarkBreakProbability ( G4double  aValue)
inherited

Definition at line 488 of file G4VLongitudinalStringDecay.cc.

489{
490 if ( PastInitPhase ) {
491 throw G4HadronicException(__FILE__, __LINE__,
492 "G4VLongitudinalStringDecay::SetDiquarkBreakProbability after FragmentString() not allowed");
493 } else {
494 DiquarkBreakProb = aValue;
495 }
496}

References G4VLongitudinalStringDecay::DiquarkBreakProb, and G4VLongitudinalStringDecay::PastInitPhase.

Referenced by G4LundStringFragmentation::G4LundStringFragmentation(), and G4QGSMFragmentation().

◆ SetDiquarkSuppression()

void G4VLongitudinalStringDecay::SetDiquarkSuppression ( G4double  aValue)
inherited

◆ SetEnergyMomentumCheckLevels()

void G4HadronicInteraction::SetEnergyMomentumCheckLevels ( G4double  relativeLevel,
G4double  absoluteLevel 
)
inlineinherited

Definition at line 149 of file G4HadronicInteraction.hh.

150 { epCheckLevels.first = relativeLevel;
151 epCheckLevels.second = absoluteLevel; }

References G4HadronicInteraction::epCheckLevels.

Referenced by G4BinaryCascade::G4BinaryCascade(), G4CascadeInterface::G4CascadeInterface(), and G4FTFModel::G4FTFModel().

◆ SetFFq2q()

void G4QGSMFragmentation::SetFFq2q ( )
private

Definition at line 771 of file G4QGSMFragmentation.cc.

772{
773 for (G4int i=0; i < 5; i++) {
774 FFq2q[i][0][0] = 2.0 ; FFq2q[i][0][1] = -arho + alft; // q->d + (q dbar) Pi0, Eta, Eta', Rho0, omega
775 FFq2q[i][1][0] = 2.0 ; FFq2q[i][1][1] = -arho + alft; // q->u + (q ubar) Pi-, Rho-
776 FFq2q[i][2][0] = 1.0 ; FFq2q[i][2][1] = -aphi + alft; // q->s + (q sbar) K0, K*0
777 FFq2q[i][3][0] = 1.0 ; FFq2q[i][3][1] = -aJPs + alft; // q->c + (q+cbar) D-, D*-
778 FFq2q[i][4][0] = 1.0 ; FFq2q[i][4][1] = -aUps + alft; // q->b + (q bbar) EtaB, Upsilon
779 }
780}

References aJPs, alft, aphi, arho, aUps, and FFq2q.

Referenced by G4QGSMFragmentation().

◆ SetFFq2qq()

void G4QGSMFragmentation::SetFFq2qq ( )
private

Definition at line 784 of file G4QGSMFragmentation.cc.

785{
786 for (G4int i=0; i < 5; i++) {
787 FFq2qq[i][ 0][0] = 0.0 ; FFq2qq[i][ 0][1] = arho - 2.0*an + alft; // q->dd bar + (q dd)
788 FFq2qq[i][ 1][0] = 0.0 ; FFq2qq[i][ 1][1] = arho - 2.0*an + alft; // q->ud bar + (q ud)
789 FFq2qq[i][ 2][0] = 0.0 ; FFq2qq[i][ 2][1] = arho - 2.0*ala + alft; // q->sd bar + (q sd)
790 FFq2qq[i][ 3][0] = 0.0 ; FFq2qq[i][ 3][1] = arho - 2.0*alaC + alft; // q->cd bar + (q cd)
791 FFq2qq[i][ 4][0] = 0.0 ; FFq2qq[i][ 4][1] = arho - 2.0*alaB + alft; // q->bd bar + (q bd)
792 FFq2qq[i][ 5][0] = 0.0 ; FFq2qq[i][ 5][1] = arho - 2.0*an + alft; // q->uu bar + (q uu)
793 FFq2qq[i][ 6][0] = 0.0 ; FFq2qq[i][ 6][1] = arho - 2.0*ala + alft; // q->su bar + (q su)
794 FFq2qq[i][ 7][0] = 0.0 ; FFq2qq[i][ 7][1] = arho - 2.0*alaC + alft; // q->cu bar + (q cu)
795 FFq2qq[i][ 8][0] = 0.0 ; FFq2qq[i][ 8][1] = arho - 2.0*alaB + alft; // q->bu bar + (q bu)
796 FFq2qq[i][ 9][0] = 0.0 ; FFq2qq[i][ 9][1] = arho - 2.0*aXi + alft; // q->ss bar + (q ss)
797 FFq2qq[i][10][0] = 0.0 ; FFq2qq[i][10][1] = arho - 2.0*aXiC + alft; // q->cs bar + (q cs)
798 FFq2qq[i][11][0] = 0.0 ; FFq2qq[i][11][1] = arho - 2.0*aXiB + alft; // q->bs bar + (q bc)
799 FFq2qq[i][12][0] = 0.0 ; FFq2qq[i][12][1] = arho - 2.0*aXiCC + alft; // q->cc bar + (q cc)
800 FFq2qq[i][13][0] = 0.0 ; FFq2qq[i][13][1] = arho - 2.0*aXiCB + alft; // q->bc bar + (q bc)
801 FFq2qq[i][14][0] = 0.0 ; FFq2qq[i][14][1] = arho - 2.0*aXiBB + alft; // q->bb bar + (q bb)
802 }
803}

References ala, alaB, alaC, alft, an, arho, aXi, aXiB, aXiBB, aXiC, aXiCB, aXiCC, and FFq2qq.

Referenced by G4QGSMFragmentation().

◆ SetFFqq2q()

void G4QGSMFragmentation::SetFFqq2q ( )
private

Definition at line 807 of file G4QGSMFragmentation.cc.

808{
809 for (G4int i=0; i < 15; i++) {
810 FFqq2q[i][0][0] = 2.0*(arho - an); FFqq2q[i][0][1] = -arho + alft;
811 FFqq2q[i][1][0] = 2.0*(arho - an); FFqq2q[i][1][1] = -arho + alft;
812 FFqq2q[i][2][0] = 2.0*(arho - an); FFqq2q[i][2][1] = -aphi + alft;
813 FFqq2q[i][3][0] = 2.0*(arho - an); FFqq2q[i][3][1] = -aJPs + alft;
814 FFqq2q[i][4][0] = 2.0*(arho - an); FFqq2q[i][4][1] = -aUps + alft;
815 }
816}

References aJPs, alft, an, aphi, arho, aUps, and FFqq2q.

Referenced by G4QGSMFragmentation().

◆ SetFFqq2qq()

void G4QGSMFragmentation::SetFFqq2qq ( )
private

Definition at line 820 of file G4QGSMFragmentation.cc.

821{
822 for (G4int i=0; i < 15; i++) {
823 FFqq2qq[i][0][0] = 0. ; FFqq2qq[i][0][1] = 2.0*arho - 2.0*an -arho + alft; // dd -> dd + Pi0 (d d bar)
824 FFqq2qq[i][1][0] = 0. ; FFqq2qq[i][1][1] = 2.0*arho - 2.0*an -arho + alft; // dd -> ud + Pi- (d u bar)
825 FFqq2qq[i][2][0] = 0. ; FFqq2qq[i][2][1] = 2.0*arho - 2.0*an -aphi + alft; // dd -> sd + K0 (d s bar)
826 FFqq2qq[i][3][0] = 0. ; FFqq2qq[i][3][1] = 2.0*arho - 2.0*an -aJPs + alft; // dd -> cd + D- (d c bar)
827 FFqq2qq[i][4][0] = 0. ; FFqq2qq[i][4][1] = 2.0*arho - 2.0*an -aUps + alft; // dd -> bd + B0 (d b bar)
828 }
829}

References aJPs, alft, an, aphi, arho, aUps, and FFqq2qq.

Referenced by G4QGSMFragmentation().

◆ SetMassCut()

void G4VLongitudinalStringDecay::SetMassCut ( G4double  aValue)
protectedvirtualinherited

◆ SetMaxEnergy() [1/3]

void G4HadronicInteraction::SetMaxEnergy ( const G4double  anEnergy)
inlineinherited

Definition at line 102 of file G4HadronicInteraction.hh.

103 { theMaxEnergy = anEnergy; }

References G4HadronicInteraction::theMaxEnergy.

Referenced by G4HadronicInteraction::ActivateFor(), G4IonINCLXXPhysics::AddProcess(), G4BertiniElectroNuclearBuilder::Build(), G4LENDBertiniGammaElectroNuclearBuilder::Build(), G4NeutronLENDBuilder::Build(), G4NeutronPHPBuilder::Build(), G4AlphaPHPBuilder::Build(), G4BertiniKaonBuilder::Build(), G4BertiniNeutronBuilder::Build(), G4BertiniPiKBuilder::Build(), G4BertiniPionBuilder::Build(), G4BertiniProtonBuilder::Build(), G4BinaryAlphaBuilder::Build(), G4BinaryDeuteronBuilder::Build(), G4BinaryHe3Builder::Build(), G4BinaryNeutronBuilder::Build(), G4BinaryPiKBuilder::Build(), G4BinaryPionBuilder::Build(), G4BinaryProtonBuilder::Build(), G4BinaryTritonBuilder::Build(), G4DeuteronPHPBuilder::Build(), G4FTFBinaryKaonBuilder::Build(), G4FTFBinaryNeutronBuilder::Build(), G4FTFBinaryPionBuilder::Build(), G4FTFBinaryProtonBuilder::Build(), G4FTFPAntiBarionBuilder::Build(), G4FTFPKaonBuilder::Build(), G4FTFPNeutronBuilder::Build(), G4FTFPPiKBuilder::Build(), G4FTFPPionBuilder::Build(), G4FTFPProtonBuilder::Build(), G4He3PHPBuilder::Build(), G4HyperonFTFPBuilder::Build(), G4HyperonQGSPBuilder::Build(), G4INCLXXNeutronBuilder::Build(), G4INCLXXPionBuilder::Build(), G4INCLXXProtonBuilder::Build(), G4PrecoNeutronBuilder::Build(), G4PrecoProtonBuilder::Build(), G4ProtonPHPBuilder::Build(), G4QGSBinaryKaonBuilder::Build(), G4QGSBinaryNeutronBuilder::Build(), G4QGSBinaryPiKBuilder::Build(), G4QGSBinaryPionBuilder::Build(), G4QGSBinaryProtonBuilder::Build(), G4QGSPAntiBarionBuilder::Build(), G4QGSPKaonBuilder::Build(), G4QGSPLundStrFragmProtonBuilder::Build(), G4QGSPNeutronBuilder::Build(), G4QGSPPiKBuilder::Build(), G4QGSPPionBuilder::Build(), G4TritonPHPBuilder::Build(), G4QGSPProtonBuilder::Build(), G4HadronicBuilder::BuildFTFP_BERT(), G4HadronicBuilder::BuildFTFQGSP_BERT(), G4QGSBuilder::BuildModel(), G4VHadronPhysics::BuildModel(), G4HadronicBuilder::BuildQGSP_FTFP_BERT(), G4EmExtraPhysics::ConstructGammaElectroNuclear(), LBE::ConstructHad(), G4EmExtraPhysics::ConstructLENDGammaNuclear(), G4HadronDElasticPhysics::ConstructProcess(), G4HadronElasticPhysics::ConstructProcess(), G4HadronHElasticPhysics::ConstructProcess(), G4IonINCLXXPhysics::ConstructProcess(), G4IonPhysics::ConstructProcess(), G4IonPhysicsPHP::ConstructProcess(), G4IonQMDPhysics::ConstructProcess(), G4ANuElNucleusNcModel::G4ANuElNucleusNcModel(), G4ANuMuNucleusNcModel::G4ANuMuNucleusNcModel(), G4BertiniKaonBuilder::G4BertiniKaonBuilder(), G4BertiniPiKBuilder::G4BertiniPiKBuilder(), G4BertiniPionBuilder::G4BertiniPionBuilder(), G4BinaryCascade::G4BinaryCascade(), G4BinaryPiKBuilder::G4BinaryPiKBuilder(), G4BinaryPionBuilder::G4BinaryPionBuilder(), G4ChargeExchange::G4ChargeExchange(), G4DiffuseElastic::G4DiffuseElastic(), G4DiffuseElasticV2::G4DiffuseElasticV2(), G4ElectroVDNuclearModel::G4ElectroVDNuclearModel(), G4EMDissociation::G4EMDissociation(), G4FissLib::G4FissLib(), G4FTFBinaryKaonBuilder::G4FTFBinaryKaonBuilder(), G4FTFBinaryNeutronBuilder::G4FTFBinaryNeutronBuilder(), G4FTFBinaryPiKBuilder::G4FTFBinaryPiKBuilder(), G4FTFBinaryPionBuilder::G4FTFBinaryPionBuilder(), G4FTFBinaryProtonBuilder::G4FTFBinaryProtonBuilder(), G4FTFPAntiBarionBuilder::G4FTFPAntiBarionBuilder(), G4FTFPKaonBuilder::G4FTFPKaonBuilder(), G4FTFPNeutronBuilder::G4FTFPNeutronBuilder(), G4FTFPPiKBuilder::G4FTFPPiKBuilder(), G4FTFPPionBuilder::G4FTFPPionBuilder(), G4FTFPProtonBuilder::G4FTFPProtonBuilder(), G4HadronElastic::G4HadronElastic(), G4HadronicAbsorptionFritiof::G4HadronicAbsorptionFritiof(), G4HadronicAbsorptionFritiofWithBinaryCascade::G4HadronicAbsorptionFritiofWithBinaryCascade(), G4hhElastic::G4hhElastic(), G4HyperonFTFPBuilder::G4HyperonFTFPBuilder(), G4HyperonQGSPBuilder::G4HyperonQGSPBuilder(), G4INCLXXPionBuilder::G4INCLXXPionBuilder(), G4LEHadronProtonElastic::G4LEHadronProtonElastic(), G4LENDModel::G4LENDModel(), G4LEnp::G4LEnp(), G4LEpp::G4LEpp(), G4LFission::G4LFission(), G4LowEGammaNuclearModel::G4LowEGammaNuclearModel(), G4MuonVDNuclearModel::G4MuonVDNuclearModel(), G4NeutrinoElectronCcModel::G4NeutrinoElectronCcModel(), G4NeutrinoElectronNcModel::G4NeutrinoElectronNcModel(), G4NeutrinoNucleusModel::G4NeutrinoNucleusModel(), G4NeutronElectronElModel::G4NeutronElectronElModel(), G4NeutronRadCapture::G4NeutronRadCapture(), G4NuclNuclDiffuseElastic::G4NuclNuclDiffuseElastic(), G4NuElNucleusNcModel::G4NuElNucleusNcModel(), G4NuMuNucleusNcModel::G4NuMuNucleusNcModel(), G4ParticleHPCapture::G4ParticleHPCapture(), G4ParticleHPElastic::G4ParticleHPElastic(), G4ParticleHPFission::G4ParticleHPFission(), G4ParticleHPInelastic::G4ParticleHPInelastic(), G4ParticleHPThermalScattering::G4ParticleHPThermalScattering(), G4QGSPAntiBarionBuilder::G4QGSPAntiBarionBuilder(), G4WilsonAbrasionModel::G4WilsonAbrasionModel(), G4HadronPhysicsFTFP_BERT_HP::Neutron(), G4HadronPhysicsINCLXX::Neutron(), G4HadronPhysicsQGSP_BERT_HP::Neutron(), G4HadronPhysicsQGSP_BIC_HP::Neutron(), G4HadronPhysicsShielding::Neutron(), and G4VHadronPhysics::NewModel().

◆ SetMaxEnergy() [2/3]

void G4HadronicInteraction::SetMaxEnergy ( G4double  anEnergy,
const G4Element anElement 
)
inherited

Definition at line 151 of file G4HadronicInteraction.cc.

153{
154 Block();
155 if(!theMaxEnergyListElements.empty()) {
156 for(auto & elmlist : theMaxEnergyListElements) {
157 if( anElement == elmlist.second ) {
158 elmlist.first = anEnergy;
159 return;
160 }
161 }
162 }
163 theMaxEnergyListElements.push_back(std::pair<G4double, const G4Element *>(anEnergy, anElement));
164}

References G4HadronicInteraction::Block(), and G4HadronicInteraction::theMaxEnergyListElements.

◆ SetMaxEnergy() [3/3]

void G4HadronicInteraction::SetMaxEnergy ( G4double  anEnergy,
const G4Material aMaterial 
)
inherited

Definition at line 166 of file G4HadronicInteraction.cc.

167{
168 Block();
169 if(!theMaxEnergyList.empty()) {
170 for(auto & matlist: theMaxEnergyList) {
171 if( aMaterial == matlist.second ) {
172 matlist.first = anEnergy;
173 return;
174 }
175 }
176 }
177 theMaxEnergyList.push_back(std::pair<G4double, const G4Material *>(anEnergy, aMaterial));
178}

References G4HadronicInteraction::Block(), and G4HadronicInteraction::theMaxEnergyList.

◆ SetMinEnergy() [1/3]

void G4HadronicInteraction::SetMinEnergy ( G4double  anEnergy)
inlineinherited

Definition at line 89 of file G4HadronicInteraction.hh.

90 { theMinEnergy = anEnergy; }

References G4HadronicInteraction::theMinEnergy.

Referenced by G4HadronicInteraction::ActivateFor(), G4BertiniElectroNuclearBuilder::Build(), G4LENDBertiniGammaElectroNuclearBuilder::Build(), G4NeutronLENDBuilder::Build(), G4NeutronPHPBuilder::Build(), G4AlphaPHPBuilder::Build(), G4BertiniKaonBuilder::Build(), G4BertiniNeutronBuilder::Build(), G4BertiniPiKBuilder::Build(), G4BertiniPionBuilder::Build(), G4BertiniProtonBuilder::Build(), G4BinaryAlphaBuilder::Build(), G4BinaryDeuteronBuilder::Build(), G4BinaryHe3Builder::Build(), G4BinaryNeutronBuilder::Build(), G4BinaryPiKBuilder::Build(), G4BinaryPionBuilder::Build(), G4BinaryProtonBuilder::Build(), G4BinaryTritonBuilder::Build(), G4DeuteronPHPBuilder::Build(), G4FTFBinaryKaonBuilder::Build(), G4FTFBinaryNeutronBuilder::Build(), G4FTFBinaryPiKBuilder::Build(), G4FTFBinaryPionBuilder::Build(), G4FTFBinaryProtonBuilder::Build(), G4FTFPAntiBarionBuilder::Build(), G4FTFPKaonBuilder::Build(), G4FTFPNeutronBuilder::Build(), G4FTFPPiKBuilder::Build(), G4FTFPPionBuilder::Build(), G4FTFPProtonBuilder::Build(), G4He3PHPBuilder::Build(), G4HyperonFTFPBuilder::Build(), G4HyperonQGSPBuilder::Build(), G4INCLXXNeutronBuilder::Build(), G4INCLXXPionBuilder::Build(), G4INCLXXProtonBuilder::Build(), G4PrecoNeutronBuilder::Build(), G4PrecoProtonBuilder::Build(), G4ProtonPHPBuilder::Build(), G4QGSBinaryKaonBuilder::Build(), G4QGSBinaryNeutronBuilder::Build(), G4QGSBinaryPiKBuilder::Build(), G4QGSBinaryPionBuilder::Build(), G4QGSBinaryProtonBuilder::Build(), G4QGSPAntiBarionBuilder::Build(), G4QGSPKaonBuilder::Build(), G4QGSPLundStrFragmProtonBuilder::Build(), G4QGSPNeutronBuilder::Build(), G4QGSPPiKBuilder::Build(), G4QGSPPionBuilder::Build(), G4TritonPHPBuilder::Build(), G4QGSPProtonBuilder::Build(), G4QGSBuilder::BuildModel(), G4VHadronPhysics::BuildModel(), G4EmExtraPhysics::ConstructGammaElectroNuclear(), LBE::ConstructHad(), G4EmExtraPhysics::ConstructLENDGammaNuclear(), G4HadronElasticPhysicsHP::ConstructProcess(), G4HadronElasticPhysicsLEND::ConstructProcess(), G4HadronElasticPhysicsPHP::ConstructProcess(), G4HadronDElasticPhysics::ConstructProcess(), G4HadronElasticPhysics::ConstructProcess(), G4HadronHElasticPhysics::ConstructProcess(), G4IonElasticPhysics::ConstructProcess(), G4IonINCLXXPhysics::ConstructProcess(), G4IonPhysics::ConstructProcess(), G4IonPhysicsPHP::ConstructProcess(), G4IonQMDPhysics::ConstructProcess(), G4ANuElNucleusNcModel::G4ANuElNucleusNcModel(), G4ANuMuNucleusNcModel::G4ANuMuNucleusNcModel(), G4BertiniKaonBuilder::G4BertiniKaonBuilder(), G4BertiniPiKBuilder::G4BertiniPiKBuilder(), G4BertiniPionBuilder::G4BertiniPionBuilder(), G4BinaryCascade::G4BinaryCascade(), G4BinaryPiKBuilder::G4BinaryPiKBuilder(), G4BinaryPionBuilder::G4BinaryPionBuilder(), G4ChargeExchange::G4ChargeExchange(), G4DiffuseElastic::G4DiffuseElastic(), G4DiffuseElasticV2::G4DiffuseElasticV2(), G4ElectroVDNuclearModel::G4ElectroVDNuclearModel(), G4EMDissociation::G4EMDissociation(), G4FissLib::G4FissLib(), G4FTFBinaryKaonBuilder::G4FTFBinaryKaonBuilder(), G4FTFBinaryNeutronBuilder::G4FTFBinaryNeutronBuilder(), G4FTFBinaryPiKBuilder::G4FTFBinaryPiKBuilder(), G4FTFBinaryPionBuilder::G4FTFBinaryPionBuilder(), G4FTFBinaryProtonBuilder::G4FTFBinaryProtonBuilder(), G4FTFPAntiBarionBuilder::G4FTFPAntiBarionBuilder(), G4FTFPKaonBuilder::G4FTFPKaonBuilder(), G4FTFPNeutronBuilder::G4FTFPNeutronBuilder(), G4FTFPPiKBuilder::G4FTFPPiKBuilder(), G4FTFPPionBuilder::G4FTFPPionBuilder(), G4FTFPProtonBuilder::G4FTFPProtonBuilder(), G4HadronElastic::G4HadronElastic(), G4HadronicAbsorptionBertini::G4HadronicAbsorptionBertini(), G4HadronicAbsorptionFritiof::G4HadronicAbsorptionFritiof(), G4HadronicAbsorptionFritiofWithBinaryCascade::G4HadronicAbsorptionFritiofWithBinaryCascade(), G4hhElastic::G4hhElastic(), G4HyperonFTFPBuilder::G4HyperonFTFPBuilder(), G4HyperonQGSPBuilder::G4HyperonQGSPBuilder(), G4INCLXXPionBuilder::G4INCLXXPionBuilder(), G4LEHadronProtonElastic::G4LEHadronProtonElastic(), G4LENDModel::G4LENDModel(), G4LEnp::G4LEnp(), G4LEpp::G4LEpp(), G4LFission::G4LFission(), G4LowEGammaNuclearModel::G4LowEGammaNuclearModel(), G4MuonVDNuclearModel::G4MuonVDNuclearModel(), G4NeutrinoElectronCcModel::G4NeutrinoElectronCcModel(), G4NeutrinoElectronNcModel::G4NeutrinoElectronNcModel(), G4NeutrinoNucleusModel::G4NeutrinoNucleusModel(), G4NeutronElectronElModel::G4NeutronElectronElModel(), G4NeutronRadCapture::G4NeutronRadCapture(), G4NuclNuclDiffuseElastic::G4NuclNuclDiffuseElastic(), G4NuElNucleusNcModel::G4NuElNucleusNcModel(), G4NuMuNucleusNcModel::G4NuMuNucleusNcModel(), G4ParticleHPCapture::G4ParticleHPCapture(), G4ParticleHPElastic::G4ParticleHPElastic(), G4ParticleHPFission::G4ParticleHPFission(), G4ParticleHPInelastic::G4ParticleHPInelastic(), G4ParticleHPThermalScattering::G4ParticleHPThermalScattering(), G4QGSPAntiBarionBuilder::G4QGSPAntiBarionBuilder(), G4WilsonAbrasionModel::G4WilsonAbrasionModel(), G4NeutrinoElectronCcModel::IsApplicable(), G4HadronPhysicsFTFP_BERT_HP::Neutron(), G4HadronPhysicsINCLXX::Neutron(), G4HadronPhysicsQGSP_BERT_HP::Neutron(), G4HadronPhysicsQGSP_BIC_HP::Neutron(), G4HadronPhysicsShielding::Neutron(), and G4VHadronPhysics::NewModel().

◆ SetMinEnergy() [2/3]

void G4HadronicInteraction::SetMinEnergy ( G4double  anEnergy,
const G4Element anElement 
)
inherited

Definition at line 101 of file G4HadronicInteraction.cc.

103{
104 Block();
105 if(!theMinEnergyListElements.empty()) {
106 for(auto & elmlist : theMinEnergyListElements) {
107 if( anElement == elmlist.second ) {
108 elmlist.first = anEnergy;
109 return;
110 }
111 }
112 }
113 theMinEnergyListElements.push_back(std::pair<G4double, const G4Element *>(anEnergy, anElement));
114}

References G4HadronicInteraction::Block(), and G4HadronicInteraction::theMinEnergyListElements.

◆ SetMinEnergy() [3/3]

void G4HadronicInteraction::SetMinEnergy ( G4double  anEnergy,
const G4Material aMaterial 
)
inherited

Definition at line 116 of file G4HadronicInteraction.cc.

118{
119 Block();
120 if(!theMinEnergyList.empty()) {
121 for(auto & matlist : theMinEnergyList) {
122 if( aMaterial == matlist.second ) {
123 matlist.first = anEnergy;
124 return;
125 }
126 }
127 }
128 theMinEnergyList.push_back(std::pair<G4double, const G4Material *>(anEnergy, aMaterial));
129}

References G4HadronicInteraction::Block(), and G4HadronicInteraction::theMinEnergyList.

◆ SetMinimalStringMass()

void G4VLongitudinalStringDecay::SetMinimalStringMass ( const G4FragmentingString *const  string)
inherited

Definition at line 952 of file G4VLongitudinalStringDecay.cc.

953{
954 //MaxMass = -350.0*GeV;
955 G4double EstimatedMass=MaxMass;
956
957 G4ParticleDefinition* LeftParton = string->GetLeftParton();
958 G4ParticleDefinition* RightParton = string->GetRightParton();
959 if( LeftParton->GetParticleSubType() == RightParton->GetParticleSubType() ) { // q qbar, qq qqbar
960 if( LeftParton->GetPDGEncoding() * RightParton->GetPDGEncoding() > 0 ) {
961 // Not allowed combination of the partons
962 throw G4HadronicException(__FILE__, __LINE__,
963 "G4VLongitudinalStringDecay::SetMinimalStringMass: Illegal quark content as input");
964 }
965 }
966 if( LeftParton->GetParticleSubType() != RightParton->GetParticleSubType() ) { // q qq, qbar qqbar
967 if( LeftParton->GetPDGEncoding() * RightParton->GetPDGEncoding() < 0 ) {
968 // Not allowed combination of the partons
969 throw G4HadronicException(__FILE__, __LINE__,
970 "G4VLongitudinalStringDecay::SetMinimalStringMass: Illegal quark content as input");
971 }
972 }
973
974 G4int Qleft =std::abs(string->GetLeftParton()->GetPDGEncoding());
975 G4int Qright=std::abs(string->GetRightParton()->GetPDGEncoding());
976
977 if ((Qleft < 6) && (Qright < 6)) { // Q-Qbar string
978 EstimatedMass=minMassQQbarStr[Qleft-1][Qright-1];
979 MinimalStringMass=EstimatedMass;
980 SetMinimalStringMass2(EstimatedMass);
981 return;
982 }
983
984 if ((Qleft < 6) && (Qright > 1000)) { // Q - DiQ string
985 G4int q1=Qright/1000;
986 G4int q2=(Qright/100)%10;
987 EstimatedMass=minMassQDiQStr[Qleft-1][q1-1][q2-1];
988 MinimalStringMass=EstimatedMass; // It can be negative!
989 SetMinimalStringMass2(EstimatedMass);
990 return;
991 }
992
993 if ((Qleft > 1000) && (Qright < 6)) { // DiQ - Q string 6 6 6
994 G4int q1=Qleft/1000;
995 G4int q2=(Qleft/100)%10;
996 EstimatedMass=minMassQDiQStr[Qright-1][q1-1][q2-1];
997 MinimalStringMass=EstimatedMass; // It can be negative!
998 SetMinimalStringMass2(EstimatedMass);
999 return;
1000 }
1001
1002 // DiQuark - Anti DiQuark string -----------------
1003
1004 G4double StringM=string->Get4Momentum().mag();
1005
1006 #ifdef debug_LUNDfragmentation
1007 // G4cout<<"MinStringMass// Input String mass "<<string->Get4Momentum().mag()<<" Qleft "<<Qleft<<G4endl;
1008 #endif
1009
1010 G4int q1= Qleft/1000 ;
1011 G4int q2=(Qleft/100)%10 ;
1012
1013 G4int q3= Qright/1000 ;
1014 G4int q4=(Qright/100)%10;
1015
1016 // -------------- 2 baryon production or 2 mesons production --------
1017
1018 G4double EstimatedMass1 = minMassQDiQStr[q1-1][q2-1][0];
1019 G4double EstimatedMass2 = minMassQDiQStr[q3-1][q4-1][0];
1020 // Mass is negative if there is no corresponding particle.
1021
1022 if ( (EstimatedMass1 > 0.) && (EstimatedMass2 > 0.)) {
1023 EstimatedMass = EstimatedMass1 + EstimatedMass2;
1024 if ( StringM > EstimatedMass ) { // 2 baryon production is possible.
1025 MinimalStringMass=EstimatedMass1 + EstimatedMass2;
1026 SetMinimalStringMass2(EstimatedMass);
1027 return;
1028 }
1029 }
1030
1031 if ( (EstimatedMass1 < 0.) && (EstimatedMass2 > 0.)) {
1032 EstimatedMass = MaxMass;
1033 MinimalStringMass=EstimatedMass;
1034 SetMinimalStringMass2(EstimatedMass);
1035 return;
1036 }
1037
1038 if ( (EstimatedMass1 > 0.) && (EstimatedMass2 < 0.)) {
1039 EstimatedMass = EstimatedMass1;
1040 MinimalStringMass=EstimatedMass;
1041 SetMinimalStringMass2(EstimatedMass);
1042 return;
1043 }
1044
1045 // if ( EstimatedMass >= StringM ) {
1046 // ------------- Re-orangement ---------------
1047 EstimatedMass=std::min(minMassQQbarStr[q1-1][q3-1] + minMassQQbarStr[q2-1][q4-1],
1048 minMassQQbarStr[q1-1][q4-1] + minMassQQbarStr[q2-1][q3-1]);
1049
1050 // In principle, re-arrangement and 2 baryon production can compete.
1051 // More physics consideration is needed.
1052
1053 MinimalStringMass=EstimatedMass;
1054 SetMinimalStringMass2(EstimatedMass);
1055
1056 return;
1057}
G4ParticleDefinition * GetRightParton(void) const
const G4String & GetParticleSubType() const
void SetMinimalStringMass2(const G4double aValue)

References G4FragmentingString::GetLeftParton(), G4ParticleDefinition::GetParticleSubType(), G4ParticleDefinition::GetPDGEncoding(), G4FragmentingString::GetRightParton(), G4VLongitudinalStringDecay::MaxMass, G4INCL::Math::min(), G4VLongitudinalStringDecay::MinimalStringMass, G4VLongitudinalStringDecay::minMassQDiQStr, G4VLongitudinalStringDecay::minMassQQbarStr, and G4VLongitudinalStringDecay::SetMinimalStringMass2().

Referenced by G4LundStringFragmentation::FragmentString(), FragmentString(), G4LundStringFragmentation::IsItFragmentable(), G4VLongitudinalStringDecay::ProduceOneHadron(), G4LundStringFragmentation::SplitEandP(), SplitEandP(), G4LundStringFragmentation::SplitLast(), G4LundStringFragmentation::StopFragmenting(), and StopFragmenting().

◆ SetMinimalStringMass2()

void G4VLongitudinalStringDecay::SetMinimalStringMass2 ( const G4double  aValue)
inherited

◆ SetMinMasses()

void G4VLongitudinalStringDecay::SetMinMasses ( )
inherited

Definition at line 609 of file G4VLongitudinalStringDecay.cc.

610{
611 // ------ For estimation of a minimal string mass ---------------
613 Mass_of_s_quark =500.*MeV;
614 Mass_of_c_quark =1600.*MeV;
615 Mass_of_b_quark =4500.*MeV;
617
618 // ---------------- Determination of minimal mass of q-qbar strings -------------------
619 G4ParticleDefinition * hadron1; G4int Code1;
620 G4ParticleDefinition * hadron2; G4int Code2;
621 for (G4int i=1; i < 6; i++) {
622 Code1 = 100*i + 10*1 + 1;
623 hadron1 = FindParticle(Code1);
624
625 if (hadron1 != nullptr) {
626 for (G4int j=1; j < 6; j++) {
627 Code2 = 100*j + 10*1 + 1;
628 hadron2 = FindParticle(Code2);
629 if (hadron2 != nullptr) {
630 minMassQQbarStr[i-1][j-1] = hadron1->GetPDGMass() + hadron2->GetPDGMass() + 70.0 * MeV;
631 }
632 }
633 }
634 }
635
636 minMassQQbarStr[1][1] = minMassQQbarStr[0][0]; // u-ubar = 0.5 Pi0 + 0.24 Eta + 0.25 Eta'
637
638 // ---------------- Determination of minimal mass of qq-q strings -------------------
639 G4ParticleDefinition * hadron3;
640 G4int kfla, kflb;
641 // MaxMass = -350.0*GeV; // If there will be a particle with mass larger than Higgs the value must be changed.
642
643 for (G4int i=1; i < 6; i++) { //i=1
644 Code1 = 100*i + 10*1 + 1;
645 hadron1 = FindParticle(Code1);
646 for (G4int j=1; j < 6; j++) {
647 for (G4int k=1; k < 6; k++) {
648 kfla = std::max(j,k);
649 kflb = std::min(j,k);
650
651 // Add d-quark
652 Code2 = 1000*kfla + 100*kflb + 10*1 + 2;
653 if ( (j == 1) && (k==1)) Code2 = 1000*2 + 100*1 + 10*1 + 2; // In the case - add u-quark.
654
656 hadron3 = G4ParticleTable::GetParticleTable()->FindParticle(Code2 + 2);
657
658 if ((hadron2 == nullptr) && (hadron3 == nullptr)) {minMassQDiQStr[i-1][j-1][k-1] = MaxMass; continue;};
659
660 if ((hadron2 != nullptr) && (hadron3 != nullptr)) {
661 if (hadron2->GetPDGMass() > hadron3->GetPDGMass() ) { hadron2 = hadron3; }
662 };
663
664 if ((hadron2 != nullptr) && (hadron3 == nullptr)) {};
665
666 if ((hadron2 == nullptr) && (hadron3 != nullptr)) {hadron2 = hadron3;};
667
668 minMassQDiQStr[i-1][j-1][k-1] = hadron1->GetPDGMass() + hadron2->GetPDGMass() + 70.0 * MeV;
669 }
670 }
671 }
672
673 // ------ An estimated minimal string mass ----------------------
676 // q charges d u s c b
677 Qcharge[0] = -1; Qcharge[1] = 2; Qcharge[2] = -1; Qcharge[3] = 2; Qcharge[4] = -1;
678
679 // For treating of small string decays
680 for (G4int i=0; i<5; i++)
681 { for (G4int j=0; j<5; j++)
682 { for (G4int k=0; k<7; k++)
683 {
684 Meson[i][j][k]=0; MesonWeight[i][j][k]=0.;
685 }
686 }
687 }
688 //--------------------------
689 for (G4int i=0; i<5; i++)
690 { for (G4int j=0; j<5; j++)
691 {
692 Meson[i][j][0] = 100 * (std::max(i,j)+1) + 10 * (std::min(i,j)+1) + 1; // Scalar meson
693 MesonWeight[i][j][0] = ( pspin_meson);
694 Meson[i][j][1] = 100 * (std::max(i,j)+1) + 10 * (std::min(i,j)+1) + 3; // Vector meson
695 MesonWeight[i][j][1] = (1.-pspin_meson);
696 }
697 }
698
699 //qqs indexes
700 //dd1 -> scalarMesonMix[0] * 111 + (1-scalarMesonMix[0]-scalarMesonMix[1]) * 221 + scalarMesonMix[1] * 331 (000)
701 //dd1 -> Pi0 Eta Eta'
702
703 Meson[0][0][0] = 111; MesonWeight[0][0][0] = ( pspin_meson) * ( scalarMesonMix[0] ); // Pi0
704 Meson[0][0][2] = 221; MesonWeight[0][0][3] = ( pspin_meson) * (1-scalarMesonMix[0]-scalarMesonMix[1]); // Eta
705 Meson[0][0][3] = 331; MesonWeight[0][0][4] = ( pspin_meson) * ( scalarMesonMix[1]); // Eta'
706
707 //dd3 -> vectorMesonMix[0] * 113 + (1-vectorMesonMix[0]-vectorMesonMix[1]) * 223 + vectorMesonMix[1] * 333 (001)
708 //dd3 -> rho_0 omega phi
709
710 Meson[0][0][1] = 113; MesonWeight[0][0][1] = (1.-pspin_meson) * ( vectorMesonMix[0] ); // Rho
711 Meson[0][0][4] = 223; MesonWeight[0][0][4] = (1.-pspin_meson) * (1-vectorMesonMix[0]-vectorMesonMix[1]); // omega
712 Meson[0][0][5] = 333; MesonWeight[0][0][5] = (1.-pspin_meson) * ( vectorMesonMix[1]); // phi
713
714 //uu1 -> scalarMesonMix[0] * 111 + (1-scalarMesonMix[0]-scalarMesonMix[1]) * 221 + scalarMesonMix[1] * 331 (110)
715 //uu1 -> Pi0 Eta Eta'
716
717 Meson[1][1][0] = 111; MesonWeight[1][1][0] = ( pspin_meson) * ( scalarMesonMix[0] ); // Pi0
718 Meson[1][1][2] = 221; MesonWeight[1][1][2] = ( pspin_meson) * (1-scalarMesonMix[0]-scalarMesonMix[1]); // Eta
719 Meson[1][1][3] = 331; MesonWeight[1][1][3] = ( pspin_meson) * ( scalarMesonMix[1]); // Eta'
720
721 //uu3 -> vectorMesonMix[0] * 113 + (1-vectorMesonMix[0]-vectorMesonMix[1]) * 223 + vectorMesonMix[1] * 333 (111)
722 //uu3 -> rho_0 omega phi
723
724 Meson[1][1][1] = 113; MesonWeight[1][1][1] = (1.-pspin_meson) * ( vectorMesonMix[0] ); // Rho
725 Meson[1][1][4] = 223; MesonWeight[1][1][4] = (1.-pspin_meson) * (1-vectorMesonMix[0]-vectorMesonMix[1]); // omega
726 Meson[1][1][5] = 333; MesonWeight[1][1][5] = (1.-pspin_meson) * ( vectorMesonMix[1]); // phi
727
728 //ss1 -> (1-scalarMesonMix[5]) * 221 + scalarMesonMix[5] * 331 (220)
729 //ss1 -> Eta Eta'
730
731 Meson[2][2][0] = 221; MesonWeight[2][2][0] = ( pspin_meson) * (1-scalarMesonMix[5] ); // Eta
732 Meson[2][2][2] = 331; MesonWeight[2][2][2] = ( pspin_meson) * ( scalarMesonMix[5]); // Eta'
733
734 //ss3 -> (1-vectorMesonMix[5]) * 223 + vectorMesonMix[5] * 333 (221)
735 //ss3 -> omega phi
736
737 Meson[2][2][1] = 223; MesonWeight[2][2][1] = (1.-pspin_meson) * (1-vectorMesonMix[5] ); // omega
738 Meson[2][2][3] = 333; MesonWeight[2][2][3] = (1.-pspin_meson) * ( vectorMesonMix[5]); // phi
739
740 //cc1 -> ProbEta_c /(1-pspin_meson) 441 (330) Probability of Eta_c
741 //cc3 -> (1-ProbEta_c)/( pspin_meson) 443 (331) Probability of J/Psi
742
743 //bb1 -> ProbEta_b /pspin_meson 551 (440) Probability of Eta_b
744 //bb3 -> (1-ProbEta_b)/pspin_meson 553 (441) Probability of Upsilon
745
746 if ( pspin_meson != 0. ) {
747 Meson[3][3][0] *= ( ProbEta_c)/( pspin_meson); // Eta_c
748 Meson[3][3][1] *= (1.0-ProbEta_c)/(1.-pspin_meson); // J/Psi
749
750 Meson[4][4][0] *= ( ProbEta_b)/( pspin_meson); // Eta_b
751 Meson[4][4][1] *= (1.0-ProbEta_b)/(1.-pspin_meson); // Upsilon
752 }
753
754 //--------------------------
755
756 for (G4int i=0; i<5; i++)
757 { for (G4int j=0; j<5; j++)
758 { for (G4int k=0; k<5; k++)
759 { for (G4int l=0; l<4; l++)
760 { Baryon[i][j][k][l]=0; BaryonWeight[i][j][k][l]=0.;}
761 }
762 }
763 }
764
765 kfla =0; kflb =0;
766 G4int kflc(0), kfld(0), kfle(0), kflf(0);
767 for (G4int i=0; i<5; i++)
768 { for (G4int j=0; j<5; j++)
769 { for (G4int k=0; k<5; k++)
770 {
771 kfla = i+1; kflb = j+1; kflc = k+1;
772 kfld = std::max(kfla,kflb);
773 kfld = std::max(kfld,kflc);
774
775 kflf = std::min(kfla,kflb);
776 kflf = std::min(kflf,kflc);
777
778 kfle = kfla + kflb + kflc - kfld - kflf;
779
780 Baryon[i][j][k][0] = 1000 * kfld + 100 * kfle + 10 * kflf + 2; // spin=1/2
781 BaryonWeight[i][j][k][0] = ( pspin_barion);
782 Baryon[i][j][k][1] = 1000 * kfld + 100 * kfle + 10 * kflf + 4; // spin=3/2
783 BaryonWeight[i][j][k][1] = (1.-pspin_barion);
784 }
785 }
786 }
787
788 // Delta- ddd - only 1114
789 Baryon[0][0][0][0] = 1114; BaryonWeight[0][0][0][0] = 1.0;
790 Baryon[0][0][0][1] = 0; BaryonWeight[0][0][0][1] = 0.0;
791
792 // Delta++ uuu - only 2224
793 Baryon[1][1][1][0] = 2224; BaryonWeight[1][1][1][0] = 1.0;
794 Baryon[1][1][1][1] = 0; BaryonWeight[1][1][1][1] = 0.0;
795
796 // Omega- sss - only 3334
797 Baryon[2][2][2][0] = 3334; BaryonWeight[2][2][2][0] = 1.0;
798 Baryon[2][2][2][1] = 0; BaryonWeight[2][2][2][1] = 0.0;
799
800 // Omega_cc++ ccc - only 4444
801 Baryon[3][3][3][0] = 4444; BaryonWeight[3][3][3][0] = 1.0;
802 Baryon[3][3][3][1] = 0; BaryonWeight[3][3][3][1] = 0.0;
803
804 // Omega_bb- bbb - only 5554
805 Baryon[4][4][4][0] = 5554; BaryonWeight[4][4][4][0] = 1.0;
806 Baryon[4][4][4][1] = 0; BaryonWeight[4][4][4][1] = 0.0;
807
808 // Lambda/Sigma0 sud - 3122/3212
809 Baryon[0][1][2][0] = 3122; BaryonWeight[0][1][2][0] *= 0.5; // Lambda
810 Baryon[0][2][1][0] = 3122; BaryonWeight[0][2][1][0] *= 0.5;
811 Baryon[1][0][2][0] = 3122; BaryonWeight[1][0][2][0] *= 0.5;
812 Baryon[1][2][0][0] = 3122; BaryonWeight[1][2][0][0] *= 0.5;
813 Baryon[2][0][1][0] = 3122; BaryonWeight[2][0][1][0] *= 0.5;
814 Baryon[2][1][0][0] = 3122; BaryonWeight[2][1][0][0] *= 0.5;
815
816 Baryon[0][1][2][2] = 3212; BaryonWeight[0][1][2][2] = 0.5 * pspin_barion; // Sigma0
817 Baryon[0][2][1][2] = 3212; BaryonWeight[0][2][1][2] = 0.5 * pspin_barion;
818 Baryon[1][0][2][2] = 3212; BaryonWeight[1][0][2][2] = 0.5 * pspin_barion;
819 Baryon[1][2][0][2] = 3212; BaryonWeight[1][2][0][2] = 0.5 * pspin_barion;
820 Baryon[2][0][1][2] = 3212; BaryonWeight[2][0][1][2] = 0.5 * pspin_barion;
821 Baryon[2][1][0][2] = 3212; BaryonWeight[2][1][0][2] = 0.5 * pspin_barion;
822
823 // Lambda_c+/Sigma_c+ cud - 4122/4212
824 Baryon[0][1][3][0] = 4122; BaryonWeight[0][1][3][0] *= 0.5; // Lambda_c+
825 Baryon[0][3][1][0] = 4122; BaryonWeight[0][3][1][0] *= 0.5;
826 Baryon[1][0][3][0] = 4122; BaryonWeight[1][0][3][0] *= 0.5;
827 Baryon[1][3][0][0] = 4122; BaryonWeight[1][3][0][0] *= 0.5;
828 Baryon[3][0][1][0] = 4122; BaryonWeight[3][0][1][0] *= 0.5;
829 Baryon[3][1][0][0] = 4122; BaryonWeight[3][1][0][0] *= 0.5;
830
831 Baryon[0][1][3][2] = 4212; BaryonWeight[0][1][3][2] = 0.5 * pspin_barion; // SigmaC+
832 Baryon[0][3][1][2] = 4212; BaryonWeight[0][3][1][2] = 0.5 * pspin_barion;
833 Baryon[1][0][3][2] = 4212; BaryonWeight[1][0][3][2] = 0.5 * pspin_barion;
834 Baryon[1][3][0][2] = 4212; BaryonWeight[1][3][0][2] = 0.5 * pspin_barion;
835 Baryon[3][0][1][2] = 4212; BaryonWeight[3][0][1][2] = 0.5 * pspin_barion;
836 Baryon[3][1][0][2] = 4212; BaryonWeight[3][1][0][2] = 0.5 * pspin_barion;
837
838 // Xi_c+/Xi_c+' cus - 4232/4322
839 Baryon[1][2][3][0] = 4232; BaryonWeight[1][2][3][0] *= 0.5; // Xi_c+
840 Baryon[1][3][2][0] = 4232; BaryonWeight[1][3][2][0] *= 0.5;
841 Baryon[2][1][3][0] = 4232; BaryonWeight[2][1][3][0] *= 0.5;
842 Baryon[2][3][1][0] = 4232; BaryonWeight[2][3][1][0] *= 0.5;
843 Baryon[3][1][2][0] = 4232; BaryonWeight[3][1][2][0] *= 0.5;
844 Baryon[3][2][1][0] = 4232; BaryonWeight[3][2][1][0] *= 0.5;
845
846 Baryon[1][2][3][2] = 4322; BaryonWeight[1][2][3][2] = 0.5 * pspin_barion; // Xi_c+'
847 Baryon[1][3][2][2] = 4322; BaryonWeight[1][3][2][2] = 0.5 * pspin_barion;
848 Baryon[2][1][3][2] = 4322; BaryonWeight[2][1][3][2] = 0.5 * pspin_barion;
849 Baryon[2][3][1][2] = 4322; BaryonWeight[2][3][1][2] = 0.5 * pspin_barion;
850 Baryon[3][1][2][2] = 4322; BaryonWeight[3][1][2][2] = 0.5 * pspin_barion;
851 Baryon[3][2][1][2] = 4322; BaryonWeight[3][2][1][2] = 0.5 * pspin_barion;
852
853 // Xi_c0/Xi_c0' cus - 4132/4312
854 Baryon[0][2][3][0] = 4132; BaryonWeight[0][2][3][0] *= 0.5; // Xi_c0
855 Baryon[0][3][2][0] = 4132; BaryonWeight[0][3][2][0] *= 0.5;
856 Baryon[2][0][3][0] = 4132; BaryonWeight[2][0][3][0] *= 0.5;
857 Baryon[2][3][0][0] = 4132; BaryonWeight[2][3][0][0] *= 0.5;
858 Baryon[3][0][2][0] = 4132; BaryonWeight[3][0][2][0] *= 0.5;
859 Baryon[3][2][0][0] = 4132; BaryonWeight[3][2][0][0] *= 0.5;
860
861 Baryon[0][2][3][2] = 4312; BaryonWeight[0][2][3][2] = 0.5 * pspin_barion; // Xi_c0'
862 Baryon[0][3][2][2] = 4312; BaryonWeight[0][3][2][2] = 0.5 * pspin_barion;
863 Baryon[2][0][3][2] = 4312; BaryonWeight[2][0][3][2] = 0.5 * pspin_barion;
864 Baryon[2][3][0][2] = 4312; BaryonWeight[2][3][0][2] = 0.5 * pspin_barion;
865 Baryon[3][0][2][2] = 4312; BaryonWeight[3][0][2][2] = 0.5 * pspin_barion;
866 Baryon[3][2][0][2] = 4312; BaryonWeight[3][2][0][2] = 0.5 * pspin_barion;
867
868 // Lambda_b0/Sigma_b0 bud - 5122/5212
869 Baryon[0][1][4][0] = 5122; BaryonWeight[0][1][4][0] *= 0.5; // Lambda_b0
870 Baryon[0][4][1][0] = 5122; BaryonWeight[0][4][1][0] *= 0.5;
871 Baryon[1][0][4][0] = 5122; BaryonWeight[1][0][4][0] *= 0.5;
872 Baryon[1][4][0][0] = 5122; BaryonWeight[1][4][0][0] *= 0.5;
873 Baryon[4][0][1][0] = 5122; BaryonWeight[4][0][1][0] *= 0.5;
874 Baryon[4][1][0][0] = 5122; BaryonWeight[4][1][0][0] *= 0.5;
875
876 Baryon[0][1][4][2] = 5212; BaryonWeight[0][1][4][2] = 0.5 * pspin_barion; // Sigma_b0
877 Baryon[0][4][1][2] = 5212; BaryonWeight[0][4][1][2] = 0.5 * pspin_barion;
878 Baryon[1][0][4][2] = 5212; BaryonWeight[1][0][4][2] = 0.5 * pspin_barion;
879 Baryon[1][4][0][2] = 5212; BaryonWeight[1][4][0][2] = 0.5 * pspin_barion;
880 Baryon[4][0][1][2] = 5212; BaryonWeight[4][0][1][2] = 0.5 * pspin_barion;
881 Baryon[4][1][0][2] = 5212; BaryonWeight[4][1][0][2] = 0.5 * pspin_barion;
882
883 // Xi_b0/Xi_b0' bus - 5232/5322
884 Baryon[1][2][4][0] = 5232; BaryonWeight[1][2][4][0] *= 0.5; // Xi_b0
885 Baryon[1][4][2][0] = 5232; BaryonWeight[1][4][2][0] *= 0.5;
886 Baryon[2][1][4][0] = 5232; BaryonWeight[2][1][4][0] *= 0.5;
887 Baryon[2][4][1][0] = 5232; BaryonWeight[2][4][1][0] *= 0.5;
888 Baryon[4][1][2][0] = 5232; BaryonWeight[4][1][2][0] *= 0.5;
889 Baryon[4][2][1][0] = 5232; BaryonWeight[4][2][1][0] *= 0.5;
890
891 Baryon[1][2][4][2] = 5322; BaryonWeight[1][2][4][2] = 0.5 * pspin_barion; // Xi_b0'
892 Baryon[1][4][2][2] = 5322; BaryonWeight[1][4][2][2] = 0.5 * pspin_barion;
893 Baryon[2][1][4][2] = 5322; BaryonWeight[2][1][4][2] = 0.5 * pspin_barion;
894 Baryon[2][4][1][2] = 5322; BaryonWeight[2][4][1][2] = 0.5 * pspin_barion;
895 Baryon[4][1][2][2] = 5322; BaryonWeight[4][1][2][2] = 0.5 * pspin_barion;
896 Baryon[4][2][1][2] = 5322; BaryonWeight[4][2][1][2] = 0.5 * pspin_barion;
897
898 // Xi_b-/Xi_b-' bus - 5132/5312
899 Baryon[0][2][4][0] = 5132; BaryonWeight[0][2][4][0] *= 0.5; // Xi_b-
900 Baryon[0][4][2][0] = 5132; BaryonWeight[0][4][2][0] *= 0.5;
901 Baryon[2][0][4][0] = 5132; BaryonWeight[2][0][4][0] *= 0.5;
902 Baryon[2][4][0][0] = 5132; BaryonWeight[2][4][0][0] *= 0.5;
903 Baryon[4][0][2][0] = 5132; BaryonWeight[4][0][2][0] *= 0.5;
904 Baryon[4][2][0][0] = 5132; BaryonWeight[4][2][0][0] *= 0.5;
905
906 Baryon[0][2][4][2] = 5312; BaryonWeight[0][2][4][2] = 0.5 * pspin_barion; // Xi_b-'
907 Baryon[0][4][2][2] = 5312; BaryonWeight[0][4][2][2] = 0.5 * pspin_barion;
908 Baryon[2][0][4][2] = 5312; BaryonWeight[2][0][4][2] = 0.5 * pspin_barion;
909 Baryon[2][4][0][2] = 5312; BaryonWeight[2][4][0][2] = 0.5 * pspin_barion;
910 Baryon[4][0][2][2] = 5312; BaryonWeight[4][0][2][2] = 0.5 * pspin_barion;
911 Baryon[4][2][0][2] = 5312; BaryonWeight[4][2][0][2] = 0.5 * pspin_barion;
912
913 for (G4int i=0; i<5; i++)
914 { for (G4int j=0; j<5; j++)
915 { for (G4int k=0; k<5; k++)
916 { for (G4int l=0; l<4; l++)
917 {
918 G4ParticleDefinition * TestHadron=
920 /*
921 G4cout<<i<<" "<<j<<" "<<k<<" "<<l<<" "<<Baryon[i][j][k][l]<<" "<<TestHadron<<" "<<BaryonWeight[i][j][k][l];
922 if (TestHadron != nullptr) G4cout<<" "<<TestHadron->GetParticleName();
923 if ((TestHadron == nullptr)&&(Baryon[i][j][k][l] != 0)) G4cout<<" *****";
924 if ((TestHadron == nullptr)&&(Baryon[i][j][k][l] == 0)) G4cout<<" ---------------";
925 G4cout<<G4endl;
926 */
927 if ((TestHadron == nullptr)&&(Baryon[i][j][k][l] != 0)) Baryon[i][j][k][l] = 0;
928 }
929 }
930 }
931 }
932
933 // --------- Probabilities of q-qbar pair productions for kink or gluons.
934 G4double ProbUUbar = 0.33;
935 Prob_QQbar[0]=ProbUUbar; // Probability of ddbar production
936 Prob_QQbar[1]=ProbUUbar; // Probability of uubar production
937 Prob_QQbar[2]=1.0-2.*ProbUUbar; // Probability of ssbar production
938 Prob_QQbar[3]=0.0; // Probability of ccbar production
939 Prob_QQbar[4]=0.0; // Probability of bbbar production
940
941 for ( G4int i=0 ; i<350 ; i++ ) { // Must be checked
942 FS_LeftHadron[i] = 0;
943 FS_RightHadron[i] = 0;
944 FS_Weight[i] = 0.0;
945 }
946
947 NumberOf_FS = 0;
948}
static constexpr double MeV
Definition: G4SIunits.hh:200
std::vector< G4double > scalarMesonMix
std::vector< G4double > vectorMesonMix
G4ParticleDefinition * FS_RightHadron[350]
G4ParticleDefinition * FS_LeftHadron[350]

References G4VLongitudinalStringDecay::Baryon, G4VLongitudinalStringDecay::BaryonWeight, G4VLongitudinalStringDecay::FindParticle(), G4ParticleTable::FindParticle(), G4VLongitudinalStringDecay::FS_LeftHadron, G4VLongitudinalStringDecay::FS_RightHadron, G4VLongitudinalStringDecay::FS_Weight, G4ParticleTable::GetParticleTable(), G4ParticleDefinition::GetPDGMass(), G4VLongitudinalStringDecay::Mass_of_b_quark, G4VLongitudinalStringDecay::Mass_of_c_quark, G4VLongitudinalStringDecay::Mass_of_light_quark, G4VLongitudinalStringDecay::Mass_of_s_quark, G4VLongitudinalStringDecay::Mass_of_string_junction, G4INCL::Math::max(), G4VLongitudinalStringDecay::MaxMass, G4VLongitudinalStringDecay::Meson, G4VLongitudinalStringDecay::MesonWeight, MeV, G4INCL::Math::min(), G4VLongitudinalStringDecay::MinimalStringMass, G4VLongitudinalStringDecay::MinimalStringMass2, G4VLongitudinalStringDecay::minMassQDiQStr, G4VLongitudinalStringDecay::minMassQQbarStr, G4VLongitudinalStringDecay::NumberOf_FS, G4VLongitudinalStringDecay::Prob_QQbar, G4VLongitudinalStringDecay::ProbEta_b, G4VLongitudinalStringDecay::ProbEta_c, G4VLongitudinalStringDecay::pspin_barion, G4VLongitudinalStringDecay::pspin_meson, G4VLongitudinalStringDecay::Qcharge, G4VLongitudinalStringDecay::scalarMesonMix, and G4VLongitudinalStringDecay::vectorMesonMix.

Referenced by G4LundStringFragmentation::G4LundStringFragmentation(), G4QGSMFragmentation(), and G4VLongitudinalStringDecay::G4VLongitudinalStringDecay().

◆ SetModelName()

void G4HadronicInteraction::SetModelName ( const G4String nam)
inlineprotectedinherited

◆ SetProbBBbar()

void G4VLongitudinalStringDecay::SetProbBBbar ( G4double  aValue)
inherited

◆ SetProbCCbar()

void G4VLongitudinalStringDecay::SetProbCCbar ( G4double  aValue)
inherited

◆ SetProbEta_b()

void G4VLongitudinalStringDecay::SetProbEta_b ( G4double  aValue)
inherited

◆ SetProbEta_c()

void G4VLongitudinalStringDecay::SetProbEta_c ( G4double  aValue)
inherited

◆ SetRecoilEnergyThreshold()

void G4HadronicInteraction::SetRecoilEnergyThreshold ( G4double  val)
inlineinherited

◆ SetScalarMesonMixings()

void G4VLongitudinalStringDecay::SetScalarMesonMixings ( std::vector< G4double aVector)
inherited

Definition at line 528 of file G4VLongitudinalStringDecay.cc.

529{
530 if ( PastInitPhase ) {
531 throw G4HadronicException(__FILE__, __LINE__,
532 "G4VLongitudinalStringDecay::SetScalarMesonMixings after FragmentString() not allowed");
533 } else {
534 if ( aVector.size() < 6 )
535 throw G4HadronicException(__FILE__, __LINE__,
536 "G4VLongitudinalStringDecay::SetScalarMesonMixings( argument Vector too small");
537 scalarMesonMix[0] = aVector[0];
538 scalarMesonMix[1] = aVector[1];
539 scalarMesonMix[2] = aVector[2];
540 scalarMesonMix[3] = aVector[3];
541 scalarMesonMix[4] = aVector[4];
542 scalarMesonMix[5] = aVector[5];
543 delete hadronizer;
545 }
546}

References G4VLongitudinalStringDecay::hadronizer, G4VLongitudinalStringDecay::PastInitPhase, G4VLongitudinalStringDecay::ProbEta_b, G4VLongitudinalStringDecay::ProbEta_c, G4VLongitudinalStringDecay::pspin_barion, G4VLongitudinalStringDecay::pspin_meson, G4VLongitudinalStringDecay::scalarMesonMix, and G4VLongitudinalStringDecay::vectorMesonMix.

◆ SetSigmaTransverseMomentum()

void G4VLongitudinalStringDecay::SetSigmaTransverseMomentum ( G4double  aQT)
inherited

Definition at line 462 of file G4VLongitudinalStringDecay.cc.

463{
464 if ( PastInitPhase ) {
465 throw G4HadronicException(__FILE__, __LINE__,
466 "G4VLongitudinalStringDecay::SetSigmaTransverseMomentum after FragmentString() not allowed");
467 } else {
468 SigmaQT = aValue;
469 }
470}

References G4VLongitudinalStringDecay::PastInitPhase, and G4VLongitudinalStringDecay::SigmaQT.

◆ SetSpinThreeHalfBarionProbability()

void G4VLongitudinalStringDecay::SetSpinThreeHalfBarionProbability ( G4double  aValue)
inherited

◆ SetStrangenessSuppression()

void G4VLongitudinalStringDecay::SetStrangenessSuppression ( G4double  aValue)
inherited

◆ SetStringTensionParameter()

void G4VLongitudinalStringDecay::SetStringTensionParameter ( G4double  aValue)
inherited

Definition at line 602 of file G4VLongitudinalStringDecay.cc.

603{
604 Kappa = aValue * GeV/fermi;
605}
static constexpr double fermi
Definition: G4SIunits.hh:83

References fermi, GeV, and G4VLongitudinalStringDecay::Kappa.

Referenced by G4LundStringFragmentation::G4LundStringFragmentation().

◆ SetVectorMesonMixings()

void G4VLongitudinalStringDecay::SetVectorMesonMixings ( std::vector< G4double aVector)
inherited

Definition at line 550 of file G4VLongitudinalStringDecay.cc.

551{
552 if ( PastInitPhase ) {
553 throw G4HadronicException(__FILE__, __LINE__,
554 "G4VLongitudinalStringDecay::SetVectorMesonMixings after FragmentString() not allowed");
555 } else {
556 if ( aVector.size() < 6 )
557 throw G4HadronicException(__FILE__, __LINE__,
558 "G4VLongitudinalStringDecay::SetVectorMesonMixings( argument Vector too small");
559 vectorMesonMix[0] = aVector[0];
560 vectorMesonMix[1] = aVector[1];
561 vectorMesonMix[2] = aVector[2];
562 vectorMesonMix[3] = aVector[3];
563 vectorMesonMix[4] = aVector[4];
564 vectorMesonMix[5] = aVector[5];
565 delete hadronizer;
567 }
568}

References G4VLongitudinalStringDecay::hadronizer, G4VLongitudinalStringDecay::PastInitPhase, G4VLongitudinalStringDecay::ProbEta_b, G4VLongitudinalStringDecay::ProbEta_c, G4VLongitudinalStringDecay::pspin_barion, G4VLongitudinalStringDecay::pspin_meson, G4VLongitudinalStringDecay::scalarMesonMix, and G4VLongitudinalStringDecay::vectorMesonMix.

◆ SetVectorMesonProbability()

void G4VLongitudinalStringDecay::SetVectorMesonProbability ( G4double  aValue)
inherited

◆ SetVerboseLevel()

void G4HadronicInteraction::SetVerboseLevel ( G4int  value)
inlineinherited

◆ SplitEandP()

G4LorentzVector * G4QGSMFragmentation::SplitEandP ( G4ParticleDefinition pHadron,
G4FragmentingString string,
G4FragmentingString newString 
)
privatevirtual

Implements G4VLongitudinalStringDecay.

Definition at line 456 of file G4QGSMFragmentation.cc.

459{
460 G4double HadronMass = pHadron->GetPDGMass();
461
463
464 if ( MinimalStringMass < 0.0 ) return nullptr;
465
466 #ifdef debug_QGSMfragmentation
467 G4cout<<"G4QGSMFragmentation::SplitEandP "<<pHadron->GetParticleName()<<G4endl;
468 G4cout<<"String 4 mom, String M "<<string->Get4Momentum()<<" "<<string->Mass()<<G4endl;
469 G4cout<<"HadM MinimalStringMassLeft StringM hM+sM "<<HadronMass<<" "<<MinimalStringMass<<" "
470 <<string->Mass()<<" "<<HadronMass+MinimalStringMass<<G4endl;
471 #endif
472
473 if (HadronMass + MinimalStringMass > string->Mass())
474 {
475 #ifdef debug_QGSMfragmentation
476 G4cout<<"Mass of the string is not sufficient to produce the hadron!"<<G4endl;
477 #endif
478 return 0;
479 } // have to start all over!
480
481 // calculate and assign hadron transverse momentum component HadronPx andHadronPy
482 G4double StringMT2 = string->MassT2();
483 G4double StringMT = std::sqrt(StringMT2);
484
485 G4LorentzVector String4Momentum = string->Get4Momentum();
486 String4Momentum.setPz(0.);
487 G4ThreeVector StringPt = String4Momentum.vect();
488
489 G4ThreeVector HadronPt , RemSysPt;
490 G4double HadronMassT2, ResidualMassT2;
491
492 //Uzhi June 2020 Mt distribution is implemented
493 G4double HadronMt, Pt, Pt2, phi; // Uzhi June 2020
494
495 //... sample Pt of the hadron
496 G4int attempt=0;
497 do
498 {
499 attempt++; if (attempt > StringLoopInterrupt) return 0;
500
501 HadronMt = HadronMass - 200.0*G4Log(G4UniformRand()); // Uzhi June 2020, 200.0 must be tuned
502 Pt2 = sqr(HadronMt)-sqr(HadronMass); Pt=std::sqrt(Pt2); // Uzhi June 2020
503 phi = 2.*pi*G4UniformRand();
504 G4ThreeVector SampleQuarkPtw= G4ThreeVector(Pt*std::cos(phi), Pt*std::sin(phi), 0);
505 HadronPt =SampleQuarkPtw + string->DecayPt(); // Uzhi June 2020
506 //Uzhi June 2020 HadronPt =SampleQuarkPt() + string->DecayPt(); // Save this for possible return
507 HadronPt.setZ(0);
508 RemSysPt = StringPt - HadronPt;
509
510 HadronMassT2 = sqr(HadronMass) + HadronPt.mag2();
511 ResidualMassT2=sqr(MinimalStringMass) + RemSysPt.mag2();
512
513 } while (std::sqrt(HadronMassT2) + std::sqrt(ResidualMassT2) > StringMT); /* Loop checking, 07.08.2015, A.Ribon */
514
515 //... sample z to define hadron longitudinal momentum and energy
516 //... but first check the available phase space
517
518 G4double Pz2 = (sqr(StringMT2 - HadronMassT2 - ResidualMassT2) -
519 4*HadronMassT2 * ResidualMassT2)/4./StringMT2;
520
521 if ( Pz2 < 0 ) {return 0;} // have to start all over!
522
523 //... then compute allowed z region z_min <= z <= z_max
524
525 G4double Pz = std::sqrt(Pz2);
526 G4double zMin = (std::sqrt(HadronMassT2+Pz2) - Pz)/std::sqrt(StringMT2);
527 G4double zMax = (std::sqrt(HadronMassT2+Pz2) + Pz)/std::sqrt(StringMT2);
528
529 if (zMin >= zMax) return 0; // have to start all over!
530
531 G4double z = GetLightConeZ(zMin, zMax,
532 string->GetDecayParton()->GetPDGEncoding(), pHadron,
533 HadronPt.x(), HadronPt.y());
534
535 //... now compute hadron longitudinal momentum and energy
536 // longitudinal hadron momentum component HadronPz
537
538 HadronPt.setZ( 0.5* string->GetDecayDirection() *
539 (z * string->LightConeDecay() -
540 HadronMassT2/(z * string->LightConeDecay())) );
541 G4double HadronE = 0.5* (z * string->LightConeDecay() +
542 HadronMassT2/(z * string->LightConeDecay()) );
543
544 G4LorentzVector * a4Momentum= new G4LorentzVector(HadronPt,HadronE);
545
546 #ifdef debug_QGSMfragmentation
547 G4cout<<"string->GetDecayDirection() string->LightConeDecay() "
548 <<string->GetDecayDirection()<<" "<<string->LightConeDecay()<<G4endl;
549 G4cout<<"HadronPt,HadronE "<<HadronPt<<" "<<HadronE<<G4endl;
550 G4cout<<"Out of QGSM SplitEandP "<<G4endl;
551 #endif
552
553 return a4Momentum;
554}
CLHEP::HepLorentzVector G4LorentzVector
#define NewString(str)
void setZ(double)
Hep3Vector vect() const
G4ParticleDefinition * GetDecayParton() const
virtual G4double GetLightConeZ(G4double zmin, G4double zmax, G4int PartonEncoding, G4ParticleDefinition *pHadron, G4double Px, G4double Py)

References G4cout, G4endl, G4Log(), G4UniformRand, G4FragmentingString::GetDecayDirection(), G4FragmentingString::GetDecayParton(), GetLightConeZ(), G4ParticleDefinition::GetParticleName(), G4ParticleDefinition::GetPDGEncoding(), G4ParticleDefinition::GetPDGMass(), G4FragmentingString::LightConeDecay(), CLHEP::Hep3Vector::mag2(), G4FragmentingString::Mass(), G4VLongitudinalStringDecay::MinimalStringMass, NewString, pi, G4VLongitudinalStringDecay::SetMinimalStringMass(), CLHEP::HepLorentzVector::setPz(), CLHEP::Hep3Vector::setZ(), sqr(), G4VLongitudinalStringDecay::StringLoopInterrupt, CLHEP::HepLorentzVector::vect(), CLHEP::Hep3Vector::x(), and CLHEP::Hep3Vector::y().

Referenced by Splitup().

◆ SplitLast()

G4bool G4QGSMFragmentation::SplitLast ( G4FragmentingString string,
G4KineticTrackVector LeftVector,
G4KineticTrackVector RightVector 
)
privatevirtual

Implements G4VLongitudinalStringDecay.

Definition at line 626 of file G4QGSMFragmentation.cc.

629{
630 //... perform last cluster decay
631
632 G4ThreeVector ClusterVel =string->Get4Momentum().boostVector();
633 G4double ResidualMass =string->Mass();
634
635 #ifdef debug_QGSMfragmentation
636 G4cout<<"Split last-----------------------------------------"<<G4endl;
637 G4cout<<"StrMass "<<ResidualMass<<" q's "
638 <<string->GetLeftParton()->GetParticleName()<<" "
639 <<string->GetRightParton()->GetParticleName()<<G4endl;
640 #endif
641
642 G4int cClusterInterrupt = 0;
643 G4ParticleDefinition *LeftHadron = nullptr;
644 G4ParticleDefinition *RightHadron = nullptr;
645 const G4int maxNumberOfLoops = 1000;
646 G4int loopCounter = 0;
647
648 G4double LeftHadronMass(0.); G4double RightHadronMass(0.);
649 do
650 {
651 if (cClusterInterrupt++ >= ClusterLoopInterrupt) return false; // Uzhi June 2020
652 LeftHadronMass = -MaxMass; RightHadronMass = -MaxMass;
653
654 G4ParticleDefinition * quark = nullptr;
655 string->SetLeftPartonStable(); // to query quark contents..
656
657 if (string->DecayIsQuark() && string->StableIsQuark() )
658 {
659 //... there are quarks on cluster ends
660
661 G4int IsParticle=(string->GetLeftParton()->GetPDGEncoding()>0) ? -1 : +1;
662 // if we have a quark, we need antiquark or diquark
663
664 pDefPair QuarkPair = CreatePartonPair(IsParticle);
665 quark = QuarkPair.second;
666
667 LeftHadron= hadronizer->BuildLowSpin(QuarkPair.first, string->GetLeftParton());
668 if ( LeftHadron == NULL ) continue; // Uzhi June 2020
669 RightHadron = hadronizer->BuildLowSpin(string->GetRightParton(), quark); // Uzhi June 2020
670 if ( RightHadron == NULL ) continue; // Uzhi June 2020
671 } else if( (!string->DecayIsQuark() && string->StableIsQuark() ) || // Uzhi June 2020
672 ( string->DecayIsQuark() && !string->StableIsQuark() ) ) { // Uzhi June 2020
673 //... there is a Diquark on one of cluster ends
674 G4int IsParticle;
675 if ( string->StableIsQuark() ) {
676 IsParticle=(string->GetLeftParton()->GetPDGEncoding()>0) ? -1 : +1;
677 } else {
678 IsParticle=(string->GetLeftParton()->GetPDGEncoding()>0) ? +1 : -1;
679 }
680
681 //G4double ProbSaS = 1.0 - 2.0 * GetStrangeSuppress();
682 //G4double ActualProb = ProbSaS * 1.4;
683 //SetStrangenessSuppression((1.0-ActualProb)/2.0);
684
685 pDefPair QuarkPair = CreatePartonPair(IsParticle,false); // no diquarks wanted
686 //SetStrangenessSuppression((1.0-ProbSaS)/2.0);
687 quark = QuarkPair.second;
688 LeftHadron=hadronizer->BuildLowSpin(QuarkPair.first, string->GetLeftParton());
689 if ( LeftHadron == NULL ) continue; // Uzhi June 2020
690 RightHadron = hadronizer->BuildLowSpin(string->GetRightParton(), quark); // Uzhi June 2020
691 if ( RightHadron == NULL ) continue; // Uzhi June 2020
692 } else { // Diquark and anti-diquark are on the string ends // Uzhi June 2020
693 //+++++++++++++++++++++++++++++++ Inserted from FTF // Uzhi June 2020
694 // Uzhi G4double StringMass = string->Mass();
695 if (cClusterInterrupt++ >= ClusterLoopInterrupt) return false;
696 G4int LeftQuark1= string->GetLeftParton()->GetPDGEncoding()/1000;
697 G4int LeftQuark2=(string->GetLeftParton()->GetPDGEncoding()/100)%10;
698 G4int RightQuark1= string->GetRightParton()->GetPDGEncoding()/1000;
699 G4int RightQuark2=(string->GetRightParton()->GetPDGEncoding()/100)%10;
700 if (G4UniformRand()<0.5) {
701 LeftHadron =hadronizer->Build(FindParticle( LeftQuark1), FindParticle(RightQuark1));
702 RightHadron =hadronizer->Build(FindParticle( LeftQuark2), FindParticle(RightQuark2));
703 } else {
704 LeftHadron =hadronizer->Build(FindParticle( LeftQuark1), FindParticle(RightQuark2));
705 RightHadron =hadronizer->Build(FindParticle( LeftQuark2), FindParticle(RightQuark1));
706 }
707 if ( (LeftHadron == NULL) || (RightHadron == NULL) ) continue;
708 // End of inserting from FTF Uzhi June 2020
709 }
710 LeftHadronMass = LeftHadron->GetPDGMass();
711 RightHadronMass = RightHadron->GetPDGMass();
712 //... repeat procedure, if mass of cluster is too low to produce hadrons
713 } while ( ( ResidualMass <= LeftHadronMass + RightHadronMass )
714 && ++loopCounter < maxNumberOfLoops ); /* Loop checking, 07.08.2015, A.Ribon */
715
716 if ( loopCounter >= maxNumberOfLoops ) {
717 return false;
718 }
719
720 //... compute hadron momenta and energies
721 G4LorentzVector LeftMom, RightMom;
723 Sample4Momentum(&LeftMom , LeftHadron->GetPDGMass() ,
724 &RightMom, RightHadron->GetPDGMass(), ResidualMass);
725 LeftMom.boost(ClusterVel);
726 RightMom.boost(ClusterVel);
727
728 #ifdef debug_QGSMfragmentation
729 G4cout<<LeftHadron->GetParticleName()<<" "<<RightHadron->GetParticleName()<<G4endl;
730 G4cout<<"Left Hadrom P M "<<LeftMom<<" "<<LeftMom.mag()<<G4endl;
731 G4cout<<"Right Hadrom P M "<<RightMom<<" "<<RightMom.mag()<<G4endl;
732 #endif
733
734 LeftVector->push_back(new G4KineticTrack(LeftHadron, 0, Pos, LeftMom));
735 RightVector->push_back(new G4KineticTrack(RightHadron, 0, Pos, RightMom));
736
737 return true;
738}
HepLorentzVector & boost(double, double, double)
virtual void Sample4Momentum(G4LorentzVector *Mom, G4double Mass, G4LorentzVector *AntiMom, G4double AntiMass, G4double InitialMass)
ush Pos
Definition: deflate.h:91

References CLHEP::HepLorentzVector::boost(), G4HadronBuilder::Build(), G4HadronBuilder::BuildLowSpin(), G4VLongitudinalStringDecay::ClusterLoopInterrupt, G4VLongitudinalStringDecay::CreatePartonPair(), G4FragmentingString::DecayIsQuark(), G4VLongitudinalStringDecay::FindParticle(), G4cout, G4endl, G4UniformRand, G4FragmentingString::GetLeftParton(), G4ParticleDefinition::GetParticleName(), G4ParticleDefinition::GetPDGEncoding(), G4ParticleDefinition::GetPDGMass(), G4FragmentingString::GetRightParton(), G4VLongitudinalStringDecay::hadronizer, CLHEP::HepLorentzVector::mag(), G4VLongitudinalStringDecay::MaxMass, Sample4Momentum(), and G4FragmentingString::StableIsQuark().

Referenced by FragmentString().

◆ Splitup()

G4KineticTrack * G4QGSMFragmentation::Splitup ( G4FragmentingString string,
G4FragmentingString *&  newString 
)
privatevirtual

Implements G4VLongitudinalStringDecay.

Definition at line 304 of file G4QGSMFragmentation.cc.

306{
307 #ifdef debug_QGSMfragmentation
308 G4cout<<G4endl;
309 G4cout<<"Start SplitUP (G4VLongitudinalStringDecay) ========================="<<G4endl;
310 G4cout<<"String partons: " <<string->GetLeftParton()->GetPDGEncoding()<<" "
311 <<string->GetRightParton()->GetPDGEncoding()<<" "
312 <<"Direction " <<string->GetDecayDirection()<<G4endl;
313 #endif
314
315 //... random choice of string end to use for creating the hadron (decay)
316 G4int SideOfDecay = (G4UniformRand() < 0.5)? 1: -1;
317 if (SideOfDecay < 0)
318 {
319 string->SetLeftPartonStable();
320 } else
321 {
322 string->SetRightPartonStable();
323 }
324
325 G4ParticleDefinition *newStringEnd;
326 G4ParticleDefinition * HadronDefinition;
327 if (string->DecayIsQuark())
328 {
329 G4double ProbDqADq = GetDiquarkSuppress();
330
331 G4int NumberOfpossibleBaryons = 2;
332
333 if (string->GetLeftParton()->GetParticleSubType() != "quark") NumberOfpossibleBaryons++;
334 if (string->GetRightParton()->GetParticleSubType() != "quark") NumberOfpossibleBaryons++;
335
336 G4double ActualProb = ProbDqADq ;
337 ActualProb *= (1.0-G4Exp(2.0*(1.0 - string->Mass()/(NumberOfpossibleBaryons*1400.0))));
338
339 SetDiquarkSuppression(ActualProb);
340
341 HadronDefinition= QuarkSplitup(string->GetDecayParton(), newStringEnd);
342
343 SetDiquarkSuppression(ProbDqADq);
344 } else {
345 HadronDefinition= DiQuarkSplitup(string->GetDecayParton(), newStringEnd);
346 }
347
348 if ( HadronDefinition == NULL ) return NULL;
349
350 #ifdef debug_QGSMfragmentation
351 G4cout<<"The parton "<<string->GetDecayParton()->GetPDGEncoding()<<" "
352 <<" produces hadron "<<HadronDefinition->GetParticleName()
353 <<" and is transformed to "<<newStringEnd->GetPDGEncoding()<<G4endl;
354 G4cout<<"The side of the string decay Left/Right (1/-1) "<<SideOfDecay<<G4endl;
355 #endif
356 // create new String from old, ie. keep Left and Right order, but replace decay
357
358 newString=new G4FragmentingString(*string,newStringEnd); // To store possible
359 // quark containt of new string
360
361 #ifdef debug_QGSMfragmentation
362 G4cout<<"An attempt to determine its energy (SplitEandP)"<<G4endl;
363 #endif
364 G4LorentzVector* HadronMomentum=SplitEandP(HadronDefinition, string, newString);
365
366 delete newString; newString=0;
367
368 G4KineticTrack * Hadron =0;
369 if ( HadronMomentum != 0 ) {
370
371 #ifdef debug_QGSMfragmentation
372 G4cout<<"The attempt was successful"<<G4endl;
373 #endif
375 Hadron = new G4KineticTrack(HadronDefinition, 0,Pos, *HadronMomentum);
376
377 newString=new G4FragmentingString(*string,newStringEnd,HadronMomentum);
378
379 delete HadronMomentum;
380 }
381 else
382 {
383 #ifdef debug_QGSMfragmentation
384 G4cout<<"The attempt was not successful !!!"<<G4endl;
385 #endif
386 }
387
388 #ifdef debug_VStringDecay
389 G4cout<<"End SplitUP (G4VLongitudinalStringDecay) ====================="<<G4endl;
390 #endif
391
392 return Hadron;
393}
virtual G4ParticleDefinition * DiQuarkSplitup(G4ParticleDefinition *decay, G4ParticleDefinition *&created)
virtual G4LorentzVector * SplitEandP(G4ParticleDefinition *pHadron, G4FragmentingString *string, G4FragmentingString *newString)
virtual G4ParticleDefinition * QuarkSplitup(G4ParticleDefinition *decay, G4ParticleDefinition *&created)

References G4FragmentingString::DecayIsQuark(), DiQuarkSplitup(), G4cout, G4endl, G4Exp(), G4UniformRand, G4FragmentingString::GetDecayParton(), G4VLongitudinalStringDecay::GetDiquarkSuppress(), G4FragmentingString::GetLeftParton(), G4ParticleDefinition::GetParticleName(), G4ParticleDefinition::GetParticleSubType(), G4ParticleDefinition::GetPDGEncoding(), G4FragmentingString::GetRightParton(), G4FragmentingString::Mass(), G4VLongitudinalStringDecay::QuarkSplitup(), G4VLongitudinalStringDecay::SetDiquarkSuppression(), and SplitEandP().

Referenced by FragmentString().

◆ StopFragmenting()

G4bool G4QGSMFragmentation::StopFragmenting ( const G4FragmentingString string)
privatevirtual

Implements G4VLongitudinalStringDecay.

Definition at line 286 of file G4QGSMFragmentation.cc.

287{
288 SetMinimalStringMass(string);
289 if ( MinimalStringMass < 0.0 ) return true;
290
291 G4double smass = string->Mass();
292 G4double x = (string->IsAFourQuarkString()) ? 0.005*(smass - MinimalStringMass)
293 : 0.66e-6*(smass - MinimalStringMass)*(smass + MinimalStringMass);
294
295 G4bool res = true;
296 if(x > 0.0) {
297 res = (x < 200.) ? (G4UniformRand() < G4Exp(-x)) : false;
298 }
299 return res;
300}

References G4Exp(), G4UniformRand, G4VLongitudinalStringDecay::MinimalStringMass, and G4VLongitudinalStringDecay::SetMinimalStringMass().

Referenced by FragmentString().

Field Documentation

◆ aJPs

G4double G4QGSMFragmentation::aJPs
private

Definition at line 85 of file G4QGSMFragmentation.hh.

Referenced by G4QGSMFragmentation(), SetFFq2q(), SetFFqq2q(), and SetFFqq2qq().

◆ aksi

G4double G4QGSMFragmentation::aksi
private

Definition at line 99 of file G4QGSMFragmentation.hh.

Referenced by G4QGSMFragmentation().

◆ ala

G4double G4QGSMFragmentation::ala
private

Definition at line 88 of file G4QGSMFragmentation.hh.

Referenced by G4QGSMFragmentation(), and SetFFq2qq().

◆ alaB

G4double G4QGSMFragmentation::alaB
private

Definition at line 91 of file G4QGSMFragmentation.hh.

Referenced by G4QGSMFragmentation(), and SetFFq2qq().

◆ alaC

G4double G4QGSMFragmentation::alaC
private

Definition at line 90 of file G4QGSMFragmentation.hh.

Referenced by G4QGSMFragmentation(), and SetFFq2qq().

◆ alft

G4double G4QGSMFragmentation::alft
private

◆ an

G4double G4QGSMFragmentation::an
private

Definition at line 87 of file G4QGSMFragmentation.hh.

Referenced by G4QGSMFragmentation(), SetFFq2qq(), SetFFqq2q(), and SetFFqq2qq().

◆ aphi

G4double G4QGSMFragmentation::aphi
private

Definition at line 84 of file G4QGSMFragmentation.hh.

Referenced by G4QGSMFragmentation(), SetFFq2q(), SetFFqq2q(), and SetFFqq2qq().

◆ arho

G4double G4QGSMFragmentation::arho
private

◆ aUps

G4double G4QGSMFragmentation::aUps
private

Definition at line 86 of file G4QGSMFragmentation.hh.

Referenced by G4QGSMFragmentation(), SetFFq2q(), SetFFqq2q(), and SetFFqq2qq().

◆ aXi

G4double G4QGSMFragmentation::aXi
private

Definition at line 92 of file G4QGSMFragmentation.hh.

Referenced by G4QGSMFragmentation(), and SetFFq2qq().

◆ aXiB

G4double G4QGSMFragmentation::aXiB
private

Definition at line 94 of file G4QGSMFragmentation.hh.

Referenced by G4QGSMFragmentation(), and SetFFq2qq().

◆ aXiBB

G4double G4QGSMFragmentation::aXiBB
private

Definition at line 97 of file G4QGSMFragmentation.hh.

Referenced by G4QGSMFragmentation(), and SetFFq2qq().

◆ aXiC

G4double G4QGSMFragmentation::aXiC
private

Definition at line 93 of file G4QGSMFragmentation.hh.

Referenced by G4QGSMFragmentation(), and SetFFq2qq().

◆ aXiCB

G4double G4QGSMFragmentation::aXiCB
private

Definition at line 96 of file G4QGSMFragmentation.hh.

Referenced by G4QGSMFragmentation(), and SetFFq2qq().

◆ aXiCC

G4double G4QGSMFragmentation::aXiCC
private

Definition at line 95 of file G4QGSMFragmentation.hh.

Referenced by G4QGSMFragmentation(), and SetFFq2qq().

◆ Baryon

G4int G4VLongitudinalStringDecay::Baryon[5][5][5][4]
inherited

◆ BaryonWeight

G4double G4VLongitudinalStringDecay::BaryonWeight[5][5][5][4]
inherited

◆ ClusterLoopInterrupt

G4int G4VLongitudinalStringDecay::ClusterLoopInterrupt
protectedinherited

◆ DecayQuark

G4int G4VLongitudinalStringDecay::DecayQuark
inherited

◆ DiquarkBreakProb

G4double G4VLongitudinalStringDecay::DiquarkBreakProb
protectedinherited

◆ DiquarkSuppress

G4double G4VLongitudinalStringDecay::DiquarkSuppress
protectedinherited

◆ epCheckLevels

std::pair<G4double, G4double> G4HadronicInteraction::epCheckLevels
privateinherited

◆ FFq2q

G4double G4QGSMFragmentation::FFq2q[5][5][2]
private

Definition at line 102 of file G4QGSMFragmentation.hh.

Referenced by GetLightConeZ(), and SetFFq2q().

◆ FFq2qq

G4double G4QGSMFragmentation::FFq2qq[5][15][2]
private

Definition at line 103 of file G4QGSMFragmentation.hh.

Referenced by GetLightConeZ(), and SetFFq2qq().

◆ FFqq2q

G4double G4QGSMFragmentation::FFqq2q[15][5][2]
private

Definition at line 104 of file G4QGSMFragmentation.hh.

Referenced by GetLightConeZ(), and SetFFqq2q().

◆ FFqq2qq

G4double G4QGSMFragmentation::FFqq2qq[15][5][2]
private

Definition at line 105 of file G4QGSMFragmentation.hh.

Referenced by GetLightConeZ(), and SetFFqq2qq().

◆ FS_LeftHadron

G4ParticleDefinition* G4VLongitudinalStringDecay::FS_LeftHadron[350]
inherited

◆ FS_RightHadron

G4ParticleDefinition * G4VLongitudinalStringDecay::FS_RightHadron[350]
inherited

◆ FS_Weight

G4double G4VLongitudinalStringDecay::FS_Weight[350]
inherited

◆ hadronizer

G4HadronBuilder* G4VLongitudinalStringDecay::hadronizer
protectedinherited

◆ IndexDiQ

G4int G4QGSMFragmentation::IndexDiQ[5][5]
private

Definition at line 113 of file G4QGSMFragmentation.hh.

Referenced by G4QGSMFragmentation(), and GetLightConeZ().

◆ isBlocked

G4bool G4HadronicInteraction::isBlocked
protectedinherited

◆ Kappa

G4double G4VLongitudinalStringDecay::Kappa
protectedinherited

◆ Mass_of_b_quark

G4double G4VLongitudinalStringDecay::Mass_of_b_quark
inherited

◆ Mass_of_c_quark

G4double G4VLongitudinalStringDecay::Mass_of_c_quark
inherited

◆ Mass_of_light_quark

G4double G4VLongitudinalStringDecay::Mass_of_light_quark
inherited

◆ Mass_of_s_quark

G4double G4VLongitudinalStringDecay::Mass_of_s_quark
inherited

◆ Mass_of_string_junction

G4double G4VLongitudinalStringDecay::Mass_of_string_junction
inherited

◆ MassCut

G4double G4VLongitudinalStringDecay::MassCut
protectedinherited

◆ MaxMass

G4double G4VLongitudinalStringDecay::MaxMass
protectedinherited

◆ Meson

G4int G4VLongitudinalStringDecay::Meson[5][5][7]
inherited

◆ MesonWeight

G4double G4VLongitudinalStringDecay::MesonWeight[5][5][7]
inherited

◆ MinimalStringMass

G4double G4VLongitudinalStringDecay::MinimalStringMass
inherited

◆ MinimalStringMass2

G4double G4VLongitudinalStringDecay::MinimalStringMass2
inherited

◆ minMassQDiQStr

G4double G4VLongitudinalStringDecay::minMassQDiQStr[5][5][5]
inherited

◆ minMassQQbarStr

G4double G4VLongitudinalStringDecay::minMassQQbarStr[5][5]
inherited

◆ NewParticles

std::vector<G4ParticleDefinition *> G4VLongitudinalStringDecay::NewParticles
protectedinherited

◆ NewQuark

G4int G4VLongitudinalStringDecay::NewQuark
inherited

◆ NumberOf_FS

G4int G4VLongitudinalStringDecay::NumberOf_FS
inherited

◆ PastInitPhase

G4bool G4VLongitudinalStringDecay::PastInitPhase
protectedinherited

◆ Prob_QQbar

G4double G4VLongitudinalStringDecay::Prob_QQbar[5]
inherited

◆ ProbBBbar

G4double G4VLongitudinalStringDecay::ProbBBbar
protectedinherited

◆ ProbCB

G4double G4VLongitudinalStringDecay::ProbCB
protectedinherited

◆ ProbCCbar

G4double G4VLongitudinalStringDecay::ProbCCbar
protectedinherited

◆ ProbEta_b

G4double G4VLongitudinalStringDecay::ProbEta_b
protectedinherited

◆ ProbEta_c

G4double G4VLongitudinalStringDecay::ProbEta_c
protectedinherited

◆ pspin_barion

G4double G4VLongitudinalStringDecay::pspin_barion
protectedinherited

◆ pspin_meson

G4double G4VLongitudinalStringDecay::pspin_meson
protectedinherited

◆ Qcharge

G4int G4VLongitudinalStringDecay::Qcharge[5]
inherited

◆ recoilEnergyThreshold

G4double G4HadronicInteraction::recoilEnergyThreshold
privateinherited

◆ registry

G4HadronicInteractionRegistry* G4HadronicInteraction::registry
privateinherited

◆ scalarMesonMix

std::vector<G4double> G4VLongitudinalStringDecay::scalarMesonMix
protectedinherited

◆ SigmaQT

G4double G4VLongitudinalStringDecay::SigmaQT
protectedinherited

◆ StrangeSuppress

G4double G4VLongitudinalStringDecay::StrangeSuppress
protectedinherited

◆ StringLoopInterrupt

G4int G4VLongitudinalStringDecay::StringLoopInterrupt
protectedinherited

◆ theBlockedList

std::vector<const G4Material *> G4HadronicInteraction::theBlockedList
privateinherited

◆ theBlockedListElements

std::vector<const G4Element *> G4HadronicInteraction::theBlockedListElements
privateinherited

◆ theMaxEnergy

G4double G4HadronicInteraction::theMaxEnergy
protectedinherited

◆ theMaxEnergyList

std::vector<std::pair<G4double, const G4Material *> > G4HadronicInteraction::theMaxEnergyList
privateinherited

◆ theMaxEnergyListElements

std::vector<std::pair<G4double, const G4Element *> > G4HadronicInteraction::theMaxEnergyListElements
privateinherited

◆ theMinEnergy

G4double G4HadronicInteraction::theMinEnergy
protectedinherited

◆ theMinEnergyList

std::vector<std::pair<G4double, const G4Material *> > G4HadronicInteraction::theMinEnergyList
privateinherited

◆ theMinEnergyListElements

std::vector<std::pair<G4double, const G4Element *> > G4HadronicInteraction::theMinEnergyListElements
privateinherited

◆ theModelName

G4String G4HadronicInteraction::theModelName
privateinherited

◆ theParticleChange

G4HadFinalState G4HadronicInteraction::theParticleChange
protectedinherited

Definition at line 172 of file G4HadronicInteraction.hh.

Referenced by G4WilsonAbrasionModel::ApplyYourself(), G4EMDissociation::ApplyYourself(), G4LENDCapture::ApplyYourself(), G4LENDElastic::ApplyYourself(), G4LENDFission::ApplyYourself(), G4LENDInelastic::ApplyYourself(), G4ElectroVDNuclearModel::ApplyYourself(), G4ParticleHPThermalScattering::ApplyYourself(), G4NeutrinoElectronNcModel::ApplyYourself(), G4NeutronElectronElModel::ApplyYourself(), G4LFission::ApplyYourself(), G4ANuElNucleusCcModel::ApplyYourself(), G4ANuElNucleusNcModel::ApplyYourself(), G4ANuMuNucleusCcModel::ApplyYourself(), G4ANuMuNucleusNcModel::ApplyYourself(), G4MuonVDNuclearModel::ApplyYourself(), G4NeutrinoElectronCcModel::ApplyYourself(), G4NuElNucleusCcModel::ApplyYourself(), G4NuElNucleusNcModel::ApplyYourself(), G4NuMuNucleusCcModel::ApplyYourself(), G4NuMuNucleusNcModel::ApplyYourself(), G4QMDReaction::ApplyYourself(), G4NeutronRadCapture::ApplyYourself(), G4LowEGammaNuclearModel::ApplyYourself(), G4ChargeExchange::ApplyYourself(), G4HadronElastic::ApplyYourself(), G4LEHadronProtonElastic::ApplyYourself(), G4LEnp::ApplyYourself(), G4LEpp::ApplyYourself(), G4BinaryCascade::ApplyYourself(), G4CascadeInterface::ApplyYourself(), G4LMsdGenerator::ApplyYourself(), G4ElectroVDNuclearModel::CalculateEMVertex(), G4MuonVDNuclearModel::CalculateEMVertex(), G4ElectroVDNuclearModel::CalculateHadronicVertex(), G4MuonVDNuclearModel::CalculateHadronicVertex(), G4NeutrinoNucleusModel::CoherentPion(), G4CascadeInterface::copyOutputToHadronicResult(), G4BinaryCascade::DebugEpConservation(), G4BinaryCascade::DebugFinalEpConservation(), G4NeutrinoNucleusModel::FinalBarion(), G4NeutrinoNucleusModel::FinalMeson(), G4WilsonAbrasionModel::GetAbradedNucleons(), G4CascadeInterface::NoInteraction(), G4CascadeInterface::Propagate(), G4NeutrinoNucleusModel::RecoilDeexcitation(), G4LEHadronProtonElastic::~G4LEHadronProtonElastic(), G4LEnp::~G4LEnp(), and G4LFission::~G4LFission().

◆ vectorMesonMix

std::vector<G4double> G4VLongitudinalStringDecay::vectorMesonMix
protectedinherited

◆ verboseLevel

G4int G4HadronicInteraction::verboseLevel
protectedinherited

Definition at line 177 of file G4HadronicInteraction.hh.

Referenced by G4WilsonAbrasionModel::ApplyYourself(), G4EMDissociation::ApplyYourself(), G4LFission::ApplyYourself(), G4MuMinusCapturePrecompound::ApplyYourself(), G4NeutronRadCapture::ApplyYourself(), G4LowEGammaNuclearModel::ApplyYourself(), G4ChargeExchange::ApplyYourself(), G4HadronElastic::ApplyYourself(), G4LEHadronProtonElastic::ApplyYourself(), G4LEnp::ApplyYourself(), G4LEpp::ApplyYourself(), G4CascadeInterface::ApplyYourself(), G4CascadeInterface::checkFinalResult(), G4CascadeInterface::copyOutputToHadronicResult(), G4CascadeInterface::copyOutputToReactionProducts(), G4LENDModel::create_used_target_map(), G4CascadeInterface::createBullet(), G4CascadeInterface::createTarget(), G4ElasticHadrNucleusHE::DefineHadronValues(), G4ElasticHadrNucleusHE::FillData(), G4ElasticHadrNucleusHE::FillFq2(), G4DiffuseElastic::G4DiffuseElastic(), G4DiffuseElasticV2::G4DiffuseElasticV2(), G4ElasticHadrNucleusHE::G4ElasticHadrNucleusHE(), G4EMDissociation::G4EMDissociation(), G4hhElastic::G4hhElastic(), G4NuclNuclDiffuseElastic::G4NuclNuclDiffuseElastic(), G4WilsonAbrasionModel::G4WilsonAbrasionModel(), G4ElasticHadrNucleusHE::GetFt(), G4ElasticHadrNucleusHE::GetLightFq2(), G4ElasticHadrNucleusHE::GetQ2_2(), G4HadronicInteraction::GetVerboseLevel(), G4ElasticHadrNucleusHE::HadronNucleusQ2_2(), G4ElasticHadrNucleusHE::HadronProtonQ2(), G4LFission::init(), G4DiffuseElastic::Initialise(), G4DiffuseElasticV2::Initialise(), G4NuclNuclDiffuseElastic::Initialise(), G4DiffuseElastic::InitialiseOnFly(), G4DiffuseElasticV2::InitialiseOnFly(), G4NuclNuclDiffuseElastic::InitialiseOnFly(), G4CascadeInterface::makeDynamicParticle(), G4CascadeInterface::NoInteraction(), G4CascadeInterface::Propagate(), G4ElasticHadrNucleusHE::SampleInvariantT(), G4AntiNuclElastic::SampleThetaCMS(), G4DiffuseElastic::SampleThetaLab(), G4NuclNuclDiffuseElastic::SampleThetaLab(), G4AntiNuclElastic::SampleThetaLab(), G4WilsonAbrasionModel::SetUseAblation(), G4HadronicInteraction::SetVerboseLevel(), G4WilsonAbrasionModel::SetVerboseLevel(), G4DiffuseElastic::ThetaCMStoThetaLab(), G4DiffuseElasticV2::ThetaCMStoThetaLab(), G4NuclNuclDiffuseElastic::ThetaCMStoThetaLab(), G4DiffuseElastic::ThetaLabToThetaCMS(), G4DiffuseElasticV2::ThetaLabToThetaCMS(), and G4NuclNuclDiffuseElastic::ThetaLabToThetaCMS().


The documentation for this class was generated from the following files: