Geant4 11.2.2
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4FTFParameters Class Reference

#include <G4FTFParameters.hh>

Public Member Functions

 G4FTFParameters ()
 
 ~G4FTFParameters ()
 
void InitForInteraction (const G4ParticleDefinition *, G4int theA, G4int theZ, G4double s)
 
void SethNcmsEnergy (const G4double s)
 
void SetTotalCrossSection (const G4double Xtotal)
 
void SetElastisCrossSection (const G4double Xelastic)
 
void SetInelasticCrossSection (const G4double Xinelastic)
 
void SetProbabilityOfElasticScatt (const G4double Xtotal, const G4double Xelastic)
 
void SetProbabilityOfElasticScatt (const G4double aValue)
 
void SetProbabilityOfAnnihilation (const G4double aValue)
 
void SetRadiusOfHNinteractions2 (const G4double Radius2)
 
void SetSlope (const G4double Slope)
 
void SetGamma0 (const G4double Gamma0)
 
G4double GammaElastic (const G4double impactsquare)
 
void SetAvaragePt2ofElasticScattering (const G4double aPt2)
 
void SetParams (const G4int ProcN, const G4double A1, const G4double B1, const G4double A2, const G4double B2, const G4double A3, const G4double Atop, const G4double Ymin)
 
void SetDeltaProbAtQuarkExchange (const G4double aValue)
 
void SetProbOfSameQuarkExchange (const G4double aValue)
 
void SetProjMinDiffMass (const G4double aValue)
 
void SetProjMinNonDiffMass (const G4double aValue)
 
void SetProbLogDistrPrD (const G4double aValue)
 
void SetTarMinDiffMass (const G4double aValue)
 
void SetTarMinNonDiffMass (const G4double aValue)
 
void SetAveragePt2 (const G4double aValue)
 
void SetProbLogDistr (const G4double aValue)
 
void SetPt2Kink (const G4double aValue)
 
void SetQuarkProbabilitiesAtGluonSplitUp (const G4double Puubar, const G4double Pddbar, const G4double Pssbar)
 
void SetMaxNumberOfCollisions (const G4double aValue, const G4double bValue)
 
void SetProbOfInteraction (const G4double aValue)
 
void SetCofNuclearDestructionPr (const G4double aValue)
 
void SetCofNuclearDestruction (const G4double aValue)
 
void SetR2ofNuclearDestruction (const G4double aValue)
 
void SetExcitationEnergyPerWoundedNucleon (const G4double aValue)
 
void SetDofNuclearDestruction (const G4double aValue)
 
void SetPt2ofNuclearDestruction (const G4double aValue)
 
void SetMaxPt2ofNuclearDestruction (const G4double aValue)
 
G4double GetTotalCrossSection ()
 
G4double GetElasticCrossSection ()
 
G4double GetInelasticCrossSection ()
 
G4double GetProbabilityOfInteraction (const G4double impactsquare)
 
G4double GetInelasticProbability (const G4double impactsquare)
 
G4double GetProbabilityOfElasticScatt ()
 
G4double GetSlope ()
 
G4double GetProbabilityOfAnnihilation ()
 
G4double GetAvaragePt2ofElasticScattering ()
 
G4double GetProcProb (const G4int ProcN, const G4double y)
 
G4double GetDeltaProbAtQuarkExchange ()
 
G4double GetProbOfSameQuarkExchange ()
 
G4double GetProjMinDiffMass ()
 
G4double GetProjMinNonDiffMass ()
 
G4double GetProbLogDistrPrD ()
 
G4double GetTarMinDiffMass ()
 
G4double GetTarMinNonDiffMass ()
 
G4double GetAveragePt2 ()
 
G4double GetProbLogDistr ()
 
G4double GetPt2Kink ()
 
std::vector< G4doubleGetQuarkProbabilitiesAtGluonSplitUp ()
 
G4double GetMaxNumberOfCollisions ()
 
G4double GetProbOfInteraction ()
 
G4double GetCofNuclearDestructionPr ()
 
G4double GetCofNuclearDestruction ()
 
G4double GetR2ofNuclearDestruction ()
 
G4double GetExcitationEnergyPerWoundedNucleon ()
 
G4double GetDofNuclearDestruction ()
 
G4double GetPt2ofNuclearDestruction ()
 
G4double GetMaxPt2ofNuclearDestruction ()
 

Public Attributes

G4double FTFhNcmsEnergy
 
G4double FTFXtotal
 
G4double FTFXelastic
 
G4double FTFXinelastic
 
G4double FTFXannihilation
 
G4double ProbabilityOfAnnihilation
 
G4double ProbabilityOfElasticScatt
 
G4double RadiusOfHNinteractions2
 
G4double FTFSlope
 
G4double AvaragePt2ofElasticScattering
 
G4double FTFGamma0
 
G4double ProcParams [5][7]
 
G4double DeltaProbAtQuarkExchange
 
G4double ProbOfSameQuarkExchange
 
G4double ProjMinDiffMass
 
G4double ProjMinNonDiffMass
 
G4double ProbLogDistrPrD
 
G4double TarMinDiffMass
 
G4double TarMinNonDiffMass
 
G4double AveragePt2
 
G4double ProbLogDistr
 
G4double Pt2kink
 
std::vector< G4doubleQuarkProbabilitiesAtGluonSplitUp
 
G4double MaxNumberOfCollisions
 
G4double ProbOfInelInteraction
 
G4double CofNuclearDestructionPr
 
G4double CofNuclearDestruction
 
G4double R2ofNuclearDestruction
 
G4double ExcitationEnergyPerWoundedNucleon
 
G4double DofNuclearDestruction
 
G4double Pt2ofNuclearDestruction
 
G4double MaxPt2ofNuclearDestruction
 
G4bool EnableDiffDissociationForBGreater10
 Control over whether to do nucleon-hadron diffractive dissociation or not.
 

Detailed Description

Definition at line 42 of file G4FTFParameters.hh.

Constructor & Destructor Documentation

◆ G4FTFParameters()

G4FTFParameters::G4FTFParameters ( )

Definition at line 63 of file G4FTFParameters.cc.

64{
65 // Set-up alternative sets of FTF parameters (called "tunes").
66 // Note that the very first tune (with indexTune == 0) corresponds to the default
67 // set of parameters, which does not need to be set-up explicitly: that's why
68 // the for loop below starts from 1 and not from 0.
69 // The check whether an alternative tune has been switched on is done at the
70 // level of the G4FTFParamCollection::SetTune method.
71 for ( G4int indexTune = 1; indexTune < G4FTFTunings::sNumberOfTunes; ++indexTune ) {
72 fArrayParCollBaryonProj[indexTune].SetTune(indexTune);
73 fArrayParCollMesonProj[indexTune].SetTune(indexTune);
74 fArrayParCollPionProj[indexTune].SetTune(indexTune);
75 }
76
77 StringMass = new G4LundStringFragmentation; // for estimation of min. mass of diffr. states
78 Reset();
79 csGGinstance =
81 if (!csGGinstance) {
82 csGGinstance = new G4ComponentGGHadronNucleusXsc();
83 }
84
86
87 // Set parameters of a string kink
88 SetPt2Kink( 0.0*GeV*GeV ); // To switch off kinky strings (bad results obtained with 6.0*GeV*GeV)
89 G4double Puubar( 1.0/3.0 ), Pddbar( 1.0/3.0 ), Pssbar( 1.0/3.0 ); // SU(3) symmetry
90 //G4double Puubar( 0.41 ), Pddbar( 0.41 ), Pssbar( 0.18 ); // Broken SU(3) symmetry
91 SetQuarkProbabilitiesAtGluonSplitUp( Puubar, Pddbar, Pssbar );
92}
double G4double
Definition G4Types.hh:83
int G4int
Definition G4Types.hh:85
G4VComponentCrossSection * GetComponentCrossSection(const G4String &name)
static G4CrossSectionDataSetRegistry * Instance()
void SetQuarkProbabilitiesAtGluonSplitUp(const G4double Puubar, const G4double Pddbar, const G4double Pssbar)
void SetPt2Kink(const G4double aValue)
G4bool EnableDiffDissociationForBGreater10
Control over whether to do nucleon-hadron diffractive dissociation or not.
static const G4int sNumberOfTunes
static G4HadronicParameters * Instance()
G4bool EnableDiffDissociationForBGreater10() const

◆ ~G4FTFParameters()

G4FTFParameters::~G4FTFParameters ( )

Definition at line 920 of file G4FTFParameters.cc.

920 {
921 if ( StringMass ) delete StringMass;
922}

Member Function Documentation

◆ GammaElastic()

G4double G4FTFParameters::GammaElastic ( const G4double impactsquare)
inline

Definition at line 231 of file G4FTFParameters.hh.

231 {
232 return ( FTFGamma0 * G4Exp( -FTFSlope * impactsquare ) );
233}
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
Definition G4Exp.hh:180

Referenced by GetInelasticProbability().

◆ GetAvaragePt2ofElasticScattering()

G4double G4FTFParameters::GetAvaragePt2ofElasticScattering ( )
inline

Definition at line 434 of file G4FTFParameters.hh.

434 {
436}
G4double AvaragePt2ofElasticScattering

Referenced by G4ElasticHNScattering::ElasticScattering(), and InitForInteraction().

◆ GetAveragePt2()

G4double G4FTFParameters::GetAveragePt2 ( )
inline

Definition at line 464 of file G4FTFParameters.hh.

464 {
465 return AveragePt2;
466}

Referenced by InitForInteraction().

◆ GetCofNuclearDestruction()

G4double G4FTFParameters::GetCofNuclearDestruction ( )
inline

Definition at line 500 of file G4FTFParameters.hh.

500 {
502}
G4double CofNuclearDestruction

Referenced by InitForInteraction().

◆ GetCofNuclearDestructionPr()

G4double G4FTFParameters::GetCofNuclearDestructionPr ( )
inline

Definition at line 496 of file G4FTFParameters.hh.

496 {
498}
G4double CofNuclearDestructionPr

Referenced by InitForInteraction().

◆ GetDeltaProbAtQuarkExchange()

G4double G4FTFParameters::GetDeltaProbAtQuarkExchange ( )
inline

Definition at line 440 of file G4FTFParameters.hh.

440 {
442}
G4double DeltaProbAtQuarkExchange

Referenced by InitForInteraction().

◆ GetDofNuclearDestruction()

G4double G4FTFParameters::GetDofNuclearDestruction ( )
inline

Definition at line 512 of file G4FTFParameters.hh.

512 {
514}
G4double DofNuclearDestruction

Referenced by InitForInteraction().

◆ GetElasticCrossSection()

G4double G4FTFParameters::GetElasticCrossSection ( )
inline

Definition at line 400 of file G4FTFParameters.hh.

400 {
401 return FTFXelastic;
402}

◆ GetExcitationEnergyPerWoundedNucleon()

G4double G4FTFParameters::GetExcitationEnergyPerWoundedNucleon ( )
inline

Definition at line 508 of file G4FTFParameters.hh.

508 {
510}
G4double ExcitationEnergyPerWoundedNucleon

Referenced by InitForInteraction().

◆ GetInelasticCrossSection()

G4double G4FTFParameters::GetInelasticCrossSection ( )
inline

Definition at line 404 of file G4FTFParameters.hh.

404 {
405 return FTFXinelastic;
406}

◆ GetInelasticProbability()

