Geant4_10
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 74627 2013-10-17 07:04:38Z gcosmo $
28 // GEANT4 tag $Name: $
29 //
30 #ifndef G4FTFParameters_h
31 #define G4FTFParameters_h 1
32 
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 );
74 
75  void SetTarMinDiffMass( const G4double aValue );
76  void SetTarMinNonDiffMass( const G4double aValue );
77  void SetProbabilityOfTarDiff( const G4double aValue );
78 
79  void SetAveragePt2( const G4double aValue );
80  void SetProbLogDistr( const G4double aValue );
81 
82  // Set parameters of a string kink
83  void SetPt2Kink( const G4double aValue );
84  void SetQuarkProbabilitiesAtGluonSplitUp( const G4double Puubar, const G4double Pddbar,
85  const G4double Pssbar );
86 
87  // Set parameters of nuclear destruction
88  void SetMaxNumberOfCollisions( const G4double aValue, const G4double bValue );
89  void SetProbOfInteraction( const G4double aValue );
90 
91  void SetCofNuclearDestruction( const G4double aValue );
92  void SetR2ofNuclearDestruction( const G4double aValue );
93 
95 
96  void SetDofNuclearDestruction( const G4double aValue );
97  void SetPt2ofNuclearDestruction( const G4double aValue );
98  void SetMaxPt2ofNuclearDestruction( const G4double aValue );
99 
100  // Get geometrical parameteres
104 
105  G4double GetProbabilityOfInteraction( const G4double impactsquare );
106  G4double GetInelasticProbability( const G4double impactsquare );
108  G4double GetSlope();
110 
111  // Get parameters of elastic scattering
113 
114  // Get parameters of excitations
115  G4double GetProcProb( const G4int ProcN, const G4double y );
116 
119 
122 
125 
128 
129  // Get parameters of a string kink
131  std::vector< G4double > GetQuarkProbabilitiesAtGluonSplitUp();
132 
133  // Get parameters of nuclear destruction
136 
139 
141 
145 
146  //private:
147  G4FTFParameters();
148 
149  // Initial energy of hN interactions
150  G4double FTFhNcmsEnergy; // Initial hN CMS energy
151 
152  // hN cross section manager
154 
155  // Geometrical parameteres
156  G4double FTFXtotal; // Total X in mb
157  G4double FTFXelastic; // Elastic X in mb
158  G4double FTFXinelastic; // Inelastic X in mb
159  G4double FTFXannihilation; // Annihilation X in mb
160  G4double ProbabilityOfAnnihilation; // Xannih/Xinelast
162  G4double RadiusOfHNinteractions2; // Xtot/pi, in fm^2
163  G4double FTFSlope; // in fm^-1
166 
167  // Parameters of excitations
169 
172 
175 
178 
181 
182  // Parameters of kink
184  std::vector< G4double > QuarkProbabilitiesAtGluonSplitUp;
185 
186  // Parameters of nuclear destruction
189 
190  G4double CofNuclearDestruction; // Cnd of nuclear destruction
192 
194 
195  G4double DofNuclearDestruction; // D for momentum sampling
198 
199  // G4-MT changes
200  private:
201  static G4ThreadLocal bool chipsComponentXSisInitialized;
202  static G4ThreadLocal G4ChipsComponentXS* chipsComponentXSinstance;
203 
204 };
205 
206 
207 inline G4double G4FTFParameters::GammaElastic( const G4double impactsquare ) {
208  return ( FTFGamma0 * std::exp( -FTFSlope * impactsquare ) );
209 }
210 
211 inline void G4FTFParameters::SethNcmsEnergy( const G4double S ) {
212  FTFhNcmsEnergy = S;
213 }
214 
215 // Set geometrical parameteres
216 
217 inline void G4FTFParameters::SetTotalCrossSection( const G4double Xtotal ) {
218  FTFXtotal = Xtotal;
219 }
220 
221 inline void G4FTFParameters::SetElastisCrossSection( const G4double Xelastic ) {
222  FTFXelastic = Xelastic;
223 }
224 
225 inline void G4FTFParameters::SetInelasticCrossSection( const G4double Xinelastic ) {
226  FTFXinelastic = Xinelastic;
227 }
228 
230  const G4double Xelastic ) {
231  if ( Xtotal == 0.0 ) {
233  } else {
234  ProbabilityOfElasticScatt = Xelastic / Xtotal;
235  }
236 }
237 
239  ProbabilityOfElasticScatt = aValue;
240 }
241 
243  ProbabilityOfAnnihilation = aValue;
244 }
245 
247  RadiusOfHNinteractions2 = Radius2;
248 }
249 
250 inline void G4FTFParameters::SetSlope( const G4double Slope ) {
251  FTFSlope = 12.84 / Slope; // Slope is in GeV^-2, FTFSlope in fm^-2
252 }
253 
254 inline void G4FTFParameters::SetGamma0( const G4double Gamma0 ) {
255  FTFGamma0 = Gamma0;
256 }
257 
258 // Set parameters of elastic scattering
261 }
262 
263 // Set parameters of excitations
264 
265 inline void G4FTFParameters::SetParams( const G4int ProcN,
266  const G4double A1, const G4double B1, const G4double A2,
267  const G4double B2, const G4double A3, const G4double Atop,
268  const G4double Ymin ) {
269  ProcParams[ProcN][0] = A1; ProcParams[ProcN][1] = B1;
270  ProcParams[ProcN][2] = A2; ProcParams[ProcN][3] = B2;
271  ProcParams[ProcN][4] = A3;
272  ProcParams[ProcN][5] = Atop; ProcParams[ProcN][6] = Ymin;
273 }
274 
276  DeltaProbAtQuarkExchange = aValue;
277 }
278 
280  ProbOfSameQuarkExchange = aValue;
281 }
282 
283 inline void G4FTFParameters::SetProjMinDiffMass( const G4double aValue ) {
284  ProjMinDiffMass = aValue*CLHEP::GeV;
285 }
286 
288  ProjMinNonDiffMass = aValue*CLHEP::GeV;
289 }
290 
291 inline void G4FTFParameters::SetTarMinDiffMass( const G4double aValue ) {
292  TarMinDiffMass = aValue*CLHEP::GeV;
293 }
294 
295 inline void G4FTFParameters::SetTarMinNonDiffMass( const G4double aValue ) {
296  TarMinNonDiffMass = aValue*CLHEP::GeV;
297 }
298 
299 inline void G4FTFParameters::SetAveragePt2( const G4double aValue ) {
300  AveragePt2 = aValue*CLHEP::GeV*CLHEP::GeV;
301 }
302 
303 inline void G4FTFParameters::SetProbLogDistr( const G4double aValue ) {
304  ProbLogDistr = aValue;
305 }
306 
307 // Set parameters of a string kink
308 
309 inline void G4FTFParameters::SetPt2Kink( const G4double aValue ) {
310  Pt2kink = aValue;
311 }
312 
314  const G4double Pddbar,
315  const G4double Pssbar ) {
316  QuarkProbabilitiesAtGluonSplitUp.push_back( Puubar );
317  QuarkProbabilitiesAtGluonSplitUp.push_back( Puubar + Pddbar );
318  QuarkProbabilitiesAtGluonSplitUp.push_back( Puubar + Pddbar + Pssbar );
319 }
320 
321 // Set parameters of nuclear destruction
323  const G4double Pbound ) {
324  if ( Plab > Pbound ) {
325  MaxNumberOfCollisions = Plab/Pbound;
326  SetProbOfInteraction( -1.0 );
327  } else {
328  //MaxNumberOfCollisions = -1.0;
329  //SetProbOfInteraction( std::exp( 0.25*(Plab-Pbound) ) );
331  SetProbOfInteraction( -1.0 );
332  }
333 }
334 
335 inline void G4FTFParameters::SetProbOfInteraction( const G4double aValue ) {
336  ProbOfInelInteraction = aValue;
337 }
338 
340  CofNuclearDestruction = aValue;
341 }
342 
344  R2ofNuclearDestruction = aValue;
345 }
346 
349 }
350 
352  DofNuclearDestruction = aValue;
353 }
354 
356  Pt2ofNuclearDestruction = aValue;
357 }
358 
361 }
362 
363 // Get geometrical parameteres
365  return FTFXtotal;
366 }
367 
369  return FTFXelastic;
370 }
371 
373  return FTFXinelastic;
374 }
375 
377  return FTFSlope;
378 }
379 
381  if ( RadiusOfHNinteractions2 > impactsquare ) {
382  return 1.0;
383  } else {
384  return 0.0;
385  }
386 }
387 
390 }
391 
393  G4double Gamma = GammaElastic( impactsquare );
394  return 2*Gamma - Gamma*Gamma;
395 }
396 
399 }
400 
401 // Get parameters of elastic scattering
404 }
405 
406 // Get parameters of excitations
407 
410 }
411 
414 }
415 
417  return ProjMinDiffMass;
418 }
419 
421  return ProjMinNonDiffMass;
422 }
423 
425  return TarMinDiffMass;
426 }
427 
429  return TarMinNonDiffMass;
430 }
431 
433  return AveragePt2;
434 }
435 
437  return ProbLogDistr;
438 }
439 
440 // Get parameters of a string kink
441 
443  return Pt2kink;
444 }
445 
448 }
449 
450 // Get parameters of nuclear destruction
451 
453  return MaxNumberOfCollisions;
454 }
455 
457  return ProbOfInelInteraction;
458 }
459 
461  return CofNuclearDestruction;
462 }
463 
465  return R2ofNuclearDestruction;
466 }
467 
470 }
471 
473  return DofNuclearDestruction;
474 }
475 
478 }
479 
482 }
483 
484 #endif
G4double GetElasticCrossSection()
void SetProbLogDistr(const G4double aValue)
G4double ProjMinDiffMass
G4double GetProbabilityOfElasticScatt()
G4double GetProjMinDiffMass()
G4double ProbabilityOfAnnihilation
G4double Pt2ofNuclearDestruction
G4double GetInelasticCrossSection()
const XML_Char * s
Definition: expat.h:262
G4double GetInelasticProbability(const G4double impactsquare)
G4double GetProbLogDistr()
void SetProbabilityOfProjDiff(const G4double aValue)
G4double GetTarMinDiffMass()
G4double GetAvaragePt2ofElasticScattering()
G4double GetPt2Kink()
#define G4ThreadLocal
Definition: tls.hh:52
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)
Double_t y
Definition: plot.C:279
void SetGamma0(const G4double Gamma0)
G4double GetProbOfInteraction()
void SetAveragePt2(const G4double aValue)
G4double GetMaxNumberOfCollisions()
G4double DofNuclearDestruction
G4double ProcParams[4][7]
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 MaxPt2ofNuclearDestruction
G4double ProbOfSameQuarkExchange
G4double GetTarMinNonDiffMass()
void SetProbabilityOfTarDiff(const G4double aValue)
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 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)
void SetPt2ofNuclearDestruction(const G4double aValue)
G4double GammaElastic(const G4double impactsquare)
void SetAvaragePt2ofElasticScattering(const G4double aPt2)
void SetTarMinDiffMass(const G4double aValue)
int Ymin
void SetR2ofNuclearDestruction(const G4double aValue)
G4double TarMinNonDiffMass
std::vector< G4double > GetQuarkProbabilitiesAtGluonSplitUp()
G4double GetDofNuclearDestruction()