Geant4  10.02.p02
G4VComponentCrossSection.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 // $Id: G4VComponentCrossSection.hh 66241 2012-12-13 18:34:42Z gunter $
27 //
28 // -------------------------------------------------------------------
29 //
30 // GEANT4 Class header file
31 //
32 //
33 // File name: G4VComponentCrossSection
34 //
35 // Authors: G.Folger, V.Ivanchenko, D.Wright
36 //
37 // Modifications:
38 //
39 
40 //
41 // Class Description
42 // This is a base class for hadronic cross section data source
43 // Class Description - End
44 
45 #ifndef G4VComponentCrossSection_h
46 #define G4VComponentCrossSection_h 1
47 
48 #include "G4ParticleDefinition.hh"
49 #include "G4Element.hh"
50 #include "globals.hh"
51 
53 {
54 public: //with description
55 
56  G4VComponentCrossSection(const G4String& nam = "");
57 
58  virtual ~G4VComponentCrossSection();
59 
60  inline
62  G4double kinEnergy,
63  const G4Element*);
64 
65  virtual
67  G4double kinEnergy,
68  G4int /*Z*/, G4double /*N*/) = 0;
69 
70  virtual
72  G4double kinEnergy,
73  G4int /*Z*/, G4int /*N*/) = 0;
74 
75  inline
77  G4double kinEnergy,
78  const G4Element*);
79 
80  virtual
82  G4double kinEnergy,
83  G4int /*Z*/, G4double /*N*/) = 0;
84 
85  virtual
87  G4double kinEnergy,
88  G4int /*Z*/, G4int /*N*/) = 0;
89 
90  inline
92  G4double kinEnergy,
93  const G4Element*);
94 
95  virtual
97  G4double kinEnergy,
98  G4int /*Z*/, G4double /*N*/) = 0;
99 
100  virtual
102  G4double kinEnergy,
103  G4int /*Z*/, G4int /*N*/) = 0;
104 
105  virtual
107  G4double kinEnergy,
108  G4int /*Z*/, G4int /*N*/);
109 
110  virtual
112 
113  virtual
115 
116  virtual
117  void Description() const;
118 
119  inline void SetVerboseLevel(G4int value);
120 
121  inline G4int GetVerboseLevel() const;
122 
123  inline G4double GetMinKinEnergy() const;
124 
125  inline void SetMinKinEnergy(G4double value);
126 
127  inline G4double GetMaxKinEnergy() const;
128 
129  inline void SetMaxKinEnergy(G4double value);
130 
131  inline const G4String& GetName() const;
132 
133 private:
134 
137 
139 
142 
143  const G4String name;
144 };
145 
146 inline G4double
148  const G4ParticleDefinition* p,
149  G4double kinEnergy,
150  const G4Element* elm)
151 {
152  return GetTotalElementCrossSection(p,kinEnergy,
153  (G4int)elm->GetZ(),elm->GetN());
154 }
155 
156 inline G4double
158  const G4ParticleDefinition* p,
159  G4double kinEnergy,
160  const G4Element* elm)
161 {
162  return GetInelasticElementCrossSection(p,kinEnergy,
163  (G4int)elm->GetZ(),elm->GetN());
164 }
165 
166 inline G4double
168  const G4ParticleDefinition* p,
169  G4double kinEnergy,
170  const G4Element* elm)
171 {
172  return GetElasticElementCrossSection(p,kinEnergy,
173  (G4int)elm->GetZ(),elm->GetN());
174 }
175 
177 {
178  verboseLevel = value;
179 }
180 
182 {
183  return verboseLevel;
184 }
185 
187 {
188  minKinEnergy = value;
189 }
190 
192 {
193  return minKinEnergy;
194 }
195 
197 {
198  maxKinEnergy = value;
199 }
200 
202 {
203  return maxKinEnergy;
204 }
205 
207 {
208  return name;
209 }
210 
211 #endif
void SetMinKinEnergy(G4double value)
virtual G4double ComputeQuasiElasticRatio(const G4ParticleDefinition *, G4double kinEnergy, G4int, G4int)
virtual G4double GetElasticIsotopeCrossSection(const G4ParticleDefinition *, G4double kinEnergy, G4int, G4int)=0
G4double GetN() const
Definition: G4Element.hh:134
G4double GetZ() const
Definition: G4Element.hh:131
virtual G4double GetTotalIsotopeCrossSection(const G4ParticleDefinition *, G4double kinEnergy, G4int, G4int)=0
int G4int
Definition: G4Types.hh:78
virtual G4double GetInelasticIsotopeCrossSection(const G4ParticleDefinition *, G4double kinEnergy, G4int, G4int)=0
G4VComponentCrossSection & operator=(const G4VComponentCrossSection &right)
virtual void Description() const
G4double GetElasticElementCrossSection(const G4ParticleDefinition *, G4double kinEnergy, const G4Element *)
virtual void DumpPhysicsTable(const G4ParticleDefinition &)
G4double GetInelasticElementCrossSection(const G4ParticleDefinition *, G4double kinEnergy, const G4Element *)
G4double GetTotalElementCrossSection(const G4ParticleDefinition *, G4double kinEnergy, const G4Element *)
G4VComponentCrossSection(const G4String &nam="")
double G4double
Definition: G4Types.hh:76
const G4String & GetName() const
virtual void BuildPhysicsTable(const G4ParticleDefinition &)
void SetMaxKinEnergy(G4double value)