G4double G4FTFParameters::GetInelasticProbability ( const G4double impactsquare)
inline

Definition at line 424 of file G4FTFParameters.hh.

424 {
425 G4double Gamma = GammaElastic( impactsquare );
426 return 2*Gamma - Gamma*Gamma;
427}
G4double GammaElastic(const G4double impactsquare)

◆ GetMaxNumberOfCollisions()

G4double G4FTFParameters::GetMaxNumberOfCollisions ( )
inline

Definition at line 488 of file G4FTFParameters.hh.

488 {
490}
G4double MaxNumberOfCollisions

◆ GetMaxPt2ofNuclearDestruction()

G4double G4FTFParameters::GetMaxPt2ofNuclearDestruction ( )
inline

Definition at line 520 of file G4FTFParameters.hh.

520 {
522}
G4double MaxPt2ofNuclearDestruction

◆ GetProbabilityOfAnnihilation()

G4double G4FTFParameters::GetProbabilityOfAnnihilation ( )
inline

Definition at line 429 of file G4FTFParameters.hh.

429 {
431}
G4double ProbabilityOfAnnihilation

◆ GetProbabilityOfElasticScatt()

G4double G4FTFParameters::GetProbabilityOfElasticScatt ( )
inline

Definition at line 420 of file G4FTFParameters.hh.

420 {
422}
G4double ProbabilityOfElasticScatt

◆ GetProbabilityOfInteraction()

G4double G4FTFParameters::GetProbabilityOfInteraction ( const G4double impactsquare)
inline

Definition at line 412 of file G4FTFParameters.hh.

412 {
413 if ( RadiusOfHNinteractions2 > impactsquare ) {
414 return 1.0;
415 } else {
416 return 0.0;
417 }
418}
G4double RadiusOfHNinteractions2

Referenced by G4FTFParticipants::GetList().

◆ GetProbLogDistr()

G4double G4FTFParameters::GetProbLogDistr ( )
inline

Definition at line 472 of file G4FTFParameters.hh.

472 {
473 return ProbLogDistr;
474}

Referenced by InitForInteraction().

◆ GetProbLogDistrPrD()

G4double G4FTFParameters::GetProbLogDistrPrD ( )
inline

Definition at line 468 of file G4FTFParameters.hh.

468 {
469 return ProbLogDistrPrD;
470}

Referenced by InitForInteraction().

◆ GetProbOfInteraction()

G4double G4FTFParameters::GetProbOfInteraction ( )
inline

Definition at line 492 of file G4FTFParameters.hh.

492 {
494}
G4double ProbOfInelInteraction

◆ GetProbOfSameQuarkExchange()

G4double G4FTFParameters::GetProbOfSameQuarkExchange ( )
inline

Definition at line 444 of file G4FTFParameters.hh.

444 {
446}
G4double ProbOfSameQuarkExchange

Referenced by InitForInteraction().

◆ GetProcProb()

G4double G4FTFParameters::GetProcProb ( const G4int ProcN,
const G4double y )

Definition at line 904 of file G4FTFParameters.cc.

904 {
905 G4double Prob( 0.0 );
906 if ( y < ProcParams[ProcN][6] ) {
907 Prob = ProcParams[ProcN][5];
908 if (Prob < 0.) Prob=0.;
909 return Prob;
910 }
911 Prob = ProcParams[ProcN][0] * G4Exp( -ProcParams[ProcN][1]*y ) +
912 ProcParams[ProcN][2] * G4Exp( -ProcParams[ProcN][3]*y ) +
913 ProcParams[ProcN][4];
914 if (Prob < 0.) Prob=0.;
915 return Prob;
916}
G4double ProcParams[5][7]

Referenced by G4DiffractiveExcitation::ExciteParticipants().

◆ GetProjMinDiffMass()

G4double G4FTFParameters::GetProjMinDiffMass ( )
inline

◆ GetProjMinNonDiffMass()

G4double G4FTFParameters::GetProjMinNonDiffMass ( )
inline

Definition at line 452 of file G4FTFParameters.hh.

452 {
453 return ProjMinNonDiffMass;
454}
G4double ProjMinNonDiffMass

Referenced by G4DiffractiveExcitation::ExciteParticipants(), and InitForInteraction().

◆ GetPt2Kink()

G4double G4FTFParameters::GetPt2Kink ( )
inline

Definition at line 478 of file G4FTFParameters.hh.

478 {
479 return Pt2kink;
480}

Referenced by G4DiffractiveExcitation::CreateStrings().

◆ GetPt2ofNuclearDestruction()

G4double G4FTFParameters::GetPt2ofNuclearDestruction ( )
inline

Definition at line 516 of file G4FTFParameters.hh.

516 {
518}
G4double Pt2ofNuclearDestruction

Referenced by InitForInteraction().

◆ GetQuarkProbabilitiesAtGluonSplitUp()

std::vector< G4double > G4FTFParameters::GetQuarkProbabilitiesAtGluonSplitUp ( )
inline

Definition at line 482 of file G4FTFParameters.hh.

482 {
484}
std::vector< G4double > QuarkProbabilitiesAtGluonSplitUp

Referenced by G4DiffractiveExcitation::CreateStrings().

◆ GetR2ofNuclearDestruction()

G4double G4FTFParameters::GetR2ofNuclearDestruction ( )
inline

Definition at line 504 of file G4FTFParameters.hh.

504 {
506}
G4double R2ofNuclearDestruction

Referenced by InitForInteraction().

◆ GetSlope()

G4double G4FTFParameters::GetSlope ( )
inline

Definition at line 408 of file G4FTFParameters.hh.

408 {
409 return FTFSlope;
410}

Referenced by InitForInteraction().

◆ GetTarMinDiffMass()

G4double G4FTFParameters::GetTarMinDiffMass ( )
inline

◆ GetTarMinNonDiffMass()

G4double G4FTFParameters::GetTarMinNonDiffMass ( )
inline

Definition at line 460 of file G4FTFParameters.hh.

460 {
461 return TarMinNonDiffMass;
462}

Referenced by G4DiffractiveExcitation::ExciteParticipants(), and InitForInteraction().

◆ GetTotalCrossSection()

G4double G4FTFParameters::GetTotalCrossSection ( )
inline

Definition at line 396 of file G4FTFParameters.hh.

396 {
397 return FTFXtotal;
398}

◆ InitForInteraction()

void G4FTFParameters::InitForInteraction ( const G4ParticleDefinition * particle,
G4int theA,
G4int theZ,
G4double s )

Definition at line 96 of file G4FTFParameters.cc.

