ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4VLongitudinalStringDecay.hh
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4VLongitudinalStringDecay.hh
1 //
2 // ********************************************************************
3 // * License and Disclaimer *
4 // * *
5 // * The Geant4 software is copyright of the Copyright Holders of *
6 // * the Geant4 Collaboration. It is provided under the terms and *
7 // * conditions of the Geant4 Software License, included in the file *
8 // * LICENSE and available at http://cern.ch/geant4/license . These *
9 // * include a list of copyright holders. *
10 // * *
11 // * Neither the authors of this software system, nor their employing *
12 // * institutes,nor the agencies providing financial support for this *
13 // * work make any representation or warranty, express or implied, *
14 // * regarding this software system or assume any liability for its *
15 // * use. Please see the license in the file LICENSE and URL above *
16 // * for the full disclaimer and the limitation of liability. *
17 // * *
18 // * This code implementation is the result of the scientific and *
19 // * technical work of the GEANT4 collaboration. *
20 // * By using, copying, modifying or distributing the software (or *
21 // * any work based on the software) you agree to acknowledge its *
22 // * use in resulting scientific publications, and indicate your *
23 // * acceptance of all terms of the Geant4 Software license. *
24 // ********************************************************************
25 //
26 //
27 //
28 // -----------------------------------------------------------------------------
29 // GEANT 4 class implementation file
30 // -----------------------------------------------------------------------------
31 #ifndef G4VLongitudinalStringDecay_h
32 #define G4VLongitudinalStringDecay_h 1
33 
35 #include "G4DynamicParticle.hh"
36 #include "G4KineticTrack.hh"
37 #include "G4KineticTrackVector.hh"
38 #include "G4HadronBuilder.hh"
39 #include <vector>
40 
42 //**************************************************************************************
43 
45 {
46  public:
49 
50  private:
51  // not implemented to protect/forbid use
54  G4bool operator==(const G4VLongitudinalStringDecay &right) const;
55  G4bool operator!=(const G4VLongitudinalStringDecay &right) const;
56 
57  public:
58  virtual G4KineticTrackVector* FragmentString(const G4ExcitedString& theString)=0;
59 
60  void AddNewParticles();
61  void EraseNewParticles();
62  //struct DeleteString { void operator()(G4ExcitedString* aS){delete aS;} };
63 
64  // To set minimal mass of a string. The string with mass above the minimal mass can fragment.
65  void SetMinMasses();
66  void SetMinimalStringMass(const G4FragmentingString * const string);
67  void SetMinimalStringMass2(const G4double aValue);
68 
69  protected:
70  // For changing Mass Cut used for selection of very small mass strings
71  virtual void SetMassCut(G4double aValue);
73 
74  // For handling a string with very low mass
75  G4KineticTrackVector * ProduceOneHadron(const G4ExcitedString * const theString);
76 
77  // To store created quarks or 2 last hadrons
78  typedef std::pair<G4ParticleDefinition*, G4ParticleDefinition*> pDefPair;
79 
80  // For creation of hadrons from given quark pair
83 
84  // Used by ProduceOneHadron method for estimation of lowest possible mass of
85  // given quark system -- string.
86  G4double PossibleHadronMass(const G4FragmentingString * const string,
87  Pcreate build=0, pDefPair * pdefs=0);
88 
90 
91  // For decision on continue or stop string fragmentation
92  virtual G4bool StopFragmenting(const G4FragmentingString * const string)=0;
93  virtual G4bool IsItFragmentable(const G4FragmentingString * const string)=0;
94 
95  // If a string can not fragment, make last break into 2 hadrons
96  virtual G4bool SplitLast(G4FragmentingString * string,
97  G4KineticTrackVector * LeftVector,
98  G4KineticTrackVector * RightVector)=0;
99 
100  virtual void Sample4Momentum(G4LorentzVector* Mom, G4double Mass,
101  G4LorentzVector* AntiMom, G4double AntiMass,
102  G4double InitialMass)=0;
103 
104  // If a string can fragment, do the following:
105 
106  // Make a copy of a string
108 
109  // Produce a hadron at Splitup of the string
110  virtual G4KineticTrack * Splitup(G4FragmentingString *string,
111  G4FragmentingString *&newString)=0;
112 
113  // The hadron can be producet at QuarkSplitup or DiQuarkSplitup
115  G4ParticleDefinition *&created);
116 
118  G4ParticleDefinition *&created)=0;
119 
120  // All of them are going through quak-antiquark pair creation
121  pDefPair CreatePartonPair(G4int NeedParticle, G4bool AllowDiquarks=true);
122 
123  public:
124  // For a pair it is needed:
125  G4int SampleQuarkFlavor(void);
126  G4ThreeVector SampleQuarkPt(G4double ptMax=-1.); // -1. no limit on maxpt.
127 
128  protected:
129  // For determination of kinematical properties of the created hadron
130  virtual G4LorentzVector * SplitEandP(G4ParticleDefinition * pHadron,
131  G4FragmentingString * string,
132  G4FragmentingString * newString )=0;
133 
134  virtual G4double GetLightConeZ(G4double zmin, G4double zmax,
135  G4int PartonEncoding,
136  G4ParticleDefinition* pHadron,
137  G4double Px, G4double Py ) = 0;
138 
139  void CalculateHadronTimePosition(G4double theInitialStringMass,
141 
142  // Used for some test purposes
143  void ConstructParticle();
144 
146  G4bool theGivenSpin, G4int theSpin);
147 
148  public:
150  void SetStrangenessSuppression(G4double aValue);
151  void SetDiquarkSuppression(G4double aValue);
153 
154  void SetVectorMesonProbability(G4double aValue);
156 
157  void SetScalarMesonMixings( std::vector<G4double> aVector);
158  void SetVectorMesonMixings( std::vector<G4double> aVector);
159 
160  void SetStringTensionParameter(G4double aValue);
161 
162  void SetProbCCbar(G4double aValue);
163  void SetProbEta_c(G4double aValue);
164  void SetProbBBbar(G4double aValue);
165  void SetProbEta_b(G4double aValue);
166 
167  protected:
172 
177 
179 
180  protected:
182  G4double SigmaQT; // sigma_q_t of quark/hadron transverse momentum distribution parameter
183  G4double DiquarkSuppress; // Diquark suppression parameter
184  G4double DiquarkBreakProb; // Diquark breaking probability, qq->h+qq'
188 
190 
193  std::vector<G4double> vectorMesonMix;
194  std::vector<G4double> scalarMesonMix;
195 
196  G4double ProbCCbar; // Probability of C-Cbar pair creation
197  G4double ProbEta_c; // Mixing of Eta_c and J/Psi
198 
199  G4double ProbBBbar; // Probability of B-Bbar pair creation
200  G4double ProbEta_b; // Mixing of Eta_b and Ipsilon_b
201 
202  G4double ProbCB; // = ProbCCbar + ProbBBbar
203 
205 
207 
208  G4double Kappa; // String tension parameter
209 
210  std::vector<G4ParticleDefinition *> NewParticles;
211 
212  public:
213  // ------ For estimation of a minimal string mass ---------------
219 
222 
223  // ------ An estimated minimal string mass ----------------------
226 
227  G4int Qcharge[5]; // quark charges
228  G4int Meson[5][5][7];
230 
231  G4int Baryon[5][5][5][4];
232  G4double BaryonWeight[5][5][5][4];
233 
235 
238  /*
239  G4double FFq2q[5][5][2];
240  G4double FFq2qq[5][15][2];
241  G4double FFqq2q[15][5][2];
242  G4double FFqq2qq[15][5][2];
243  */
244 
245  // ------ To improve the code structure
249 };
250 
251 //*************************************************************************************
252 // Class G4VLongitudinalStringDecay
253 
254 #endif
255