Geant4  9.6.p02
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4ComponentGGNuclNuclXsc.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 // Calculation of the nucleus-nucleus total, inelastic, production,
27 // elastic and quasi-elastic cross-sections
28 // based on parametrisations of nucleon-nucleon
29 // cross-sections in
30 // the framework of simplified Glauber-Gribov approach
31 //
32 //
33 // 24.11.08 V. Grichine - first implementation based on G4GlauberGribovCrossSection
34 //
35 //
36 
37 #ifndef G4ComponentGGNuclNuclXsc_h
38 #define G4ComponentGGNuclNuclXsc_h
39 
40 #include "globals.hh"
41 #include "G4Proton.hh"
42 #include "G4Nucleus.hh"
43 #include "G4NistManager.hh"
44 
46 
48 class G4HadronNucleonXsc;
49 
51 {
52 public:
53 
55  virtual ~G4ComponentGGNuclNuclXsc ();
56 
57 
58  // virtual interface methods
59 
60  virtual
62  G4double kinEnergy,
63  G4int Z, G4int A);
64 
65  virtual
67  G4double kinEnergy,
68  G4int Z, G4double A);
69 
70  virtual
72  G4double kinEnergy,
73  G4int Z, G4int A);
74 
75  virtual
77  G4double kinEnergy,
78  G4int Z, G4double A);
79 
80  virtual
82  G4double kinEnergy,
83  G4int Z, G4double A);
84 
85  virtual
87  G4double kinEnergy,
88  G4int Z, G4int A);
89 
90  virtual
92  G4double kinEnergy,
93  G4int Z, G4int A);
94 
95 
96  // virtual
98  G4int Z, const G4Material*);
99 
100  // virtual
102  G4int Z, const G4Material*);
103 
105  G4int Z, G4int A);
106 
108  G4double Z, G4double A, G4double pR, G4double tR);
109 
110  virtual
112  {}
113 
114  virtual
116  {G4cout << "G4NuclNuclCrossSection: uses Glauber-Gribov formula"<<G4endl;}
117 
118  virtual void CrossSectionDescription(std::ostream&) const;
119 
122 
125 
126 
129 
131  G4double CalculateEcmValue(const G4double, const G4double, const G4double);
132  G4double CalcMandelstamS( const G4double , const G4double , const G4double );
133 
136 
137  G4double GetTotalGlauberGribovXsc() { return fTotalXsc; };
138  G4double GetElasticGlauberGribovXsc() { return fElasticXsc; };
139  G4double GetInelasticGlauberGribovXsc(){ return fInelasticXsc; };
140  G4double GetProductionGlauberGribovXsc(){ return fProductionXsc; };
141  G4double GetDiffractionGlauberGribovXsc(){ return fDiffractionXsc; };
142  G4double GetRadiusConst() { return fRadiusConst; };
143 
145 
150 
151  inline void SetEnergyLowerLimit(G4double E ){fLowerLimit=E;};
152 
153 private:
154 
155  const G4double fUpperLimit;
156  G4double fLowerLimit;
157  const G4double fRadiusConst;
158 
159  G4double fTotalXsc, fElasticXsc, fInelasticXsc, fProductionXsc, fDiffractionXsc;
160  G4double fHadronNucleonXsc;
161 
162  G4ParticleDefinition* theProton;
163  G4ParticleDefinition* theNeutron;
164  G4HadronNucleonXsc* hnXsc;
165 };
166 
168 //
169 // Inlines
170 
171 inline G4double
173  G4int Z, G4int A)
174 {
175  GetZandACrossSection(dp, Z, A);
176  return fElasticXsc;
177 }
178 
180 
181 inline G4double
183  G4int Z, G4int A)
184 {
185  GetZandACrossSection(dp, Z, A);
186  return fInelasticXsc;
187 }
188 
189 #endif