Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4VLongitudinalStringDecay Class Referenceabstract

#include <G4VLongitudinalStringDecay.hh>

+ Inheritance diagram for G4VLongitudinalStringDecay:

Public Member Functions

 G4VLongitudinalStringDecay ()
 
virtual ~G4VLongitudinalStringDecay ()
 
virtual G4KineticTrackVectorFragmentString (const G4ExcitedString &theString)=0
 
G4int SampleQuarkFlavor (void)
 
G4ThreeVector SampleQuarkPt (G4double ptMax=-1.)
 
G4KineticTrackVectorDecayResonans (G4KineticTrackVector *aHadrons)
 
void SetSigmaTransverseMomentum (G4double aQT)
 
void SetStrangenessSuppression (G4double aValue)
 
void SetDiquarkSuppression (G4double aValue)
 
void SetDiquarkBreakProbability (G4double aValue)
 
void SetVectorMesonProbability (G4double aValue)
 
void SetSpinThreeHalfBarionProbability (G4double aValue)
 
void SetScalarMesonMixings (std::vector< G4double > aVector)
 
void SetVectorMesonMixings (std::vector< G4double > aVector)
 
void SetStringTensionParameter (G4double aValue)
 

Protected Types

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

Protected Member Functions

virtual void SetMassCut (G4double aValue)
 
G4KineticTrackVectorLightFragmentationTest (const G4ExcitedString *const theString)
 
G4double FragmentationMass (const G4FragmentingString *const string, Pcreate build=0, pDefPair *pdefs=0)
 
G4ParticleDefinitionFindParticle (G4int Encoding)
 
virtual void Sample4Momentum (G4LorentzVector *Mom, G4double Mass, G4LorentzVector *AntiMom, G4double AntiMass, G4double InitialMass)=0
 
virtual G4bool StopFragmenting (const G4FragmentingString *const string)=0
 
virtual G4bool IsFragmentable (const G4FragmentingString *const string)=0
 
virtual G4bool SplitLast (G4FragmentingString *string, G4KineticTrackVector *LeftVector, G4KineticTrackVector *RightVector)=0
 
G4ExcitedStringCPExcited (const G4ExcitedString &string)
 
G4KineticTrackSplitup (G4FragmentingString *string, G4FragmentingString *&newString)
 
G4ParticleDefinitionQuarkSplitup (G4ParticleDefinition *decay, G4ParticleDefinition *&created)
 
G4ParticleDefinitionDiQuarkSplitup (G4ParticleDefinition *decay, G4ParticleDefinition *&created)
 
pDefPair CreatePartonPair (G4int NeedParticle, G4bool AllowDiquarks=true)
 
virtual G4LorentzVectorSplitEandP (G4ParticleDefinition *pHadron, G4FragmentingString *string, G4FragmentingString *newString)=0
 
virtual G4double GetLightConeZ (G4double zmin, G4double zmax, G4int PartonEncoding, G4ParticleDefinition *pHadron, G4double Px, G4double Py)=0
 
void CalculateHadronTimePosition (G4double theInitialStringMass, G4KineticTrackVector *)
 
void ConstructParticle ()
 
G4ParticleDefinitionCreateHadron (G4int id1, G4int id2, G4bool theGivenSpin, G4int theSpin)
 
G4double GetDiquarkSuppress ()
 
G4double GetDiquarkBreakProb ()
 
G4double GetStrangeSuppress ()
 
G4double GetClusterMass ()
 
G4int GetClusterLoopInterrupt ()
 
G4double GetStringTensionParameter ()
 

Protected Attributes

G4double MassCut
 
G4double ClusterMass
 
G4double SigmaQT
 
G4double DiquarkSuppress
 
G4double DiquarkBreakProb
 
G4double SmoothParam
 
G4double StrangeSuppress
 
G4int StringLoopInterrupt
 
G4int ClusterLoopInterrupt
 
G4HadronBuilderhadronizer
 
G4double pspin_meson
 
G4double pspin_barion
 
std::vector< G4doublevectorMesonMix
 
std::vector< G4doublescalarMesonMix
 
G4bool PastInitPhase
 
G4double Kappa
 

Detailed Description

Definition at line 46 of file G4VLongitudinalStringDecay.hh.

