ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4ComponentBarNucleonNucleusXsc.hh
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4ComponentBarNucleonNucleusXsc.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 //
27 // author: Vladimir.Grichine@cern.ch
28 //
29 // Implements data from: Barashenkov V.S., Nucleon-Nucleus Cross Section,
30 // Preprint JINR P2-89-770, p. 12, Dubna 1989 (scanned version from KEK)
31 // Based on G4NucleonNuclearCrossSection class
32 //
33 // Modifications: 16.08.2018 V.Ivanchenko major revision
34 //
35 
36 #ifndef G4ComponentBarNucleonNucleusXsc_h
37 #define G4ComponentBarNucleonNucleusXsc_h
38 
39 
41 #include "G4ParticleDefinition.hh"
42 #include "G4DynamicParticle.hh"
43 
44 #include "globals.hh"
45 #include "G4PiData.hh"
46 #include "G4Threading.hh"
47 #include <vector>
48 
50 {
51 
52 public:
53 
56 
58  G4double kinEnergy,
59  G4int Z, G4int ) final;
60 
62  G4double kinEnergy,
63  G4int Z, G4double ) final;
64 
66  G4double kinEnergy,
67  G4int Z, G4int ) final;
68 
70  G4double kinEnergy,
71  G4int Z, G4double ) final;
72 
74  G4double kinEnergy,
75  G4int Z, G4double ) final;
76 
78  G4double kinEnergy,
79  G4int Z, G4int ) final;
80 
81  void ComputeCrossSections(const G4ParticleDefinition* aParticle,
82  G4double kinEnergy, G4int Z);
83 
84  void BuildPhysicsTable(const G4ParticleDefinition&) final;
85 
86  void Description(std::ostream&) const final;
87 
88  inline G4double GetElementCrossSection(const G4DynamicParticle* aParticle, G4int Z);
89  inline G4double GetElasticCrossSection(const G4DynamicParticle* aParticle, G4int Z);
90 
91  inline G4double GetTotalXsc() { return fTotalXsc; };
92  inline G4double GetElasticXsc() { return fElasticXsc; };
93  inline G4double GetInelasticXsc() { return fInelasticXsc; };
94 
95 private:
96 
98 
99  void LoadData();
100 
101  // cross sections
105 
106  // particles
109 
111 
112  static G4double theA[93];
113  static G4double A75[93];
114 
115  static const G4int NZ = 17;
116  static G4int theZ[NZ];
117  static std::vector<G4PiData*>* thePData;
118  static std::vector<G4PiData*>* theNData;
119 
120 #ifdef G4MULTITHREADED
121  static G4Mutex barNNXSMutex;
122 #endif
123 
124 };
125 
126 inline
128  const G4DynamicParticle* dp, G4int Z)
129 {
131  return fInelasticXsc;
132 }
133 
134 inline
136  const G4DynamicParticle* dp, G4int Z)
137 {
139  return fElasticXsc;
140 }
141 
142 #endif