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;
371 for(
G4int i = 0; SpontaneousWattIsotopesIndex[i] != -1; i++)
373 if(SpontaneousWattIsotopesIndex[i] ==
383 A = SpontaneousWattConstants[IsotopeIndex][0];
388 for(
G4int i = 0; NeutronInducedWattIsotopesIndex[i] != -1; i++)
401 A = NeutronInducedWattConstants[IsotopeIndex][0][0];
406 "Incident neutron energy above 14 MeV requested.",
408 "Using Watt fission constants for 14 Mev.");
410 A = NeutronInducedWattConstants[IsotopeIndex][2][0];
414 G4int EnergyIndex = 0;
416 G4double RangeDifference, ConstantDifference;
418 for(
G4int i = 1; IncidentEnergyBins[i] != -1; i++)
424 if(EnergyDifference != 0)
426 std::ostringstream Temp;
427 Temp <<
"Incident neutron energy of ";
429 Temp <<
"explicitly listed in the data tables";
439 RangeDifference = IncidentEnergyBins[EnergyIndex] - IncidentEnergyBins[EnergyIndex - 1];
443 NeutronInducedWattConstants[IsotopeIndex][EnergyIndex][0] -
444 NeutronInducedWattConstants[IsotopeIndex]
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_)
double A(double temperature)
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
#define G4FFG_FUNCTIONLEAVE__
#define G4FFG_FUNCTIONENTER__
#define G4FFG_SAMPLING_FUNCTIONENTER__
#define G4FFG_SAMPLING_FUNCTIONLEAVE__
G4double G4Log(G4double x)
G4GLOB_DLL std::ostream G4cout
static double erf(double x)
WattSpectrumConstants * WattConstants_
G4double G4SampleWatt(G4int WhatIsotope, G4FFGEnumerations::FissionCause WhatCause, G4double WhatEnergy)
G4bool NextGaussianIsStoredInMemory_
G4double SampleGaussian(void)
G4ShiftedGaussian * ShiftedGaussianValues_
CLHEP::HepRandomEngine * RandomEngine_
G4double G4SampleGaussian(G4double Mean, G4double StdDev)
G4int G4SampleIntegerGaussian(G4double Mean, G4double StdDev)
void ShiftParameters(G4FFGEnumerations::GaussianReturnType Type)
void G4SetVerbosity(G4int WhatVerbosity)
G4bool CheckAndSetParameters(void)
void EvaluateWattConstants(void)
G4double G4SampleUniform(void)
static G4Pow * GetInstance()
G4double powA(G4double A, G4double y) const
void G4InsertShiftedMean(G4double ShiftedMean, G4double RequestedMean, G4double RequestedStdDev)
G4double G4FindShiftedMean(G4double RequestedMean, G4double RequestedStdDev)
void G4SetVerbosity(G4int WhatVerbosity)
G4FFGEnumerations::FissionCause Cause