Member Typedef Documentation

◆ Pcreate

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

Definition at line 74 of file G4VLongitudinalStringDecay.hh.

◆ pDefPair

Constructor & Destructor Documentation

◆ G4VLongitudinalStringDecay()

G4VLongitudinalStringDecay::G4VLongitudinalStringDecay ( )

Definition at line 64 of file G4VLongitudinalStringDecay.cc.

65{
66 MassCut = 0.35*GeV;
67 ClusterMass = 0.15*GeV;
68
69 SmoothParam = 0.9;
72
73// Changable Parameters below.
74 SigmaQT = 0.5 * GeV; // 0.5 0.1
75
76 StrangeSuppress = 0.44; // 27 % strange quarks produced, ie. u:d:s=1:1:0.27
77 DiquarkSuppress = 0.07;
78 DiquarkBreakProb = 0.1;
79
80 //... pspin_meson is probability to create vector meson
81 pspin_meson = 0.5;
82
83 //... pspin_barion is probability to create 3/2 barion
84 pspin_barion = 0.5;
85
86 //... vectorMesonMix[] is quark mixing parameters for vector mesons (Variable spin = 3)
87 vectorMesonMix.resize(6);
88 vectorMesonMix[0] = 0.5;
89 vectorMesonMix[1] = 0.0;
90 vectorMesonMix[2] = 0.5;
91 vectorMesonMix[3] = 0.0;
92 vectorMesonMix[4] = 1.0;
93 vectorMesonMix[5] = 1.0;
94
95 //... scalarMesonMix[] is quark mixing parameters for scalar mesons (Variable spin=1)
96 scalarMesonMix.resize(6);
97 scalarMesonMix[0] = 0.5;
98 scalarMesonMix[1] = 0.25;
99 scalarMesonMix[2] = 0.5;
100 scalarMesonMix[3] = 0.25;
101 scalarMesonMix[4] = 1.0;
102 scalarMesonMix[5] = 0.5;
103
104// Parameters may be changed until the first fragmentation starts
105 PastInitPhase=false;
108 Kappa = 1.0 * GeV/fermi;
109
110
111}
std::vector< G4double > scalarMesonMix
std::vector< G4double > vectorMesonMix

◆ ~G4VLongitudinalStringDecay()

G4VLongitudinalStringDecay::~G4VLongitudinalStringDecay ( )
virtual

Definition at line 114 of file G4VLongitudinalStringDecay.cc.

115 {
116 delete hadronizer;
117 }

Member Function Documentation

◆ CalculateHadronTimePosition()

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

Definition at line 486 of file G4VLongitudinalStringDecay.cc.

487 {
488
489// `yo-yo` formation time
490// const G4double kappa = 1.0 * GeV/fermi/4.;
492 for(size_t c1 = 0; c1 < Hadrons->size(); c1++)
493 {
494 G4double SumPz = 0;
495 G4double SumE = 0;
496 for(size_t c2 = 0; c2 < c1; c2++)
497 {
498 SumPz += Hadrons->operator[](c2)->Get4Momentum().pz();
499 SumE += Hadrons->operator[](c2)->Get4Momentum().e();
500 }
501 G4double HadronE = Hadrons->operator[](c1)->Get4Momentum().e();
502 G4double HadronPz = Hadrons->operator[](c1)->Get4Momentum().pz();
503 Hadrons->operator[](c1)->SetFormationTime(
504(theInitialStringMass - 2.*SumPz + HadronE - HadronPz)/(2.*kappa)/c_light);
505
506 G4ThreeVector aPosition(0, 0,
507(theInitialStringMass - 2.*SumE - HadronE + HadronPz)/(2.*kappa));
508 Hadrons->operator[](c1)->SetPosition(aPosition);
509
510 }
511 }
double G4double
Definition: G4Types.hh:64

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

◆ ConstructParticle()

void G4VLongitudinalStringDecay::ConstructParticle ( )
protected

◆ CPExcited()

G4ExcitedString * G4VLongitudinalStringDecay::CPExcited ( const G4ExcitedString string)
protected

Definition at line 315 of file G4VLongitudinalStringDecay.cc.

