Geant4  10.02.p03
G4VLongitudinalStringDecay Class Referenceabstract

#include <G4VLongitudinalStringDecay.hh>

Inheritance diagram for G4VLongitudinalStringDecay:
Collaboration 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)
 
virtual G4ParticleDefinitionDiQuarkSplitup (G4ParticleDefinition *decay, G4ParticleDefinition *&created)=0
 
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
 

Private Member Functions

 G4VLongitudinalStringDecay (const G4VLongitudinalStringDecay &right)
 
const G4VLongitudinalStringDecayoperator= (const G4VLongitudinalStringDecay &right)
 
int operator== (const G4VLongitudinalStringDecay &right) const
 
int operator!= (const G4VLongitudinalStringDecay &right) const
 

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 75 of file G4VLongitudinalStringDecay.hh.

◆ pDefPair

Constructor & Destructor Documentation

◆ G4VLongitudinalStringDecay() [1/2]

G4VLongitudinalStringDecay::G4VLongitudinalStringDecay ( )

Definition at line 65 of file G4VLongitudinalStringDecay.cc.

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

◆ ~G4VLongitudinalStringDecay()

G4VLongitudinalStringDecay::~G4VLongitudinalStringDecay ( )
virtual

Definition at line 115 of file G4VLongitudinalStringDecay.cc.

116  {
117  delete hadronizer;
118  }

◆ G4VLongitudinalStringDecay() [2/2]

G4VLongitudinalStringDecay::G4VLongitudinalStringDecay ( const G4VLongitudinalStringDecay right)
private

Member Function Documentation

◆ CalculateHadronTimePosition()

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

Definition at line 516 of file G4VLongitudinalStringDecay.cc.

517  {
518 
519 // `yo-yo` formation time
520 // const G4double kappa = 1.0 * GeV/fermi/4.;
522  for(size_t c1 = 0; c1 < Hadrons->size(); c1++)
523  {
524  G4double SumPz = 0;
525  G4double SumE = 0;
526  for(size_t c2 = 0; c2 < c1; c2++)
527  {
528  SumPz += Hadrons->operator[](c2)->Get4Momentum().pz();
529  SumE += Hadrons->operator[](c2)->Get4Momentum().e();
530  }
531  G4double HadronE = Hadrons->operator[](c1)->Get4Momentum().e();
532  G4double HadronPz = Hadrons->operator[](c1)->Get4Momentum().pz();
533  Hadrons->operator[](c1)->SetFormationTime(
534 (theInitialStringMass - 2.*SumPz + HadronE - HadronPz)/(2.*kappa)/c_light);
535 
536  G4ThreeVector aPosition(0, 0,
537 (theInitialStringMass - 2.*SumE - HadronE + HadronPz)/(2.*kappa));
538  Hadrons->operator[](c1)->SetPosition(aPosition);
539 
540  }
541  }
TCanvas * c2
Definition: plot_hist.C:75
double G4double
Definition: G4Types.hh:76
float c_light
Definition: hepunit.py:257
Here is the call graph for this function:
Here is the caller graph for this function:

◆ ConstructParticle()

void G4VLongitudinalStringDecay::ConstructParticle ( )
protected

◆ CPExcited()

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

Definition at line 308 of file G4VLongitudinalStringDecay.cc.

309 {
310  G4Parton *Left=new G4Parton(*in.GetLeftParton());
311  G4Parton *Right=new G4Parton(*in.GetRightParton());
312  return new G4ExcitedString(Left,Right,in.GetDirection());
313 }
ifstream in
Definition: comparison.C:7
Here is the call graph for this function:
Here is the caller graph for this function:

◆ 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 475 of file G4VLongitudinalStringDecay.cc.

