#include <G4NeutronCaptureXS.hh>
|
| G4NeutronCaptureXS () |
|
virtual | ~G4NeutronCaptureXS () |
|
virtual G4bool | IsElementApplicable (const G4DynamicParticle *, G4int Z, const G4Material *) |
|
virtual G4bool | IsIsoApplicable (const G4DynamicParticle *, G4int Z, G4int A, const G4Element *, const G4Material *) |
|
virtual G4double | GetElementCrossSection (const G4DynamicParticle *, G4int Z, const G4Material *mat=0) |
|
virtual G4double | GetIsoCrossSection (const G4DynamicParticle *, G4int Z, G4int A, const G4Isotope *iso, const G4Element *elm, const G4Material *mat) |
|
virtual G4Isotope * | SelectIsotope (const G4Element *, G4double kinEnergy) |
|
virtual void | BuildPhysicsTable (const G4ParticleDefinition &) |
|
virtual void | CrossSectionDescription (std::ostream &) const |
|
| G4VCrossSectionDataSet (const G4String &nam="") |
|
virtual | ~G4VCrossSectionDataSet () |
|
virtual G4bool | IsElementApplicable (const G4DynamicParticle *, G4int Z, const G4Material *mat=0) |
|
virtual G4bool | IsIsoApplicable (const G4DynamicParticle *, G4int Z, G4int A, const G4Element *elm=0, const G4Material *mat=0) |
|
G4double | GetCrossSection (const G4DynamicParticle *, const G4Element *, const G4Material *mat=0) |
|
G4double | ComputeCrossSection (const G4DynamicParticle *, const G4Element *, const G4Material *mat=0) |
|
virtual G4double | GetElementCrossSection (const G4DynamicParticle *, G4int Z, const G4Material *mat=0) |
|
virtual G4double | GetIsoCrossSection (const G4DynamicParticle *, G4int Z, G4int A, const G4Isotope *iso=0, const G4Element *elm=0, const G4Material *mat=0) |
|
virtual G4Isotope * | SelectIsotope (const G4Element *, G4double kinEnergy) |
|
virtual void | BuildPhysicsTable (const G4ParticleDefinition &) |
|
virtual void | DumpPhysicsTable (const G4ParticleDefinition &) |
|
virtual void | CrossSectionDescription (std::ostream &) const |
|
void | SetVerboseLevel (G4int value) |
|
G4double | GetMinKinEnergy () const |
|
void | SetMinKinEnergy (G4double value) |
|
G4double | GetMaxKinEnergy () const |
|
void | SetMaxKinEnergy (G4double value) |
|
const G4String & | GetName () const |
|
Definition at line 59 of file G4NeutronCaptureXS.hh.
◆ G4NeutronCaptureXS()
G4NeutronCaptureXS::G4NeutronCaptureXS |
( |
| ) |
|
Definition at line 78 of file G4NeutronCaptureXS.cc.
80 emax(20*MeV),maxZ(92)
81{
82
84 G4cout <<
"G4NeutronCaptureXS::G4NeutronCaptureXS: Initialise for Z < "
86 }
87
89 work.resize(13,0);
90 temp.resize(13,0.0);
91 isInitialized = false;
92}
G4DLLIMPORT std::ostream G4cout
void SetName(const G4String &nam)
◆ ~G4NeutronCaptureXS()
G4NeutronCaptureXS::~G4NeutronCaptureXS |
( |
| ) |
|
|
virtual |
◆ BuildPhysicsTable()
Reimplemented from G4VCrossSectionDataSet.
Definition at line 239 of file G4NeutronCaptureXS.cc.
240{
241 if(isInitialized) { return; }
243 G4cout <<
"G4NeutronCaptureXS::BuildPhysicsTable for "
245 }
248 return;
249 }
250 isInitialized = true;
251
252
253
254 char* path = getenv("G4NEUTRONXSDATA");
255 if (!path){
257 "G4NEUTRONXSDATA environment variable not defined");
258 return;
259 }
260
261
264 if(numOfElm > 0) {
265 for(size_t i=0; i<numOfElm; ++i) {
267 if(Z < 1) { Z = 1; }
268 else if(Z > maxZ) { Z = maxZ; }
269
270
271
273 }
274 }
275}
std::vector< G4Element * > G4ElementTable
G4PhysicsVector * GetElementData(G4int Z)
static size_t GetNumberOfElements()
static const G4ElementTable * GetElementTable()
const G4String & GetParticleName() const
◆ CrossSectionDescription()
void G4NeutronCaptureXS::CrossSectionDescription |
( |
std::ostream & |
outFile | ) |
const |
|
virtual |
Reimplemented from G4VCrossSectionDataSet.
Definition at line 103 of file G4NeutronCaptureXS.cc.
104{
105 outFile << "G4NeutronCaptureXS calculates the neutron capture cross sections\n"
106 << "on nuclei using data from the high precision neutron database.\n"
107 << "These data are simplified and smoothed over the resonance region\n"
108 << "in order to reduce CPU time. G4NeutronCaptureXS is valid up to\n"
109 << "20 MeV for all targets through U.\n";
110}
◆ GetElementCrossSection()
Reimplemented from G4VCrossSectionDataSet.
Definition at line 128 of file G4NeutronCaptureXS.cc.
130{
133 if(ekin > emax || Z < 1 || Z > maxZ) { return xs; }
135 if(ekin < elimit) { ekin = elimit; }
136
137
139
140
141 if(!pv) {
142 Initialise(Z);
143
145 if(!pv) { return xs; }
146 }
147
149 if(ekin < e1) { xs = (*pv)[0]*std::sqrt(e1/ekin); }
150 else { xs = pv->
Value(ekin); }
151
154 }
155 return xs;
156}
G4double GetKineticEnergy() const
G4double Value(G4double theEnergy)
G4double Energy(size_t index) const
◆ GetIsoCrossSection()
Reimplemented from G4VCrossSectionDataSet.
Definition at line 159 of file G4NeutronCaptureXS.cc.
163{
166 if(ekin > emax || Z < 1 || Z > maxZ) { return xs; }
168 if(ekin < elimit) { ekin = elimit; }
169
170
172
173
174 if(!pv) {
175 Initialise(Z);
176
178 if(!pv) { return xs; }
179 }
181 if(!pv) { return xs; }
182
184 if(ekin < e1) { xs = (*pv)[0]*std::sqrt(e1/ekin); }
185 else { xs = pv->
Value(ekin); }
186
189 }
190 return xs;
191}
G4PhysicsVector * GetComponentDataByID(G4int Z, G4int id)
◆ IsElementApplicable()
◆ IsIsoApplicable()
◆ SelectIsotope()
Reimplemented from G4VCrossSectionDataSet.
Definition at line 193 of file G4NeutronCaptureXS.cc.
195{
199
200
201 if(1 < nIso) {
203 if(Z > maxZ) { Z = maxZ; }
207
208
209 if(0 == amin[Z]) {
210 for (
G4int j = 0; j<nIso; ++j) {
211 sum += abundVector[j];
212 if(q <= sum) {
213 iso = (*isoVector)[j];
214 break;
215 }
216 }
217 } else {
219 if(temp.size() < nmax) { temp.resize(nmax,0.0); }
220 for (size_t i=0; i<nmax; ++i) {
221 G4int A = (*isoVector)[i]->GetN();
223 if(v) { sum += abundVector[i]*v->
Value(kinEnergy); }
224 temp[i] = sum;
225 }
226 sum *= q;
227 for (size_t j = 0; j<nmax; ++j) {
228 if(temp[j] >= sum) {
229 iso = (*isoVector)[j];
230 break;
231 }
232 }
233 }
234 }
235 return iso;
236}
std::vector< G4Isotope * > G4IsotopeVector
size_t GetNumberOfComponents(G4int Z)
G4double * GetRelativeAbundanceVector() const
size_t GetNumberOfIsotopes() const
G4IsotopeVector * GetIsotopeVector() const
The documentation for this class was generated from the following files: