48 aDataFile >> nEnergies;
49 theManager.
Init(aDataFile);
50 theEnergies =
new G4double[nEnergies];
51 nCosTh =
new G4int[nEnergies];
54 for(
G4int i=0; i<nEnergies; i++)
56 aDataFile >> theEnergies[i];
58 aDataFile >> nCosTh[i];
59 theSecondManager[i].
Init(aDataFile);
62 for(
G4int ii=0; ii<nCosTh[i]; ii++)
66 theData[i][ii].
Init(aDataFile,
eV);
107 throw G4HadronicException(__FILE__, __LINE__,
"G4NeutronHPLabAngularEnergy: Unknown ion case 2");
114 for(i=0; i<nEnergies; i++)
117 if ( anEnergy < theEnergies[i] )
break;
123 if(it==0)
G4cout <<
"080808 Something unexpected is happen in G4NeutronHPLabAngularEnergy " <<
G4endl;
127 for(i=0;i<nCosTh[it]; i++)
129 if(i!=0) running[i] = running[i-1];
134 for(i=0;i<nCosTh[it]; i++)
137 if(random<running[i])
break;
143 cosTh = theData[it][ith].
GetLabel();
144 secEnergy = theData[it][ith].
Sample();
145 currentMeanEnergy = theData[it][ith].
GetMeanX();
157 cosTh = theInt.
Interpolate(theSecondManager[it].GetInverseScheme(ith),
168 mu = theData[it][ith-1].
GetX(i);
169 y1 = theData[it][ith-1].
GetY(i);
170 y2 = theData[it][ith].
GetY(mu);
172 y = theInt.
Interpolate(theSecondManager[it].GetScheme(ith),
178 mu = theData[it][ith].
GetX(i);
179 y1 = theData[it][ith-1].
GetY(mu);
180 y2 = theData[it][ith].
GetY(i);
181 y = theInt.
Interpolate(theSecondManager[it].GetScheme(ith),
186 theStore.
Merge(&theBuff1, &theBuff2);
187 secEnergy = theStore.
Sample();
188 currentMeanEnergy = theStore.
GetMeanX();
198 for(i=0;i<nCosTh[it-1]; i++)
200 if(i!=0) run1.
SetY(i, run1.
GetY(i-1));
201 run1.
SetX(i, theData[it-1][i].GetLabel());
206 for(i=0;i<nCosTh[it]; i++)
208 if(i!=0) run2.
SetY(i, run2.
GetY(i-1));
209 run2.
SetX(i, theData[it][i].GetLabel());
214 x1 = theEnergies[it-1];
215 x2 = theEnergies[it];
233 y = theInt.
Lin(x, x1,x2,y1,y2);
237 theThVec.
Merge(&thBuff1 ,&thBuff2);
244 if(random<theThVec.
GetY(i)-theThVec.
GetY(0))
break;
250 xx1 = theThVec.
GetY(ith-1)-theThVec.
GetY(0);
251 xx2 = theThVec.
GetY(ith)-theThVec.
GetY(0);
252 yy1 = theThVec.
GetX(ith-1);
253 yy2 = theThVec.
GetX(ith);
254 cosTh = theInt.
Interpolate(theSecondManager[it].GetScheme(ith),
255 xx, xx1,xx2,yy1,yy2);
260 for(i=0; i<nCosTh[it-1]; i++)
263 if(cosTh<theData[it-1][i].GetLabel())
break;
267 x1 = theData[it-1][i1-1].
GetLabel();
273 E = theData[it-1][i1-1].
GetX(i);
274 y1 = theData[it-1][i1-1].
GetY(i);
275 y2 = theData[it-1][i1].
GetY(E);
276 y = theInt.
Lin(x, x1,x2,y1,y2);
283 E = theData[it-1][i1].
GetX(i);
284 y1 = theData[it-1][i1-1].
GetY(E);
285 y2 = theData[it-1][i1].
GetY(i);
286 y = theInt.
Lin(x, x1,x2,y1,y2);
290 theStore1.
Merge(&theBuff1a, &theBuff2a);
294 for(i=0; i<nCosTh[it]; i++)
297 if(cosTh<theData[it][i2].GetLabel())
break;
305 E = theData[it][i2-1].
GetX(i);
306 y1 = theData[it][i2-1].
GetY(i);
307 y2 = theData[it][i2].
GetY(E);
308 y = theInt.
Lin(x, x1,x2,y1,y2);
320 E = theData[it][i2].
GetX(i);
321 y1 = theData[it][i2-1].
GetY(E);
322 y2 = theData[it][i2].
GetY(i);
323 y = theInt.
Lin(x, x1,x2,y1,y2);
327 theStore2.
Merge(&theBuff1b, &theBuff2b);
331 x1 = theEnergies[it-1];
332 x2 = theEnergies[it];
337 E = theStore1.
GetX(i);
338 y1 = theStore1.
GetY(i);
339 y2 = theStore2.
GetY(E);
347 E = theStore2.
GetX(i);
348 y1 = theStore1.
GetY(E);
349 y2 = theStore2.
GetY(i);
354 theOne.
Merge(&theOne1, &theOne2);
356 secEnergy = theOne.
Sample();
357 currentMeanEnergy = theOne.
GetMeanX();
368 G4ThreeVector tempVector(mtot*sinth*std::cos(phi), mtot*sinth*std::sin(phi), mtot*std::cos(theta) );
void SetLabel(G4double aLabel)
G4double GetY(G4double x)
G4int GetVectorLength() const
void SetInterpolationManager(const G4InterpolationManager &aManager)
G4double GetTotalMomentum() const
void Init(G4int aScheme, G4int aRange)
void SetKineticEnergy(const G4double en)
void SetMomentum(const G4double x, const G4double y, const G4double z)
G4double G4NeutronHPJENDLHEData::G4double result
void Merge(G4NeutronHPVector *active, G4NeutronHPVector *passive)
void Init(std::istream &aDataFile, G4int total, G4double ux=1., G4double uy=1.)
G4double GetX(G4int i) const
void SetData(G4int i, G4double x, G4double y)
G4double Interpolate(G4InterpolationScheme aScheme, G4double x, G4double x1, G4double x2, G4double y1, G4double y2) const
void SetY(G4int i, G4double x)
G4GLOB_DLL std::ostream G4cout
G4ReactionProduct * Sample(G4double anEnergy, G4double massCode, G4double mass)
const G4InterpolationManager & GetInterpolationManager() const
G4InterpolationScheme GetScheme(G4int index) const
void Init(std::istream &aDataFile)
static G4Triton * Triton()
static G4Proton * Proton()
void SetX(G4int i, G4double e)
static G4Neutron * Neutron()
static G4Deuteron * Deuteron()
static G4Positron * Positron()
void SetDefinition(G4ParticleDefinition *aParticleDefinition)
static G4Electron * Electron()
G4double Lin(G4double x, G4double x1, G4double x2, G4double y1, G4double y2)