476 {
477 // NeedParticle = +1 for Particle, -1 for Antiparticle
478 
479  if ( AllowDiquarks && G4UniformRand() < DiquarkSuppress )
480  {
481  // Create a Diquark - AntiDiquark pair , first in pair is anti to IsParticle
482  G4int q1 = SampleQuarkFlavor();
483  G4int q2 = SampleQuarkFlavor();
484  G4int spin = (q1 != q2 && G4UniformRand() <= 0.5)? 1 : 3;
485  // convention: quark with higher PDG number is first
486  G4int PDGcode = (std::max(q1,q2) * 1000 + std::min(q1,q2) * 100 + spin) * NeedParticle;
487  return pDefPair (FindParticle(-PDGcode),FindParticle(PDGcode));
488 
489 
490  } else {
491  // Create a Quark - AntiQuark pair, first in pair IsParticle
492  G4int PDGcode=SampleQuarkFlavor()*NeedParticle;
493  return pDefPair (FindParticle(PDGcode),FindParticle(-PDGcode));
494  }
495 
496 }
int G4int
Definition: G4Types.hh:78
#define G4UniformRand()
Definition: Randomize.hh:97
std::pair< G4ParticleDefinition *, G4ParticleDefinition * > pDefPair
G4ParticleDefinition * FindParticle(G4int Encoding)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ DecayResonans()

G4KineticTrackVector* G4VLongitudinalStringDecay::DecayResonans ( G4KineticTrackVector aHadrons)

◆ DiQuarkSplitup()

virtual G4ParticleDefinition* G4VLongitudinalStringDecay::DiQuarkSplitup ( G4ParticleDefinition decay,
G4ParticleDefinition *&  created 
)
protectedpure virtual

Implemented in G4LundStringFragmentation, and G4QGSMFragmentation.

Here is the caller graph for this function:

◆ FindParticle()

G4ParticleDefinition * G4VLongitudinalStringDecay::FindParticle ( G4int  Encoding)
protected

Definition at line 281 of file G4VLongitudinalStringDecay.cc.

282  {
284  if (ptr == NULL)
285  {
286  G4cout << "Particle with encoding "<<Encoding<<" does not exist!!!"<<G4endl;
287  throw G4HadronicException(__FILE__, __LINE__, "Check your particle table");
288  }
289  return ptr;
290  }
G4ParticleDefinition * FindParticle(G4int PDGEncoding)
G4GLOB_DLL std::ostream G4cout
static G4ParticleTable * GetParticleTable()
#define G4endl
Definition: G4ios.hh:61
Here is the call graph for this function:
Here is the caller graph for this function:

◆ FragmentationMass()

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

Definition at line 220 of file G4VLongitudinalStringDecay.cc.

