96 G4Exception(
"G4ParticleHPIsoProbabilityTable::GetCorrelatedIsoCrossSectionPT",
"hadhp01",
97 FatalException,
"The base method G4ParticleHPIsoProbabilityTable::GetCorrelatedIsoCrossSectionPT"
98 "is trying to be accessed, which is not allowed,"
99 "the derived class for NJOY or CALENDF was not properly declared." );
105 const G4Element*,
G4double&, std::map< std::thread::id, G4double >&, std::thread::id& )
107 G4Exception(
"G4ParticleHPIsoProbabilityTable::GetIsoCrossSectionPT",
"hadhp01",
108 FatalException,
"The base method G4ParticleHPIsoProbabilityTable::GetIsoCrossSectionPT"
109 "is trying to be accessed, which is not allowed,"
110 "the derived class for NJOY or CALENDF was not properly declared." );
127 G4int size =
G4int( std::max( 10.0,
T / 60.0 * kelvin ) );
130 while ( counter == 0 || std::abs( buffer - result / std::max(1, counter) ) > 0.03 * buffer ) {
131 if ( counter ) buffer = result / counter;
132 while ( counter < size ) {
135 boosted.
Lorentz( theNeutron, aThermalNuc );
140 aXsection *= (targetVelocity - neutronVelocity).mag() / neutronVMag;
162 G4int size =
G4int( std::max( 10.0,
T / 60.0 * kelvin));
165 while ( counter == 0 || std::abs( buffer - result / std::max( 1, counter ) ) > 0.03 * buffer ) {
166 if ( counter ) buffer = result / counter;
167 while ( counter < size ) {
170 boosted.
Lorentz( theNeutron, aThermalNuc );
175 aXsection *= (targetVelocity - neutronVelocity).mag() / neutronVMag;
198 G4int size =
G4int( std::max( 10.0,
T / 60.0 * kelvin ) );
201 while ( counter == 0 || std::abs( buffer - result / std::max( 1, counter ) ) > 0.01 * buffer ) {
202 if ( counter ) buffer = result / counter;
203 while ( counter < size ) {
206 boosted.
Lorentz( theNeutron, aThermalNuc );
211 aXsection *= (targetVelocity - neutronVelocity).mag() / neutronVMag;
234 G4int size =
G4int( std::max( 10.0,
T / 60.0 * kelvin ) );
237 #ifndef G4PHP_DOPPLER_LOOP_ONCE
238 while ( counter == 0 || std::abs( buffer - result / std::max( 1, counter ) ) > 0.01 * buffer ) {
239 if ( counter ) buffer = result / counter;
240 while ( counter < size ) {
244 boosted.
Lorentz( theNeutron, aThermalNuc );
247 ->GetWeightedXsec( theEkin, isotopeJ ) ) * barn;
248 if ( aXsection < 0.0 ) {
249 if ( failCount < 1000 ) {
251 #ifndef G4PHP_DOPPLER_LOOP_ONCE
261 aXsection *= (targetVelocity - neutronVelocity).mag() / neutronVMag;
264#ifndef G4PHP_DOPPLER_LOOP_ONCE
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
CLHEP::Hep3Vector G4ThreeVector
G4ParticleDefinition * GetDefinition() const
G4double GetKineticEnergy() const
G4ThreeVector GetMomentum() const
static G4Neutron * Neutron()
static G4double GetNuclearMass(const G4double A, const G4double Z)
G4ReactionProduct GetThermalNucleus(G4double aMass, G4double temp=-1) const
G4double GetPDGMass() const
virtual G4double GetIsoCrossSectionPT(const G4DynamicParticle *, G4int, const G4Element *, G4double &, std::map< std::thread::id, G4double > &, std::thread::id &)
G4ParticleHPVector * theEnergies
virtual void Init(G4int, G4int, G4int, G4double, const G4String &)
G4double GetDopplerBroadenedFissionXS(const G4DynamicParticle *, G4int, G4int)
std::vector< std::vector< G4double > * > * theElasticData
std::vector< std::vector< G4double > * > * theFissionData
virtual ~G4ParticleHPIsoProbabilityTable()
G4double GetDopplerBroadenedInelasticXS(const G4DynamicParticle *, G4int, G4int)
virtual G4double GetCorrelatedIsoCrossSectionPT(const G4DynamicParticle *, G4int, const G4Element *, G4double &, G4double &, std::thread::id &)
std::vector< std::vector< G4double > * > * theCaptureData
G4double GetDopplerBroadenedCaptureXS(const G4DynamicParticle *, G4int, G4int)
G4double GetDopplerBroadenedElasticXS(const G4DynamicParticle *, G4int, G4int)
std::vector< std::vector< G4double > * > * theProbabilities
std::vector< G4ParticleHPChannel * > * GetFissionFinalStates() const
std::vector< G4ParticleHPChannel * > * GetElasticFinalStates() const
std::vector< G4ParticleHPChannel * > * GetCaptureFinalStates() const
std::vector< G4ParticleHPChannelList * > * GetInelasticFinalStates(const G4ParticleDefinition *part) const
static G4ParticleHPManager * GetInstance()
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)