316{
317 G4Parton *Left=new G4Parton(*in.GetLeftParton());
318 G4Parton *Right=new G4Parton(*in.GetRightParton());
319 return new G4ExcitedString(Left,Right,in.GetDirection());
320}

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

◆ CreateHadron()

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

◆ CreatePartonPair()

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

Definition at line 445 of file G4VLongitudinalStringDecay.cc.

446{
447// NeedParticle = +1 for Particle, -1 for Antiparticle
448
449 if ( AllowDiquarks && G4UniformRand() < DiquarkSuppress )
450 {
451 // Create a Diquark - AntiDiquark pair , first in pair is anti to IsParticle
454 G4int spin = (q1 != q2 && G4UniformRand() <= 0.5)? 1 : 3;
455 // convention: quark with higher PDG number is first
456 G4int PDGcode = (std::max(q1,q2) * 1000 + std::min(q1,q2) * 100 + spin) * NeedParticle;
457 return pDefPair (FindParticle(-PDGcode),FindParticle(PDGcode));
458
459
460 } else {
461 // Create a Quark - AntiQuark pair, first in pair IsParticle
462 G4int PDGcode=SampleQuarkFlavor()*NeedParticle;
463 return pDefPair (FindParticle(PDGcode),FindParticle(-PDGcode));
464 }
465
466}
int G4int
Definition: G4Types.hh:66
#define G4UniformRand()
Definition: Randomize.hh:53
std::pair< G4ParticleDefinition *, G4ParticleDefinition * > pDefPair
G4ParticleDefinition * FindParticle(G4int Encoding)

Referenced by DiQuarkSplitup(), and QuarkSplitup().

◆ DecayResonans()

G4KineticTrackVector * G4VLongitudinalStringDecay::DecayResonans ( G4KineticTrackVector aHadrons)

◆ DiQuarkSplitup()

G4ParticleDefinition * G4VLongitudinalStringDecay::DiQuarkSplitup ( G4ParticleDefinition decay,
G4ParticleDefinition *&  created 
)
protected

Definition at line 390 of file G4VLongitudinalStringDecay.cc.

393{
394 //... can Diquark break or not?
396 //... Diquark break
397
398 G4int stableQuarkEncoding = decay->GetPDGEncoding()/1000;
399 G4int decayQuarkEncoding = (decay->GetPDGEncoding()/100)%10;
400 if (G4UniformRand() < 0.5)
401 {
402 G4int Swap = stableQuarkEncoding;
403 stableQuarkEncoding = decayQuarkEncoding;
404 decayQuarkEncoding = Swap;
405 }
406
407 G4int IsParticle=(decayQuarkEncoding>0) ? -1 : +1;
408 // if we have a quark, we need antiquark)
409 pDefPair QuarkPair = CreatePartonPair(IsParticle,false); // no diquarks wanted
410 //... Build new Diquark
411 G4int QuarkEncoding=QuarkPair.second->GetPDGEncoding();
412 G4int i10 = std::max(std::abs(QuarkEncoding), std::abs(stableQuarkEncoding));
413 G4int i20 = std::min(std::abs(QuarkEncoding), std::abs(stableQuarkEncoding));
414 G4int spin = (i10 != i20 && G4UniformRand() <= 0.5)? 1 : 3;
415 G4int NewDecayEncoding = -1*IsParticle*(i10 * 1000 + i20 * 100 + spin);
416 created = FindParticle(NewDecayEncoding);
417 G4ParticleDefinition * decayQuark=FindParticle(decayQuarkEncoding);
418 G4ParticleDefinition * had=hadronizer->Build(QuarkPair.first, decayQuark);
419 return had;
420// return hadronizer->Build(QuarkPair.first, decayQuark);
421
422 } else {
423 //... Diquark does not break
424
425 G4int IsParticle=(decay->GetPDGEncoding()>0) ? +1 : -1;
426 // if we have a diquark, we need quark)
427 pDefPair QuarkPair = CreatePartonPair(IsParticle,false); // no diquarks wanted
428 created = QuarkPair.second;
429
430 G4ParticleDefinition * had=hadronizer->Build(QuarkPair.first, decay);
431 return had;
432// return G4ParticleDefinition * had=hadronizer->Build(QuarkPair.first, decay);
433 }
434}
G4ParticleDefinition * Build(G4ParticleDefinition *black, G4ParticleDefinition *white)
pDefPair CreatePartonPair(G4int NeedParticle, G4bool AllowDiquarks=true)