223 {
224  G4double mass;
225  static G4ThreadLocal G4bool NeedInit(true);
226  static G4ThreadLocal std::vector<double> *nomix_G4MT_TLS_ = 0 ; if (!nomix_G4MT_TLS_) nomix_G4MT_TLS_ = new std::vector<double> ; std::vector<double> &nomix = *nomix_G4MT_TLS_;
227  static G4ThreadLocal G4HadronBuilder * minMassHadronizer;
228  if ( NeedInit )
229  {
230  NeedInit = false;
231  nomix.resize(6);
232  for ( G4int i=0; i<6 ; i++ ) nomix[i]=0;
233 
234 // minMassHadronizer=new G4HadronBuilder(pspin_meson,pspin_barion,nomix,nomix);
235  minMassHadronizer=hadronizer;
236  }
237 
238  if ( build==0 ) build=&G4HadronBuilder::BuildLowSpin;
239 
240  G4ParticleDefinition *Hadron1, *Hadron2=0;
241 
242  if (!string->FourQuarkString() )
243  {
244  // spin 0 meson or spin 1/2 barion will be built
245 
246  Hadron1 = (minMassHadronizer->*build)(string->GetLeftParton(),
247  string->GetRightParton());
248 
249 // Uzhi 20.06.2014
250 #ifdef debug_VStringDecay
251  G4cout<<"Quarks at the string ends "<<string->GetLeftParton()->GetParticleName()<<" "<<string->GetRightParton()->GetParticleName()<<G4endl;
252  G4cout<<"(G4VLongitudinalStringDecay) Hadron "<<Hadron1->GetParticleName()<<" "<<Hadron1->GetPDGMass()<<G4endl;
253 #endif
254  mass= (Hadron1)->GetPDGMass();
255  } else
256  {
257  //... string is qq--qqbar: Build two stable hadrons,
258  //... with extra uubar or ddbar quark pair
259  G4int iflc = (G4UniformRand() < 0.5)? 1 : 2;
260  if (string->GetLeftParton()->GetPDGEncoding() < 0) iflc = -iflc;
261 
262  //... theSpin = 4; spin 3/2 baryons will be built
263  Hadron1 = (minMassHadronizer->*build)(string->GetLeftParton(),
264  FindParticle(iflc) );
265  Hadron2 = (minMassHadronizer->*build)(string->GetRightParton(),
266  FindParticle(-iflc) );
267  mass = (Hadron1)->GetPDGMass() + (Hadron2)->GetPDGMass();
268  }
269 
270  if ( pdefs != 0 )
271  { // need to return hadrons as well....
272  pdefs->first = Hadron1;
273  pdefs->second = Hadron2;
274  }
275 
276  return mass;
277 }
#define G4ThreadLocal
Definition: tls.hh:89
int G4int
Definition: G4Types.hh:78
G4ParticleDefinition * GetLeftParton(void) const
const G4String & GetParticleName() const
#define G4UniformRand()
Definition: Randomize.hh:97
G4GLOB_DLL std::ostream G4cout
bool G4bool
Definition: G4Types.hh:79
G4ParticleDefinition * FindParticle(G4int Encoding)
G4bool FourQuarkString(void) const
#define G4endl
Definition: G4ios.hh:61
double G4double
Definition: G4Types.hh:76
G4ParticleDefinition * BuildLowSpin(G4ParticleDefinition *black, G4ParticleDefinition *white)
G4ParticleDefinition * GetRightParton(void) const
Here is the call graph for this function:
Here is the caller graph for this function:

◆ FragmentString()

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

Implemented in G4LundStringFragmentation, and G4QGSMFragmentation.

Here is the caller graph for this function:

◆ GetClusterLoopInterrupt()

G4int G4VLongitudinalStringDecay::GetClusterLoopInterrupt ( )
inlineprotected

◆ GetClusterMass()

G4double G4VLongitudinalStringDecay::GetClusterMass ( )
inlineprotected

Definition at line 169 of file G4VLongitudinalStringDecay.hh.

◆ GetDiquarkBreakProb()

G4double G4VLongitudinalStringDecay::GetDiquarkBreakProb ( )
inlineprotected

Definition at line 167 of file G4VLongitudinalStringDecay.hh.

◆ GetDiquarkSuppress()

G4double G4VLongitudinalStringDecay::GetDiquarkSuppress ( )
inlineprotected

Definition at line 166 of file G4VLongitudinalStringDecay.hh.

◆ 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.

Here is the caller graph for this function:

◆ GetStringTensionParameter()

G4double G4VLongitudinalStringDecay::GetStringTensionParameter ( )
inlineprotected

Definition at line 172 of file G4VLongitudinalStringDecay.hh.

172 {return Kappa;}; // Uzhi 20 June 08
Here is the caller graph for this function:

◆ IsFragmentable()

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

◆ LightFragmentationTest()

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

Definition at line 149 of file G4VLongitudinalStringDecay.cc.

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

◆ operator!=()

int G4VLongitudinalStringDecay::operator!= ( const G4VLongitudinalStringDecay right) const
private

Definition at line 134 of file G4VLongitudinalStringDecay.cc.

135  {
136  throw G4HadronicException(__FILE__, __LINE__, "G4VLongitudinalStringDecay::operator!= forbidden");
137  return true;
138  }

