29#ifndef G4ParticleHPEnergyDistribution_h
30#define G4ParticleHPEnergyDistribution_h 1
52 theEnergyDistribution = 0;
53 theNumberOfPartials = 0;
54 theRepresentationType = 0;
58 if(theEnergyDistribution != 0)
60 for(
G4int i=0; i<theNumberOfPartials; i++)
62 delete theEnergyDistribution[i];
64 delete [] theEnergyDistribution;
68 inline void Init(std::istream & theData)
71 theData >> dummy >> theNumberOfPartials;
73 for(
G4int i=0; i<theNumberOfPartials; i++)
75 theData >> theRepresentationType;
76 switch(theRepresentationType)
97 theEnergyDistribution[i]->
Init(theData);
105 if (theNumberOfPartials != 0)
111 for (i=0; i<theNumberOfPartials; i++)
113 if (i!=0) running[i]=running[i-1];
116 sum = running[theNumberOfPartials-1];
118 for(i=0; i<theNumberOfPartials; i++)
121 if(running[i]/sum>random)
break;
124 if(it==theNumberOfPartials) it--;
125 result = theEnergyDistribution[it]->
Sample(anEnergy);
132 G4int theNumberOfPartials;
133 G4int theRepresentationType;
~G4ParticleHPEnergyDistribution()
void Init(std::istream &theData)
G4ParticleHPEnergyDistribution()
G4double Sample(G4double anEnergy, G4int &it)
virtual void Init(std::istream &theData)=0
virtual G4double GetFractionalProbability(G4double anEnergy)=0
virtual G4double Sample(G4double anEnergy)=0