Geant4 9.6.0
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros
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$
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
49#include "G4Element.hh"
50#include "globals.hh"
51
53{
54public: //with description
55
56 G4VComponentCrossSection(const G4String& nam = "");
57
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
133private:
134
135 G4VComponentCrossSection & operator=(const G4VComponentCrossSection &right);
137
138 G4int verboseLevel;
139
140 G4double minKinEnergy;
141 G4double maxKinEnergy;
142
143 const G4String name;
144};
145
146inline 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
156inline 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
166inline 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
double G4double
Definition: G4Types.hh:64
int G4int
Definition: G4Types.hh:66
G4double GetZ() const
Definition: G4Element.hh:131
G4double GetN() const
Definition: G4Element.hh:134
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 &)
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 *)