Geant4  9.6.p02
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
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$
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 
40 {
41 
42  public:
44  G4int theZ,
45  G4double s);
46 // G4FTFParameters(const G4ParticleDefinition * , G4double theA,
47 // G4double theZ,
48 // G4double s);
49 
51 
52 // --------- Set geometrical parameteres -----------------------------
53  void SethNcmsEnergy(const G4double s);
54  void SetTotalCrossSection(const G4double Xtotal);
55  void SetElastisCrossSection(const G4double Xelastic);
56  void SetInelasticCrossSection(const G4double Xinelastic);
57  void SetProbabilityOfElasticScatt(const G4double Xtotal, const G4double Xelastic);
58  void SetProbabilityOfElasticScatt(const G4double aValue);
59  void SetProbabilityOfAnnihilation(const G4double aValue); // Uzhi 18.11.10
60 
61  void SetRadiusOfHNinteractions2(const G4double Radius2);
62  void SetSlope(const G4double Slope);
63  void SetGamma0(const G4double Gamma0);
64 
65  G4double GammaElastic(const G4double impactsquare)
66  {return (FTFGamma0 * std::exp(-FTFSlope * impactsquare));};
67 
68 // --------- Set parameters of elastic scattering --------------------
70 
71 // --------- Set parameters of excitations ---------------------------
72  void SetMagQuarkExchange(const G4double aValue);
73  void SetSlopeQuarkExchange(const G4double aValue);
74  void SetDeltaProbAtQuarkExchange(const G4double aValue);
75  void SetProbOfSameQuarkExchange(const G4double aValue);
76 
77  void SetProjMinDiffMass(const G4double aValue);
78  void SetProjMinNonDiffMass(const G4double aValue);
79  void SetProbabilityOfProjDiff(const G4double aValue);
80 
81  void SetTarMinDiffMass(const G4double aValue);
82  void SetTarMinNonDiffMass(const G4double aValue);
83  void SetProbabilityOfTarDiff(const G4double aValue);
84 
85  void SetAveragePt2(const G4double aValue);
86  void SetProbLogDistr(const G4double aValue);
87 
88 // --------- Set parameters of a string kink --------------------------------
89  void SetPt2Kink(const G4double aValue);
91  const G4double Pddbar,
92  const G4double Pssbar );
93 
94 // --------- Set parameters of nuclear destruction--------------------
95  void SetMaxNumberOfCollisions(const G4double aValue, const G4double bValue);
96  void SetProbOfInteraction(const G4double aValue);
97 
98  void SetCofNuclearDestruction(const G4double aValue);
99  void SetR2ofNuclearDestruction(const G4double aValue);
100 
102 
103  void SetDofNuclearDestruction(const G4double aValue);
104  void SetPt2ofNuclearDestruction(const G4double aValue);
105  void SetMaxPt2ofNuclearDestruction(const G4double aValue);
106 
107 //--------------------------------------------------------------------
108 // --------- Get geometrical parameteres -----------------------------
112 
113  G4double GetProbabilityOfInteraction(const G4double impactsquare);
114  G4double GetInelasticProbability(const G4double impactsquare);
116  G4double GetSlope();
117  G4double GetProbabilityOfAnnihilation(); // Uzhi 18.11.10
118 
119 // --------- Get parameters of elastic scattering --------------------
121 
122 // --------- Get parameters of excitations ---------------------------
127 
131 
135 
138 
139 // --------- Get parameters of a string kink --------------------------------
141  std::vector<G4double> GetQuarkProbabilitiesAtGluonSplitUp();
142 
143 // --------- Get parameters of nuclear destruction---------------------
146 
149 
151 
155 
156 // private:
157 
158  G4FTFParameters();
159 
160 // ------------ Initial energy of hN interactions --------------------
161  G4double FTFhNcmsEnergy; // Initial hN CMS energy
162 
163 // ------------ hN cross section manager -----------------------------
165 // ------------ Geometrical parameteres ------------------------------
166  G4double FTFXtotal; // Total X in mb
167  G4double FTFXelastic; // Elastic X in mb
168  G4double FTFXinelastic; // Inelastic X in mb
169  G4double FTFXannihilation; // Annihilation X in mb // Uzhi 18.11.10
170  G4double ProbabilityOfAnnihilation; // Xannih/Xinelast // Uzhi 18.11.10
172  G4double RadiusOfHNinteractions2; // Xtot/pi, in fn^2
173  G4double FTFSlope; // in fm^-1
176 
177 // --------- Parameters of excitations -------------------------------
182 
186 
190 
193 
194 // ---------- Parameters of kink -------------------------------------
196  std::vector<G4double> QuarkProbabilitiesAtGluonSplitUp;
197 
198 // --------- Parameters of nuclear destruction------------------------
201 
202  G4double CofNuclearDestruction; // Cnd of nuclear destruction
204 
206 
207  G4double DofNuclearDestruction; // D for momentum sampling
210 
211 };
212 
213 // --------------------------------------------------------------------
215  {FTFhNcmsEnergy = S;}
216 
217 // --------- Set geometrical parameteres ------------------------------
219  {FTFXtotal = Xtotal;}
220 
222  {FTFXelastic = Xelastic;}
223 
225  {FTFXinelastic = Xinelastic;}
226 
228  const G4double Xelastic)
229  {
230  if(Xtotal==0.) {ProbabilityOfElasticScatt = 0.;}
231  else {ProbabilityOfElasticScatt = Xelastic/Xtotal;};
232  }
233 
235  {ProbabilityOfElasticScatt = aValue;}
236 
238  {ProbabilityOfAnnihilation = aValue;} // Uzhi 18.11.10
239 
241  {RadiusOfHNinteractions2 = Radius2;}
242 
243 inline void G4FTFParameters::SetSlope(const G4double Slope)
244  {FTFSlope = 12.84/Slope;} // Slope is in GeV^-2, FTFSlope in fm^-2
245 
246 inline void G4FTFParameters::SetGamma0(const G4double Gamma0)
247  {FTFGamma0 = Gamma0;}
248 
249 // --------- Set parameters of elastic scattering ---------------------
251  {
253 
254 // --------- Set parameters of excitations ----------------------------
256  {MagQuarkExchange = aValue;}
258  {SlopeQuarkExchange = aValue;}
260  {DeltaProbAtQuarkExchange = aValue;}
262  {ProbOfSameQuarkExchange = aValue;}
263 
265  {ProjMinDiffMass = aValue*CLHEP::GeV;}
267  {ProjMinNonDiffMass = aValue*CLHEP::GeV;}
269  {ProbabilityOfProjDiff = aValue;}
270 
272  {TarMinDiffMass = aValue*CLHEP::GeV;}
274  {TarMinNonDiffMass = aValue*CLHEP::GeV;}
276  {ProbabilityOfTarDiff = aValue;}
277 
278 inline void G4FTFParameters::SetAveragePt2(const G4double aValue)
279  {AveragePt2 = aValue*CLHEP::GeV*CLHEP::GeV;}
280 
282  {ProbLogDistr = aValue;}
283 
284 // --------- Set parameters of a string kink --------------------------------
285 inline void G4FTFParameters::SetPt2Kink(const G4double aValue)
286  {Pt2kink = aValue;}
287 
289  const G4double Puubar,
290  const G4double Pddbar,
291  const G4double Pssbar )
292  {
293  QuarkProbabilitiesAtGluonSplitUp.push_back(Puubar);
294  QuarkProbabilitiesAtGluonSplitUp.push_back(Puubar+Pddbar);
295  QuarkProbabilitiesAtGluonSplitUp.push_back(Puubar+Pddbar+Pssbar);
296  }
297 
298 // --------- Set parameters of nuclear destruction--------------------
300  const G4double Pbound)
301  {
302  if(Plab > Pbound)
303  {
304  MaxNumberOfCollisions = Plab/Pbound;
306  } else
307  {
308 // MaxNumberOfCollisions = -1.;
309 // SetProbOfInteraction(std::exp(0.25*(Plab-Pbound)));
312  }
313  }
315  {ProbOfInelInteraction = aValue;}
316 
318  {CofNuclearDestruction = aValue;}
320  {R2ofNuclearDestruction = aValue;}
321 
324 
326  {DofNuclearDestruction = aValue;}
328  {Pt2ofNuclearDestruction =aValue;}
330  {MaxPt2ofNuclearDestruction = aValue;}
331 
332 // --------- Get geometrical parameteres ------------------------------
336 
338 
340  {
341  if(RadiusOfHNinteractions2 > impactsquare) {return 1.;}
342  else {return 0.;}
343  }
344 
346  {return ProbabilityOfElasticScatt;}
347 
349  {
350  G4double Gamma = GammaElastic(impactsquare);
351  return 2 * Gamma - Gamma *Gamma;
352  }
353 
355  {return ProbabilityOfAnnihilation;}
356  // Uzhi 18.11.10
357 
358 // --------- Get parameters of elastic scattering ---------------------
361 
362 // --------- Get parameters of excitations ---------------------------
368 
372 
376 
379 
380 // --------- Get parameters of a string kink --------------------------
382 inline std::vector<G4double>
385 
386 // --------- Get parameters of nuclear destruction---------------------
389 
392 
395 
396 
398  {return DofNuclearDestruction;}
402 #endif