Geant4  10.03
G4FTFParameters.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 // $Id: G4FTFParameters.hh 100828 2016-11-02 15:25:59Z gcosmo $
28 // GEANT4 tag $Name: $
29 //
30 #ifndef G4FTFParameters_h
31 #define G4FTFParameters_h 1
32 
33 #include <CLHEP/Units/SystemOfUnits.h>
34 
35 #include "G4Proton.hh"
36 #include "G4Neutron.hh"
37 #include "G4ChipsComponentXS.hh"
38 
39 #include "G4Exp.hh"
40 
41 
43  public:
44  G4FTFParameters( const G4ParticleDefinition* , G4int theA, G4int theZ, G4double s );
46 
47  // Set geometrical parameteres
48  void SethNcmsEnergy( const G4double s );
49  void SetTotalCrossSection( const G4double Xtotal );
50  void SetElastisCrossSection( const G4double Xelastic );
51  void SetInelasticCrossSection( const G4double Xinelastic );
52  void SetProbabilityOfElasticScatt( const G4double Xtotal, const G4double Xelastic );
53  void SetProbabilityOfElasticScatt( const G4double aValue );
54  void SetProbabilityOfAnnihilation( const G4double aValue );
55  void SetRadiusOfHNinteractions2( const G4double Radius2 );
56 
57  void SetSlope( const G4double Slope );
58  void SetGamma0( const G4double Gamma0 );
59  G4double GammaElastic( const G4double impactsquare );
60 
61  // Set parameters of elastic scattering
62  void SetAvaragePt2ofElasticScattering( const G4double aPt2 );
63 
64  // Set parameters of excitations
65  void SetParams( const G4int ProcN,
66  const G4double A1, const G4double B1, const G4double A2, const G4double B2,
67  const G4double A3, const G4double Atop, const G4double Ymin );
68 
69  void SetDeltaProbAtQuarkExchange( const G4double aValue );
70  void SetProbOfSameQuarkExchange( const G4double aValue );
71 
72  void SetProjMinDiffMass( const G4double aValue );
73  void SetProjMinNonDiffMass( const G4double aValue );
74  //void SetProbabilityOfProjDiff( const G4double aValue );
75  void SetProbLogDistrPrD( const G4double aValue );
76 
77  void SetTarMinDiffMass( const G4double aValue );
78  void SetTarMinNonDiffMass( const G4double aValue );
79  //void SetProbabilityOfTarDiff( const G4double aValue );
80 
81  void SetAveragePt2( const G4double aValue );
82  void SetProbLogDistr( const G4double aValue );
83 
84  // Set parameters of a string kink
85  void SetPt2Kink( const G4double aValue );
86  void SetQuarkProbabilitiesAtGluonSplitUp( const G4double Puubar, const G4double Pddbar,
87  const G4double Pssbar );
88 
89  // Set parameters of nuclear destruction
90  void SetMaxNumberOfCollisions( const G4double aValue, const G4double bValue );
91  void SetProbOfInteraction( const G4double aValue );
92 
93  void SetCofNuclearDestructionPr( const G4double aValue );
94  void SetCofNuclearDestruction( const G4double aValue );
95  void SetR2ofNuclearDestruction( const G4double aValue );
96 
98 
99  void SetDofNuclearDestruction( const G4double aValue );
100  void SetPt2ofNuclearDestruction( const G4double aValue );
101  void SetMaxPt2ofNuclearDestruction( const G4double aValue );
102 
103  // Get geometrical parameteres
107 
108  G4double GetProbabilityOfInteraction( const G4double impactsquare );
109  G4double GetInelasticProbability( const G4double impactsquare );
111  G4double GetSlope();
113 
114  // Get parameters of elastic scattering
116 
117  // Get parameters of excitations
118  G4double GetProcProb( const G4int ProcN, const G4double y );
119 
122 
126 
129 
132 
133  // Get parameters of a string kink
135  std::vector< G4double > GetQuarkProbabilitiesAtGluonSplitUp();
136 
137  // Get parameters of nuclear destruction
140 
144 
146 
150 
151  //private:
152  G4FTFParameters();
153 
154  // Initial energy of hN interactions
155  G4double FTFhNcmsEnergy; // Initial hN CMS energy
156 
157  // hN cross section manager
159 
160  // Geometrical parameteres
161  G4double FTFXtotal; // Total X in mb
162  G4double FTFXelastic; // Elastic X in mb
163  G4double FTFXinelastic; // Inelastic X in mb
164  G4double FTFXannihilation; // Annihilation X in mb
165  G4double ProbabilityOfAnnihilation; // Xannih/Xinelast
167  G4double RadiusOfHNinteractions2; // Xtot/pi, in fm^2
168  G4double FTFSlope; // in fm^-1
171 
172  // Parameters of excitations
174 
177 
183 
186 
187  // Parameters of kink
189  std::vector< G4double > QuarkProbabilitiesAtGluonSplitUp;
190 
191  // Parameters of nuclear destruction
194 
195  G4double CofNuclearDestructionPr; // Cnd of nuclear destruction of projectile nucleus
196  G4double CofNuclearDestruction; // Cnd of nuclear destruction
198 
200 
201  G4double DofNuclearDestruction; // D for momentum sampling
204 
205  // G4-MT changes
206  private:
209 };
210 
211 
212 inline G4double G4FTFParameters::GammaElastic( const G4double impactsquare ) {
213  return ( FTFGamma0 * G4Exp( -FTFSlope * impactsquare ) );
214 }
215 
217  FTFhNcmsEnergy = S;
218 }
219 
220 // Set geometrical parameteres
221 
222 inline void G4FTFParameters::SetTotalCrossSection( const G4double Xtotal ) {
223  FTFXtotal = Xtotal;
224 }
225 
226 inline void G4FTFParameters::SetElastisCrossSection( const G4double Xelastic ) {
227  FTFXelastic = Xelastic;
228 }
229 
230 inline void G4FTFParameters::SetInelasticCrossSection( const G4double Xinelastic ) {
231  FTFXinelastic = Xinelastic;
232 }
233 
235  const G4double Xelastic ) {
236  if ( Xtotal == 0.0 ) {
238  } else {
239  ProbabilityOfElasticScatt = Xelastic / Xtotal;
240  }
241 }
242 
244  ProbabilityOfElasticScatt = aValue;
245 }
246 
248  ProbabilityOfAnnihilation = aValue;
249 }
250 
252  RadiusOfHNinteractions2 = Radius2;
253 }
254 
255 inline void G4FTFParameters::SetSlope( const G4double Slope ) {
256  FTFSlope = 12.84 / Slope; // Slope is in GeV^-2, FTFSlope in fm^-2
257 }
258 
259 inline void G4FTFParameters::SetGamma0( const G4double Gamma0 ) {
260  FTFGamma0 = Gamma0;
261 }
262 
263 // Set parameters of elastic scattering
266 }
267 
268 // Set parameters of excitations
269 
270 inline void G4FTFParameters::SetParams( const G4int ProcN,
271  const G4double A1, const G4double B1, const G4double A2,
272  const G4double B2, const G4double A3, const G4double Atop,
273  const G4double Ymin ) {
274  ProcParams[ProcN][0] = A1; ProcParams[ProcN][1] = B1;
275  ProcParams[ProcN][2] = A2; ProcParams[ProcN][3] = B2;
276  ProcParams[ProcN][4] = A3;
277  ProcParams[ProcN][5] = Atop; ProcParams[ProcN][6] = Ymin;
278 }
279 
281  DeltaProbAtQuarkExchange = aValue;
282 }
283 
285  ProbOfSameQuarkExchange = aValue;
286 }
287 
288 inline void G4FTFParameters::SetProjMinDiffMass( const G4double aValue ) {
289  ProjMinDiffMass = aValue*CLHEP::GeV;
290 }
291 
294 }
295 
296 inline void G4FTFParameters::SetTarMinDiffMass( const G4double aValue ) {
297  TarMinDiffMass = aValue*CLHEP::GeV;
298 }
299 
300 inline void G4FTFParameters::SetTarMinNonDiffMass( const G4double aValue ) {
301  TarMinNonDiffMass = aValue*CLHEP::GeV;
302 }
303 
304 inline void G4FTFParameters::SetAveragePt2( const G4double aValue ) {
306 }
307 
308 inline void G4FTFParameters::SetProbLogDistrPrD( const G4double aValue ) {
309  ProbLogDistrPrD = aValue;
310 }
311 
312 inline void G4FTFParameters::SetProbLogDistr( const G4double aValue ) {
313  ProbLogDistr = aValue;
314 }
315 
316 // Set parameters of a string kink
317 
318 inline void G4FTFParameters::SetPt2Kink( const G4double aValue ) {
319  Pt2kink = aValue;
320 }
321 
323  const G4double Pddbar,
324  const G4double Pssbar ) {
325  QuarkProbabilitiesAtGluonSplitUp.push_back( Puubar );
326  QuarkProbabilitiesAtGluonSplitUp.push_back( Puubar + Pddbar );
327  QuarkProbabilitiesAtGluonSplitUp.push_back( Puubar + Pddbar + Pssbar );
328 }
329 
330 // Set parameters of nuclear destruction
332  const G4double Pbound ) {
333  if ( Plab > Pbound ) {
334  MaxNumberOfCollisions = Plab/Pbound;
335  SetProbOfInteraction( -1.0 );
336  } else {
337  //MaxNumberOfCollisions = -1.0;
338  //SetProbOfInteraction( G4Exp( 0.25*(Plab-Pbound) ) );
340  SetProbOfInteraction( -1.0 );
341  }
342 }
343 
344 inline void G4FTFParameters::SetProbOfInteraction( const G4double aValue ) {
345  ProbOfInelInteraction = aValue;
346 }
347 
349  CofNuclearDestructionPr = aValue;
350 }
351 
353  CofNuclearDestruction = aValue;
354 }
355 
357  R2ofNuclearDestruction = aValue;
358 }
359 
362 }
363 
365  DofNuclearDestruction = aValue;
366 }
367 
369  Pt2ofNuclearDestruction = aValue;
370 }
371 
374 }
375 
376 // Get geometrical parameteres
378  return FTFXtotal;
379 }
380 
382  return FTFXelastic;
383 }
384 
386  return FTFXinelastic;
387 }
388 
390  return FTFSlope;
391 }
392 
394  if ( RadiusOfHNinteractions2 > impactsquare ) {
395  return 1.0;
396  } else {
397  return 0.0;
398  }
399 }
400 
403 }
404 
406  G4double Gamma = GammaElastic( impactsquare );
407  return 2*Gamma - Gamma*Gamma;
408 }
409 
412 }
413 
414 // Get parameters of elastic scattering
417 }
418 
419 // Get parameters of excitations
420 
423 }
424 
427 }
428 
430  return ProjMinDiffMass;
431 }
432 
434  return ProjMinNonDiffMass;
435 }
436 
438  return TarMinDiffMass;
439 }
440 
442  return TarMinNonDiffMass;
443 }
444 
446  return AveragePt2;
447 }
448 
450  return ProbLogDistrPrD;
451 }
452 
454  return ProbLogDistr;
455 }
456 
457 // Get parameters of a string kink
458 
460  return Pt2kink;
461 }
462 
465 }
466 
467 // Get parameters of nuclear destruction
468 
470  return MaxNumberOfCollisions;
471 }
472 
474  return ProbOfInelInteraction;
475 }
476 
479 }
480 
482  return CofNuclearDestruction;
483 }
484 
486  return R2ofNuclearDestruction;
487 }
488 
491 }
492 
494  return DofNuclearDestruction;
495 }
496 
499 }
500 
503 }
504 
505 #endif
506 
G4double GetElasticCrossSection()
static G4ThreadLocal G4ChipsComponentXS * chipsComponentXSinstance
void SetProbLogDistr(const G4double aValue)
G4double ProjMinDiffMass
G4double GetProbabilityOfElasticScatt()
G4double GetProjMinDiffMass()
double S(double temp)
static constexpr double s
Definition: G4SIunits.hh:169
G4double ProbabilityOfAnnihilation
G4double Pt2ofNuclearDestruction
G4double GetInelasticCrossSection()
void SetCofNuclearDestructionPr(const G4double aValue)
G4double GetInelasticProbability(const G4double impactsquare)
G4double GetProbLogDistr()
G4double GetTarMinDiffMass()
G4double ProbLogDistrPrD
void SetProbLogDistrPrD(const G4double aValue)
G4double GetAvaragePt2ofElasticScattering()
G4double GetPt2Kink()
#define G4ThreadLocal
Definition: tls.hh:89
void SetTarMinNonDiffMass(const G4double aValue)
void SetDofNuclearDestruction(const G4double aValue)
void SetSlope(const G4double Slope)
G4ChipsComponentXS * FTFxsManager
int G4int
Definition: G4Types.hh:78
G4double CofNuclearDestruction
G4double ExcitationEnergyPerWoundedNucleon
G4double DeltaProbAtQuarkExchange
void SetProbOfInteraction(const G4double aValue)
void SethNcmsEnergy(const G4double s)
G4double GetCofNuclearDestructionPr()
void SetGamma0(const G4double Gamma0)
G4double GetProbOfInteraction()
void SetAveragePt2(const G4double aValue)
G4double GetMaxNumberOfCollisions()
G4double DofNuclearDestruction
void SetElastisCrossSection(const G4double Xelastic)
void SetPt2Kink(const G4double aValue)
G4double AvaragePt2ofElasticScattering
void SetRadiusOfHNinteractions2(const G4double Radius2)
G4double ProbabilityOfElasticScatt
void SetMaxNumberOfCollisions(const G4double aValue, const G4double bValue)
void SetExcitationEnergyPerWoundedNucleon(const G4double aValue)
void SetProjMinNonDiffMass(const G4double aValue)
G4double GetMaxPt2ofNuclearDestruction()
void SetQuarkProbabilitiesAtGluonSplitUp(const G4double Puubar, const G4double Pddbar, const G4double Pssbar)
G4double GetProcProb(const G4int ProcN, const G4double y)
void SetInelasticCrossSection(const G4double Xinelastic)
G4double RadiusOfHNinteractions2
void SetProbabilityOfElasticScatt(const G4double Xtotal, const G4double Xelastic)
void SetDeltaProbAtQuarkExchange(const G4double aValue)
G4double GetAveragePt2()
void SetTotalCrossSection(const G4double Xtotal)
void SetProjMinDiffMass(const G4double aValue)
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
Definition: G4Exp.hh:183
G4double MaxPt2ofNuclearDestruction
G4double ProbOfSameQuarkExchange
G4double GetTarMinNonDiffMass()
G4double GetPt2ofNuclearDestruction()
void SetMaxPt2ofNuclearDestruction(const G4double aValue)
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)
G4double GetR2ofNuclearDestruction()
G4double R2ofNuclearDestruction
G4double ProcParams[5][7]
G4double GetProbLogDistrPrD()
G4double GetExcitationEnergyPerWoundedNucleon()
std::vector< G4double > QuarkProbabilitiesAtGluonSplitUp
void SetCofNuclearDestruction(const G4double aValue)
G4double ProbOfInelInteraction
static constexpr double GeV
Definition: G4SIunits.hh:217
void SetProbOfSameQuarkExchange(const G4double aValue)
G4double FTFXannihilation
G4double GetDeltaProbAtQuarkExchange()
G4double GetProbOfSameQuarkExchange()
G4double GetCofNuclearDestruction()
G4double GetProbabilityOfInteraction(const G4double impactsquare)
G4double GetTotalCrossSection()
G4double GetProjMinNonDiffMass()
G4double GetProbabilityOfAnnihilation()
G4double ProjMinNonDiffMass
G4double MaxNumberOfCollisions
double G4double
Definition: G4Types.hh:76
void SetProbabilityOfAnnihilation(const G4double aValue)
G4double CofNuclearDestructionPr
static G4ThreadLocal bool chipsComponentXSisInitialized
void SetPt2ofNuclearDestruction(const G4double aValue)
G4double GammaElastic(const G4double impactsquare)
void SetAvaragePt2ofElasticScattering(const G4double aPt2)
void SetTarMinDiffMass(const G4double aValue)
void SetR2ofNuclearDestruction(const G4double aValue)
G4double TarMinNonDiffMass
std::vector< G4double > GetQuarkProbabilitiesAtGluonSplitUp()
G4double GetDofNuclearDestruction()