Referenced by Splitup().

◆ FindParticle()

G4ParticleDefinition * G4VLongitudinalStringDecay::FindParticle ( G4int  Encoding)
protected

Definition at line 282 of file G4VLongitudinalStringDecay.cc.

283 {
285 if (ptr == NULL)
286 {
287 G4cout << "Particle with encoding "<<Encoding<<" does not exist!!!"<<G4endl;
288 throw G4HadronicException(__FILE__, __LINE__, "Check your particle table");
289 }
290 return ptr;
291 }
#define G4endl
Definition: G4ios.hh:52
G4DLLIMPORT std::ostream G4cout
G4ParticleDefinition * FindParticle(G4int PDGEncoding)
static G4ParticleTable * GetParticleTable()

Referenced by CreatePartonPair(), DiQuarkSplitup(), and FragmentationMass().

◆ FragmentationMass()

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

Definition at line 224 of file G4VLongitudinalStringDecay.cc.

227{
228
229 G4double mass;
230 static G4bool NeedInit(true);
231 static std::vector<double> nomix;
232 static G4HadronBuilder * minMassHadronizer;
233 if ( NeedInit )
234 {
235 NeedInit = false;
236 nomix.resize(6);
237 for ( G4int i=0; i<6 ; i++ ) nomix[i]=0;
238
239// minMassHadronizer=new G4HadronBuilder(pspin_meson,pspin_barion,nomix,nomix);
240 minMassHadronizer=hadronizer;
241 }
242
243 if ( build==0 ) build=&G4HadronBuilder::BuildLowSpin;
244
245 G4ParticleDefinition *Hadron1, *Hadron2=0;
246
247 if (!string->FourQuarkString() )
248 {
249 // spin 0 meson or spin 1/2 barion will be built
250
251//G4cout<<"String Left Right "<<string->GetLeftParton()<<" "<<string->GetRightParton()<<G4endl;
252 Hadron1 = (minMassHadronizer->*build)(string->GetLeftParton(),
253 string->GetRightParton());
254//G4cout<<"Hadron1 "<<Hadron1->GetParticleName()<<G4endl;
255 mass= (Hadron1)->GetPDGMass();
256 } else
257 {
258 //... string is qq--qqbar: Build two stable hadrons,
259 //... with extra uubar or ddbar quark pair
260 G4int iflc = (G4UniformRand() < 0.5)? 1 : 2;
261 if (string->GetLeftParton()->GetPDGEncoding() < 0) iflc = -iflc;
262
263 //... theSpin = 4; spin 3/2 baryons will be built
264 Hadron1 = (minMassHadronizer->*build)(string->GetLeftParton(),
265 FindParticle(iflc) );
266 Hadron2 = (minMassHadronizer->*build)(string->GetRightParton(),
267 FindParticle(-iflc) );
268 mass = (Hadron1)->GetPDGMass() + (Hadron2)->GetPDGMass();
269 }
270
271 if ( pdefs != 0 )
272 { // need to return hadrons as well....
273 pdefs->first = Hadron1;
274 pdefs->second = Hadron2;
275 }
276
277 return mass;
278}
bool G4bool
Definition: G4Types.hh:67
G4ParticleDefinition * GetLeftParton(void) const
G4ParticleDefinition * GetRightParton(void) const
G4bool FourQuarkString(void) const
G4ParticleDefinition * BuildLowSpin(G4ParticleDefinition *black, G4ParticleDefinition *white)

Referenced by LightFragmentationTest().

◆ FragmentString()

virtual G4KineticTrackVector * G4VLongitudinalStringDecay::FragmentString ( const G4ExcitedString theString)
pure virtual

◆ GetClusterLoopInterrupt()

G4int G4VLongitudinalStringDecay::GetClusterLoopInterrupt ( )
inlineprotected

Definition at line 170 of file G4VLongitudinalStringDecay.hh.

170{return ClusterLoopInterrupt;};

◆ GetClusterMass()

G4double G4VLongitudinalStringDecay::GetClusterMass ( )
inlineprotected

Definition at line 169 of file G4VLongitudinalStringDecay.hh.

