59 if ((fp=fopen(
fileName.c_str(),
"r"))==NULL){
80 (void) fscanf(fp,
"%f ",&data);
90 (void) fscanf(fp,
"%f ",&data);
93 (void) fscanf(fp,
"%f %f ",&data2, &data);
102 (void) fscanf(fp,
"%f ",&data);
110 G4double p = sqrt(pow( (E/27.2/137),2) +2*E/27.2);
128 CDXS[eBin][aBin]=0.0;
138 sum += pow(
DXS[eBin][aBin], (1.0-El/E) );
139 CDXS[eBin][aBin]=sum;
163 CDXS[eBin][aBin] /= area;
184 for(
G4double x=x1; x < (x2-dx/10); x += dx) {
197 ICDXS[eBin][ia] = (y1*(x2-x) + y2*(x-x1))/(x2-x1);
200 ICDXS[eBin][ia] =
G4Exp( (log(y1)*log(x2/x)+log(y2)*log(x/x1))/log(x2/x1) );
203 IKT[eBin][ia] = (z1*(x2-x) + z2*(x-x1))/(x2-x1);
220 G4int ii,jj,kk=0, Ebin;
223 for(ii=2; ii<=
NumEn; ii++)
227 else if(Energy > (
Eb[Ebin]+
Eb[Ebin+1])*0.5 ) Ebin++;
238 if (dxs < rnd) ii=kk;
264 G4int ii, jj, kk=0, Ebin, iMin, iMax;
268 G4double Pi = sqrt( pow( (Ei/27.2/137),2) +2*Ei/27.2);
269 G4double Pd = sqrt( pow( (Ed/27.2/137),2) +2*Ed/27.2);
273 if(Pd <= 1e-9 )
return (0.0);
278 for(ii=2; ii<=
NumEn; ii++)
279 if(Energy >
Eb[ii]) Ebin=ii;
281 else if(Energy > (
Eb[Ebin]+
Eb[Ebin+1])*0.5 ) Ebin++;
288 if(
IKT[Ebin][kk] < Kmin ) ii=kk;
296 if(
IKT[Ebin][kk] < Kmax ) ii=kk;
304 rnd = (1-rnd)*
ICDXS[Ebin][iMin] + rnd*
ICDXS[Ebin][iMax];
311 if(
ICDXS[Ebin][kk] < rnd) ii=kk;
318 G4double co = (Pi*Pi + Pd*Pd - KR*KR) / (2*Pi*Pd);
static const G4double eps
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
G4GLOB_DLL std::ostream G4cout
G4double SampleAngleEthylene(G4double, G4double)
G4double ICDXS[100][19000]
G4double SampleAngleMT(G4double, G4double)
G4LEPTSDiffXS(std::string)
G4double SampleAngle(G4double)
static constexpr double twopi