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();
196 G4double x, x1, x2, y1, y2, y, tmp, E;
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) );
double A(double temperature)
G4GLOB_DLL std::ostream G4cout
static G4Deuteron * Deuteron()
static G4Electron * Electron()
void Init(G4int aScheme, G4int aRange)
G4InterpolationScheme GetScheme(G4int index) const
static G4Neutron * Neutron()
G4double Interpolate(G4InterpolationScheme aScheme, G4double x, G4double x1, G4double x2, G4double y1, G4double y2) const
G4double Lin(G4double x, G4double x1, G4double x2, G4double y1, G4double y2)
void Init(std::istream &aDataFile)
G4ReactionProduct * Sample(G4double anEnergy, G4double massCode, G4double mass)
void SetY(G4int i, G4double x)
void SetX(G4int i, G4double e)
void SetData(G4int i, G4double x, G4double y)
const G4InterpolationManager & GetInterpolationManager() const
void SetLabel(G4double aLabel)
void SetInterpolationManager(const G4InterpolationManager &aManager)
G4double GetY(G4double x)
G4double GetX(G4int i) const
void Merge(G4ParticleHPVector *active, G4ParticleHPVector *passive)
void Init(std::istream &aDataFile, G4int total, G4double ux=1., G4double uy=1.)
G4int GetVectorLength() const
static G4Positron * Positron()
static G4Proton * Proton()
void SetMomentum(const G4double x, const G4double y, const G4double z)
G4double GetTotalMomentum() const
void SetDefinition(const G4ParticleDefinition *aParticleDefinition)
void SetKineticEnergy(const G4double en)
static G4Triton * Triton()