46 #include "G4WattFissionSpectrumValues.hh"    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];
   402             WattConstants_->B = NeutronInducedWattConstants[IsotopeIndex][0][1];
   406                         "Incident neutron energy above 14 MeV requested.",
   408                         "Using Watt fission constants for 14 Mev.");
   410             A = NeutronInducedWattConstants[IsotopeIndex][2][0];
   411             WattConstants_->B = NeutronInducedWattConstants[IsotopeIndex][2][1];
   414             G4int EnergyIndex = 0;
   416             G4double RangeDifference, ConstantDifference;
   418             for(
G4int i = 1; IncidentEnergyBins[i] != -1; i++)
   423                     EnergyDifference = IncidentEnergyBins[EnergyIndex] - 
WattConstants_->Energy;
   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_)
 static G4Pow * GetInstance()
 
G4double G4SampleGaussian(G4double Mean, G4double StdDev)
 
G4double SampleGaussian(void)
 
void EvaluateWattConstants(void)
 
G4double G4SampleWatt(G4int WhatIsotope, G4FFGEnumerations::FissionCause WhatCause, G4double WhatEnergy)
 
#define G4FFG_SAMPLING_FUNCTIONENTER__
 
G4double G4SampleUniform(void)
 
G4double G4FindShiftedMean(G4double RequestedMean, G4double RequestedStdDev)
 
G4ShiftedGaussian * ShiftedGaussianValues_
 
WattSpectrumConstants * WattConstants_
 
void G4SetVerbosity(G4int WhatVerbosity)
 
G4GLOB_DLL std::ostream G4cout
 
double A(double temperature)
 
void G4InsertShiftedMean(G4double ShiftedMean, G4double RequestedMean, G4double RequestedStdDev)
 
void ShiftParameters(G4FFGEnumerations::GaussianReturnType Type)
 
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
 
G4double G4Log(G4double x)
 
CLHEP::HepRandomEngine * RandomEngine_
 
#define G4FFG_FUNCTIONLEAVE__
 
static double erf(double x)
 
G4double powA(G4double A, G4double y) const
 
#define G4FFG_SAMPLING_FUNCTIONLEAVE__
 
void G4SetVerbosity(G4int WhatVerbosity)
 
static const G4double ThermalNeutronEnergy
 
G4bool CheckAndSetParameters(void)
 
#define G4FFG_FUNCTIONENTER__
 
static const G4FFGEnumerations::Verbosity Verbosity
 
G4bool NextGaussianIsStoredInMemory_
 
G4int G4SampleIntegerGaussian(G4double Mean, G4double StdDev)