◆ operator=()

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

◆ operator==()

int G4VLongitudinalStringDecay::operator== ( const G4VLongitudinalStringDecay right) const
private

Definition at line 126 of file G4VLongitudinalStringDecay.cc.

127  {
128  throw G4HadronicException(__FILE__, __LINE__, "G4VLongitudinalStringDecay::operator== forbidden");
129  return false;
130  }

◆ QuarkSplitup()

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

Definition at line 404 of file G4VLongitudinalStringDecay.cc.

406 {
407  G4int IsParticle=(decay->GetPDGEncoding()>0) ? -1 : +1; // if we have a quark,
408  // we need antiquark
409  // (or diquark)
410  pDefPair QuarkPair = CreatePartonPair(IsParticle);
411  created = QuarkPair.second;
412  return hadronizer->Build(QuarkPair.first, decay);
413 
414 }
int G4int
Definition: G4Types.hh:78
pDefPair CreatePartonPair(G4int NeedParticle, G4bool AllowDiquarks=true)
std::pair< G4ParticleDefinition *, G4ParticleDefinition * > pDefPair
G4ParticleDefinition * Build(G4ParticleDefinition *black, G4ParticleDefinition *white)
Here is the call graph for this function:
Here is the caller graph for this function:

◆ Sample4Momentum()

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

Implemented in G4LundStringFragmentation, and G4QGSMFragmentation.

Here is the caller graph for this function:

◆ SampleQuarkFlavor()

G4int G4VLongitudinalStringDecay::SampleQuarkFlavor ( void  )

Definition at line 468 of file G4VLongitudinalStringDecay.cc.

469  {
470  return (1 + (int)(G4UniformRand()/StrangeSuppress));
471  }
#define G4UniformRand()
Definition: Randomize.hh:97
Here is the caller graph for this function:

◆ SampleQuarkPt()

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

Definition at line 499 of file G4VLongitudinalStringDecay.cc.

500  {
501  G4double Pt;
502  if ( ptMax < 0 ) {
503  // sample full gaussian
504  Pt = -G4Log(G4UniformRand());
505  } else {
506  // sample in limited range
507  Pt = -G4Log(G4RandFlat::shoot(G4Exp(-sqr(ptMax)/sqr(SigmaQT)), 1.));
508  }
509  Pt = SigmaQT * std::sqrt(Pt);
510  G4double phi = 2.*pi*G4UniformRand();
511  return G4ThreeVector(Pt * std::cos(phi),Pt * std::sin(phi),0);
512  }
ThreeVector shoot(const G4int Ap, const G4int Af)
CLHEP::Hep3Vector G4ThreeVector
#define G4UniformRand()
Definition: Randomize.hh:97
G4double G4Log(G4double x)
Definition: G4Log.hh:230
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
Definition: G4Exp.hh:183
static const double pi
Definition: G4SIunits.hh:74
T sqr(const T &x)
Definition: templates.hh:145
double G4double
Definition: G4Types.hh:76
Here is the call graph for this function:
Here is the caller graph for this function:

◆ SetDiquarkBreakProbability()

void G4VLongitudinalStringDecay::SetDiquarkBreakProbability ( G4double  aValue)

Definition at line 578 of file G4VLongitudinalStringDecay.cc.

579 {
580  if ( PastInitPhase ) {
581  throw G4HadronicException(__FILE__, __LINE__, "4VLongitudinalStringDecay::SetDiquarkBreakProbability after FragmentString() not allowed");
582  } else {
583  DiquarkBreakProb = aValue;
584  }
585 }
Here is the caller graph for this function:

◆ SetDiquarkSuppression()

void G4VLongitudinalStringDecay::SetDiquarkSuppression ( G4double  aValue)

Definition at line 567 of file G4VLongitudinalStringDecay.cc.