98{
99 Reset();
100
101 G4int ProjectilePDGcode = particle->GetPDGEncoding();
102 G4int ProjectileabsPDGcode = std::abs( ProjectilePDGcode );
103 G4double ProjectileMass = particle->GetPDGMass();
104 G4double ProjectileMass2 = ProjectileMass * ProjectileMass;
105
106 G4int ProjectileBaryonNumber( 0 ), AbsProjectileBaryonNumber( 0 ), AbsProjectileCharge( 0 );
107 G4bool ProjectileIsNucleus = false;
108
109 if ( std::abs( particle->GetBaryonNumber() ) > 1 ) { // The projectile is a nucleus
110 ProjectileIsNucleus = true;
111 ProjectileBaryonNumber = particle->GetBaryonNumber();
112 AbsProjectileBaryonNumber = std::abs( ProjectileBaryonNumber );
113 AbsProjectileCharge = std::abs( G4int( particle->GetPDGCharge() ) );
114 if ( ProjectileBaryonNumber > 1 ) {
115 ProjectilePDGcode = 2212; ProjectileabsPDGcode = 2212; // Proton
116 } else {
117 ProjectilePDGcode = -2212; ProjectileabsPDGcode = 2212; // Anti-Proton
118 }
119 ProjectileMass = G4Proton::Proton()->GetPDGMass();
120 ProjectileMass2 = sqr( ProjectileMass );
121 }
122
123 G4double TargetMass = G4Proton::Proton()->GetPDGMass();
124 G4double TargetMass2 = TargetMass * TargetMass;
125
126 G4double Plab = PlabPerParticle;
127 G4double Elab = std::sqrt( Plab*Plab + ProjectileMass2 );
128 G4double KineticEnergy = Elab - ProjectileMass;
129
130 G4double S = ProjectileMass2 + TargetMass2 + 2.0*TargetMass*Elab;
131
132 #ifdef debugFTFparams
133 G4cout << "--------- FTF Parameters --------------" << G4endl << "Proj Plab "
134 << ProjectilePDGcode << " " << Plab << G4endl << "Mass KinE " << ProjectileMass
135 << " " << KineticEnergy << G4endl << " A Z " << theA << " " << theZ << G4endl;
136 #endif
137
138 G4double Ylab, Xtotal( 0.0 ), Xelastic( 0.0 ), Xannihilation( 0.0 );
139 G4int NumberOfTargetNucleons;
140
141 Ylab = 0.5 * G4Log( (Elab + Plab)/(Elab - Plab) );
142
143 G4double ECMSsqr = S/GeV/GeV;
144 G4double SqrtS = std::sqrt( S )/GeV;
145
146 #ifdef debugFTFparams
147 G4cout << "Sqrt(s) " << SqrtS << G4endl;
148 #endif
149
150 TargetMass /= GeV; TargetMass2 /= (GeV*GeV);
151 ProjectileMass /= GeV; ProjectileMass2 /= (GeV*GeV);
152
153 Plab /= GeV;
154 G4double Xftf = 0.0;
155
156 G4int NumberOfTargetProtons = theZ;
157 G4int NumberOfTargetNeutrons = theA - theZ;
158 NumberOfTargetNucleons = NumberOfTargetProtons + NumberOfTargetNeutrons;
159
160 // ---------- hadron projectile ----------------
161 if ( AbsProjectileBaryonNumber <= 1 ) { // Projectile is hadron or baryon
162
163 // Interaction on P
164 G4double xTtP = csGGinstance->GetTotalIsotopeCrossSection( particle, KineticEnergy, 1, 1);
165 G4double xElP = csGGinstance->GetElasticIsotopeCrossSection(particle, KineticEnergy, 1, 1);
166
167 // Interaction on N
168 G4double xTtN = csGGinstance->GetTotalIsotopeCrossSection( particle, KineticEnergy, 0, 1);
169 G4double xElN = csGGinstance->GetElasticIsotopeCrossSection(particle, KineticEnergy, 0, 1);
170
171 // Average properties of h+N interactions
172 Xtotal = ( NumberOfTargetProtons * xTtP + NumberOfTargetNeutrons * xTtN ) / NumberOfTargetNucleons;
173 Xelastic = ( NumberOfTargetProtons * xElP + NumberOfTargetNeutrons * xElN ) / NumberOfTargetNucleons;
174 Xannihilation = 0.0;
175
176 Xtotal /= millibarn;
177 Xelastic /= millibarn;
178
179 #ifdef debugFTFparams
180 G4cout<<"Estimated cross sections (total and elastic) of h+N interactions "<<Xtotal<<" "<<Xelastic<<" (mb)"<<G4endl;
181 #endif
182 }
183
184 // ---------- nucleus projectile ----------------
185 if ( ProjectileIsNucleus && ProjectileBaryonNumber > 1 ) {
186
187 #ifdef debugFTFparams
188 G4cout<<"Projectile is a nucleus: A and Z - "<<ProjectileBaryonNumber<<" "<<ProjectileCharge<<G4endl;
189 #endif
190
192 // Interaction on P
193 G4double XtotPP = csGGinstance->GetTotalIsotopeCrossSection(Proton, KineticEnergy, 1, 1);
194 G4double XelPP = csGGinstance->GetElasticIsotopeCrossSection(Proton, KineticEnergy, 1, 1);
195
197 // Interaction on N
198 G4double XtotPN = csGGinstance->GetTotalIsotopeCrossSection(Neutron, KineticEnergy, 0, 1);
199 G4double XelPN = csGGinstance->GetElasticIsotopeCrossSection(Neutron, KineticEnergy, 0, 1);
200
201 #ifdef debugFTFparams
202 G4cout << "XsPP (total and elastic) " << XtotPP/millibarn << " " << XelPP/millibarn <<" (mb)"<< G4endl
203 << "XsPN (total and elastic) " << XtotPN/millibarn << " " << XelPN/millibarn <<" (mb)"<< G4endl;
204 #endif
205
206 Xtotal = (
207 AbsProjectileCharge * NumberOfTargetProtons * XtotPP +
208 ( AbsProjectileBaryonNumber - AbsProjectileCharge ) *
209 NumberOfTargetNeutrons * XtotPP
210 +
211 ( AbsProjectileCharge * NumberOfTargetNeutrons +
212 ( AbsProjectileBaryonNumber - AbsProjectileCharge ) *
213 NumberOfTargetProtons ) * XtotPN
214 ) / ( AbsProjectileBaryonNumber * NumberOfTargetNucleons );
215 Xelastic= (
216 AbsProjectileCharge * NumberOfTargetProtons * XelPP +
217 ( AbsProjectileBaryonNumber - AbsProjectileCharge ) *
218 NumberOfTargetNeutrons * XelPP
219 +
220 ( AbsProjectileCharge * NumberOfTargetNeutrons +
221 ( AbsProjectileBaryonNumber - AbsProjectileCharge ) *
222 NumberOfTargetProtons ) * XelPN
223 ) / ( AbsProjectileBaryonNumber * NumberOfTargetNucleons );
224
225 Xannihilation = 0.0;
226 Xtotal /= millibarn;
227 Xelastic /= millibarn;
228 }
229
230 // ---------- The projectile is anti-baryon or anti-nucleus ----------------
231 // anti Sigma^0_c anti Delta^-
232 if ( ProjectilePDGcode >= -4112 && ProjectilePDGcode <= -1114 ) {
233 // Only non-strange and strange baryons are considered
234
235 #ifdef debugFTFparams
236 G4cout<<"Projectile is a anti-baryon or anti-nucleus - "<<ProjectileBaryonNumber<<" "<<ProjectileCharge<<G4endl;
237 G4cout<<"(Only non-strange and strange baryons are considered)"<<G4endl;
238 #endif
239
240 G4double X_a( 0.0 ), X_b( 0.0 ), X_c( 0.0 ), X_d( 0.0 );
241 G4double MesonProdThreshold = ProjectileMass + TargetMass +
242 ( 2.0 * 0.14 + 0.016 ); // 2 Mpi + DeltaE;
243
244 if ( PlabPerParticle < 40.0*MeV ) { // Low energy limits. Projectile at rest.
245 Xtotal = 1512.9; // mb
246 Xelastic = 473.2; // mb
247 X_a = 625.1; // mb
248 X_b = 9.780; // mb
249 X_c = 49.989; // mb
250 X_d = 6.614; // mb
251 } else { // Total and elastic cross section of PbarP interactions a'la Arkhipov
252 G4double LogS = G4Log( ECMSsqr / 33.0625 );
253 G4double Xasmpt = 36.04 + 0.304*LogS*LogS; // mb
254 LogS = G4Log( SqrtS / 20.74 );
255 G4double Basmpt = 11.92 + 0.3036*LogS*LogS; // GeV^(-2)
256 G4double R0 = std::sqrt( 0.40874044*Xasmpt - Basmpt ); // GeV^(-1)
257
258 G4double FlowF = SqrtS / std::sqrt( ECMSsqr*ECMSsqr + ProjectileMass2*ProjectileMass2 +
259 TargetMass2*TargetMass2 - 2.0*ECMSsqr*ProjectileMass2
260 - 2.0*ECMSsqr*TargetMass2
261 - 2.0*ProjectileMass2*TargetMass2 );
262
263 Xtotal = Xasmpt * ( 1.0 + 13.55*FlowF/R0/R0/R0*
264 (1.0 - 4.47/SqrtS + 12.38/ECMSsqr - 12.43/SqrtS/ECMSsqr) ); // mb
265
266 Xasmpt = 4.4 + 0.101*LogS*LogS; // mb
267 Xelastic = Xasmpt * ( 1.0 + 59.27*FlowF/R0/R0/R0*
268 (1.0 - 6.95/SqrtS + 23.54/ECMSsqr - 25.34/SqrtS/ECMSsqr ) ); // mb
269
270 X_a = 25.0*FlowF; // mb, 3-shirts diagram
271
272 if ( SqrtS < MesonProdThreshold ) {
273 X_b = 3.13 + 140.0*G4Pow::GetInstance()->powA( MesonProdThreshold - SqrtS, 2.5 ); // mb anti-quark-quark annihilation
274 Xelastic -= 3.0*X_b; // Xel-X(PbarP->NNbar)
275 } else {
276 X_b = 6.8/SqrtS; // mb anti-quark-quark annihilation
277 Xelastic -= 3.0*X_b; // Xel-X(PbarP->NNbar)
278 }
279
280 X_c = 2.0*FlowF*sqr( ProjectileMass + TargetMass )/ECMSsqr; // mb rearrangement
281
282 X_d = 23.3/ECMSsqr; // mb anti-quark-quark string creation
283 }
284
285 G4double Xann_on_P( 0.0), Xann_on_N( 0.0 );
286
287 if ( ProjectilePDGcode == -2212 ) { // Pbar+P/N
288 Xann_on_P = X_a + X_b*5.0 + X_c*5.0 + X_d*6.0;
289 Xann_on_N = X_a + X_b*4.0 + X_c*4.0 + X_d*4.0;
290 } else if ( ProjectilePDGcode == -2112 ) { // NeutrBar+P/N
291 Xann_on_P = X_a + X_b*4.0 + X_c*4.0 + X_d*4.0;
292 Xann_on_N = X_a + X_b*5.0 + X_c*5.0 + X_d*6.0;
293 } else if ( ProjectilePDGcode == -3122 ) { // LambdaBar+P/N
294 Xann_on_P = X_a + X_b*3.0 + X_c*3.0 + X_d*2.0;
295 Xann_on_N = X_a + X_b*3.0 + X_c*3.0 + X_d*2.0;
296 } else if ( ProjectilePDGcode == -3112 ) { // Sigma-Bar+P/N
297 Xann_on_P = X_a + X_b*2.0 + X_c*2.0 + X_d*0.0;
298 Xann_on_N = X_a + X_b*4.0 + X_c*4.0 + X_d*2.0;
299 } else if ( ProjectilePDGcode == -3212 ) { // Sigma0Bar+P/N
300 Xann_on_P = X_a + X_b*3.0 + X_c*3.0 + X_d*2.0;
301 Xann_on_N = X_a + X_b*3.0 + X_c*3.0 + X_d*2.0;
302 } else if ( ProjectilePDGcode == -3222 ) { // Sigma+Bar+P/N
303 Xann_on_P = X_a + X_b*4.0 + X_c*4.0 + X_d*2.0;
304 Xann_on_N = X_a + X_b*2.0 + X_c*2.0 + X_d*0.0;
305 } else if ( ProjectilePDGcode == -3312 ) { // Xi-Bar+P/N
306 Xann_on_P = X_a + X_b*1.0 + X_c*1.0 + X_d*0.0;
307 Xann_on_N = X_a + X_b*2.0 + X_c*2.0 + X_d*0.0;
308 } else if ( ProjectilePDGcode == -3322 ) { // Xi0Bar+P/N
309 Xann_on_P = X_a + X_b*2.0 + X_c*2.0 + X_d*0.0;
310 Xann_on_N = X_a + X_b*1.0 + X_c*1.0 + X_d*0.0;
311 } else if ( ProjectilePDGcode == -3334 ) { // Omega-Bar+P/N
312 Xann_on_P = X_a + X_b*0.0 + X_c*0.0 + X_d*0.0;
313 Xann_on_N = X_a + X_b*0.0 + X_c*0.0 + X_d*0.0;
314 } else {
315 G4cout << "Unknown anti-baryon for FTF annihilation" << G4endl;
316 }
317
318 //G4cout << "Sum " << Xann_on_P << G4endl;
319
320 if ( ! ProjectileIsNucleus ) { // Projectile is anti-baryon
321 Xannihilation = ( NumberOfTargetProtons * Xann_on_P + NumberOfTargetNeutrons * Xann_on_N )
322 / NumberOfTargetNucleons;
323 } else { // Projectile is a nucleus
324 Xannihilation = (
325 ( AbsProjectileCharge * NumberOfTargetProtons +
326 ( AbsProjectileBaryonNumber - AbsProjectileCharge ) *
327 NumberOfTargetNeutrons ) * Xann_on_P
328 +
329 ( AbsProjectileCharge * NumberOfTargetNeutrons +
330 ( AbsProjectileBaryonNumber - AbsProjectileCharge ) *
331 NumberOfTargetProtons ) * Xann_on_N
332 ) / ( AbsProjectileBaryonNumber * NumberOfTargetNucleons );
333 }
334
335 //G4double Xftf = 0.0;
336 MesonProdThreshold = ProjectileMass + TargetMass + (0.14 + 0.08); // Mpi + DeltaE
337 if ( SqrtS > MesonProdThreshold ) {
338 Xftf = 36.0 * ( 1.0 - MesonProdThreshold/SqrtS );
339 }
340
341 Xtotal = Xelastic + Xannihilation + Xftf;
342
343 #ifdef debugFTFparams
344 G4cout << "Plab Xtotal, Xelastic Xinel Xftf " << Plab << " " << Xtotal << " " << Xelastic
345 << " " << Xtotal - Xelastic << " " << Xtotal - Xelastic - Xannihilation << " (mb)"<< G4endl
346 << "Plab Xelastic/Xtotal, Xann/Xin " << Plab << " " << Xelastic/Xtotal << " "
347 << Xannihilation/(Xtotal - Xelastic) << G4endl;
348 #endif
349
350 }
351
352 if ( Xtotal == 0.0 ) { // Projectile is undefined, Nucleon assumed
353
355 // Interaction on P
356 G4double XtotPP = csGGinstance->GetTotalIsotopeCrossSection(Proton, KineticEnergy, 1, 1);
357 G4double XelPP = csGGinstance->GetElasticIsotopeCrossSection(Proton, KineticEnergy, 1, 1);
358
359 // Interaction on N
360 G4double XtotPN = csGGinstance->GetTotalIsotopeCrossSection(Proton, KineticEnergy, 0, 1);
361 G4double XelPN = csGGinstance->GetElasticIsotopeCrossSection(Proton, KineticEnergy, 0, 1);
362
363 Xtotal = ( NumberOfTargetProtons * XtotPP + NumberOfTargetNeutrons * XtotPN )
364 / NumberOfTargetNucleons;
365 Xelastic = ( NumberOfTargetProtons * XelPP + NumberOfTargetNeutrons * XelPN )
366 / NumberOfTargetNucleons;
367 Xannihilation = 0.0;
368 Xtotal /= millibarn;
369 Xelastic /= millibarn;
370 };
371
372 // Geometrical parameters
373 SetTotalCrossSection( Xtotal );
374 SetElastisCrossSection( Xelastic );
375 SetInelasticCrossSection( Xtotal - Xelastic );
376
377 // Interactions with elastic and inelastic collisions
378 SetProbabilityOfElasticScatt( Xtotal, Xelastic );
379
380 SetRadiusOfHNinteractions2( Xtotal/pi/10.0 );
381
382 if ( ( Xtotal - Xelastic ) == 0.0 ) {
384 } else {
385 SetProbabilityOfAnnihilation( Xannihilation / (Xtotal - Xelastic) );
386 }
387
388 if(Xelastic > 0.0) {
389 SetSlope( Xtotal*Xtotal/16.0/pi/Xelastic/0.3894 );// Slope parameter of elastic scattering
390 // (GeV/c)^(-2))
391 // Parameters of elastic scattering
392 // Gaussian parametrization of elastic scattering amplitude assumed
393 SetAvaragePt2ofElasticScattering( 1.0/( Xtotal*Xtotal/16.0/pi/Xelastic/0.3894 )*GeV*GeV );
394 } else {
395 SetSlope(1.0);
397 }
398 SetGamma0( GetSlope()*Xtotal/10.0/2.0/pi );
399
400 G4double Xinel = Xtotal - Xelastic;
401
402 #ifdef debugFTFparams
403 G4cout<< "Slope of hN elastic scattering" << GetSlope() << G4endl;
404 G4cout << "AvaragePt2ofElasticScattering " << GetAvaragePt2ofElasticScattering() << G4endl;
405 G4cout<<"Parameters of excitation for projectile "<<ProjectilePDGcode<< G4endl;
406 #endif
407
408 if ( (ProjectilePDGcode == 2212) || (ProjectilePDGcode == 2112) ) { // Projectile is proton or neutron
409
410 const G4int indexTune = G4FTFTunings::Instance()->GetIndexTune( particle, KineticEnergy );
411
412 // A process probability is parameterized as Prob = A_1*exp(-A_2*y) + A_3*exp(-A_4*y) + A_top
413 // y is a rapidity of a partcle in the target nucleus. Ymin is a minimal rapidity below it X=0
414
415 // Proc# A1 B1 A2 B2 A3 Atop Ymin
416 /* original hadr-string-diff-V10-03-07 (similar to 10.3.x)
417 SetParams( 0, 13.71, 1.75, -214.5, 4.25, 0.0, 0.5 , 1.1 ); // Qexchange without Exc.
418 SetParams( 1, 25.0, 1.0, -50.34, 1.5 , 0.0, 0.0 , 1.4 ); // Qexchange with Exc.
419 SetParams( 2, 6.0/Xinel, 0.0 ,-6.0/Xinel*16.28, 3.0 , 0.0, 0.0 , 0.93); // Projectile diffraction
420 SetParams( 3, 6.0/Xinel, 0.0 ,-6.0/Xinel*16.28, 3.0 , 0.0, 0.0 , 0.93); // Target diffraction
421 SetParams( 4, 1.0, 0.0 , -2.01 , 0.5 , 0.0, 0.0 , 1.4 ); // Qexchange with Exc. Additional multiplier
422 */
423
424 // Proc#
425 SetParams( 0, fArrayParCollBaryonProj[indexTune].GetProc0A1(),
426 fArrayParCollBaryonProj[indexTune].GetProc0B1(),
427 fArrayParCollBaryonProj[indexTune].GetProc0A2(),
428 fArrayParCollBaryonProj[indexTune].GetProc0B2(),
429 fArrayParCollBaryonProj[indexTune].GetProc0A3(),
430 fArrayParCollBaryonProj[indexTune].GetProc0Atop(),
431 fArrayParCollBaryonProj[indexTune].GetProc0Ymin() ); // Qexchange without Exc.
432 SetParams( 1, fArrayParCollBaryonProj[indexTune].GetProc1A1(),
433 fArrayParCollBaryonProj[indexTune].GetProc1B1(),
434 fArrayParCollBaryonProj[indexTune].GetProc1A2(),
435 fArrayParCollBaryonProj[indexTune].GetProc1B2(),
436 fArrayParCollBaryonProj[indexTune].GetProc1A3(),
437 fArrayParCollBaryonProj[indexTune].GetProc1Atop(),
438 fArrayParCollBaryonProj[indexTune].GetProc1Ymin() ); // Qexchange with Exc.
439 if ( Xinel > 0.0 ) {
440 SetParams( 2, 6.0/Xinel, 0.0, -6.0/Xinel*16.28, 3.0, 0.0, 0.0, 0.93 ); // Projectile diffraction
441 SetParams( 3, 6.0/Xinel, 0.0, -6.0/Xinel*16.28, 3.0, 0.0, 0.0, 0.93 ); // Target diffraction
442
443 SetParams( 4, fArrayParCollBaryonProj[indexTune].GetProc4A1(),
444 fArrayParCollBaryonProj[indexTune].GetProc4B1(),
445 fArrayParCollBaryonProj[indexTune].GetProc4A2(),
446 fArrayParCollBaryonProj[indexTune].GetProc4B2(),
447 fArrayParCollBaryonProj[indexTune].GetProc4A3(),
448 fArrayParCollBaryonProj[indexTune].GetProc4Atop(),
449 fArrayParCollBaryonProj[indexTune].GetProc4Ymin() ); // Qexchange with Exc. Additional multiplier
450 } else { // if Xinel=0., zero everything out (obviously)
451 SetParams( 2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 );
452 SetParams( 3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 );
453 SetParams( 4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 );
454 }
455
456 if ( (AbsProjectileBaryonNumber > 10 || NumberOfTargetNucleons > 10) && !EnableDiffDissociationForBGreater10 ) {
457 // It is not decided what to do with diffraction dissociation in Had-Nucl and Nucl-Nucl interactions
458 // For the moment both ProjDiffDisso & TgtDiffDisso for A > 10 are set to false,
459 // so both projectile and target diffraction are turned OFF
460 if ( ! fArrayParCollBaryonProj[indexTune].IsProjDiffDissociation() )
461 SetParams( 2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -100.0 ); // Projectile diffraction
462 if ( ! fArrayParCollBaryonProj[indexTune].IsTgtDiffDissociation() )
463 SetParams( 3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, -100.0 ); // Target diffraction
464 }
465
466 SetDeltaProbAtQuarkExchange( fArrayParCollBaryonProj[indexTune].GetDeltaProbAtQuarkExchange() );
467
468 if ( NumberOfTargetNucleons > 26 ) {
470 } else {
471 SetProbOfSameQuarkExchange( fArrayParCollBaryonProj[indexTune].GetProbOfSameQuarkExchange() );
472 }
473
474 SetProjMinDiffMass( fArrayParCollBaryonProj[indexTune].GetProjMinDiffMass() ); // GeV
475 SetProjMinNonDiffMass( fArrayParCollBaryonProj[indexTune].GetProjMinNonDiffMass() ); // GeV
476
477 SetTarMinDiffMass( fArrayParCollBaryonProj[indexTune].GetTgtMinDiffMass() ); // GeV
478 SetTarMinNonDiffMass( fArrayParCollBaryonProj[indexTune].GetTgtMinNonDiffMass() ); // GeV
479
480 SetAveragePt2( fArrayParCollBaryonProj[indexTune].GetAveragePt2() ); // GeV^2
481 SetProbLogDistrPrD( fArrayParCollBaryonProj[indexTune].GetProbLogDistrPrD() );
482 SetProbLogDistr( fArrayParCollBaryonProj[indexTune].GetProbLogDistr() );
483
484 } else if ( ProjectilePDGcode == -2212 || ProjectilePDGcode == -2112 ) { // Projectile is anti_proton or anti_neutron
485
486 // Below, in the call to the G4FTFTunings::GetIndexTune method, we pass the proton
487 // as projectile, instead of the real one, because for switching on/off diffraction
488 // we assume the same treatment for anti_proton/anti_neutron as for proton/neutron,
489 // whereas all other parameters for anti_proton/anti_neutron are hardwired.
490 const G4int indexTune = G4FTFTunings::Instance()->GetIndexTune( G4Proton::Definition(), KineticEnergy );
491
492 // Proc# A1 B1 A2 B2 A3 Atop Ymin
493 SetParams( 0, 0.0 , 0.0 , 0.0 , 0.0 , 0.0, 0.0 , 1000.0 ); // Qexchange without Exc.
494 SetParams( 1, 0.0 , 0.0 , 0.0 , 0.0 , 0.0, 0.0 , 1000.0 ); // Qexchange with Exc.
495 if ( Xinel > 0.) {
496 SetParams( 2, 6.0/Xinel, 0.0 ,-6.0/Xinel*16.28, 3.0 , 0.0, 0.0 , 0.93 ); // Projectile diffraction
497 SetParams( 3, 6.0/Xinel, 0.0 ,-6.0/Xinel*16.28, 3.0 , 0.0, 0.0 , 0.93 ); // Target diffraction
498 SetParams( 4, 1.0, 0.0 , 0.0, 0.0 , 0.0, 0.0 , 0.93 ); // Qexchange with Exc. Additional multiply
499 } else {
500 SetParams( 2, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 );
501 SetParams( 3, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 );
502 SetParams( 4, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0 );
503 }
504
505 if ( AbsProjectileBaryonNumber > 10 || NumberOfTargetNucleons > 10 ) {
506 // It is not decided what to do with diffraction dissociation in Had-Nucl and Nucl-Nucl interactions
507 // For the moment both ProjDiffDisso & TgtDiffDisso are set to false,
508 // so both projectile and target diffraction are turned OFF
509 if ( ! fArrayParCollBaryonProj[indexTune].IsProjDiffDissociation() )
510 SetParams( 2, 0.0, 0.0 , 0.0 , 0.0 , 0.0, 0.0 , -100.0 ); // Projectile diffraction
511 if ( ! fArrayParCollBaryonProj[indexTune].IsTgtDiffDissociation() )
512 SetParams( 3, 0.0, 0.0 , 0.0 , 0.0 , 0.0, 0.0 , -100.0 ); // Target diffraction
513 }
514
517 SetProjMinDiffMass( ProjectileMass + 0.22 ); // GeV
518 SetProjMinNonDiffMass( ProjectileMass + 0.22 ); // GeV
519 SetTarMinDiffMass( TargetMass + 0.22 ); // GeV
520 SetTarMinNonDiffMass( TargetMass + 0.22 ); // GeV
521 SetAveragePt2( 0.3 ); // GeV^2
522 SetProbLogDistrPrD( 0.55 );
523 SetProbLogDistr( 0.55 );
524
525 } else if ( ProjectileabsPDGcode == 211 || ProjectilePDGcode == 111 ) { // Projectile is Pion
526
527 const G4int indexTune = G4FTFTunings::Instance()->GetIndexTune( particle, KineticEnergy );
528
529 // Proc# A1 B1 A2 B2 A3 Atop Ymin
530 /* --> original code
531 SetParams( 0, 150.0, 1.8 , -247.3, 2.3, 0., 1. , 2.3 );
532 SetParams( 1, 5.77, 0.6 , -5.77, 0.8, 0., 0. , 0.0 );
533 SetParams( 2, 2.27, 0.5 , -98052.0, 4.0, 0., 0. , 3.0 );
534 SetParams( 3, 7.0, 0.9, -85.28, 1.9, 0.08, 0. , 2.2 );
535 SetParams( 4, 1.0, 0.0 , -11.02, 1.0, 0.0, 0. , 2.4 ); // Qexchange with Exc. Additional multiply
536 */
537 // Proc#
538 SetParams( 0, fArrayParCollPionProj[indexTune].GetProc0A1(),
539 fArrayParCollPionProj[indexTune].GetProc0B1(),
540 fArrayParCollPionProj[indexTune].GetProc0A2(),
541 fArrayParCollPionProj[indexTune].GetProc0B2(),
542 fArrayParCollPionProj[indexTune].GetProc0A3(),
543 fArrayParCollPionProj[indexTune].GetProc0Atop(),
544 fArrayParCollPionProj[indexTune].GetProc0Ymin() ); // Qexchange without Exc.
545 SetParams( 1, fArrayParCollPionProj[indexTune].GetProc1A1(),
546 fArrayParCollPionProj[indexTune].GetProc1B1(),
547 fArrayParCollPionProj[indexTune].GetProc1A2(),
548 fArrayParCollPionProj[indexTune].GetProc1B2(),
549 fArrayParCollPionProj[indexTune].GetProc1A3(),
550 fArrayParCollPionProj[indexTune].GetProc1Atop(),
551 fArrayParCollPionProj[indexTune].GetProc1Ymin() ); // Qexchange with Exc.
552 SetParams( 2, fArrayParCollPionProj[indexTune].GetProc2A1(),
553 fArrayParCollPionProj[indexTune].GetProc2B1(),
554 fArrayParCollPionProj[indexTune].GetProc2A2(),
555 fArrayParCollPionProj[indexTune].GetProc2B2(),
556 fArrayParCollPionProj[indexTune].GetProc2A3(),
557 fArrayParCollPionProj[indexTune].GetProc2Atop(),
558 fArrayParCollPionProj[indexTune].GetProc2Ymin() ); // Projectile diffraction
559 SetParams( 3, fArrayParCollPionProj[indexTune].GetProc3A1(),
560 fArrayParCollPionProj[indexTune].GetProc3B1(),
561 fArrayParCollPionProj[indexTune].GetProc3A2(),
562 fArrayParCollPionProj[indexTune].GetProc3B2(),
563 fArrayParCollPionProj[indexTune].GetProc3A3(),
564 fArrayParCollPionProj[indexTune].GetProc3Atop(),
565 fArrayParCollPionProj[indexTune].GetProc3Ymin() ); // Target diffraction
566 SetParams( 4, fArrayParCollPionProj[indexTune].GetProc4A1(),
567 fArrayParCollPionProj[indexTune].GetProc4B1(),
568 fArrayParCollPionProj[indexTune].GetProc4A2(),
569 fArrayParCollPionProj[indexTune].GetProc4B2(),
570 fArrayParCollPionProj[indexTune].GetProc4A3(),
571 fArrayParCollPionProj[indexTune].GetProc4Atop(),
572 fArrayParCollPionProj[indexTune].GetProc4Ymin() ); // Qexchange with Exc. Additional multiply
573
574 // NOTE: how can it be |ProjectileBaryonNumber| > 10 if projectile is a pion ???
575 //
576 if ( AbsProjectileBaryonNumber > 10 || NumberOfTargetNucleons > 10 ) {
577 if ( ! fArrayParCollPionProj[indexTune].IsProjDiffDissociation() )
578 SetParams( 2, 0.0 , 0.0 , 0.0 , 0.0 , 0.0, 0.0 , -100.0 ); // Projectile diffraction
579 if ( ! fArrayParCollPionProj[indexTune].IsTgtDiffDissociation() )
580 SetParams( 3, 0.0 , 0.0 , 0.0 , 0.0 , 0.0, 0.0 , -100.0 ); // Target diffraction
581 }
582
583 /* original code -->
584 SetDeltaProbAtQuarkExchange( 0.56 );
585 SetProjMinDiffMass( 1.0 ); // GeV
586 SetProjMinNonDiffMass( 1.0 ); // GeV
587 SetTarMinDiffMass( 1.16 ); // GeV
588 SetTarMinNonDiffMass( 1.16 ); // GeV
589 SetAveragePt2( 0.3 ); // GeV^2
590 SetProbLogDistrPrD( 0.55 );
591 SetProbLogDistr( 0.55 );
592 */
593
594 // JVY update, Aug.8, 2018 --> Feb.14, 2019
595 //
596 SetDeltaProbAtQuarkExchange( fArrayParCollPionProj[indexTune].GetDeltaProbAtQuarkExchange() );
597 SetProjMinDiffMass( fArrayParCollPionProj[indexTune].GetProjMinDiffMass() ); // GeV
598 SetProjMinNonDiffMass( fArrayParCollPionProj[indexTune].GetProjMinNonDiffMass() ); // GeV
599 SetTarMinDiffMass( fArrayParCollPionProj[indexTune].GetTgtMinDiffMass() ); // GeV
600 SetTarMinNonDiffMass( fArrayParCollPionProj[indexTune].GetTgtMinNonDiffMass() ); // GeV
601 SetAveragePt2( fArrayParCollPionProj[indexTune].GetAveragePt2() ); // GeV^2
602 SetProbLogDistrPrD( fArrayParCollPionProj[indexTune].GetProbLogDistrPrD() );
603 SetProbLogDistr( fArrayParCollPionProj[indexTune].GetProbLogDistr() );
604
605 // ---> end update
606
607 } else if ( ProjectileabsPDGcode == 321 || ProjectileabsPDGcode == 311 ||
608 ProjectilePDGcode == 130 || ProjectilePDGcode == 310 ) { // Projectile is Kaon
609
610 // Proc# A1 B1 A2 B2 A3 Atop Ymin
611 SetParams( 0, 60.0 , 2.5 , 0.0 , 0.0 , 0.0, 0.0 , -100.0 ); // Qexchange without Exc.
612 SetParams( 1, 6.0 , 1.0 , -24.33 , 2.0 , 0.0, 0.0 , 1.40 ); // Qexchange with Exc.
613 SetParams( 2, 2.76, 1.2 , -22.5 , 2.7 ,0.04, 0.0 , 1.40 ); // Projectile diffraction
614 SetParams( 3, 1.09, 0.5 , -8.88 , 2. ,0.05, 0.0 , 1.40 ); // Target diffraction
615 SetParams( 4, 1.0, 0.0 , 0.0 , 0.0 , 0.0, 0.0 , 0.93 ); // Qexchange with Exc. Additional multiply
616 if ( AbsProjectileBaryonNumber > 10 || NumberOfTargetNucleons > 10 ) {
617 SetParams( 2, 0.0 , 0.0 , 0.0 , 0.0 , 0.0, 0.0 , -100.0 ); // Projectile diffraction
618 SetParams( 3, 0.0 , 0.0 , 0.0 , 0.0 , 0.0, 0.0 , -100.0 ); // Target diffraction
619 }
620
622 SetProjMinDiffMass( 0.7 ); // GeV
623 SetProjMinNonDiffMass( 0.7 ); // GeV
624 SetTarMinDiffMass( 1.16 ); // GeV
625 SetTarMinNonDiffMass( 1.16 ); // GeV
626 SetAveragePt2( 0.3 ); // GeV^2
627 SetProbLogDistrPrD( 0.55 );
628 SetProbLogDistr( 0.55 );
629
630 } else { // Projectile is not p, n, Pi0, Pi+, Pi-, K+, K-, K0 or their anti-particles
631
632 if ( ProjectileabsPDGcode > 1000 ) { // The projectile is a baryon as P or N
633 // Proc# A1 B1 A2 B2 A3 Atop Ymin
634 SetParams( 0, 13.71, 1.75, -30.69, 3.0 , 0.0, 1.0 , 0.93 ); // Qexchange without Exc.
635 SetParams( 1, 25.0, 1.0, -50.34, 1.5 , 0.0, 0.0 , 1.4 ); // Qexchange with Exc.
636 if ( Xinel > 0.) {
637 SetParams( 2, 6.0/Xinel, 0.0 ,-6.0/Xinel*16.28, 3.0 , 0.0, 0.0 , 0.93); // Projectile diffraction
638 SetParams( 3, 6.0/Xinel, 0.0 ,-6.0/Xinel*16.28, 3.0 , 0.0, 0.0 , 0.93); // Target diffraction
639 SetParams( 4, 1.0, 0.0 , -2.01 , 0.5 , 0.0, 0.0 , 1.4 ); // Qexchange with Exc. Additional multiply
640 } else {
641 SetParams( 2, 0.0, 0.0 ,0.0, 0.0 , 0.0, 0.0 , 0.0);
642 SetParams( 3, 0.0, 0.0 ,0.0, 0.0 , 0.0, 0.0 , 0.0);
643 SetParams( 4, 0.0, 0.0 ,0.0, 0.0 , 0.0, 0.0 , 0.0);
644 }
645
646 } else { // The projectile is a meson as K+-0
647 // Proc# A1 B1 A2 B2 A3 Atop Ymin
648 SetParams( 0, 60.0 , 2.5 , 0.0 , 0.0 , 0.0, 0.0 , -100.0 ); // Qexchange without Exc.
649 SetParams( 1, 6.0 , 1.0 , -24.33 , 2.0 , 0.0, 0.0 , 1.40 ); // Qexchange with Exc.
650 SetParams( 2, 2.76, 1.2 , -22.5 , 2.7 ,0.04, 0.0 , 1.40 ); // Projectile diffraction
651 SetParams( 3, 1.09, 0.5 , -8.88 , 2. ,0.05, 0.0 , 1.40 ); // Target diffraction
652 SetParams( 4, 1.0, 0.0 , 0.0 , 0.0 , 0.0, 0.0 , 0.93 ); // Qexchange with Exc. Additional multiply
653 }
654
655 if ( AbsProjectileBaryonNumber > 10 || NumberOfTargetNucleons > 10 ) {
656 SetParams( 2, 0.0 , 0.0 , 0.0 , 0.0 , 0.0, 0.0 , -100.0 ); // Projectile diffraction
657 SetParams( 3, 0.0 , 0.0 , 0.0 , 0.0 , 0.0, 0.0 , -100.0 ); // Target diffraction
658 }
659
662
663 SetProjMinDiffMass( GetMinMass(particle)/GeV );
664 SetProjMinNonDiffMass( GetMinMass(particle)/GeV );
665
667 SetTarMinDiffMass( GetMinMass(Neutron)/GeV );
668 SetTarMinNonDiffMass( GetMinMass(Neutron)/GeV );
669
670 SetAveragePt2( 0.3 ); // GeV^2
671 SetProbLogDistrPrD( 0.55 );
672 SetProbLogDistr( 0.55 );
673
674 }
675
676 #ifdef debugFTFparams
677 G4cout<<"DeltaProbAtQuarkExchange "<< GetDeltaProbAtQuarkExchange() << G4endl;
678 G4cout<<"ProbOfSameQuarkExchange "<< GetProbOfSameQuarkExchange() << G4endl;
679 G4cout<<"ProjMinDiffMass "<< GetProjMinDiffMass()/GeV <<" GeV"<< G4endl;
680 G4cout<<"ProjMinNonDiffMass "<< GetProjMinNonDiffMass() <<" GeV"<< G4endl;
681 G4cout<<"TarMinDiffMass "<< GetTarMinDiffMass() <<" GeV"<< G4endl;
682 G4cout<<"TarMinNonDiffMass "<< GetTarMinNonDiffMass() <<" GeV"<< G4endl;
683 G4cout<<"AveragePt2 "<< GetAveragePt2() <<" GeV^2"<< G4endl;
684 G4cout<<"ProbLogDistrPrD "<< GetProbLogDistrPrD() << G4endl;
685 G4cout<<"ProbLogDistrTrD "<< GetProbLogDistr() << G4endl;
686 #endif
687
688 // Set parameters of nuclear destruction
689
690 if ( ProjectileabsPDGcode < 1000 ) { // Meson projectile
691
692 const G4int indexTune = G4FTFTunings::Instance()->GetIndexTune( particle, KineticEnergy );
693
694 SetMaxNumberOfCollisions( Plab, 2.0 ); // 3.0 )
695 //
696 // target destruction
697 //
698 /* original code --->
699 SetCofNuclearDestruction( 0.00481*G4double(NumberOfTargetNucleons)*
700 G4Exp( 4.0*(Ylab - 2.1) )/( 1.0 + G4Exp( 4.0*(Ylab - 2.1) ) ) );
701
702 SetR2ofNuclearDestruction( 1.5*fermi*fermi );
703 SetDofNuclearDestruction( 0.3 );
704 SetPt2ofNuclearDestruction( ( 0.035 + 0.04*G4Exp( 4.0*(Ylab - 2.5) )/
705 ( 1.0 + G4Exp( 4.0*(Ylab - 2.5) ) ) )*GeV*GeV );
706 SetMaxPt2ofNuclearDestruction( 1.0*GeV*GeV );
707 SetExcitationEnergyPerWoundedNucleon( 40.0*MeV );
708 */
709 double coeff = fArrayParCollMesonProj[indexTune].GetNuclearTgtDestructP1();
710 //
711 // NOTE (JVY): Set this switch to false/true on line 138
712 //
713 if ( fArrayParCollMesonProj[indexTune].IsNuclearTgtDestructP1_ADEP() )
714 {
715 coeff *= G4double(NumberOfTargetNucleons);
716 }
717 double exfactor = G4Exp( fArrayParCollMesonProj[indexTune].GetNuclearTgtDestructP2()
718 * (Ylab-fArrayParCollMesonProj[indexTune].GetNuclearTgtDestructP3()) );
719 coeff *= exfactor;
720 coeff /= ( 1.+ exfactor );
721
723
724 SetR2ofNuclearDestruction( fArrayParCollMesonProj[indexTune].GetR2ofNuclearDestruct() );
725 SetDofNuclearDestruction( fArrayParCollMesonProj[indexTune].GetDofNuclearDestruct() );
726 coeff = fArrayParCollMesonProj[indexTune].GetPt2NuclearDestructP2();
727 exfactor = G4Exp( fArrayParCollMesonProj[indexTune].GetPt2NuclearDestructP3()
728 * (Ylab-fArrayParCollMesonProj[indexTune].GetPt2NuclearDestructP4()) );
729 coeff *= exfactor;
730 coeff /= ( 1. + exfactor );
731 SetPt2ofNuclearDestruction( (fArrayParCollMesonProj[indexTune].GetPt2NuclearDestructP1()+coeff)*CLHEP::GeV*CLHEP::GeV );
732
733 SetMaxPt2ofNuclearDestruction( fArrayParCollMesonProj[indexTune].GetMaxPt2ofNuclearDestruct() );
734 SetExcitationEnergyPerWoundedNucleon( fArrayParCollMesonProj[indexTune].GetExciEnergyPerWoundedNucleon() );
735
736 } else if ( ProjectilePDGcode == -2212 || ProjectilePDGcode == -2112 ) { // for anti-baryon projectile
737
738 SetMaxNumberOfCollisions( Plab, 2.0 );
739
740 SetCofNuclearDestruction( 0.00481*G4double(NumberOfTargetNucleons)*
741 G4Exp( 4.0*(Ylab - 2.1) )/( 1.0 + G4Exp( 4.0*(Ylab - 2.1) ) ) );
742 SetR2ofNuclearDestruction( 1.5*fermi*fermi );
744 SetPt2ofNuclearDestruction( ( 0.035 + 0.04*G4Exp( 4.0*(Ylab - 2.5) )/
745 ( 1.0 + G4Exp( 4.0*(Ylab - 2.5) ) ) )*GeV*GeV );
746 SetMaxPt2ofNuclearDestruction( 1.0*GeV*GeV );
748 if ( Plab < 2.0 ) { // 2 GeV/c
749 // For slow anti-baryon we have to garanty putting on mass-shell
751 SetR2ofNuclearDestruction( 1.5*fermi*fermi ); // this is equivalent to setting a few line above
752 // is it even necessary ?
754 SetPt2ofNuclearDestruction( 0.035*GeV*GeV );
755 SetMaxPt2ofNuclearDestruction( 0.04*GeV*GeV );
756 }
757
758 } else { // Projectile baryon assumed
759
760 // Below, in the call to the G4FTFTunings::GetIndexTune method, we pass the proton
761 // as projectile, instead of the real one, because for the treatment of nuclear
762 // destruction, we assume for this category of hadron projectiles the same treatment
763 // as for "baryon".
764 const G4int indexTune = G4FTFTunings::Instance()->GetIndexTune( G4Proton::Definition(), KineticEnergy );
765
766 // NOTE (JVY) FIXME !!! Will decide later how/if to make this one configurable...
767 //
768 SetMaxNumberOfCollisions( Plab, 2.0 );
769
770 // projectile destruction - does NOT really matter for particle projectile, only for a nucleus projectile
771 //
772 double coeff = 0.;
773 coeff = fArrayParCollBaryonProj[indexTune].GetNuclearProjDestructP1();
774 //
775 // NOTE (JVY): Set this switch to false/true on line 136
776 //
777 if ( fArrayParCollBaryonProj[indexTune].IsNuclearProjDestructP1_NBRNDEP() )
778 {
779 coeff *= G4double(AbsProjectileBaryonNumber);
780 }
781 double exfactor = G4Exp( fArrayParCollBaryonProj[indexTune].GetNuclearProjDestructP2()*
782 (Ylab-fArrayParCollBaryonProj[indexTune].GetNuclearProjDestructP3()) );
783 coeff *= exfactor;
784 coeff /= ( 1.+ exfactor );
786
787 // target desctruction
788 //
789 coeff = fArrayParCollBaryonProj[indexTune].GetNuclearTgtDestructP1();
790 //
791 // NOTE (JVY): Set this switch to false/true on line 138
792 //
793 if ( fArrayParCollBaryonProj[indexTune].IsNuclearTgtDestructP1_ADEP() )
794 {
795 coeff *= G4double(NumberOfTargetNucleons);
796 }
797 exfactor = G4Exp( fArrayParCollBaryonProj[indexTune].GetNuclearTgtDestructP2()*
798 (Ylab-fArrayParCollBaryonProj[indexTune].GetNuclearTgtDestructP3()) );
799 coeff *= exfactor;
800 coeff /= ( 1.+ exfactor );
802
803 SetR2ofNuclearDestruction( fArrayParCollBaryonProj[indexTune].GetR2ofNuclearDestruct() );
804 SetDofNuclearDestruction( fArrayParCollBaryonProj[indexTune].GetDofNuclearDestruct() );
805
806 coeff = fArrayParCollBaryonProj[indexTune].GetPt2NuclearDestructP2();
807 exfactor = G4Exp( fArrayParCollBaryonProj[indexTune].GetPt2NuclearDestructP3()*
808 (Ylab-fArrayParCollBaryonProj[indexTune].GetPt2NuclearDestructP4()) );
809 coeff *= exfactor;
810 coeff /= ( 1. + exfactor );
811 SetPt2ofNuclearDestruction( (fArrayParCollBaryonProj[indexTune].GetPt2NuclearDestructP1()+coeff)*CLHEP::GeV*CLHEP::GeV );
812
813 SetMaxPt2ofNuclearDestruction( fArrayParCollBaryonProj[indexTune].GetMaxPt2ofNuclearDestruct() );
814 SetExcitationEnergyPerWoundedNucleon( fArrayParCollBaryonProj[indexTune].GetExciEnergyPerWoundedNucleon() );
815
816 }
817
818 #ifdef debugFTFparams
819 G4cout<<"CofNuclearDestructionPr "<< GetCofNuclearDestructionPr() << G4endl;
820 G4cout<<"CofNuclearDestructionTr "<< GetCofNuclearDestruction() << G4endl;
821 G4cout<<"R2ofNuclearDestruction "<< GetR2ofNuclearDestruction()/fermi/fermi <<" fermi^2"<< G4endl;
822 G4cout<<"DofNuclearDestruction "<< GetDofNuclearDestruction() << G4endl;
823 G4cout<<"Pt2ofNuclearDestruction "<< GetPt2ofNuclearDestruction()/GeV/GeV <<" GeV^2"<< G4endl;
824 G4cout<<"ExcitationEnergyPerWoundedNucleon "<< GetExcitationEnergyPerWoundedNucleon() <<" MeV"<< G4endl;
825 #endif
826
827 //SetCofNuclearDestruction( 0.47*G4Exp( 2.0*(Ylab - 2.5) )/( 1.0 + G4Exp( 2.0*(Ylab - 2.5) ) ) );
828 //SetPt2ofNuclearDestruction( ( 0.035 + 0.1*G4Exp( 4.0*(Ylab - 3.0) )/( 1.0 + G4Exp( 4.0*(Ylab - 3.0) ) ) )*GeV*GeV );
829
830 //SetMagQuarkExchange( 120.0 ); // 210.0 PipP
831 //SetSlopeQuarkExchange( 2.0 );
832 //SetDeltaProbAtQuarkExchange( 0.6 );
833 //SetProjMinDiffMass( 0.7 ); // GeV 1.1
834 //SetProjMinNonDiffMass( 0.7 ); // GeV
835 //SetProbabilityOfProjDiff( 0.0); // 0.85*G4Pow::GetInstance()->powA( s/GeV/GeV, -0.5 ) ); // 40/32 X-dif/X-inel
836 //SetTarMinDiffMass( 1.1 ); // GeV
837 //SetTarMinNonDiffMass( 1.1 ); // GeV
838 //SetProbabilityOfTarDiff( 0.0 ); // 0.85*G4Pow::GetInstance()->powA( s/GeV/GeV, -0.5 ) ); // 40/32 X-dif/X-inel
839
840 //SetAveragePt2( 0.0 ); // GeV^2 0.3
841 //------------------------------------
842 //SetProbabilityOfElasticScatt( 1.0, 1.0); //(Xtotal, Xelastic);
843 //SetProbabilityOfProjDiff( 1.0*0.62*G4Pow::GetInstance()->powA( s/GeV/GeV, -0.51 ) ); // 0->1
844 //SetProbabilityOfTarDiff( 4.0*0.62*G4Pow::GetInstance()->powA( s/GeV/GeV, -0.51 ) ); // 2->4
845 //SetAveragePt2( 0.3 ); // (0.15)
846 //SetAvaragePt2ofElasticScattering( 0.0 );
847
848 //SetMaxNumberOfCollisions( Plab, 6.0 ); //(4.0*(Plab + 0.01), Plab); // 6.0 );
849 //SetAveragePt2( 0.15 );
850 //SetCofNuclearDestruction(-1.);//( 0.75 ); // (0.25)
851 //SetExcitationEnergyPerWoundedNucleon(0.);//( 30.0*MeV ); // (75.0*MeV)
852 //SetDofNuclearDestruction(0.);//( 0.2 ); //0.4 // 0.3 0.5
853
854 /*
855 SetAveragePt2(0.3);
856 SetCofNuclearDestructionPr(0.);
857 SetCofNuclearDestruction(0.); //( 0.5 ); (0.25)
858 SetExcitationEnergyPerWoundedNucleon(0.); // 30.0*MeV; (75.0*MeV)
859 SetDofNuclearDestruction(0.); // 0.2; 0.4; 0.3; 0.5
860 SetPt2ofNuclearDestruction(0.); //(2.*0.075*GeV*GeV); ( 0.3*GeV*GeV ); (0.168*GeV*GeV)
861 */
862
863 //SetExcitationEnergyPerWoundedNucleon(0.001);
864 //SetPt2Kink( 0.0*GeV*GeV );
865
866 //SetRadiusOfHNinteractions2( Xtotal/pi/10.0 /2.);
867 //SetRadiusOfHNinteractions2( (Xtotal - Xelastic)/pi/10.0 );
868 //SetProbabilityOfElasticScatt( 1.0, 0.0);
869 /*
870 G4cout << "Pt2 " << GetAveragePt2()<<" "<<GetAveragePt2()/GeV/GeV<<G4endl;
871 G4cout << "Cnd " << GetCofNuclearDestruction() << G4endl;
872 G4cout << "Dnd " << GetDofNuclearDestruction() << G4endl;
873 G4cout << "Pt2 " << GetPt2ofNuclearDestruction()/GeV/GeV << G4endl;
874 */
875
876}
G4double S(G4double temp)
G4double G4Log(G4double x)
Definition G4Log.hh:227
bool G4bool
Definition G4Types.hh:86
#define G4endl
Definition G4ios.hh:67
G4GLOB_DLL std::ostream G4cout
void SetTarMinNonDiffMass(const G4double aValue)
void SetProjMinDiffMass(const G4double aValue)
G4double GetProbLogDistrPrD()
G4double GetCofNuclearDestructionPr()
void SetTotalCrossSection(const G4double Xtotal)
void SetExcitationEnergyPerWoundedNucleon(const G4double aValue)
G4double GetAveragePt2()
void SetProbabilityOfElasticScatt(const G4double Xtotal, const G4double Xelastic)
void SetElastisCrossSection(const G4double Xelastic)
G4double GetPt2ofNuclearDestruction()
G4double GetProbLogDistr()
void SetMaxPt2ofNuclearDestruction(const G4double aValue)
G4double GetProjMinNonDiffMass()
G4double GetAvaragePt2ofElasticScattering()
void SetSlope(const G4double Slope)
G4double GetTarMinDiffMass()
void SetDeltaProbAtQuarkExchange(const G4double aValue)
G4double GetTarMinNonDiffMass()
void SetAvaragePt2ofElasticScattering(const G4double aPt2)
void SetTarMinDiffMass(const G4double aValue)
void SetProjMinNonDiffMass(const G4double aValue)
void SetCofNuclearDestructionPr(const G4double aValue)
void SetR2ofNuclearDestruction(const G4double aValue)
void SetProbLogDistrPrD(const G4double aValue)
void SetGamma0(const G4double Gamma0)
void SetAveragePt2(const G4double aValue)
G4double GetDeltaProbAtQuarkExchange()
G4double GetExcitationEnergyPerWoundedNucleon()
void SetProbabilityOfAnnihilation(const G4double aValue)
void SetDofNuclearDestruction(const G4double aValue)
G4double GetProjMinDiffMass()
G4double GetProbOfSameQuarkExchange()
G4double GetDofNuclearDestruction()
void SetRadiusOfHNinteractions2(const G4double Radius2)
void SetParams(const G4int ProcN, const G4double A1, const G4double B1, const G4double A2, const G4double B2, const G4double A3, const G4double Atop, const G4double Ymin)
void SetPt2ofNuclearDestruction(const G4double aValue)
G4double GetR2ofNuclearDestruction()
G4double GetCofNuclearDestruction()
void SetProbLogDistr(const G4double aValue)
void SetCofNuclearDestruction(const G4double aValue)
void SetMaxNumberOfCollisions(const G4double aValue, const G4double bValue)
void SetProbOfSameQuarkExchange(const G4double aValue)
void SetInelasticCrossSection(const G4double Xinelastic)
static G4FTFTunings * Instance()
G4int GetIndexTune(const G4ParticleDefinition *particleDef, const G4double ekin) const
static G4Neutron * Neutron()
Definition G4Neutron.cc:101
static G4Pow * GetInstance()
Definition G4Pow.cc:41
G4double powA(G4double A, G4double y) const
Definition G4Pow.hh:230
static G4Proton * Definition()
Definition G4Proton.cc:45
static G4Proton * Proton()
Definition G4Proton.cc:90
virtual G4double GetTotalIsotopeCrossSection(const G4ParticleDefinition *, G4double kinEnergy, G4int, G4int)=0
virtual G4double GetElasticIsotopeCrossSection(const G4ParticleDefinition *, G4double kinEnergy, G4int, G4int)=0
T sqr(const T &x)
Definition templates.hh:128

