G4NeutronHPEnergyDistribution Class Reference

#include <G4NeutronHPEnergyDistribution.hh>


Public Member Functions

 G4NeutronHPEnergyDistribution ()
 ~G4NeutronHPEnergyDistribution ()
void Init (std::ifstream &theData)
G4double Sample (G4double anEnergy, G4int &it)


Detailed Description

Definition at line 47 of file G4NeutronHPEnergyDistribution.hh.


Constructor & Destructor Documentation

G4NeutronHPEnergyDistribution::G4NeutronHPEnergyDistribution (  )  [inline]

Definition at line 50 of file G4NeutronHPEnergyDistribution.hh.

00051   {
00052     theEnergyDistribution = 0;
00053     theNumberOfPartials = 0;
00054     theRepresentationType = 0;
00055   }

G4NeutronHPEnergyDistribution::~G4NeutronHPEnergyDistribution (  )  [inline]

Definition at line 56 of file G4NeutronHPEnergyDistribution.hh.

00057   {
00058     if(theEnergyDistribution != 0)
00059     {
00060       for(G4int i=0; i<theNumberOfPartials; i++) 
00061       {
00062         delete theEnergyDistribution[i];
00063       }
00064       delete [] theEnergyDistribution;
00065     }
00066   }


Member Function Documentation

void G4NeutronHPEnergyDistribution::Init ( std::ifstream &  theData  )  [inline]

Definition at line 68 of file G4NeutronHPEnergyDistribution.hh.

References G4VNeutronHPEDis::Init().

Referenced by G4NeutronHPInelasticCompFS::Init(), G4NeutronHPInelasticBaseFS::Init(), G4NeutronHPFSFissionFS::Init(), G4NeutronHPFissionBaseFS::Init(), and G4FissionLibrary::Init().

00069   {
00070     G4double dummy;
00071     theData >> dummy >> theNumberOfPartials;
00072     theEnergyDistribution = new G4VNeutronHPEDis * [theNumberOfPartials];
00073     for(G4int i=0; i<theNumberOfPartials; i++) 
00074     {
00075       theData >> theRepresentationType;
00076       switch(theRepresentationType)
00077       {
00078         case 1:
00079           theEnergyDistribution[i] = new G4NeutronHPArbitaryTab;
00080           break;
00081         case 5:        
00082           theEnergyDistribution[i] = new G4NeutronHPEvapSpectrum;
00083           break;
00084         case 7:
00085           theEnergyDistribution[i] = new G4NeutronHPFissionSpectrum;
00086           break;
00087         case 9:
00088           theEnergyDistribution[i] = new G4NeutronHPSimpleEvapSpectrum;
00089           break;
00090         case 11:
00091           theEnergyDistribution[i] = new G4NeutronHPWattSpectrum;
00092           break;
00093         case 12:
00094           theEnergyDistribution[i] = new G4NeutronHPMadlandNixSpectrum;
00095           break;
00096       }
00097       theEnergyDistribution[i]->Init(theData);
00098     }
00099   }

G4double G4NeutronHPEnergyDistribution::Sample ( G4double  anEnergy,
G4int it 
) [inline]

Definition at line 101 of file G4NeutronHPEnergyDistribution.hh.

References G4UniformRand, G4VNeutronHPEDis::GetFractionalProbability(), and G4VNeutronHPEDis::Sample().

Referenced by G4NeutronHPFSFissionFS::ApplyYourself(), G4NeutronHPFissionBaseFS::ApplyYourself(), G4NeutronHPInelasticBaseFS::BaseApply(), and G4NeutronHPInelasticCompFS::CompositeApply().

00102   {
00103     G4double result = 0;
00104     it = 0;
00105     if (theNumberOfPartials != 0)
00106     {
00107       G4double sum=0;
00108       G4double * running = new G4double[theNumberOfPartials];
00109       running[0] = 0;
00110       G4int i;
00111       for (i=0; i<theNumberOfPartials; i++)
00112       { 
00113         if (i!=0) running[i]=running[i-1];
00114         running[i]+=theEnergyDistribution[i]->GetFractionalProbability(anEnergy);
00115       }
00116       sum = running[theNumberOfPartials-1];
00117       G4double random = G4UniformRand();
00118       for(i=0; i<theNumberOfPartials; i++)
00119       {
00120         it = i;
00121         if(running[i]/sum>random) break;
00122       }
00123       delete [] running;
00124       if(it==theNumberOfPartials) it--;
00125       result = theEnergyDistribution[it]->Sample(anEnergy);
00126     }
00127     return result;
00128   }


The documentation for this class was generated from the following file:
Generated on Mon May 27 17:52:37 2013 for Geant4 by  doxygen 1.4.7