169{return ClusterMass;};

◆ GetDiquarkBreakProb()

G4double G4VLongitudinalStringDecay::GetDiquarkBreakProb ( )
inlineprotected

Definition at line 167 of file G4VLongitudinalStringDecay.hh.

167{return DiquarkBreakProb;};

◆ GetDiquarkSuppress()

G4double G4VLongitudinalStringDecay::GetDiquarkSuppress ( )
inlineprotected

Definition at line 166 of file G4VLongitudinalStringDecay.hh.

166{return DiquarkSuppress;};

◆ GetLightConeZ()

virtual G4double G4VLongitudinalStringDecay::GetLightConeZ ( G4double  zmin,
G4double  zmax,
G4int  PartonEncoding,
G4ParticleDefinition pHadron,
G4double  Px,
G4double  Py 
)
protectedpure virtual

◆ GetStrangeSuppress()

G4double G4VLongitudinalStringDecay::GetStrangeSuppress ( )
inlineprotected

Definition at line 168 of file G4VLongitudinalStringDecay.hh.

168{return StrangeSuppress;};

◆ GetStringTensionParameter()

G4double G4VLongitudinalStringDecay::GetStringTensionParameter ( )
inlineprotected

Definition at line 172 of file G4VLongitudinalStringDecay.hh.

172{return Kappa;}; // Uzhi 20 June 08

Referenced by CalculateHadronTimePosition().

◆ IsFragmentable()

virtual G4bool G4VLongitudinalStringDecay::IsFragmentable ( const G4FragmentingString *const  string)
protectedpure virtual

◆ LightFragmentationTest()

G4KineticTrackVector * G4VLongitudinalStringDecay::LightFragmentationTest ( const G4ExcitedString *const  theString)
protected

Definition at line 152 of file G4VLongitudinalStringDecay.cc.

154{
155 // Check string decay threshold
156
157 G4KineticTrackVector * result=0; // return 0 when string exceeds the mass cut
158
160
161 G4FragmentingString aString(*string);
162
163 if ( sqr(FragmentationMass(&aString,0,&hadrons)+MassCut) < aString.Mass2()) {
164 return 0;
165 }
166
167// The string mass is very low ---------------------------
168
169 result=new G4KineticTrackVector;
170
171 if ( hadrons.second ==0 )
172 {
173// Substitute string by light hadron, Note that Energy is not conserved here!
174
175/*
176#ifdef DEBUG_LightFragmentationTest
177 G4cout << "VlongSF Warning replacing string by single hadron " <<G4endl;
178 G4cout << hadrons.first->GetParticleName()
179 << "string .. " << string->Get4Momentum() << " "
180 << string->Get4Momentum().m() << G4endl;
181#endif
182*/
183 G4ThreeVector Mom3 = string->Get4Momentum().vect();
184 G4LorentzVector Mom(Mom3,
185 std::sqrt(Mom3.mag2() +
186 sqr(hadrons.first->GetPDGMass())));
187 result->push_back(new G4KineticTrack(hadrons.first, 0,
188 string->GetPosition(),
189 Mom));
190 } else
191 {
192//... string was qq--qqbar type: Build two stable hadrons,
193
194#ifdef DEBUG_LightFragmentationTest
195 G4cout << "VlongSF Warning replacing qq-qqbar string by TWO hadrons "
196 << hadrons.first->GetParticleName() << " / "
197 << hadrons.second->GetParticleName()
198 << "string .. " << string->Get4Momentum() << " "
199 << string->Get4Momentum().m() << G4endl;
200#endif
201
202 G4LorentzVector Mom1, Mom2;
203 Sample4Momentum(&Mom1, hadrons.first->GetPDGMass(),
204 &Mom2,hadrons.second->GetPDGMass(),
205 string->Get4Momentum().mag());
206
207 result->push_back(new G4KineticTrack(hadrons.first, 0,
208 string->GetPosition(),
209 Mom1));
210 result->push_back(new G4KineticTrack(hadrons.second, 0,
211 string->GetPosition(),
212 Mom2));
213
214 G4ThreeVector Velocity = string->Get4Momentum().boostVector();
215 result->Boost(Velocity);
216 }
217
218 return result;
219
220}
double mag2() const
void Boost(G4ThreeVector &Velocity)
virtual void Sample4Momentum(G4LorentzVector *Mom, G4double Mass, G4LorentzVector *AntiMom, G4double AntiMass, G4double InitialMass)=0
G4double FragmentationMass(const G4FragmentingString *const string, Pcreate build=0, pDefPair *pdefs=0)
T sqr(const T &x)
Definition: templates.hh:145

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