Referenced by G4FTFModel::Init().

◆ SetAvaragePt2ofElasticScattering()

void G4FTFParameters::SetAvaragePt2ofElasticScattering ( const G4double aPt2)
inline

Definition at line 283 of file G4FTFParameters.hh.

283 {
285}

Referenced by InitForInteraction().

◆ SetAveragePt2()

void G4FTFParameters::SetAveragePt2 ( const G4double aValue)
inline

Definition at line 323 of file G4FTFParameters.hh.

323 {
324 AveragePt2 = aValue*CLHEP::GeV*CLHEP::GeV;
325}

Referenced by InitForInteraction().

◆ SetCofNuclearDestruction()

void G4FTFParameters::SetCofNuclearDestruction ( const G4double aValue)
inline

Definition at line 371 of file G4FTFParameters.hh.

371 {
372 CofNuclearDestruction = aValue;
373}

Referenced by InitForInteraction().

◆ SetCofNuclearDestructionPr()

void G4FTFParameters::SetCofNuclearDestructionPr ( const G4double aValue)
inline

Definition at line 367 of file G4FTFParameters.hh.

367 {
369}

Referenced by InitForInteraction().

◆ SetDeltaProbAtQuarkExchange()

void G4FTFParameters::SetDeltaProbAtQuarkExchange ( const G4double aValue)
inline

