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) );