Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
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//
27// -------------------------------------------------------------------
28//
29// GEANT4 Class header file
30//
31//
32// File name: G4VComponentCrossSection
33//
34// Authors: G.Folger, V.Ivanchenko, D.Wright
35//
36// Modifications:
37//
38
39//
40// Class Description
41// This is a base class for hadronic cross section data source
42// Class Description - End
43
44#ifndef G4VComponentCrossSection_h
45#define G4VComponentCrossSection_h 1
46
48#include "G4Element.hh"
49#include "globals.hh"
50
52
54{
55public: //with description
56
57 explicit G4VComponentCrossSection(const G4String& nam = "");
58
60
61 inline
63 G4double kinEnergy,
64 const G4Element*);
65
66 virtual
68 G4double kinEnergy,
69 G4int /*Z*/, G4double /*N*/) = 0;
70
71 virtual
73 G4double kinEnergy,
74 G4int /*Z*/, G4int /*N*/) = 0;
75
76 inline
78 G4double kinEnergy,
79 const G4Element*);
80
81 virtual
83 G4double kinEnergy,
84 G4int /*Z*/, G4double /*N*/) = 0;
85
86 virtual
88 G4double kinEnergy,
89 G4int /*Z*/, G4int /*N*/) = 0;
90
91 inline
93 G4double kinEnergy,
94 const G4Element*);
95
96 virtual
98 G4double kinEnergy,
99 G4int /*Z*/, G4double /*N*/) = 0;
100
101 virtual
103 G4double kinEnergy,
104 G4int /*Z*/, G4int /*N*/) = 0;
105
106 virtual
108 G4double kinEnergy,
109 G4int /*Z*/, G4int /*N*/);
110
111 virtual
113
114 virtual
116
117 virtual void Description(std::ostream&) 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
133private:
134
135 G4VComponentCrossSection & operator=(const G4VComponentCrossSection &right);
137
139
140 G4int verboseLevel;
141
142 G4double minKinEnergy;
143 G4double maxKinEnergy;
144
145 const G4String name;
146};
147
148inline G4double
150 const G4ParticleDefinition* p,
151 G4double kinEnergy,
152 const G4Element* elm)
153{
154 return GetTotalElementCrossSection(p,kinEnergy,
155 elm->GetZasInt(),elm->GetN());
156}
157
158inline G4double
160 const G4ParticleDefinition* p,
161 G4double kinEnergy,
162 const G4Element* elm)
163{
164 return GetInelasticElementCrossSection(p,kinEnergy,
165 elm->GetZasInt(),elm->GetN());
166}
167
168inline G4double
170 const G4ParticleDefinition* p,
171 G4double kinEnergy,
172 const G4Element* elm)
173{
174 return GetElasticElementCrossSection(p,kinEnergy,
175 elm->GetZasInt(),elm->GetN());
176}
177
179{
180 verboseLevel = value;
181}
182
184{
185 return verboseLevel;
186}
187
189{
190 minKinEnergy = value;
191}
192
194{
195 return minKinEnergy;
196}
197
199{
200 maxKinEnergy = value;
201}
202
204{
205 return maxKinEnergy;
206}
207
209{
210 return name;
211}
212
213#endif
double G4double
Definition: G4Types.hh:83
int G4int
Definition: G4Types.hh:85
G4int GetZasInt() const
Definition: G4Element.hh:132
G4double GetN() const
Definition: G4Element.hh:135
virtual G4double GetTotalElementCrossSection(const G4ParticleDefinition *, G4double kinEnergy, G4int, G4double)=0
void SetMaxKinEnergy(G4double value)
virtual G4double GetInelasticIsotopeCrossSection(const G4ParticleDefinition *, G4double kinEnergy, G4int, G4int)=0
G4double GetTotalElementCrossSection(const G4ParticleDefinition *, G4double kinEnergy, const G4Element *)
virtual G4double GetInelasticElementCrossSection(const G4ParticleDefinition *, G4double kinEnergy, G4int, G4double)=0
virtual G4double ComputeQuasiElasticRatio(const G4ParticleDefinition *, G4double kinEnergy, G4int, G4int)
virtual void DumpPhysicsTable(const G4ParticleDefinition &)
virtual void Description(std::ostream &) const
G4double GetInelasticElementCrossSection(const G4ParticleDefinition *, G4double kinEnergy, const G4Element *)
void SetMinKinEnergy(G4double value)
virtual G4double GetTotalIsotopeCrossSection(const G4ParticleDefinition *, G4double kinEnergy, G4int, G4int)=0
virtual void BuildPhysicsTable(const G4ParticleDefinition &)
const G4String & GetName() const
virtual G4double GetElasticElementCrossSection(const G4ParticleDefinition *, G4double kinEnergy, G4int, G4double)=0
virtual G4double GetElasticIsotopeCrossSection(const G4ParticleDefinition *, G4double kinEnergy, G4int, G4int)=0
G4double GetElasticElementCrossSection(const G4ParticleDefinition *, G4double kinEnergy, const G4Element *)