Definition at line 299 of file G4FTFParameters.hh.

299 {
301}

Referenced by InitForInteraction().

◆ SetDofNuclearDestruction()

void G4FTFParameters::SetDofNuclearDestruction ( const G4double aValue)
inline

Definition at line 383 of file G4FTFParameters.hh.

383 {
384 DofNuclearDestruction = aValue;
385}

Referenced by InitForInteraction().

◆ SetElastisCrossSection()

void G4FTFParameters::SetElastisCrossSection ( const G4double Xelastic)
inline

Definition at line 245 of file G4FTFParameters.hh.

245 {
246 FTFXelastic = Xelastic;
247}

Referenced by InitForInteraction().

◆ SetExcitationEnergyPerWoundedNucleon()

void G4FTFParameters::SetExcitationEnergyPerWoundedNucleon ( const G4double aValue)
inline

Definition at line 379 of file G4FTFParameters.hh.

379 {
381}

Referenced by InitForInteraction().

◆ SetGamma0()

void G4FTFParameters::SetGamma0 ( const G4double Gamma0)
inline

Definition at line 278 of file G4FTFParameters.hh.

278 {
279 FTFGamma0 = Gamma0;
280}

Referenced by InitForInteraction().

◆ SethNcmsEnergy()

void G4FTFParameters::SethNcmsEnergy ( const G4double s)
inline

