54 theCrossSections =
nullptr;
55 instanceOfWorker =
false;
57 instanceOfWorker =
true;
59 element_cache =
nullptr;
60 material_cache =
nullptr;
68 if (theCrossSections !=
nullptr && !instanceOfWorker) {
70 delete theCrossSections;
71 theCrossSections =
nullptr;
89 if (dp->
GetKineticEnergy() == ke_cache && element == element_cache && material == material_cache)
93 element_cache = element;
94 material_cache = material;
104 "Attempt to use NeutronHP data for particles other than neutrons!!!");
112 if (theCrossSections ==
nullptr)
121 for (std::size_t i = 0; i < numberOfElements; ++i) {
134 "Attempt to use NeutronHP data for particles other than neutrons!!!");
147 G4cout <<
"Fission Cross Section of Neutron HP" <<
G4endl;
148 G4cout <<
"(Pointwise cross-section at 0 Kelvin.)" <<
G4endl;
158 for (std::size_t i = 0; i < numberOfElements; ++i) {
161 if ((*((*theCrossSections)(i))).GetVectorLength() == 0) {
162 G4cout <<
"The cross-section data of the fission of this element is not available." <<
G4endl;
167 for (
G4int ie = 0; ie < 130; ++ie) {
169 G4bool outOfRange =
false;
171 if (eKinetic < 20 * MeV) {
172 G4cout << eKinetic / eV <<
" "
173 << (*((*theCrossSections)(i))).GetValue(eKinetic, outOfRange) / barn <<
G4endl;
186 if (anE->
GetZ() < 88)
return result;
190 if (((*theCrossSections)(index))->GetVectorLength() == 0)
return result;
201 if (eKinetic < aT * k_Boltzmann) {
207 return ((*((*theCrossSections)(index))).GetValue(eKinetic, outOfRange)) * factor;
217 static_cast<G4int>(theZ + eps)))
226 G4int size =
G4int(std::max(10., aT / 60 * kelvin));
232 || std::abs(buffer - result / std::max(1, counter))
235 if (counter != 0) buffer = result / counter;
236 while (counter < size)
240 boosted.
Lorentz(theNeutronRP, aThermalNuc);
242 aXsection = (*((*theCrossSections)(index))).GetValue(theEkin, outOfRange);
245 aXsection *= (targetVelocity - neutronVelocity).mag() / neutronVMag;
266 outFile <<
"High Precision cross data based on Evaluated Nuclear Data Files (ENDF)\n"
267 <<
"for induced fission reaction of neutrons below 20MeV\n";
std::vector< G4Element * > G4ElementTable
G4GLOB_DLL std::ostream G4cout
G4ParticleDefinition * GetDefinition() const
G4double GetKineticEnergy() const
G4ThreeVector GetMomentum() const
static G4ElementTable * GetElementTable()
static size_t GetNumberOfElements()
static G4HadronicParameters * Instance()
G4double GetTemperature() const
static G4Neutron * Neutron()
static G4double GetNuclearMass(const G4double A, const G4double Z)
G4ReactionProduct GetThermalNucleus(G4double aMass, G4double temp=-1) const
G4double GetPDGMass() const
G4PhysicsVector * MakePhysicsVector(const G4Element *thE, G4ParticleHPFissionData *theP)
static G4ParticleHPData * Instance(G4ParticleDefinition *projectile)
G4double GetIsoCrossSection(const G4DynamicParticle *, G4int, G4int, const G4Isotope *, const G4Element *, const G4Material *) override
G4double GetCrossSection(const G4DynamicParticle *, const G4Element *, G4double aT)
G4bool IsIsoApplicable(const G4DynamicParticle *, G4int, G4int, const G4Element *, const G4Material *) override
void BuildPhysicsTable(const G4ParticleDefinition &) override
G4int GetVerboseLevel() const
G4ParticleHPFissionData()
void CrossSectionDescription(std::ostream &) const override
void SetVerboseLevel(G4int) override
~G4ParticleHPFissionData() override
void DumpPhysicsTable(const G4ParticleDefinition &) override
G4int GetVerboseLevel() const
void SetVerboseLevel(G4int i)
G4PhysicsTable * GetFissionCrossSections() const
static G4ParticleHPManager * GetInstance()
void RegisterFissionCrossSections(G4PhysicsTable *val)
void push_back(G4PhysicsVector *)
static G4Pow * GetInstance()
G4double powA(G4double A, G4double y) const
void SetMomentum(const G4double x, const G4double y, const G4double z)
G4double GetKineticEnergy() const
G4ThreeVector GetMomentum() const
void Lorentz(const G4ReactionProduct &p1, const G4ReactionProduct &p2)
void SetKineticEnergy(const G4double en)
G4double GetMaxKinEnergy() const
void SetMaxKinEnergy(G4double value)
void SetMinKinEnergy(G4double value)
G4double GetMinKinEnergy() const