Geant4  10.01.p02
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 86646 2014-11-14 13:29:39Z 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 
41 
42  public:
43  G4FTFParameters( const G4ParticleDefinition* , G4int theA, G4int theZ, G4double s );
45 
46  // Set geometrical parameteres
47  void SethNcmsEnergy( const G4double s );
48  void SetTotalCrossSection( const G4double Xtotal );
49  void SetElastisCrossSection( const G4double Xelastic );
50  void SetInelasticCrossSection( const G4double Xinelastic );
51  void SetProbabilityOfElasticScatt( const G4double Xtotal, const G4double Xelastic );
52  void SetProbabilityOfElasticScatt( const G4double aValue );
53  void SetProbabilityOfAnnihilation( const G4double aValue );
54  void SetRadiusOfHNinteractions2( const G4double Radius2 );
55 
56  void SetSlope( const G4double Slope );
57  void SetGamma0( const G4double Gamma0 );
58  G4double GammaElastic( const G4double impactsquare );
59 
60  // Set parameters of elastic scattering
61  void SetAvaragePt2ofElasticScattering( const G4double aPt2 );
62 
63  // Set parameters of excitations
64  void SetParams( const G4int ProcN,
65  const G4double A1, const G4double B1, const G4double A2, const G4double B2,
66  const G4double A3, const G4double Atop, const G4double Ymin );
67 
68  void SetDeltaProbAtQuarkExchange( const G4double aValue );
69  void SetProbOfSameQuarkExchange( const G4double aValue );
70 
71  void SetProjMinDiffMass( const G4double aValue );
72  void SetProjMinNonDiffMass( const G4double aValue );
73 // void SetProbabilityOfProjDiff( const G4double aValue ); // Uzhi Oct 2014
74  void SetProbLogDistrPrD( const G4double aValue ); // Uzhi Oct 2014
75 
76  void SetTarMinDiffMass( const G4double aValue );
77  void SetTarMinNonDiffMass( const G4double aValue );
78 // void SetProbabilityOfTarDiff( const G4double aValue ); // Uzhi Oct 2014
79 
80  void SetAveragePt2( const G4double aValue );
81  void SetProbLogDistr( const G4double aValue );
82 
83  // Set parameters of a string kink
84  void SetPt2Kink( const G4double aValue );
85  void SetQuarkProbabilitiesAtGluonSplitUp( const G4double Puubar, const G4double Pddbar,
86  const G4double Pssbar );
87 
88  // Set parameters of nuclear destruction
89  void SetMaxNumberOfCollisions( const G4double aValue, const G4double bValue );
90  void SetProbOfInteraction( const G4double aValue );
91 
92  void SetCofNuclearDestruction( const G4double aValue );
93  void SetR2ofNuclearDestruction( const G4double aValue );
94 
96 
97  void SetDofNuclearDestruction( const G4double aValue );
98  void SetPt2ofNuclearDestruction( const G4double aValue );
99  void SetMaxPt2ofNuclearDestruction( const G4double aValue );
100 
101  // Get geometrical parameteres
105 
106  G4double GetProbabilityOfInteraction( const G4double impactsquare );
107  G4double GetInelasticProbability( const G4double impactsquare );
109  G4double GetSlope();
111 
112  // Get parameters of elastic scattering
114 
115  // Get parameters of excitations
116  G4double GetProcProb( const G4int ProcN, const G4double y );
117 
120 
123  G4double GetProbLogDistrPrD(); // Uzhi Oct 2014
124 
127 
130 
131  // Get parameters of a string kink
133  std::vector< G4double > GetQuarkProbabilitiesAtGluonSplitUp();
134 
135  // Get parameters of nuclear destruction
138 
141 
143 
147 
148  //private:
149  G4FTFParameters();
150 
151  // Initial energy of hN interactions
152  G4double FTFhNcmsEnergy; // Initial hN CMS energy
153 
154  // hN cross section manager
156 
157  // Geometrical parameteres
158  G4double FTFXtotal; // Total X in mb
159  G4double FTFXelastic; // Elastic X in mb
160  G4double FTFXinelastic; // Inelastic X in mb
161  G4double FTFXannihilation; // Annihilation X in mb
162  G4double ProbabilityOfAnnihilation; // Xannih/Xinelast
164  G4double RadiusOfHNinteractions2; // Xtot/pi, in fm^2
165  G4double FTFSlope; // in fm^-1
168 
169  // Parameters of excitations
171 
174 
177  G4double ProbLogDistrPrD; // Uzhi Oct 2014
180 
183 
184  // Parameters of kink
186  std::vector< G4double > QuarkProbabilitiesAtGluonSplitUp;
187 
188  // Parameters of nuclear destruction
191 
192  G4double CofNuclearDestruction; // Cnd of nuclear destruction
194 
196 
197  G4double DofNuclearDestruction; // D for momentum sampling
200 
201  // G4-MT changes
202  private:
205 
206 };
207 
208 
209 inline G4double G4FTFParameters::GammaElastic( const G4double impactsquare ) {
210  return ( FTFGamma0 * std::exp( -FTFSlope * impactsquare ) );
211 }
212 
213 inline void G4FTFParameters::SethNcmsEnergy( const G4double S ) {
214  FTFhNcmsEnergy = S;
215 }
216 
217 // Set geometrical parameteres
218 
219 inline void G4FTFParameters::SetTotalCrossSection( const G4double Xtotal ) {
220  FTFXtotal = Xtotal;
221 }
222 
223 inline void G4FTFParameters::SetElastisCrossSection( const G4double Xelastic ) {
224  FTFXelastic = Xelastic;
225 }
226 
227 inline void G4FTFParameters::SetInelasticCrossSection( const G4double Xinelastic ) {
228  FTFXinelastic = Xinelastic;
229 }
230 
232  const G4double Xelastic ) {
233  if ( Xtotal == 0.0 ) {
235  } else {
236  ProbabilityOfElasticScatt = Xelastic / Xtotal;
237  }
238 }
239 
241  ProbabilityOfElasticScatt = aValue;
242 }
243 
245  ProbabilityOfAnnihilation = aValue;
246 }
247 
249  RadiusOfHNinteractions2 = Radius2;
250 }
251 
252 inline void G4FTFParameters::SetSlope( const G4double Slope ) {
253  FTFSlope = 12.84 / Slope; // Slope is in GeV^-2, FTFSlope in fm^-2
254 }
255 
256 inline void G4FTFParameters::SetGamma0( const G4double Gamma0 ) {
257  FTFGamma0 = Gamma0;
258 }
259 
260 // Set parameters of elastic scattering
263 }
264 
265 // Set parameters of excitations
266 
267 inline void G4FTFParameters::SetParams( const G4int ProcN,
268  const G4double A1, const G4double B1, const G4double A2,
269  const G4double B2, const G4double A3, const G4double Atop,
270  const G4double Ymin ) {
271  ProcParams[ProcN][0] = A1; ProcParams[ProcN][1] = B1;
272  ProcParams[ProcN][2] = A2; ProcParams[ProcN][3] = B2;
273  ProcParams[ProcN][4] = A3;
274  ProcParams[ProcN][5] = Atop; ProcParams[ProcN][6] = Ymin;
275 }
276 
278  DeltaProbAtQuarkExchange = aValue;
279 }
280 
282  ProbOfSameQuarkExchange = aValue;
283 }
284 
285 inline void G4FTFParameters::SetProjMinDiffMass( const G4double aValue ) {
286  ProjMinDiffMass = aValue*CLHEP::GeV;
287 }
288 
291 }
292 
293 inline void G4FTFParameters::SetTarMinDiffMass( const G4double aValue ) {
294  TarMinDiffMass = aValue*CLHEP::GeV;
295 }
296 
297 inline void G4FTFParameters::SetTarMinNonDiffMass( const G4double aValue ) {
298  TarMinNonDiffMass = aValue*CLHEP::GeV;
299 }
300 
301 inline void G4FTFParameters::SetAveragePt2( const G4double aValue ) {
303 }
304 
305 inline void G4FTFParameters::SetProbLogDistrPrD( const G4double aValue ) { // Uzhi Oct 2014
306  ProbLogDistrPrD = aValue;
307 }
308 
309 inline void G4FTFParameters::SetProbLogDistr( const G4double aValue ) {
310  ProbLogDistr = aValue;
311 }
312 
313 // Set parameters of a string kink
314 
315 inline void G4FTFParameters::SetPt2Kink( const G4double aValue ) {
316  Pt2kink = aValue;
317 }
318 
320  const G4double Pddbar,
321  const G4double Pssbar ) {
322  QuarkProbabilitiesAtGluonSplitUp.push_back( Puubar );
323  QuarkProbabilitiesAtGluonSplitUp.push_back( Puubar + Pddbar );
324  QuarkProbabilitiesAtGluonSplitUp.push_back( Puubar + Pddbar + Pssbar );
325 }
326 
327 // Set parameters of nuclear destruction
329  const G4double Pbound ) {
330  if ( Plab > Pbound ) {
331  MaxNumberOfCollisions = Plab/Pbound;
332  SetProbOfInteraction( -1.0 );
333  } else {
334  //MaxNumberOfCollisions = -1.0;
335  //SetProbOfInteraction( std::exp( 0.25*(Plab-Pbound) ) );
337  SetProbOfInteraction( -1.0 );
338  }
339 }
340 
341 inline void G4FTFParameters::SetProbOfInteraction( const G4double aValue ) {
342  ProbOfInelInteraction = aValue;
343 }
344 
346  CofNuclearDestruction = aValue;
347 }
348 
350  R2ofNuclearDestruction = aValue;
351 }
352 
355 }
356 
358  DofNuclearDestruction = aValue;
359 }
360 
362  Pt2ofNuclearDestruction = aValue;
363 }
364 
367 }
368 
369 // Get geometrical parameteres
371  return FTFXtotal;
372 }
373 
375  return FTFXelastic;
376 }
377 
379  return FTFXinelastic;
380 }
381 
383  return FTFSlope;
384 }
385 
387  if ( RadiusOfHNinteractions2 > impactsquare ) {
388  return 1.0;
389  } else {
390  return 0.0;
391  }
392 }
393 
396 }
397 
399  G4double Gamma = GammaElastic( impactsquare );
400  return 2*Gamma - Gamma*Gamma;
401 }
402 
405 }
406 
407 // Get parameters of elastic scattering
410 }
411 
412 // Get parameters of excitations
413 
416 }
417 
420 }
421 
423  return ProjMinDiffMass;
424 }
425 
427  return ProjMinNonDiffMass;
428 }
429 
431  return TarMinDiffMass;
432 }
433 
435  return TarMinNonDiffMass;
436 }
437 
439  return AveragePt2;
440 }
441 
443  return ProbLogDistrPrD;
444 }
445 
447  return ProbLogDistr;
448 }
449 
450 // Get parameters of a string kink
451 
453  return Pt2kink;
454 }
455 
458 }
459 
460 // Get parameters of nuclear destruction
461 
463  return MaxNumberOfCollisions;
464 }
465 
467  return ProbOfInelInteraction;
468 }
469 
471  return CofNuclearDestruction;
472 }
473 
475  return R2ofNuclearDestruction;
476 }
477 
480 }
481 
483  return DofNuclearDestruction;
484 }
485 
488 }
489 
492 }
493 
494 #endif
G4double GetElasticCrossSection()
static G4ThreadLocal G4ChipsComponentXS * chipsComponentXSinstance
void SetProbLogDistr(const G4double aValue)
G4double ProjMinDiffMass
G4double GetProbabilityOfElasticScatt()
G4double GetProjMinDiffMass()
G4double ProbabilityOfAnnihilation
G4double Pt2ofNuclearDestruction
G4double GetInelasticCrossSection()
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)
static const double s
Definition: G4SIunits.hh:150
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)
static const double GeV
Definition: G4SIunits.hh:196
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 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
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)
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()