Definition at line 235 of file G4FTFParameters.hh.

235 {
237}

◆ SetInelasticCrossSection()

void G4FTFParameters::SetInelasticCrossSection ( const G4double Xinelastic)
inline

Definition at line 249 of file G4FTFParameters.hh.

249 {
250 FTFXinelastic = Xinelastic;
251}

Referenced by InitForInteraction().

◆ SetMaxNumberOfCollisions()

void G4FTFParameters::SetMaxNumberOfCollisions ( const G4double aValue,
const G4double bValue )
inline

Definition at line 350 of file G4FTFParameters.hh.

351 {
352 if ( Plab > Pbound ) {
353 MaxNumberOfCollisions = Plab/Pbound;
354 SetProbOfInteraction( -1.0 );
355 } else {
356 //MaxNumberOfCollisions = -1.0;
357 //SetProbOfInteraction( G4Exp( 0.25*(Plab-Pbound) ) );
359 SetProbOfInteraction( -1.0 );
360 }
361}
void SetProbOfInteraction(const G4double aValue)

Referenced by InitForInteraction().

◆ SetMaxPt2ofNuclearDestruction()

void G4FTFParameters::SetMaxPt2ofNuclearDestruction ( const G4double aValue)
inline

Definition at line 391 of file G4FTFParameters.hh.

