Geant4  10.02.p01
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 91775 2015-08-05 14:42: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 #include "G4Exp.hh"
40 
41 
43 
44  public:
45  G4FTFParameters( const G4ParticleDefinition* , G4int theA, G4int theZ, G4double s );
47 
48  // Set geometrical parameteres
49  void SethNcmsEnergy( const G4double s );
50  void SetTotalCrossSection( const G4double Xtotal );
51  void SetElastisCrossSection( const G4double Xelastic );
52  void SetInelasticCrossSection( const G4double Xinelastic );
53  void SetProbabilityOfElasticScatt( const G4double Xtotal, const G4double Xelastic );
54  void SetProbabilityOfElasticScatt( const G4double aValue );
55  void SetProbabilityOfAnnihilation( const G4double aValue );
56  void SetRadiusOfHNinteractions2( const G4double Radius2 );
57 
58  void SetSlope( const G4double Slope );
59  void SetGamma0( const G4double Gamma0 );
60  G4double GammaElastic( const G4double impactsquare );
61 
62  // Set parameters of elastic scattering
63  void SetAvaragePt2ofElasticScattering( const G4double aPt2 );
64 
65  // Set parameters of excitations
66  void SetParams( const G4int ProcN,
67  const G4double A1, const G4double B1, const G4double A2, const G4double B2,
68  const G4double A3, const G4double Atop, const G4double Ymin );
69 
70  void SetDeltaProbAtQuarkExchange( const G4double aValue );
71  void SetProbOfSameQuarkExchange( const G4double aValue );
72 
73  void SetProjMinDiffMass( const G4double aValue );
74  void SetProjMinNonDiffMass( const G4double aValue );
75 // void SetProbabilityOfProjDiff( const G4double aValue ); // Uzhi Oct 2014
76  void SetProbLogDistrPrD( const G4double aValue );
77 
78  void SetTarMinDiffMass( const G4double aValue );
79  void SetTarMinNonDiffMass( const G4double aValue );
80 // void SetProbabilityOfTarDiff( const G4double aValue ); // Uzhi Oct 2014
81 
82  void SetAveragePt2( const G4double aValue );
83  void SetProbLogDistr( const G4double aValue );
84 
85  // Set parameters of a string kink
86  void SetPt2Kink( const G4double aValue );
87  void SetQuarkProbabilitiesAtGluonSplitUp( const G4double Puubar, const G4double Pddbar,
88  const G4double Pssbar );
89 
90  // Set parameters of nuclear destruction
91  void SetMaxNumberOfCollisions( const G4double aValue, const G4double bValue );
92  void SetProbOfInteraction( const G4double aValue );
93 
94  void SetCofNuclearDestructionPr( const G4double aValue ); // Uzhi May 2015
95  void SetCofNuclearDestruction( const G4double aValue );
96  void SetR2ofNuclearDestruction( const G4double aValue );
97 
99 
100  void SetDofNuclearDestruction( const G4double aValue );
101  void SetPt2ofNuclearDestruction( const G4double aValue );
102  void SetMaxPt2ofNuclearDestruction( const G4double aValue );
103 
104  // Get geometrical parameteres
108 
109  G4double GetProbabilityOfInteraction( const G4double impactsquare );
110  G4double GetInelasticProbability( const G4double impactsquare );
112  G4double GetSlope();
114 
115  // Get parameters of elastic scattering
117 
118  // Get parameters of excitations
119  G4double GetProcProb( const G4int ProcN, const G4double y );
120 
123 
127 
130 
133 
134  // Get parameters of a string kink
136  std::vector< G4double > GetQuarkProbabilitiesAtGluonSplitUp();
137 
138  // Get parameters of nuclear destruction
141 
142  G4double GetCofNuclearDestructionPr(); // Uzhi May 2015
145 
147 
151 
152  //private:
153  G4FTFParameters();
154 
155  // Initial energy of hN interactions
156  G4double FTFhNcmsEnergy; // Initial hN CMS energy
157 
158  // hN cross section manager
160 
161  // Geometrical parameteres
162  G4double FTFXtotal; // Total X in mb
163  G4double FTFXelastic; // Elastic X in mb
164  G4double FTFXinelastic; // Inelastic X in mb
165  G4double FTFXannihilation; // Annihilation X in mb
166  G4double ProbabilityOfAnnihilation; // Xannih/Xinelast
168  G4double RadiusOfHNinteractions2; // Xtot/pi, in fm^2
169  G4double FTFSlope; // in fm^-1
172 
173  // Parameters of excitations
175 
178 
181  G4double ProbLogDistrPrD; // Uzhi Oct 2014
184 
187 
188  // Parameters of kink
190  std::vector< G4double > QuarkProbabilitiesAtGluonSplitUp;
191 
192  // Parameters of nuclear destruction
195 
196  G4double CofNuclearDestructionPr; // Cnd of nuclear destruction of projectile nucleus, May 2015.
197  G4double CofNuclearDestruction; // Cnd of nuclear destruction
199 
201 
202  G4double DofNuclearDestruction; // D for momentum sampling
205 
206  // G4-MT changes
207  private:
210 
211 };
212 
213 
214 inline G4double G4FTFParameters::GammaElastic( const G4double impactsquare ) {
215  return ( FTFGamma0 * G4Exp( -FTFSlope * impactsquare ) );
216 }
217 
219  FTFhNcmsEnergy = S;
220 }
221 
222 // Set geometrical parameteres
223 
224 inline void G4FTFParameters::SetTotalCrossSection( const G4double Xtotal ) {
225  FTFXtotal = Xtotal;
226 }
227 
228 inline void G4FTFParameters::SetElastisCrossSection( const G4double Xelastic ) {
229  FTFXelastic = Xelastic;
230 }
231 
232 inline void G4FTFParameters::SetInelasticCrossSection( const G4double Xinelastic ) {
233  FTFXinelastic = Xinelastic;
234 }
235 
237  const G4double Xelastic ) {
238  if ( Xtotal == 0.0 ) {
240  } else {
241  ProbabilityOfElasticScatt = Xelastic / Xtotal;
242  }
243 }
244 
246  ProbabilityOfElasticScatt = aValue;
247 }
248 
250  ProbabilityOfAnnihilation = aValue;
251 }
252 
254  RadiusOfHNinteractions2 = Radius2;
255 }
256 
257 inline void G4FTFParameters::SetSlope( const G4double Slope ) {
258  FTFSlope = 12.84 / Slope; // Slope is in GeV^-2, FTFSlope in fm^-2
259 }
260 
261 inline void G4FTFParameters::SetGamma0( const G4double Gamma0 ) {
262  FTFGamma0 = Gamma0;
263 }
264 
265 // Set parameters of elastic scattering
268 }
269 
270 // Set parameters of excitations
271 
272 inline void G4FTFParameters::SetParams( const G4int ProcN,
273  const G4double A1, const G4double B1, const G4double A2,
274  const G4double B2, const G4double A3, const G4double Atop,
275  const G4double Ymin ) {
276  ProcParams[ProcN][0] = A1; ProcParams[ProcN][1] = B1;
277  ProcParams[ProcN][2] = A2; ProcParams[ProcN][3] = B2;
278  ProcParams[ProcN][4] = A3;
279  ProcParams[ProcN][5] = Atop; ProcParams[ProcN][6] = Ymin;
280 }
281 
283  DeltaProbAtQuarkExchange = aValue;
284 }
285 
287  ProbOfSameQuarkExchange = aValue;
288 }
289 
290 inline void G4FTFParameters::SetProjMinDiffMass( const G4double aValue ) {
291  ProjMinDiffMass = aValue*CLHEP::GeV;
292 }
293 
296 }
297 
298 inline void G4FTFParameters::SetTarMinDiffMass( const G4double aValue ) {
299  TarMinDiffMass = aValue*CLHEP::GeV;
300 }
301 
302 inline void G4FTFParameters::SetTarMinNonDiffMass( const G4double aValue ) {
303  TarMinNonDiffMass = aValue*CLHEP::GeV;
304 }
305 
306 inline void G4FTFParameters::SetAveragePt2( const G4double aValue ) {
308 }
309 
310 inline void G4FTFParameters::SetProbLogDistrPrD( const G4double aValue ) { // Uzhi Oct 2014
311  ProbLogDistrPrD = aValue;
312 }
313 
314 inline void G4FTFParameters::SetProbLogDistr( const G4double aValue ) {
315  ProbLogDistr = aValue;
316 }
317 
318 // Set parameters of a string kink
319 
320 inline void G4FTFParameters::SetPt2Kink( const G4double aValue ) {
321  Pt2kink = aValue;
322 }
323 
325  const G4double Pddbar,
326  const G4double Pssbar ) {
327  QuarkProbabilitiesAtGluonSplitUp.push_back( Puubar );
328  QuarkProbabilitiesAtGluonSplitUp.push_back( Puubar + Pddbar );
329  QuarkProbabilitiesAtGluonSplitUp.push_back( Puubar + Pddbar + Pssbar );
330 }
331 
332 // Set parameters of nuclear destruction
334  const G4double Pbound ) {
335  if ( Plab > Pbound ) {
336  MaxNumberOfCollisions = Plab/Pbound;
337  SetProbOfInteraction( -1.0 );
338  } else {
339  //MaxNumberOfCollisions = -1.0;
340  //SetProbOfInteraction( G4Exp( 0.25*(Plab-Pbound) ) );
342  SetProbOfInteraction( -1.0 );
343  }
344 }
345 
346 inline void G4FTFParameters::SetProbOfInteraction( const G4double aValue ) {
347  ProbOfInelInteraction = aValue;
348 }
349 
350 inline void G4FTFParameters::SetCofNuclearDestructionPr( const G4double aValue ) { // Uzhi May 2015
351  CofNuclearDestructionPr = aValue;
352 }
353 
355  CofNuclearDestruction = aValue;
356 }
357 
359  R2ofNuclearDestruction = aValue;
360 }
361 
364 }
365 
367  DofNuclearDestruction = aValue;
368 }
369 
371  Pt2ofNuclearDestruction = aValue;
372 }
373 
376 }
377 
378 // Get geometrical parameteres
380  return FTFXtotal;
381 }
382 
384  return FTFXelastic;
385 }
386 
388  return FTFXinelastic;
389 }
390 
392  return FTFSlope;
393 }
394 
396  if ( RadiusOfHNinteractions2 > impactsquare ) {
397  return 1.0;
398  } else {
399  return 0.0;
400  }
401 }
402 
405 }
406 
408  G4double Gamma = GammaElastic( impactsquare );
409  return 2*Gamma - Gamma*Gamma;
410 }
411 
414 }
415 
416 // Get parameters of elastic scattering
419 }
420 
421 // Get parameters of excitations
422 
425 }
426 
429 }
430 
432  return ProjMinDiffMass;
433 }
434 
436  return ProjMinNonDiffMass;
437 }
438 
440  return TarMinDiffMass;
441 }
442 
444  return TarMinNonDiffMass;
445 }
446 
448  return AveragePt2;
449 }
450 
452  return ProbLogDistrPrD;
453 }
454 
456  return ProbLogDistr;
457 }
458 
459 // Get parameters of a string kink
460 
462  return Pt2kink;
463 }
464 
467 }
468 
469 // Get parameters of nuclear destruction
470 
472  return MaxNumberOfCollisions;
473 }
474 
476  return ProbOfInelInteraction;
477 }
478 
481 }
482 
484  return CofNuclearDestruction;
485 }
486 
488  return R2ofNuclearDestruction;
489 }
490 
493 }
494 
496  return DofNuclearDestruction;
497 }
498 
501 }
502 
505 }
506 
507 #endif
G4double GetElasticCrossSection()
static G4ThreadLocal G4ChipsComponentXS * chipsComponentXSinstance
void SetProbLogDistr(const G4double aValue)
G4double ProjMinDiffMass
G4double GetProbabilityOfElasticScatt()
G4double GetProjMinDiffMass()
double S(double temp)
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()
static const double s
Definition: G4SIunits.hh:168
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:214
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
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()