◆ QuarkSplitup()

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

Definition at line 376 of file G4VLongitudinalStringDecay.cc.

378{
379 G4int IsParticle=(decay->GetPDGEncoding()>0) ? -1 : +1; // if we have a quark,
380 // we need antiquark
381 // (or diquark)
382 pDefPair QuarkPair = CreatePartonPair(IsParticle);
383 created = QuarkPair.second;
384 return hadronizer->Build(QuarkPair.first, decay);
385
386}

Referenced by Splitup().

◆ Sample4Momentum()

virtual void G4VLongitudinalStringDecay::Sample4Momentum ( G4LorentzVector Mom,
G4double  Mass,
G4LorentzVector AntiMom,
G4double  AntiMass,
G4double  InitialMass 
)
protectedpure virtual

Referenced by LightFragmentationTest().

◆ SampleQuarkFlavor()

G4int G4VLongitudinalStringDecay::SampleQuarkFlavor ( void  )

Definition at line 438 of file G4VLongitudinalStringDecay.cc.

439 {
440 return (1 + (int)(G4UniformRand()/StrangeSuppress));
441 }

Referenced by CreatePartonPair(), and G4VKinkyStringDecay::FragmentString().

◆ SampleQuarkPt()

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

Definition at line 469 of file G4VLongitudinalStringDecay.cc.

470 {
471 G4double Pt;
472 if ( ptMax < 0 ) {
473 // sample full gaussian
474 Pt = -std::log(G4UniformRand());
475 } else {
476 // sample in limited range
477 Pt = -std::log(CLHEP::RandFlat::shoot(std::exp(-sqr(ptMax)/sqr(SigmaQT)), 1.));
478 }
479 Pt = SigmaQT * std::sqrt(Pt);
480 G4double phi = 2.*pi*G4UniformRand();
481 return G4ThreeVector(Pt * std::cos(phi),Pt * std::sin(phi),0);
482 }
CLHEP::Hep3Vector G4ThreeVector
static double shoot()
Definition: RandFlat.cc:59
const G4double pi

Referenced by G4VKinkyStringDecay::FragmentString().

◆ SetDiquarkBreakProbability()

void G4VLongitudinalStringDecay::SetDiquarkBreakProbability ( G4double  aValue)

Definition at line 548 of file G4VLongitudinalStringDecay.cc.

549{
550 if ( PastInitPhase ) {
551 throw G4HadronicException(__FILE__, __LINE__, "4VLongitudinalStringDecay::SetDiquarkBreakProbability after FragmentString() not allowed");
552 } else {
553 DiquarkBreakProb = aValue;
554 }
555}

Referenced by G4LundStringFragmentation::G4LundStringFragmentation().

◆ SetDiquarkSuppression()

void G4VLongitudinalStringDecay::SetDiquarkSuppression ( G4double  aValue)

Definition at line 537 of file G4VLongitudinalStringDecay.cc.

538{
539 if ( PastInitPhase ) {
540 throw G4HadronicException(__FILE__, __LINE__, "4VLongitudinalStringDecay::SetDiquarkSuppression after FragmentString() not allowed");
541 } else {
542 DiquarkSuppress = aValue;
543 }
544}

Referenced by G4LundStringFragmentation::G4LundStringFragmentation().

◆ SetMassCut()

void G4VLongitudinalStringDecay::SetMassCut ( G4double  aValue)
protectedvirtual

Definition at line 146 of file G4VLongitudinalStringDecay.cc.

146{MassCut=aValue;}

Referenced by G4LundStringFragmentation::FragmentString().

◆ SetScalarMesonMixings()

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

Definition at line 587 of file G4VLongitudinalStringDecay.cc.