391 {
393}

Referenced by InitForInteraction().

◆ SetParams()

void G4FTFParameters::SetParams ( const G4int ProcN,
const G4double A1,
const G4double B1,
const G4double A2,
const G4double B2,
const G4double A3,
const G4double Atop,
const G4double Ymin )
inline

Definition at line 289 of file G4FTFParameters.hh.

292 {
293 ProcParams[ProcN][0] = A1; ProcParams[ProcN][1] = B1;
294 ProcParams[ProcN][2] = A2; ProcParams[ProcN][3] = B2;
295 ProcParams[ProcN][4] = A3;
296 ProcParams[ProcN][5] = Atop; ProcParams[ProcN][6] = Ymin;
297}

Referenced by InitForInteraction().

◆ SetProbabilityOfAnnihilation()

void G4FTFParameters::SetProbabilityOfAnnihilation ( const G4double aValue)
inline

Definition at line 266 of file G4FTFParameters.hh.

266 {
268}

Referenced by InitForInteraction().

◆ SetProbabilityOfElasticScatt() [1/2]

void G4FTFParameters::SetProbabilityOfElasticScatt ( const G4double aValue)
inline

Definition at line 262 of file G4FTFParameters.hh.

262 {
264}

◆ SetProbabilityOfElasticScatt() [2/2]

void G4FTFParameters::SetProbabilityOfElasticScatt ( const G4double Xtotal,
const G4double Xelastic )
inline

Definition at line 253 of file G4FTFParameters.hh.

254 {
255 if ( Xtotal == 0.0 ) {
257 } else {
258 ProbabilityOfElasticScatt = Xelastic / Xtotal;
259 }
260}

Referenced by G4FTFModel::Init(), and InitForInteraction().

◆ SetProbLogDistr()

void G4FTFParameters::SetProbLogDistr ( const G4double aValue)
inline

Definition at line 331 of file G4FTFParameters.hh.

331 {
332 ProbLogDistr = aValue;
333}

