50 aDataFile >> nEnergies;
51 theManager.
Init(aDataFile);
52 theEnergies =
new G4double[nEnergies];
53 nCosTh =
new G4int[nEnergies];
56 for(
G4int i=0; i<nEnergies; i++)
58 aDataFile >> theEnergies[i];
60 aDataFile >> nCosTh[i];
61 theSecondManager[i].
Init(aDataFile);
64 for(
G4int ii=0; ii<nCosTh[i]; ii++)
68 theData[i][ii].
Init(aDataFile,
eV);
109 throw G4HadronicException(__FILE__, __LINE__,
"G4ParticleHPLabAngularEnergy: Unknown ion case 2");
116 for(i=0; i<nEnergies; i++)
119 if ( anEnergy < theEnergies[i] )
break;
125 G4cout <<
"080808 Something unexpected is happen in G4ParticleHPLabAngularEnergy " <<
G4endl;
129 for(i=0;i<nCosTh[it]; i++)
131 if(i!=0) running[i] = running[i-1];
136 for(i=0;i<nCosTh[it]; i++)
139 if(random<running[i])
break;
145 cosTh = theData[it][ith].
GetLabel();
146 secEnergy = theData[it][ith].
Sample();
147 currentMeanEnergy = theData[it][ith].
GetMeanX();
159 cosTh = theInt.
Interpolate(theSecondManager[it].GetInverseScheme(ith),
170 mu = theData[it][ith-1].
GetX(i);
171 y1 = theData[it][ith-1].
GetY(i);
172 y2 = theData[it][ith].
GetY(mu);
174 y = theInt.
Interpolate(theSecondManager[it].GetScheme(ith),
180 mu = theData[it][ith].
GetX(i);
181 y1 = theData[it][ith-1].
GetY(mu);
182 y2 = theData[it][ith].
GetY(i);
183 y = theInt.
Interpolate(theSecondManager[it].GetScheme(ith),
188 theStore.
Merge(&theBuff1, &theBuff2);
189 secEnergy = theStore.
Sample();
190 currentMeanEnergy = theStore.
GetMeanX();
200 for(i=0;i<nCosTh[it-1]; i++)
202 if(i!=0) run1.
SetY(i, run1.
GetY(i-1));
203 run1.
SetX(i, theData[it-1][i].GetLabel());
208 for(i=0;i<nCosTh[it]; i++)
210 if(i!=0) run2.
SetY(i, run2.
GetY(i-1));
211 run2.
SetX(i, theData[it][i].GetLabel());
216 x1 = theEnergies[it-1];
217 x2 = theEnergies[it];
235 y = theInt.
Lin(x, x1,x2,y1,y2);
239 theThVec.
Merge(&thBuff1 ,&thBuff2);
246 if(random<theThVec.
GetY(i)-theThVec.
GetY(0))
break;
252 xx1 = theThVec.
GetY(ith-1)-theThVec.
GetY(0);
253 xx2 = theThVec.
GetY(ith)-theThVec.
GetY(0);
254 yy1 = theThVec.
GetX(ith-1);
255 yy2 = theThVec.
GetX(ith);
256 cosTh = theInt.
Interpolate(theSecondManager[it].GetScheme(ith),
257 xx, xx1,xx2,yy1,yy2);
262 for(i=0; i<nCosTh[it-1]; i++)
265 if(cosTh<theData[it-1][i].GetLabel())
break;
269 x1 = theData[it-1][i1-1].
GetLabel();
275 E = theData[it-1][i1-1].
GetX(i);
276 y1 = theData[it-1][i1-1].
GetY(i);
277 y2 = theData[it-1][i1].
GetY(E);
278 y = theInt.
Lin(x, x1,x2,y1,y2);
285 E = theData[it-1][i1].
GetX(i);
286 y1 = theData[it-1][i1-1].
GetY(E);
287 y2 = theData[it-1][i1].
GetY(i);
288 y = theInt.
Lin(x, x1,x2,y1,y2);
292 theStore1.
Merge(&theBuff1a, &theBuff2a);
296 for(i=0; i<nCosTh[it]; i++)
299 if(cosTh<theData[it][i2].GetLabel())
break;
307 E = theData[it][i2-1].
GetX(i);
308 y1 = theData[it][i2-1].
GetY(i);
309 y2 = theData[it][i2].
GetY(E);
310 y = theInt.
Lin(x, x1,x2,y1,y2);
322 E = theData[it][i2].
GetX(i);
323 y1 = theData[it][i2-1].
GetY(E);
324 y2 = theData[it][i2].
GetY(i);
325 y = theInt.
Lin(x, x1,x2,y1,y2);
329 theStore2.
Merge(&theBuff1b, &theBuff2b);
333 x1 = theEnergies[it-1];
334 x2 = theEnergies[it];
339 E = theStore1.
GetX(i);
340 y1 = theStore1.
GetY(i);
341 y2 = theStore2.
GetY(E);
349 E = theStore2.
GetX(i);
350 y1 = theStore1.
GetY(E);
351 y2 = theStore2.
GetY(i);
356 theOne.
Merge(&theOne1, &theOne2);
358 secEnergy = theOne.
Sample();
359 currentMeanEnergy = theOne.
GetMeanX();
370 G4ThreeVector tempVector(mtot*sinth*std::cos(phi), mtot*sinth*std::sin(phi), mtot*std::cos(theta) );
G4double G4ParticleHPJENDLHEData::G4double result
G4int GetVectorLength() const
G4double GetTotalMomentum() const
G4double Lin(G4double x, G4double x1, G4double x2, G4double y1, G4double y2)
void Init(G4int aScheme, G4int aRange)
void SetKineticEnergy(const G4double en)
void SetMomentum(const G4double x, const G4double y, const G4double z)
void SetData(G4int i, G4double x, G4double y)
void SetInterpolationManager(const G4InterpolationManager &aManager)
void SetDefinition(const G4ParticleDefinition *aParticleDefinition)
static constexpr double twopi
void SetY(G4int i, G4double x)
void Init(std::istream &aDataFile, G4int total, G4double ux=1., G4double uy=1.)
G4GLOB_DLL std::ostream G4cout
double A(double temperature)
G4InterpolationScheme GetScheme(G4int index) const
static G4Triton * Triton()
void Merge(G4ParticleHPVector *active, G4ParticleHPVector *passive)
static G4Proton * Proton()
static constexpr double eV
G4double GetX(G4int i) const
static G4Neutron * Neutron()
G4double GetY(G4double x)
static G4Deuteron * Deuteron()
G4double Interpolate(G4InterpolationScheme aScheme, G4double x, G4double x1, G4double x2, G4double y1, G4double y2) const
G4ReactionProduct * Sample(G4double anEnergy, G4double massCode, G4double mass)
static G4Positron * Positron()
const G4InterpolationManager & GetInterpolationManager() const
static G4Electron * Electron()
void SetX(G4int i, G4double e)
void SetLabel(G4double aLabel)
void Init(std::istream &aDataFile)