66 inline void Init(std::istream& theData)
69 theData >> dummy >> theNumberOfPartials;
71 for (
G4int i = 0; i < theNumberOfPartials; i++) {
72 theData >> theRepresentationType;
73 switch (theRepresentationType) {
95 theEnergyDistribution[i]->Init(theData);
103 if (theNumberOfPartials != 0) {
105 auto running =
new G4double[theNumberOfPartials];
108 for (i = 0; i < theNumberOfPartials; i++) {
109 if (i != 0) running[i] = running[i - 1];
110 running[i] += theEnergyDistribution[i]->GetFractionalProbability(anEnergy);
112 sum = running[theNumberOfPartials - 1];
114 for (i = 0; i < theNumberOfPartials; i++) {
116 if (running[i] / sum > random)
break;
119 if (it == theNumberOfPartials) it--;
120 result = theEnergyDistribution[it]->Sample(anEnergy);