Referenced by InitForInteraction().

◆ SetProbLogDistrPrD()

void G4FTFParameters::SetProbLogDistrPrD ( const G4double aValue)
inline

Definition at line 327 of file G4FTFParameters.hh.

327 {
328 ProbLogDistrPrD = aValue;
329}

Referenced by InitForInteraction().

◆ SetProbOfInteraction()

void G4FTFParameters::SetProbOfInteraction ( const G4double aValue)
inline

Definition at line 363 of file G4FTFParameters.hh.

363 {
364 ProbOfInelInteraction = aValue;
365}

Referenced by SetMaxNumberOfCollisions().

◆ SetProbOfSameQuarkExchange()

void G4FTFParameters::SetProbOfSameQuarkExchange ( const G4double aValue)
inline

Definition at line 303 of file G4FTFParameters.hh.

303 {
305}

Referenced by InitForInteraction().

◆ SetProjMinDiffMass()

void G4FTFParameters::SetProjMinDiffMass ( const G4double aValue)
inline

Definition at line 307 of file G4FTFParameters.hh.

307 {
308 ProjMinDiffMass = aValue*CLHEP::GeV;
309}

Referenced by InitForInteraction().

◆ SetProjMinNonDiffMass()

void G4FTFParameters::SetProjMinNonDiffMass ( const G4double aValue)
inline

Definition at line 311 of file G4FTFParameters.hh.

311 {
312 ProjMinNonDiffMass = aValue*CLHEP::GeV;
313}

Referenced by InitForInteraction().

◆ SetPt2Kink()

void G4FTFParameters::SetPt2Kink ( const G4double aValue)
inline

Definition at line 337 of file G4FTFParameters.hh.

337 {
338 Pt2kink = aValue;
339}

Referenced by G4FTFParameters().

◆ SetPt2ofNuclearDestruction()

void G4FTFParameters::SetPt2ofNuclearDestruction ( const G4double aValue)
inline

Definition at line 387 of file G4FTFParameters.hh.

387 {
389}

Referenced by InitForInteraction().

◆ SetQuarkProbabilitiesAtGluonSplitUp()

void G4FTFParameters::SetQuarkProbabilitiesAtGluonSplitUp ( const G4double Puubar,
const G4double Pddbar,
const G4double Pssbar )
inline

Definition at line 341 of file G4FTFParameters.hh.

343 {
344 QuarkProbabilitiesAtGluonSplitUp.push_back( Puubar );
345 QuarkProbabilitiesAtGluonSplitUp.push_back( Puubar + Pddbar );
346 QuarkProbabilitiesAtGluonSplitUp.push_back( Puubar + Pddbar + Pssbar );
347}

Referenced by G4FTFParameters().

◆ SetR2ofNuclearDestruction()

void G4FTFParameters::SetR2ofNuclearDestruction ( const G4double aValue)
inline

Definition at line 375 of file G4FTFParameters.hh.

375 {
376 R2ofNuclearDestruction = aValue;
377}

Referenced by InitForInteraction().

◆ SetRadiusOfHNinteractions2()

void G4FTFParameters::SetRadiusOfHNinteractions2 ( const G4double Radius2)
inline

Definition at line 270 of file G4FTFParameters.hh.

270 {
271 RadiusOfHNinteractions2 = Radius2;
272}

Referenced by InitForInteraction().

◆ SetSlope()

void G4FTFParameters::SetSlope ( const G4double Slope)
inline

Definition at line 274 of file G4FTFParameters.hh.

274 {
275 FTFSlope = 12.84 / Slope; // Slope is in GeV^-2, FTFSlope in fm^-2
276}

Referenced by InitForInteraction().

◆ SetTarMinDiffMass()

void G4FTFParameters::SetTarMinDiffMass ( const G4double aValue)
inline

Definition at line 315 of file G4FTFParameters.hh.

315 {
316 TarMinDiffMass = aValue*CLHEP::GeV;
317}

Referenced by InitForInteraction().

◆ SetTarMinNonDiffMass()

void G4FTFParameters::SetTarMinNonDiffMass ( const G4double aValue)
inline

Definition at line 319 of file G4FTFParameters.hh.

319 {
320 TarMinNonDiffMass = aValue*CLHEP::GeV;
321}

Referenced by InitForInteraction().

◆ SetTotalCrossSection()

void G4FTFParameters::SetTotalCrossSection ( const G4double Xtotal)
inline

Definition at line 241 of file G4FTFParameters.hh.

241 {
242 FTFXtotal = Xtotal;
243}

Referenced by InitForInteraction().

Member Data Documentation

◆ AvaragePt2ofElasticScattering

G4double G4FTFParameters::AvaragePt2ofElasticScattering

◆ AveragePt2

G4double G4FTFParameters::AveragePt2

Definition at line 185 of file G4FTFParameters.hh.

Referenced by GetAveragePt2(), and SetAveragePt2().

◆ CofNuclearDestruction

G4double G4FTFParameters::CofNuclearDestruction

Definition at line 197 of file G4FTFParameters.hh.

Referenced by GetCofNuclearDestruction(), and SetCofNuclearDestruction().

◆ CofNuclearDestructionPr

G4double G4FTFParameters::CofNuclearDestructionPr

Definition at line 196 of file G4FTFParameters.hh.

Referenced by GetCofNuclearDestructionPr(), and SetCofNuclearDestructionPr().

◆ DeltaProbAtQuarkExchange

G4double G4FTFParameters::DeltaProbAtQuarkExchange

Definition at line 176 of file G4FTFParameters.hh.

Referenced by GetDeltaProbAtQuarkExchange(), and SetDeltaProbAtQuarkExchange().

◆ DofNuclearDestruction

G4double G4FTFParameters::DofNuclearDestruction

Definition at line 202 of file G4FTFParameters.hh.

Referenced by GetDofNuclearDestruction(), and SetDofNuclearDestruction().

◆ EnableDiffDissociationForBGreater10

G4bool G4FTFParameters::EnableDiffDissociationForBGreater10

Control over whether to do nucleon-hadron diffractive dissociation or not.

Definition at line 206 of file G4FTFParameters.hh.

Referenced by G4FTFParameters(), and InitForInteraction().

◆ ExcitationEnergyPerWoundedNucleon

G4double G4FTFParameters::ExcitationEnergyPerWoundedNucleon

◆ FTFGamma0

G4double G4FTFParameters::FTFGamma0

Definition at line 171 of file G4FTFParameters.hh.

Referenced by GammaElastic(), and SetGamma0().

◆ FTFhNcmsEnergy

G4double G4FTFParameters::FTFhNcmsEnergy

Definition at line 159 of file G4FTFParameters.hh.

Referenced by SethNcmsEnergy().

◆ FTFSlope

G4double G4FTFParameters::FTFSlope

Definition at line 169 of file G4FTFParameters.hh.

Referenced by GammaElastic(), GetSlope(), and SetSlope().

◆ FTFXannihilation

G4double G4FTFParameters::FTFXannihilation

Definition at line 165 of file G4FTFParameters.hh.

◆ FTFXelastic

G4double G4FTFParameters::FTFXelastic

Definition at line 163 of file G4FTFParameters.hh.

Referenced by GetElasticCrossSection(), and SetElastisCrossSection().

◆ FTFXinelastic

G4double G4FTFParameters::FTFXinelastic

Definition at line 164 of file G4FTFParameters.hh.

Referenced by GetInelasticCrossSection(), and SetInelasticCrossSection().

◆ FTFXtotal

G4double G4FTFParameters::FTFXtotal

Definition at line 162 of file G4FTFParameters.hh.

Referenced by GetTotalCrossSection(), and SetTotalCrossSection().

◆ MaxNumberOfCollisions

G4double G4FTFParameters::MaxNumberOfCollisions

Definition at line 193 of file G4FTFParameters.hh.

Referenced by GetMaxNumberOfCollisions(), and SetMaxNumberOfCollisions().

◆ MaxPt2ofNuclearDestruction

G4double G4FTFParameters::MaxPt2ofNuclearDestruction

◆ ProbabilityOfAnnihilation

G4double G4FTFParameters::ProbabilityOfAnnihilation

◆ ProbabilityOfElasticScatt

G4double G4FTFParameters::ProbabilityOfElasticScatt

◆ ProbLogDistr

G4double G4FTFParameters::ProbLogDistr

Definition at line 186 of file G4FTFParameters.hh.

Referenced by GetProbLogDistr(), and SetProbLogDistr().

◆ ProbLogDistrPrD

G4double G4FTFParameters::ProbLogDistrPrD

Definition at line 181 of file G4FTFParameters.hh.

Referenced by GetProbLogDistrPrD(), and SetProbLogDistrPrD().

◆ ProbOfInelInteraction

G4double G4FTFParameters::ProbOfInelInteraction

Definition at line 194 of file G4FTFParameters.hh.

Referenced by GetProbOfInteraction(), and SetProbOfInteraction().

◆ ProbOfSameQuarkExchange

G4double G4FTFParameters::ProbOfSameQuarkExchange

Definition at line 177 of file G4FTFParameters.hh.

Referenced by GetProbOfSameQuarkExchange(), and SetProbOfSameQuarkExchange().

◆ ProcParams

G4double G4FTFParameters::ProcParams[5][7]

Definition at line 174 of file G4FTFParameters.hh.

Referenced by GetProcProb(), and SetParams().

◆ ProjMinDiffMass

G4double G4FTFParameters::ProjMinDiffMass

Definition at line 179 of file G4FTFParameters.hh.

Referenced by GetProjMinDiffMass(), and SetProjMinDiffMass().

◆ ProjMinNonDiffMass

G4double G4FTFParameters::ProjMinNonDiffMass

Definition at line 180 of file G4FTFParameters.hh.

Referenced by GetProjMinNonDiffMass(), and SetProjMinNonDiffMass().

◆ Pt2kink

G4double G4FTFParameters::Pt2kink

Definition at line 189 of file G4FTFParameters.hh.

Referenced by GetPt2Kink(), and SetPt2Kink().

◆ Pt2ofNuclearDestruction

G4double G4FTFParameters::Pt2ofNuclearDestruction

Definition at line 203 of file G4FTFParameters.hh.

Referenced by GetPt2ofNuclearDestruction(), and SetPt2ofNuclearDestruction().

◆ QuarkProbabilitiesAtGluonSplitUp

std::vector< G4double > G4FTFParameters::QuarkProbabilitiesAtGluonSplitUp

◆ R2ofNuclearDestruction

G4double G4FTFParameters::R2ofNuclearDestruction

Definition at line 198 of file G4FTFParameters.hh.

Referenced by GetR2ofNuclearDestruction(), and SetR2ofNuclearDestruction().

◆ RadiusOfHNinteractions2

G4double G4FTFParameters::RadiusOfHNinteractions2

Definition at line 168 of file G4FTFParameters.hh.

Referenced by GetProbabilityOfInteraction(), and SetRadiusOfHNinteractions2().

◆ TarMinDiffMass

G4double G4FTFParameters::TarMinDiffMass

Definition at line 182 of file G4FTFParameters.hh.

Referenced by GetTarMinDiffMass(), and SetTarMinDiffMass().

◆ TarMinNonDiffMass

G4double G4FTFParameters::TarMinNonDiffMass

Definition at line 183 of file G4FTFParameters.hh.

Referenced by GetTarMinNonDiffMass(), and SetTarMinNonDiffMass().


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