588{
589 if ( PastInitPhase ) {
590 throw G4HadronicException(__FILE__, __LINE__, "G4VLongitudinalStringDecay::SetScalarMesonMixings after FragmentString() not allowed");
591 } else {
592 if ( aVector.size() < 6 )
593 throw G4HadronicException(__FILE__, __LINE__, "G4VLongitudinalStringDecay::SetScalarMesonMixings( argument Vector too small");
594 scalarMesonMix[0] = aVector[0];
595 scalarMesonMix[1] = aVector[1];
596 scalarMesonMix[2] = aVector[2];
597 scalarMesonMix[3] = aVector[3];
598 scalarMesonMix[4] = aVector[4];
599 scalarMesonMix[5] = aVector[5];
600 delete hadronizer;
603 }
604}

◆ SetSigmaTransverseMomentum()

void G4VLongitudinalStringDecay::SetSigmaTransverseMomentum ( G4double  aQT)

Definition at line 515 of file G4VLongitudinalStringDecay.cc.

516{
517 if ( PastInitPhase ) {
518 throw G4HadronicException(__FILE__, __LINE__, "4VLongitudinalStringDecay::SetSigmaTransverseMomentum after FragmentString() not allowed");
519 } else {
520 SigmaQT = aValue;
521 }
522}

◆ SetSpinThreeHalfBarionProbability()

void G4VLongitudinalStringDecay::SetSpinThreeHalfBarionProbability ( G4double  aValue)

Definition at line 573 of file G4VLongitudinalStringDecay.cc.

574{
575 if ( PastInitPhase ) {
576 throw G4HadronicException(__FILE__, __LINE__, "G4VLongitudinalStringDecay::SetSpinThreeHalfBarionProbability after FragmentString() not allowed");
577 } else {
578 pspin_barion = aValue;
579 delete hadronizer;
582 }
583}

◆ SetStrangenessSuppression()

void G4VLongitudinalStringDecay::SetStrangenessSuppression ( G4double  aValue)

Definition at line 526 of file G4VLongitudinalStringDecay.cc.

527{
528 if ( PastInitPhase ) {
529 throw G4HadronicException(__FILE__, __LINE__, "4VLongitudinalStringDecay::SetStrangenessSuppression after FragmentString() not allowed");
530 } else {
531 StrangeSuppress = aValue;
532 }
533}

Referenced by G4LundStringFragmentation::G4LundStringFragmentation().

◆ SetStringTensionParameter()

void G4VLongitudinalStringDecay::SetStringTensionParameter ( G4double  aValue)

Definition at line 629 of file G4VLongitudinalStringDecay.cc.

630{
631 Kappa = aValue * GeV/fermi;
632}

Referenced by G4LundStringFragmentation::G4LundStringFragmentation().

◆ SetVectorMesonMixings()

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

Definition at line 608 of file G4VLongitudinalStringDecay.cc.

609{
610 if ( PastInitPhase ) {
611 throw G4HadronicException(__FILE__, __LINE__, "G4VLongitudinalStringDecay::SetVectorMesonMixings after FragmentString() not allowed");
612 } else {
613 if ( aVector.size() < 6 )
614 throw G4HadronicException(__FILE__, __LINE__, "G4VLongitudinalStringDecay::SetVectorMesonMixings( argument Vector too small");
615 vectorMesonMix[0] = aVector[0];
616 vectorMesonMix[1] = aVector[1];
617 vectorMesonMix[2] = aVector[2];
618 vectorMesonMix[3] = aVector[3];
619 vectorMesonMix[4] = aVector[4];
620 vectorMesonMix[5] = aVector[5];
621 delete hadronizer;
624
625 }
626}

◆ SetVectorMesonProbability()

void G4VLongitudinalStringDecay::SetVectorMesonProbability ( G4double  aValue)

Definition at line 559 of file G4VLongitudinalStringDecay.cc.

560{
561 if ( PastInitPhase ) {
562 throw G4HadronicException(__FILE__, __LINE__, "G4VLongitudinalStringDecay::SetVectorMesonProbability after FragmentString() not allowed");
563 } else {
564 pspin_meson = aValue;
565 delete hadronizer;
568 }
569}

◆ SplitEandP()

virtual G4LorentzVector * G4VLongitudinalStringDecay::SplitEandP ( G4ParticleDefinition pHadron,
G4FragmentingString string,
G4FragmentingString newString 
)
protectedpure virtual

