99 if(ParametersChanged ==
TRUE)
133 if(ParametersChanged ==
TRUE)
137 std::ostringstream Temp;
138 Temp <<
"Mean value of " << Mean <<
" out of range";
139 G4Exception(
"G4FPYGaussianOps::G4SampleIntegerGaussian()",
142 "A value of '0' will be used instead.");
175 if(ParametersChanged ==
TRUE)
208 std::ostringstream Temp;
220 if(Mean / StdDev < 2)
233 if(ParametersChanged ==
TRUE)
249 }
while (RandInt < 0);
274 G4double Difference = Upper - Lower;
311 G4int icounter_max=1024;
316 if ( icounter > icounter_max ) {
317 G4cout <<
"Loop-counter exceeded the threshold value at " << __LINE__ <<
"th line of " << __FILE__ <<
"." <<
G4endl;
366 G4int IsotopeIndex = 0;
406 "Incident neutron energy above 14 MeV requested.",
408 "Using Watt fission constants for 14 Mev.");
414 G4int EnergyIndex = 0;
416 G4double RangeDifference, ConstantDifference;
424 if(EnergyDifference != 0)
426 std::ostringstream Temp;
427 Temp <<
"Incident neutron energy of ";
429 Temp <<
"explicitly listed in the data tables";
445 [EnergyIndex - 1][0];
446 A = (EnergyDifference / RangeDifference) * ConstantDifference +
447 NeutronInducedWattConstants[IsotopeIndex]
448 [EnergyIndex - 1][0];
452 NeutronInducedWattConstants[IsotopeIndex][EnergyIndex][1] -
453 NeutronInducedWattConstants[IsotopeIndex]
454 [EnergyIndex - 1][1];
456 (EnergyDifference / RangeDifference) * ConstantDifference +
457 NeutronInducedWattConstants[IsotopeIndex]
458 [EnergyIndex - 1][1];
464 G4String Temp =
"Watt fission spectra data not available for ";
467 Temp +=
"proton induced fission.";
470 Temp +=
"gamma induced fission.";
473 Temp +=
"!Warning! unknown cause.";
478 "Fission events will not be sampled in this run.");
512 }
while (Radius > 1.0);
515 MappingFactor = std::sqrt(-2.0*
G4Log(Radius)/Radius) *
StdDev_;
556 G4double ErfContainer, AdjustedErfContainer, Container;
565 G4bool ToleranceCheck =
false;
577 G4int icounter_max=1024;
581 if ( icounter > icounter_max ) {
582 G4cout <<
"Loop-counter exceeded the threshold value at " << __LINE__ <<
"th line of " << __FILE__ <<
"." <<
G4endl;
587 AdjustedErfContainer = 0;
590 for(
G4int i = 0; i <= UpperLimit; i++)
593 LowErf = ((AdjMean - i) / Normalization);
594 HighErf = ((AdjMean - (i + 1.0)) / Normalization);
606 Container = (erf(HighErf) - erf(LowErf))/2.0;
608 }
else if (HighErf < 0)
616 Container = (erf(HighErf) + erf(LowErf))/2.0;
624 Container = (erf(LowErf) - erf(HighErf))/2.0;
630 if ( Container != Container) Container = 0;
634 ErfContainer += Container;
635 AdjustedErfContainer += Container * i;
639 Container = AdjustedErfContainer / ErfContainer;
643 if(ToleranceCheck ==
TRUE)
649 if(HalfDelta ==
TRUE)
655 if(Container >
Mean_)
G4double SampleGaussian(void)
#define G4FFG_FUNCTIONLEAVE__
static const G4double ThermalNeutronEnergy
void G4InsertShiftedMean(G4double ShiftedMean, G4double RequestedMean, G4double RequestedStdDev)
G4double G4Log(G4double x)
static const G4double NeutronInducedWattConstants[][3][2]
G4bool NextGaussianIsStoredInMemory_
static const G4int SpontaneousWattIsotopesIndex[]
#define G4FFG_SAMPLING_FUNCTIONENTER__
static G4Pow * GetInstance()
G4double G4SampleWatt(G4int WhatIsotope, G4FFGEnumerations::FissionCause WhatCause, G4double WhatEnergy)
G4double powA(G4double A, G4double y) const
static const G4double SpontaneousWattConstants[][2]
void G4SetVerbosity(G4int WhatVerbosity)
static constexpr double MeV
void ShiftParameters(G4FFGEnumerations::GaussianReturnType Type)
G4ShiftedGaussian * ShiftedGaussianValues_
double A(double temperature)
static const G4double IncidentEnergyBins[]
G4FFGEnumerations::FissionCause Cause
static const G4FFGEnumerations::Verbosity Verbosity
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
G4double G4FindShiftedMean(G4double RequestedMean, G4double RequestedStdDev)
#define G4FFG_SAMPLING_FUNCTIONLEAVE__
WattSpectrumConstants * WattConstants_
static const G4int NeutronInducedWattIsotopesIndex[]
void EvaluateWattConstants(void)
G4GLOB_DLL std::ostream G4cout
G4int G4SampleIntegerGaussian(G4double Mean, G4double StdDev)
static double erf(double x)
void G4SetVerbosity(G4int WhatVerbosity)
G4double G4SampleUniform(void)
G4bool CheckAndSetParameters(void)
CLHEP::HepRandomEngine * RandomEngine_
#define G4FFG_FUNCTIONENTER__
G4double G4SampleGaussian(G4double Mean, G4double StdDev)