ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4ComponentGGNuclNuclXsc.hh
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4ComponentGGNuclNuclXsc.hh
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
34 // G4GlauberGribovCrossSection
35 //
36 // 04.09.18 V. Ivantchenko Major revision of interfaces and implementation
37 // 27.05.19 V. Ivantchenko Removed obsolete methods and members
38 //
39 
40 #ifndef G4ComponentGGNuclNuclXsc_h
41 #define G4ComponentGGNuclNuclXsc_h
42 
43 #include "globals.hh"
45 #include "G4DynamicParticle.hh"
46 
48 class G4HadronNucleonXsc;
50 class G4Material;
51 
53 {
54 public:
55 
57  virtual ~G4ComponentGGNuclNuclXsc ();
58 
59  // virtual interface methods
61  G4double kinEnergy,
62  G4int Z, G4double A) final;
63 
65  G4double kinEnergy,
66  G4int Z, G4int A) final;
67 
69  G4double kinEnergy,
70  G4int Z, G4double A) final;
71 
73  G4double kinEnergy,
74  G4int Z, G4int A) final;
75 
77  G4double kinEnergy,
78  G4int Z, G4double A) final;
79 
81  G4double kinEnergy,
82  G4int Z, G4int A) final;
83 
85  G4double kinEnergy,
86  G4int Z, G4int A) final;
87 
88  void BuildPhysicsTable(const G4ParticleDefinition&) final;
89 
90  void DumpPhysicsTable(const G4ParticleDefinition&) final;
91 
92  void Description(std::ostream&) const final;
93 
94  // Extra methods
95  // inline G4double GetElementCrossSection(const G4DynamicParticle*,
96  // G4int Z, const G4Material*);
97 
99  G4int Z, G4int A);
100 
102  G4double Z, G4double A,
103  G4double pR, G4double tR);
104 
106  G4double kinEnergy, G4int Z, G4int A,
107  G4double pR, G4double tR);
108 
111 
114 
115  inline G4double GetTotalGlauberGribovXsc() const { return fTotalXsc; };
116  inline G4double GetElasticGlauberGribovXsc() const { return fElasticXsc; };
120 
121 private:
122 
123  // Glauber-Gribov cross section
124  void ComputeCrossSections(const G4ParticleDefinition* aParticle,
125  G4double kinEnergy, G4int Z, G4int A);
126 
129  // Cache
131 
134 
137 
138  // Cache
141 };
142 
143 inline G4double
145  G4int Z, G4int A)
146 {
148  return fElasticXsc;
149 }
150 
151 inline G4double
153  G4int Z, G4int A)
154 {
156  return fInelasticXsc;
157 }
158 
159 /*
160 inline G4double
161 G4ComponentGGNuclNuclXsc::GetElementCrossSection(const G4DynamicParticle* dp,
162  G4int Z, const G4Material*)
163 {
164  G4int A = G4lrint(fNist->GetAtomicMassAmu(Z));
165  ComputeCrossSections(dp->GetDefinition(), dp->GetKineticEnergy(), Z, A);
166  return fInelasticXsc;
167 }
168 */
169 inline G4double
171  G4int Z, G4int A)
172 {
174  return fInelasticXsc;
175 }
176 
177 inline G4double
179  G4double Z, G4double A,
180  G4double pR, G4double tR)
181 {
183  G4lrint(Z), G4lrint(A), pR, tR);
184 }
185 
186 #endif