Referenced by Splitup().

◆ SplitLast()

virtual G4bool G4VLongitudinalStringDecay::SplitLast ( G4FragmentingString string,
G4KineticTrackVector LeftVector,
G4KineticTrackVector RightVector 
)
protectedpure virtual

◆ Splitup()

G4KineticTrack * G4VLongitudinalStringDecay::Splitup ( G4FragmentingString string,
G4FragmentingString *&  newString 
)
protected

Definition at line 324 of file G4VLongitudinalStringDecay.cc.

327{
328//G4cout<<"Start SplitUP"<<G4endl;
329 //... random choice of string end to use for creating the hadron (decay)
330 G4int SideOfDecay = (G4UniformRand() < 0.5)? 1: -1;
331 if (SideOfDecay < 0)
332 {
333 string->SetLeftPartonStable();
334 } else
335 {
336 string->SetRightPartonStable();
337 }
338
339 G4ParticleDefinition *newStringEnd;
340 G4ParticleDefinition * HadronDefinition;
341 if (string->DecayIsQuark())
342 {
343 HadronDefinition= QuarkSplitup(string->GetDecayParton(), newStringEnd);
344 } else {
345 HadronDefinition= DiQuarkSplitup(string->GetDecayParton(), newStringEnd);
346 }
347
348//G4cout<<"New had "<<HadronDefinition->GetParticleName()<<G4endl;
349// create new String from old, ie. keep Left and Right order, but replace decay
350
351 newString=new G4FragmentingString(*string,newStringEnd); // To store possible
352 // quark containt of new string
353//G4cout<<"SplitEandP "<<G4endl;
354 G4LorentzVector* HadronMomentum=SplitEandP(HadronDefinition, string, newString);
355
356 delete newString; newString=0;
357
358 G4KineticTrack * Hadron =0;
359 if ( HadronMomentum != 0 ) {
360
362 Hadron = new G4KineticTrack(HadronDefinition, 0,Pos, *HadronMomentum);
363
364 newString=new G4FragmentingString(*string,newStringEnd,
365 HadronMomentum);
366
367 delete HadronMomentum;
368 }
369//G4cout<<"End SplitUP"<<G4endl;
370 return Hadron;
371}
G4ParticleDefinition * GetDecayParton() const
virtual G4LorentzVector * SplitEandP(G4ParticleDefinition *pHadron, G4FragmentingString *string, G4FragmentingString *newString)=0
G4ParticleDefinition * QuarkSplitup(G4ParticleDefinition *decay, G4ParticleDefinition *&created)
G4ParticleDefinition * DiQuarkSplitup(G4ParticleDefinition *decay, G4ParticleDefinition *&created)
ush Pos
Definition: deflate.h:82

Referenced by G4QGSMFragmentation::FragmentString().

◆ StopFragmenting()

virtual G4bool G4VLongitudinalStringDecay::StopFragmenting ( const G4FragmentingString *const  string)
protectedpure virtual

Member Data Documentation

◆ ClusterLoopInterrupt

G4int G4VLongitudinalStringDecay::ClusterLoopInterrupt
protected

◆ ClusterMass

G4double G4VLongitudinalStringDecay::ClusterMass
protected

Definition at line 177 of file G4VLongitudinalStringDecay.hh.

Referenced by G4VLongitudinalStringDecay(), and GetClusterMass().

◆ DiquarkBreakProb

G4double G4VLongitudinalStringDecay::DiquarkBreakProb
protected

◆ DiquarkSuppress

G4double G4VLongitudinalStringDecay::DiquarkSuppress
protected

◆ hadronizer

◆ Kappa

G4double G4VLongitudinalStringDecay::Kappa
protected

◆ MassCut

G4double G4VLongitudinalStringDecay::MassCut
protected

◆ PastInitPhase

◆ pspin_barion

◆ pspin_meson

◆ scalarMesonMix

◆ SigmaQT

G4double G4VLongitudinalStringDecay::SigmaQT
protected

◆ SmoothParam

G4double G4VLongitudinalStringDecay::SmoothParam
protected

◆ StrangeSuppress

◆ StringLoopInterrupt

G4int G4VLongitudinalStringDecay::StringLoopInterrupt
protected

◆ vectorMesonMix


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