568 {
569  if ( PastInitPhase ) {
570  throw G4HadronicException(__FILE__, __LINE__, "4VLongitudinalStringDecay::SetDiquarkSuppression after FragmentString() not allowed");
571  } else {
572  DiquarkSuppress = aValue;
573  }
574 }
Here is the caller graph for this function:

◆ SetMassCut()

void G4VLongitudinalStringDecay::SetMassCut ( G4double  aValue)
protectedvirtual

Definition at line 143 of file G4VLongitudinalStringDecay.cc.

Here is the caller graph for this function:

◆ SetScalarMesonMixings()

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

Definition at line 617 of file G4VLongitudinalStringDecay.cc.

618 {
619  if ( PastInitPhase ) {
620  throw G4HadronicException(__FILE__, __LINE__, "G4VLongitudinalStringDecay::SetScalarMesonMixings after FragmentString() not allowed");
621  } else {
622  if ( aVector.size() < 6 )
623  throw G4HadronicException(__FILE__, __LINE__, "G4VLongitudinalStringDecay::SetScalarMesonMixings( argument Vector too small");
624  scalarMesonMix[0] = aVector[0];
625  scalarMesonMix[1] = aVector[1];
626  scalarMesonMix[2] = aVector[2];
627  scalarMesonMix[3] = aVector[3];
628  scalarMesonMix[4] = aVector[4];
629  scalarMesonMix[5] = aVector[5];
630  delete hadronizer;
633  }
634 }
std::vector< G4double > vectorMesonMix
std::vector< G4double > scalarMesonMix

◆ SetSigmaTransverseMomentum()

void G4VLongitudinalStringDecay::SetSigmaTransverseMomentum ( G4double  aQT)

Definition at line 545 of file G4VLongitudinalStringDecay.cc.

546 {
547  if ( PastInitPhase ) {
548  throw G4HadronicException(__FILE__, __LINE__, "4VLongitudinalStringDecay::SetSigmaTransverseMomentum after FragmentString() not allowed");
549  } else {
550  SigmaQT = aValue;
551  }
552 }

◆ SetSpinThreeHalfBarionProbability()

void G4VLongitudinalStringDecay::SetSpinThreeHalfBarionProbability ( G4double  aValue)

Definition at line 603 of file G4VLongitudinalStringDecay.cc.

604 {
605  if ( PastInitPhase ) {
606  throw G4HadronicException(__FILE__, __LINE__, "G4VLongitudinalStringDecay::SetSpinThreeHalfBarionProbability after FragmentString() not allowed");
607  } else {
608  pspin_barion = aValue;
609  delete hadronizer;
612  }
613 }
std::vector< G4double > vectorMesonMix
std::vector< G4double > scalarMesonMix

◆ SetStrangenessSuppression()

void G4VLongitudinalStringDecay::SetStrangenessSuppression ( G4double  aValue)

Definition at line 556 of file G4VLongitudinalStringDecay.cc.

557 {
558  if ( PastInitPhase ) {
559  throw G4HadronicException(__FILE__, __LINE__, "4VLongitudinalStringDecay::SetStrangenessSuppression after FragmentString() not allowed");
560  } else {
561  StrangeSuppress = aValue;
562  }
563 }
Here is the caller graph for this function:

◆ SetStringTensionParameter()

void G4VLongitudinalStringDecay::SetStringTensionParameter ( G4double  aValue)

Definition at line 659 of file G4VLongitudinalStringDecay.cc.

660 {
661  Kappa = aValue * GeV/fermi;
662 }
static const double GeV
Definition: G4SIunits.hh:214
static const double fermi
Definition: G4SIunits.hh:102
Here is the caller graph for this function:

◆ SetVectorMesonMixings()

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

Definition at line 638 of file G4VLongitudinalStringDecay.cc.

