Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
G4VLongitudinalStringDecay.hh
Go to the documentation of this file.
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
36#include "G4DynamicParticle.hh"
37#include "G4KineticTrack.hh"
39#include "G4HadronBuilder.hh"
40#include <vector>
41
42//*****************************************************************************
43
45
47{
48 public:
49
50 G4VLongitudinalStringDecay(const G4String& name = "StringDecay");
52
54
55 private:
56 // not implemented to protect/forbid use
58 const G4VLongitudinalStringDecay & operator=(const G4VLongitudinalStringDecay &right);
59 G4bool operator==(const G4VLongitudinalStringDecay &right) const;
60 G4bool operator!=(const G4VLongitudinalStringDecay &right) const;
61
62 public:
64
67 //struct DeleteString { void operator()(G4ExcitedString* aS){delete aS;} };
68
69 // To set minimal mass of a string. The string with mass above the minimal mass can fragment.
70 void SetMinMasses();
71 void SetMinimalStringMass(const G4FragmentingString * const string);
72 void SetMinimalStringMass2(const G4double aValue);
73
74 protected:
75 // For changing Mass Cut used for selection of very small mass strings
76 virtual void SetMassCut(G4double aValue);
78
79 // For handling a string with very low mass
80 G4KineticTrackVector * ProduceOneHadron(const G4ExcitedString * const theString);
81
82 // To store created quarks or 2 last hadrons
83 typedef std::pair<G4ParticleDefinition*, G4ParticleDefinition*> pDefPair;
84
85 // For creation of hadrons from given quark pair
88
89 // Used by ProduceOneHadron method for estimation of lowest possible mass of
90 // given quark system -- string.
92 Pcreate build=0, pDefPair * pdefs=0);
93
95
96 // For decision on continue or stop string fragmentation
97 virtual G4bool StopFragmenting(const G4FragmentingString * const string)=0;
98 virtual G4bool IsItFragmentable(const G4FragmentingString * const string)=0;
99
100 // If a string can not fragment, make last break into 2 hadrons
102 G4KineticTrackVector * LeftVector,
103 G4KineticTrackVector * RightVector)=0;
104
105 virtual void Sample4Momentum(G4LorentzVector* Mom, G4double Mass,
106 G4LorentzVector* AntiMom, G4double AntiMass,
107 G4double InitialMass)=0;
108
109 // If a string can fragment, do the following:
110
111 // Make a copy of a string
113
114 // Produce a hadron at Splitup of the string
116 G4FragmentingString *&newString)=0;
117
118 // The hadron can be producet at QuarkSplitup or DiQuarkSplitup
120 G4ParticleDefinition *&created);
121
123 G4ParticleDefinition *&created)=0;
124
125 // All of them are going through quak-antiquark pair creation
126 pDefPair CreatePartonPair(G4int NeedParticle, G4bool AllowDiquarks=true);
127
128 public:
129 // For a pair it is needed:
131 G4ThreeVector SampleQuarkPt(G4double ptMax=-1.); // -1. no limit on maxpt.
132
133 protected:
134 // For determination of kinematical properties of the created hadron
136 G4FragmentingString * string,
137 G4FragmentingString * newString )=0;
138
140 G4int PartonEncoding,
141 G4ParticleDefinition* pHadron,
142 G4double Px, G4double Py ) = 0;
143
144 void CalculateHadronTimePosition(G4double theInitialStringMass,
146
147 // Used for some test purposes
149
151 G4bool theGivenSpin, G4int theSpin);
152
153 public:
156 void SetDiquarkSuppression(G4double aValue);
158
160
161 void SetScalarMesonMixings( std::vector<G4double> aVector);
162 void SetVectorMesonMixings( std::vector<G4double> aVector);
163
165
166 void SetProbCCbar(G4double aValue);
167 void SetProbEta_c(G4double aValue);
168 void SetProbBBbar(G4double aValue);
169 void SetProbEta_b(G4double aValue);
170
171 protected:
176
181
183
184 protected:
186 G4double SigmaQT; // sigma_q_t of quark/hadron transverse momentum distribution parameter
187 G4double DiquarkSuppress; // Diquark suppression parameter
188 G4double DiquarkBreakProb; // Diquark breaking probability, qq->h+qq'
192
194
195 std::vector<G4double> pspin_meson;
197 std::vector<G4double> vectorMesonMix;
198 std::vector<G4double> scalarMesonMix;
199
200 G4double ProbCCbar; // Probability of C-Cbar pair creation
201 G4double ProbEta_c; // Mixing of Eta_c and J/Psi
202
203 G4double ProbBBbar; // Probability of B-Bbar pair creation
204 G4double ProbEta_b; // Mixing of Eta_b and Ipsilon_b
205
206 G4double ProbCB; // = ProbCCbar + ProbBBbar
207
209
211
212 G4double Kappa; // String tension parameter
213
214 std::vector<G4ParticleDefinition *> NewParticles;
215
216 public:
217 // ------ For estimation of a minimal string mass ---------------
223
226
227 // ------ An estimated minimal string mass ----------------------
230
231 G4int Qcharge[5]; // quark charges
232 G4int Meson[5][5][7];
234
235 G4int Baryon[5][5][5][4];
237
239
242 /*
243 G4double FFq2q[5][5][2];
244 G4double FFq2qq[5][15][2];
245 G4double FFqq2q[15][5][2];
246 G4double FFqq2qq[15][5][2];
247 */
248
249 // ------ To improve the code structure
253};
254
255//******************************************************************************
256// Class G4VLongitudinalStringDecay
257
258#endif
259
double G4double
Definition: G4Types.hh:83
bool G4bool
Definition: G4Types.hh:86
int G4int
Definition: G4Types.hh:85
virtual G4KineticTrackVector * FragmentString(const G4ExcitedString &theString)=0
std::vector< G4double > scalarMesonMix
G4ThreeVector SampleQuarkPt(G4double ptMax=-1.)
virtual G4bool IsItFragmentable(const G4FragmentingString *const string)=0
void SetSpinThreeHalfBarionProbability(G4double aValue)
std::pair< G4ParticleDefinition *, G4ParticleDefinition * > pDefPair
virtual G4LorentzVector * SplitEandP(G4ParticleDefinition *pHadron, G4FragmentingString *string, G4FragmentingString *newString)=0
G4ParticleDefinition * FindParticle(G4int Encoding)
void SetMinimalStringMass2(const G4double aValue)
virtual G4KineticTrack * Splitup(G4FragmentingString *string, G4FragmentingString *&newString)=0
virtual G4bool SplitLast(G4FragmentingString *string, G4KineticTrackVector *LeftVector, G4KineticTrackVector *RightVector)=0
virtual G4bool StopFragmenting(const G4FragmentingString *const string)=0
G4KineticTrackVector * ProduceOneHadron(const G4ExcitedString *const theString)
std::vector< G4double > vectorMesonMix
G4double PossibleHadronMass(const G4FragmentingString *const string, Pcreate build=0, pDefPair *pdefs=0)
virtual G4ParticleDefinition * QuarkSplitup(G4ParticleDefinition *decay, G4ParticleDefinition *&created)
G4ParticleDefinition * FS_RightHadron[350]
G4HadFinalState * ApplyYourself(const G4HadProjectile &, G4Nucleus &) final
void SetScalarMesonMixings(std::vector< G4double > aVector)
virtual G4ParticleDefinition * DiQuarkSplitup(G4ParticleDefinition *decay, G4ParticleDefinition *&created)=0
virtual G4double GetLightConeZ(G4double zmin, G4double zmax, G4int PartonEncoding, G4ParticleDefinition *pHadron, G4double Px, G4double Py)=0
virtual void SetMassCut(G4double aValue)
void SetDiquarkSuppression(G4double aValue)
void SetStrangenessSuppression(G4double aValue)
virtual void Sample4Momentum(G4LorentzVector *Mom, G4double Mass, G4LorentzVector *AntiMom, G4double AntiMass, G4double InitialMass)=0
G4ParticleDefinition *(G4HadronBuilder::* Pcreate)(G4ParticleDefinition *, G4ParticleDefinition *)
void SetVectorMesonMixings(std::vector< G4double > aVector)
G4ParticleDefinition * FS_LeftHadron[350]
void SetDiquarkBreakProbability(G4double aValue)
pDefPair CreatePartonPair(G4int NeedParticle, G4bool AllowDiquarks=true)
G4ParticleDefinition * CreateHadron(G4int id1, G4int id2, G4bool theGivenSpin, G4int theSpin)
void SetStringTensionParameter(G4double aValue)
std::vector< G4ParticleDefinition * > NewParticles
void CalculateHadronTimePosition(G4double theInitialStringMass, G4KineticTrackVector *)
void SetMinimalStringMass(const G4FragmentingString *const string)
G4ExcitedString * CopyExcited(const G4ExcitedString &string)