639 {
640  if ( PastInitPhase ) {
641  throw G4HadronicException(__FILE__, __LINE__, "G4VLongitudinalStringDecay::SetVectorMesonMixings after FragmentString() not allowed");
642  } else {
643  if ( aVector.size() < 6 )
644  throw G4HadronicException(__FILE__, __LINE__, "G4VLongitudinalStringDecay::SetVectorMesonMixings( argument Vector too small");
645  vectorMesonMix[0] = aVector[0];
646  vectorMesonMix[1] = aVector[1];
647  vectorMesonMix[2] = aVector[2];
648  vectorMesonMix[3] = aVector[3];
649  vectorMesonMix[4] = aVector[4];
650  vectorMesonMix[5] = aVector[5];
651  delete hadronizer;
654 
655  }
656 }
std::vector< G4double > vectorMesonMix
std::vector< G4double > scalarMesonMix

◆ SetVectorMesonProbability()

void G4VLongitudinalStringDecay::SetVectorMesonProbability ( G4double  aValue)

Definition at line 589 of file G4VLongitudinalStringDecay.cc.

590 {
591  if ( PastInitPhase ) {
592  throw G4HadronicException(__FILE__, __LINE__, "G4VLongitudinalStringDecay::SetVectorMesonProbability after FragmentString() not allowed");
593  } else {
594  pspin_meson = aValue;
595  delete hadronizer;
598  }
599 }
std::vector< G4double > vectorMesonMix
std::vector< G4double > scalarMesonMix

◆ SplitEandP()

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

Implemented in G4LundStringFragmentation, and G4QGSMFragmentation.

Here is the caller graph for this function:

◆ 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 317 of file G4VLongitudinalStringDecay.cc.

320 {
321 // Uzhi 20.06.2014
322 #ifdef debug_VStringDecay
323  G4cout<<G4endl;
324  G4cout<<"Start SplitUP (G4VLongitudinalStringDecay) ========================="<<G4endl;
325  G4cout<<"String partons: " <<string->GetLeftParton()->GetPDGEncoding()<<" "
326  <<string->GetRightParton()->GetPDGEncoding()<<" "
327  <<"Direction " <<string->GetDecayDirection()<<G4endl;
328 #endif
329 
330  //... random choice of string end to use for creating the hadron (decay)
331  G4int SideOfDecay = (G4UniformRand() < 0.5)? 1: -1;
332  if (SideOfDecay < 0)
333  {
334  string->SetLeftPartonStable();
335  } else
336  {
337  string->SetRightPartonStable();
338  }
339 
340  G4ParticleDefinition *newStringEnd;
341  G4ParticleDefinition * HadronDefinition;
342  if (string->DecayIsQuark())
343  {
344  HadronDefinition= QuarkSplitup(string->GetDecayParton(), newStringEnd);
345  } else {
346  HadronDefinition= DiQuarkSplitup(string->GetDecayParton(), newStringEnd);
347  }
348 
349 // Uzhi 20.06.2014
350 #ifdef debug_VStringDecay
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 // Uzhi 20.06.2014
362 #ifdef debug_VStringDecay
363  G4cout<<"An attempt to determine its energy (SplitEandP)"<<G4endl;
364 #endif
365  G4LorentzVector* HadronMomentum=SplitEandP(HadronDefinition, string, newString);
366 
367  delete newString; newString=0;
368 
369  G4KineticTrack * Hadron =0;
370  if ( HadronMomentum != 0 ) {
371 
372 // Uzhi 20.06.2014
373 #ifdef debug_VStringDecay
374  G4cout<<"The attempt was successful"<<G4endl;
375 #endif
377  Hadron = new G4KineticTrack(HadronDefinition, 0,Pos, *HadronMomentum);
378 
379  newString=new G4FragmentingString(*string,newStringEnd,
380  HadronMomentum);
381 
382  delete HadronMomentum;
383  }
384  else
385  {
386 
387 // Uzhi 20.06.2014
388 #ifdef debug_VStringDecay
389  G4cout<<"The attempt was not successful !!!"<<G4endl;
390 #endif
391  }
392 
393 // Uzhi 20.06.2014
394 #ifdef debug_VStringDecay
395  G4cout<<"End SplitUP (G4VLongitudinalStringDecay) ====================="<<G4endl;
396 #endif
397 
398  return Hadron;
399 }
G4ParticleDefinition * QuarkSplitup(G4ParticleDefinition *decay, G4ParticleDefinition *&created)
ush Pos
Definition: deflate.h:89
int G4int
Definition: G4Types.hh:78
G4ParticleDefinition * GetDecayParton() const
const G4String & GetParticleName() const
#define G4UniformRand()
Definition: Randomize.hh:97
G4GLOB_DLL std::ostream G4cout
#define G4endl
Definition: G4ios.hh:61
virtual G4ParticleDefinition * DiQuarkSplitup(G4ParticleDefinition *decay, G4ParticleDefinition *&created)=0
virtual G4LorentzVector * SplitEandP(G4ParticleDefinition *pHadron, G4FragmentingString *string, G4FragmentingString *newString)=0
Here is the call graph for this function:
Here is the caller graph for this function:

◆ StopFragmenting()

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

Member Data Documentation

◆ ClusterLoopInterrupt

G4int G4VLongitudinalStringDecay::ClusterLoopInterrupt
protected

Definition at line 184 of file G4VLongitudinalStringDecay.hh.

◆ ClusterMass

G4double G4VLongitudinalStringDecay::ClusterMass
protected

Definition at line 177 of file G4VLongitudinalStringDecay.hh.

◆ DiquarkBreakProb

G4double G4VLongitudinalStringDecay::DiquarkBreakProb
protected

Definition at line 180 of file G4VLongitudinalStringDecay.hh.

◆ DiquarkSuppress

G4double G4VLongitudinalStringDecay::DiquarkSuppress
protected

Definition at line 179 of file G4VLongitudinalStringDecay.hh.

◆ hadronizer

G4HadronBuilder* G4VLongitudinalStringDecay::hadronizer
protected

Definition at line 185 of file G4VLongitudinalStringDecay.hh.

◆ Kappa

G4double G4VLongitudinalStringDecay::Kappa
protected

Definition at line 194 of file G4VLongitudinalStringDecay.hh.

◆ MassCut

G4double G4VLongitudinalStringDecay::MassCut
protected

Definition at line 172 of file G4VLongitudinalStringDecay.hh.

◆ PastInitPhase

G4bool G4VLongitudinalStringDecay::PastInitPhase
protected

Definition at line 192 of file G4VLongitudinalStringDecay.hh.

◆ pspin_barion

G4double G4VLongitudinalStringDecay::pspin_barion
protected

Definition at line 188 of file G4VLongitudinalStringDecay.hh.

◆ pspin_meson

G4double G4VLongitudinalStringDecay::pspin_meson
protected

Definition at line 187 of file G4VLongitudinalStringDecay.hh.

◆ scalarMesonMix

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

Definition at line 190 of file G4VLongitudinalStringDecay.hh.

◆ SigmaQT

G4double G4VLongitudinalStringDecay::SigmaQT
protected

Definition at line 178 of file G4VLongitudinalStringDecay.hh.

◆ SmoothParam

G4double G4VLongitudinalStringDecay::SmoothParam
protected

Definition at line 181 of file G4VLongitudinalStringDecay.hh.

◆ StrangeSuppress

G4double G4VLongitudinalStringDecay::StrangeSuppress
protected

Definition at line 182 of file G4VLongitudinalStringDecay.hh.

◆ StringLoopInterrupt

G4int G4VLongitudinalStringDecay::StringLoopInterrupt
protected

Definition at line 183 of file G4VLongitudinalStringDecay.hh.

◆ vectorMesonMix

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

Definition at line 189 of file G4VLongitudinalStringDecay.hh.


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