79 fDensity = fElectronDensity = fNormalizationCof = fLowEnergyCof = 0.0;
80 fIntervalNumber = fSplineNumber = 0;
86 betaBohr4 = betaBohr2*betaBohr2*cofBetaBohr;
89 fRePartDielectricConst =
G4DataVector(fMaxSplineSize,0.0);
90 fImPartDielectricConst =
G4DataVector(fMaxSplineSize,0.0);
100 for(
G4int i = 0; i < 500; ++i )
102 for(
G4int j = 0; j < 112; ++j ) { fPAItable[i][j] = 0.0; }
112 return fLorentzFactor[j];
127 G4cout<<
"G4PAIySection::Initialize(...,G4SandiaTable* sandia)"<<
G4endl;
141 G4cout<<
"fDensity = "<<fDensity<<
"\t"<<fElectronDensity<<
"\t fIntervalNumber = "
142 <<fIntervalNumber<<
" (beta*gamma)^2= " << betaGammaSq <<
G4endl;
150 for( i = 1; i <= fIntervalNumber; i++ )
158 || i >= fIntervalNumber )
160 fEnergyInterval[i] = maxEnergyTransfer;
171 G4cout<<i<<
"\t"<<fEnergyInterval[i]/
keV<<
"\t"<<fA1[i]<<
"\t"<<fA2[i]<<
"\t"
172 <<fA3[i]<<
"\t"<<fA4[i]<<
"\t"<<
G4endl;
176 G4cout<<
"last i = "<<i<<
"; "<<
"fIntervalNumber = "
177 <<fIntervalNumber<<
G4endl;
179 if( fEnergyInterval[fIntervalNumber] != maxEnergyTransfer )
182 fEnergyInterval[fIntervalNumber] = maxEnergyTransfer;
186 for( i = 1; i <= fIntervalNumber; i++ )
188 G4cout<<i<<
"\t"<<fEnergyInterval[i]/
keV<<
"\t"<<fA1[i]<<
"\t"<<fA2[i]<<
"\t"
189 <<fA3[i]<<
"\t"<<fA4[i]<<
"\t"<<
G4endl;
193 G4cout<<
"Now checking, if two borders are too close together"<<
G4endl;
195 for( i = 1; i < fIntervalNumber; i++ )
197 if( fEnergyInterval[i+1]-fEnergyInterval[i] >
198 1.5*fDelta*(fEnergyInterval[i+1]+fEnergyInterval[i]) )
continue;
201 for( j = i; j < fIntervalNumber; j++ )
203 fEnergyInterval[j] = fEnergyInterval[j+1];
214 for( i = 1; i <= fIntervalNumber; i++ )
216 G4cout<<i<<
"\t"<<fEnergyInterval[i]/
keV<<
"\t"<<fA1[i]<<
"\t"<<fA2[i]<<
"\t"
217 <<fA3[i]<<
"\t"<<fA4[i]<<
"\t"<<
G4endl;
222 ComputeLowEnergyCof(material);
225 fLorentzFactor[fRefGammaNumber]*fLorentzFactor[fRefGammaNumber] - 1;
227 NormShift(betaGammaSqRef);
228 SplainPAI(betaGammaSqRef);
232 for( i = 1; i <= fSplineNumber; i++ )
234 fDifPAIySection[i] = DifPAIySection(i,betaGammaSq);
236 if( fVerbose > 0 )
G4cout<<i<<
"; dNdxPAI = "<<fDifPAIySection[i]<<
G4endl;
238 IntegralPAIySection();
251 static const G4double p0 = 1.20923e+00;
252 static const G4double p1 = 3.53256e-01;
253 static const G4double p2 = -1.45052e-03;
258 for( i = 0; i < numberOfElements; i++ )
261 sumZ += thisMaterialZ[i];
262 thisMaterialCof[i] = p0+p1*thisMaterialZ[i]+p2*thisMaterialZ[i]*thisMaterialZ[i];
264 for( i = 0; i < numberOfElements; i++ )
266 sumCof += thisMaterialCof[i]*thisMaterialZ[i]/sumZ;
268 fLowEnergyCof = sumCof;
269 delete [] thisMaterialZ;
270 delete [] thisMaterialCof;
282 G4double betaGammaSq = fLorentzFactor[fRefGammaNumber]*
283 fLorentzFactor[fRefGammaNumber] - 1;
287 NormShift(betaGammaSq);
288 SplainPAI(betaGammaSq);
290 IntegralPAIySection();
294 for( i = 0; i<= fSplineNumber; i++)
296 fPAItable[i][fRefGammaNumber] = fIntegralPAIySection[i];
298 if(i != 0) fPAItable[i][0] = fSplineEnergy[i];
300 fPAItable[0][0] = fSplineNumber;
302 for(
G4int j = 1; j < 112; ++j)
304 if( j == fRefGammaNumber )
continue;
306 betaGammaSq = fLorentzFactor[j]*fLorentzFactor[j] - 1;
308 for(i = 1; i <= fSplineNumber; i++)
310 fDifPAIySection[i] = DifPAIySection(i,betaGammaSq);
311 fdNdxCerenkov[i] = PAIdNdxCerenkov(i,betaGammaSq);
312 fdNdxPlasmon[i] = PAIdNdxPlasmon(i,betaGammaSq);
314 IntegralPAIySection();
318 for(i = 0; i <= fSplineNumber; i++)
320 fPAItable[i][j] = fIntegralPAIySection[i];
334 for( i = 1; i <= fIntervalNumber-1; ++i)
336 for( j = 1; j <= 2; ++j)
338 fSplineNumber = (i-1)*2 + j;
340 if( j == 1 ) fSplineEnergy[fSplineNumber] = fEnergyInterval[i ]*(1+fDelta);
341 else fSplineEnergy[fSplineNumber] = fEnergyInterval[i+1]*(1-fDelta);
346 fIntegralTerm[1]=RutherfordIntegral(1,fEnergyInterval[1],fSplineEnergy[1]);
350 for(i=2;i<=fSplineNumber;i++)
352 if(fSplineEnergy[i]<fEnergyInterval[j+1])
354 fIntegralTerm[i] = fIntegralTerm[i-1] +
355 RutherfordIntegral(j,fSplineEnergy[i-1],
360 G4double x = RutherfordIntegral(j,fSplineEnergy[i-1],
361 fEnergyInterval[j+1] );
363 fIntegralTerm[i] = fIntegralTerm[i-1] + x +
364 RutherfordIntegral(j,fEnergyInterval[j],
371 fNormalizationCof = nfactor*fElectronDensity/fIntegralTerm[fSplineNumber];
378 for(
G4int k=1; k<=fIntervalNumber-1; ++k)
383 fImPartDielectricConst[i] = fNormalizationCof*
384 ImPartDielectricConst(k,fSplineEnergy[i]);
385 fRePartDielectricConst[i] = fNormalizationCof*
386 RePartDielectricConst(fSplineEnergy[i]);
387 fIntegralTerm[i] *= fNormalizationCof;
389 fDifPAIySection[i] = DifPAIySection(i,betaGammaSq);
390 fdNdxCerenkov[i] = PAIdNdxCerenkov(i,betaGammaSq);
391 fdNdxPlasmon[i] = PAIdNdxPlasmon(i,betaGammaSq);
408 while ( (i < fSplineNumber) && (fSplineNumber < fMaxSplineSize-1) )
410 if(fSplineEnergy[i+1] > fEnergyInterval[k+1])
420 for(
G4int j = fSplineNumber; j >= i+2; j-- )
422 fSplineEnergy[j] = fSplineEnergy[j-1];
423 fImPartDielectricConst[j] = fImPartDielectricConst[j-1];
424 fRePartDielectricConst[j] = fRePartDielectricConst[j-1];
425 fIntegralTerm[j] = fIntegralTerm[j-1];
427 fDifPAIySection[j] = fDifPAIySection[j-1];
428 fdNdxCerenkov[j] = fdNdxCerenkov[j-1];
429 fdNdxPlasmon[j] = fdNdxPlasmon[j-1];
437 fSplineEnergy[i+1] = en1;
443 G4double b = log10(yy1) - a*log10(x1);
449 fImPartDielectricConst[i+1] = fNormalizationCof*
450 ImPartDielectricConst(k,fSplineEnergy[i+1]);
451 fRePartDielectricConst[i+1] = fNormalizationCof*
452 RePartDielectricConst(fSplineEnergy[i+1]);
453 fIntegralTerm[i+1] = fIntegralTerm[i] + fNormalizationCof*
454 RutherfordIntegral(k,fSplineEnergy[i],
457 fDifPAIySection[i+1] = DifPAIySection(i+1,betaGammaSq);
458 fdNdxCerenkov[i+1] = PAIdNdxCerenkov(i+1,betaGammaSq);
459 fdNdxPlasmon[i+1] = PAIdNdxPlasmon(i+1,betaGammaSq);
464 G4double x = 2*(fDifPAIySection[i+1] -
y)/(fDifPAIySection[i+1] + y);
466 G4double delta = 2.*(fSplineEnergy[i+1]-fSplineEnergy[i])
467 /(fSplineEnergy[i+1]+fSplineEnergy[i]);
473 if( x > fError && fSplineNumber < fMaxSplineSize-1 && delta > 2.*fDelta )
498 c2 = (x2 -
x1)*(x2 + x1)/(x12*x12);
499 c3 = (x2 -
x1)*(x1*x1 + x1*x2 + x2*x2)/(x12*x12*x12);
502 return fA1[k]*log(x2/x1) + fA2[k]*c1 + fA3[k]*c2/2 + fA4[k]*c3/3;
517 energy2 = energy1*energy1;
518 energy3 = energy2*energy1;
519 energy4 = energy3*energy1;
521 result = fA1[k]/energy1+fA2[k]/energy2+fA3[k]/energy3+fA4[k]/energy4;
522 result *=
hbarc/energy1;
537 G4double x0, x02, x03, x04, x05,
x1,
x2, xx1 ,xx2 , xx12,
538 c1,
c2, c3, cof1, cof2, xln1, xln2, xln3,
result;
543 for(
G4int i=1;i<=fIntervalNumber-1;i++)
545 x1 = fEnergyInterval[i];
546 x2 = fEnergyInterval[i+1];
557 xln3 = log((x2 + x0)/(x1 + x0));
564 c2 = (x2 -
x1)*(x2 +x1)/(x12*x12);
565 c3 = (x2 -
x1)*(x1*x1 + x1*x2 + x2*x2)/(x12*x12*x12);
567 result -= (fA1[i]/x02 + fA3[i]/x04)*xln1;
568 result -= (fA2[i]/x02 + fA4[i]/x04)*c1;
569 result -= fA3[i]*c2/2/x02;
570 result -= fA4[i]*c3/3/x02;
572 cof1 = fA1[i]/x02 + fA3[i]/x04;
573 cof2 = fA2[i]/x03 + fA4[i]/x05;
575 result += 0.5*(cof1 +cof2)*xln2;
576 result += 0.5*(cof1 - cof2)*xln3;
593 G4double beta, be2,cof,
x1,
x2,x3,x4,x5,x6,x7,x8,
result;
598 be2 = betaGammaSq/(1 + betaGammaSq);
604 if( betaGammaSq < 0.01 ) x2 = log(be2);
607 x2 = -log( (1/betaGammaSq - fRePartDielectricConst[i])*
608 (1/betaGammaSq - fRePartDielectricConst[i]) +
609 fImPartDielectricConst[i]*fImPartDielectricConst[i] )/2;
611 if( fImPartDielectricConst[i] == 0.0 ||betaGammaSq < 0.01 )
617 x3 = -fRePartDielectricConst[i] + 1/betaGammaSq;
618 x5 = -1 - fRePartDielectricConst[i] +
619 be2*((1 +fRePartDielectricConst[i])*(1 + fRePartDielectricConst[i]) +
620 fImPartDielectricConst[i]*fImPartDielectricConst[i]);
622 x7 = atan2(fImPartDielectricConst[i],x3);
627 x4 = ((x1 +
x2)*fImPartDielectricConst[i] + x6)/
hbarc;
629 x8 = (1 + fRePartDielectricConst[i])*(1 + fRePartDielectricConst[i]) +
630 fImPartDielectricConst[i]*fImPartDielectricConst[i];
632 result = (x4 + cof*fIntegralTerm[i]/fSplineEnergy[i]/fSplineEnergy[i]);
639 result *= (1 - exp(-beta/betaBohr/lowCof));
660 G4double logarithm, x3, x5, argument, modul2, dNdxC;
665 be2 = betaGammaSq/(1 + betaGammaSq);
668 if( betaGammaSq < 0.01 ) logarithm = log(1.0+betaGammaSq);
671 logarithm = -log( (1/betaGammaSq - fRePartDielectricConst[i])*
672 (1/betaGammaSq - fRePartDielectricConst[i]) +
673 fImPartDielectricConst[i]*fImPartDielectricConst[i] )*0.5;
674 logarithm += log(1+1.0/betaGammaSq);
677 if( fImPartDielectricConst[i] == 0.0 || betaGammaSq < 0.01 )
683 x3 = -fRePartDielectricConst[i] + 1.0/betaGammaSq;
684 x5 = -1.0 - fRePartDielectricConst[i] +
685 be2*((1.0 +fRePartDielectricConst[i])*(1.0 + fRePartDielectricConst[i]) +
686 fImPartDielectricConst[i]*fImPartDielectricConst[i]);
687 if( x3 == 0.0 ) argument = 0.5*
pi;
688 else argument = atan2(fImPartDielectricConst[i],x3);
691 dNdxC = ( logarithm*fImPartDielectricConst[i] + argument )/
hbarc;
693 if(dNdxC < 1.0
e-8) dNdxC = 1.0e-8;
697 dNdxC *= (1-exp(-be4/betaBohr4));
701 modul2 = (1.0 + fRePartDielectricConst[i])*(1.0 + fRePartDielectricConst[i]) +
702 fImPartDielectricConst[i]*fImPartDielectricConst[i];
719 G4double cof, resonance, modul2, dNdxP;
724 be2 = betaGammaSq/(1 + betaGammaSq);
728 resonance *= fImPartDielectricConst[i]/
hbarc;
730 dNdxP = ( resonance + cof*fIntegralTerm[i]/fSplineEnergy[i]/fSplineEnergy[i] );
735 dNdxP *= (1-exp(-be4/betaBohr4));
739 modul2 = (1 + fRePartDielectricConst[i])*(1 + fRePartDielectricConst[i]) +
740 fImPartDielectricConst[i]*fImPartDielectricConst[i];
757 fIntegralPAIySection[fSplineNumber] = 0;
758 fIntegralPAIdEdx[fSplineNumber] = 0;
759 fIntegralPAIySection[0] = 0;
760 G4int k = fIntervalNumber -1;
762 for(
G4int i = fSplineNumber-1; i >= 1; i--)
764 if(fSplineEnergy[i] >= fEnergyInterval[k])
766 fIntegralPAIySection[i] = fIntegralPAIySection[i+1] + SumOverInterval(i);
767 fIntegralPAIdEdx[i] = fIntegralPAIdEdx[i+1] + SumOverIntervaldEdx(i);
771 fIntegralPAIySection[i] = fIntegralPAIySection[i+1] +
772 SumOverBorder(i+1,fEnergyInterval[k]);
773 fIntegralPAIdEdx[i] = fIntegralPAIdEdx[i+1] +
774 SumOverBorderdEdx(i+1,fEnergyInterval[k]);
789 fIntegralCerenkov[fSplineNumber] = 0;
790 fIntegralCerenkov[0] = 0;
791 k = fIntervalNumber -1;
793 for( i = fSplineNumber-1; i >= 1; i-- )
795 if(fSplineEnergy[i] >= fEnergyInterval[k])
797 fIntegralCerenkov[i] = fIntegralCerenkov[i+1] + SumOverInterCerenkov(i);
802 fIntegralCerenkov[i] = fIntegralCerenkov[i+1] +
803 SumOverBordCerenkov(i+1,fEnergyInterval[k]);
819 fIntegralPlasmon[fSplineNumber] = 0;
820 fIntegralPlasmon[0] = 0;
821 G4int k = fIntervalNumber -1;
822 for(
G4int i=fSplineNumber-1;i>=1;i--)
824 if(fSplineEnergy[i] >= fEnergyInterval[k])
826 fIntegralPlasmon[i] = fIntegralPlasmon[i+1] + SumOverInterPlasmon(i);
830 fIntegralPlasmon[i] = fIntegralPlasmon[i+1] +
831 SumOverBordPlasmon(i+1,fEnergyInterval[k]);
848 x0 = fSplineEnergy[i];
849 x1 = fSplineEnergy[i+1];
851 if( std::abs( 2.*(x1-x0)/(x1+x0) ) < 1.
e-6)
return 0.;
853 y0 = fDifPAIySection[i];
854 yy1 = fDifPAIySection[i+1];
858 a = log10(yy1/y0)/log10(c);
865 result = b*log(x1/x0);
869 result = y0*(x1*pow(c,a-1) - x0)/a;
874 fIntegralPAIySection[0] += b*log(x1/x0);
878 fIntegralPAIySection[0] += y0*(x1*x1*pow(c,a-2) - x0*x0)/a;
890 x0 = fSplineEnergy[i];
891 x1 = fSplineEnergy[i+1];
893 if( std::abs( 2.*(x1-x0)/(x1+x0) ) < 1.
e-6)
return 0.;
895 y0 = fDifPAIySection[i];
896 yy1 = fDifPAIySection[i+1];
898 a = log10(yy1/y0)/log10(c);
904 result = b*log(x1/x0);
908 result = y0*(x1*x1*pow(c,a-2) - x0*x0)/a;
924 x0 = fSplineEnergy[i];
925 x1 = fSplineEnergy[i+1];
927 if( std::abs( 2.*(x1-x0)/(x1+x0) ) < 1.
e-6)
return 0.;
929 y0 = fdNdxCerenkov[i];
930 yy1 = fdNdxCerenkov[i+1];
935 a = log10(yy1/y0)/log10(c);
937 if(a < 20.) b = y0/pow(x0,a);
940 if(a == 0) result = b*log(c);
941 else result = y0*(x1*pow(c,a-1) - x0)/a;
944 if( a == 0 ) fIntegralCerenkov[0] += b*log(x1/x0);
945 else fIntegralCerenkov[0] += y0*(x1*x1*pow(c,a-2) - x0*x0)/a;
961 x0 = fSplineEnergy[i];
962 x1 = fSplineEnergy[i+1];
964 if( std::abs( 2.*(x1-x0)/(x1+x0) ) < 1.
e-6)
return 0.;
966 y0 = fdNdxPlasmon[i];
967 yy1 = fdNdxPlasmon[i+1];
969 a = log10(yy1/y0)/log10(c);
972 if(a < 20.) b = y0/pow(x0,a);
975 if(a == 0) result = b*log(x1/x0);
976 else result = y0*(x1*pow(c,a-1) - x0)/a;
979 if( a == 0 ) fIntegralPlasmon[0] += b*log(x1/x0);
980 else fIntegralPlasmon[0] += y0*(x1*x1*pow(c,a-2) - x0*x0)/a;
997 x0 = fSplineEnergy[i];
998 x1 = fSplineEnergy[i+1];
999 y0 = fDifPAIySection[i];
1000 yy1 = fDifPAIySection[i+1];
1004 a = log10(yy1/y0)/log10(x1/x0);
1007 if(a < 20.) b = y0/pow(x0,a);
1012 result = b*log(x0/e0);
1016 result = y0*(x0 - e0*pow(d,a-1))/a;
1021 fIntegralPAIySection[0] += b*log(x0/e0);
1025 fIntegralPAIySection[0] += y0*(x0*x0 - e0*e0*pow(d,a-2))/a;
1027 x0 = fSplineEnergy[i - 1];
1028 x1 = fSplineEnergy[i - 2];
1029 y0 = fDifPAIySection[i - 1];
1030 yy1 = fDifPAIySection[i - 2];
1034 a = log10(yy1/y0)/log10(x1/x0);
1040 result += b*log(e0/x0);
1044 result += y0*(e0*pow(d,a-1) - x0)/a;
1049 fIntegralPAIySection[0] += b*log(e0/x0);
1053 fIntegralPAIySection[0] += y0*(e0*e0*pow(d,a-2) - x0*x0)/a;
1067 x0 = fSplineEnergy[i];
1068 x1 = fSplineEnergy[i+1];
1069 y0 = fDifPAIySection[i];
1070 yy1 = fDifPAIySection[i+1];
1074 a = log10(yy1/y0)/log10(x1/x0);
1077 if(a < 20.) b = y0/pow(x0,a);
1082 result = b*log(x0/e0);
1086 result = y0*(x0*x0 - e0*e0*pow(d,a-2))/a;
1088 x0 = fSplineEnergy[i - 1];
1089 x1 = fSplineEnergy[i - 2];
1090 y0 = fDifPAIySection[i - 1];
1091 yy1 = fDifPAIySection[i - 2];
1095 a = log10(yy1/y0)/log10(x1/x0);
1097 if(a < 20.) b = y0/pow(x0,a);
1102 result += b*log(e0/x0);
1106 result += y0*(e0*e0*pow(d,a-2) - x0*x0)/a;
1123 x0 = fSplineEnergy[i];
1124 x1 = fSplineEnergy[i+1];
1125 y0 = fdNdxCerenkov[i];
1126 yy1 = fdNdxCerenkov[i+1];
1133 a = log10(yy1/y0)/log10(c);
1136 if(a < 20.) b = y0/pow(x0,a);
1139 if( a == 0 ) result = b*log(x0/e0);
1140 else result = y0*(x0 - e0*pow(d,a-1))/a;
1143 if( a == 0 ) fIntegralCerenkov[0] += b*log(x0/e0);
1144 else fIntegralCerenkov[0] += y0*(x0*x0 - e0*e0*pow(d,a-2))/a;
1148 x0 = fSplineEnergy[i - 1];
1149 x1 = fSplineEnergy[i - 2];
1150 y0 = fdNdxCerenkov[i - 1];
1151 yy1 = fdNdxCerenkov[i - 2];
1158 a = log10(yy1/y0)/log10(x1/x0);
1161 if(a > 20.0) b = 0.0;
1162 else b = y0/pow(x0,a);
1167 if( a == 0 ) result += b*log(e0/x0);
1168 else result += y0*(e0*pow(d,a-1) - x0 )/a;
1172 if( a == 0 ) fIntegralCerenkov[0] += b*log(e0/x0);
1173 else fIntegralCerenkov[0] += y0*(e0*e0*pow(d,a-2) - x0*x0)/a;
1192 x0 = fSplineEnergy[i];
1193 x1 = fSplineEnergy[i+1];
1194 y0 = fdNdxPlasmon[i];
1195 yy1 = fdNdxPlasmon[i+1];
1199 a = log10(yy1/y0)/log10(c);
1202 if(a < 20.) b = y0/pow(x0,a);
1205 if( a == 0 ) result = b*log(x0/e0);
1206 else result = y0*(x0 - e0*pow(d,a-1))/a;
1209 if( a == 0 ) fIntegralPlasmon[0] += b*log(x0/e0);
1210 else fIntegralPlasmon[0] += y0*(x0*x0 - e0*e0*pow(d,a-2))/a;
1212 x0 = fSplineEnergy[i - 1];
1213 x1 = fSplineEnergy[i - 2];
1214 y0 = fdNdxPlasmon[i - 1];
1215 yy1 = fdNdxPlasmon[i - 2];
1219 a = log10(yy1/y0)/log10(c);
1221 if(a < 20.) b = y0/pow(x0,a);
1224 if( a == 0 ) result += b*log(e0/x0);
1225 else result += y0*(e0*pow(d,a-1) - x0)/a;
1228 if( a == 0 ) fIntegralPlasmon[0] += b*log(e0/x0);
1229 else fIntegralPlasmon[0] += y0*(e0*e0*pow(d,a-2) - x0*x0)/a;
1250 meanNumber = fIntegralPAIySection[1]*step;
1251 numOfCollisions =
G4Poisson(meanNumber);
1255 while(numOfCollisions)
1259 for( iTransfer=1; iTransfer<=fSplineNumber; iTransfer++ )
1261 if( position >= fIntegralPAIySection[iTransfer] )
break;
1263 loss += fSplineEnergy[iTransfer] ;
1287 meanNumber = fIntegralCerenkov[1]*step;
1288 numOfCollisions =
G4Poisson(meanNumber);
1292 while(numOfCollisions)
1296 for( iTransfer=1; iTransfer<=fSplineNumber; iTransfer++ )
1298 if( position >= fIntegralCerenkov[iTransfer] )
break;
1300 loss += fSplineEnergy[iTransfer] ;
1324 meanNumber = fIntegralPlasmon[1]*step;
1325 numOfCollisions =
G4Poisson(meanNumber);
1329 while(numOfCollisions)
1333 for( iTransfer=1; iTransfer<=fSplineNumber; iTransfer++ )
1335 if( position >= fIntegralPlasmon[iTransfer] )
break;
1337 loss += fSplineEnergy[iTransfer] ;
1351 G4String head =
"G4PAIySection::" + methodName +
"()";
1353 ed <<
"Wrong index " << i <<
" fSplineNumber= " << fSplineNumber;
1367 1.094989e+00, 1.107813e+00, 1.122369e+00, 1.138890e+00, 1.157642e+00,
1368 1.178925e+00, 1.203082e+00, 1.230500e+00, 1.261620e+00, 1.296942e+00,
1369 1.337032e+00, 1.382535e+00, 1.434181e+00, 1.492800e+00, 1.559334e+00,
1370 1.634850e+00, 1.720562e+00, 1.817845e+00, 1.928263e+00, 2.053589e+00,
1371 2.195835e+00, 2.357285e+00, 2.540533e+00, 2.748522e+00, 2.984591e+00,
1372 3.252533e+00, 3.556649e+00, 3.901824e+00, 4.293602e+00, 4.738274e+00,
1373 5.242981e+00, 5.815829e+00, 6.466019e+00, 7.203990e+00, 8.041596e+00,
1374 8.992288e+00, 1.007133e+01, 1.129606e+01, 1.268614e+01, 1.426390e+01,
1375 1.605467e+01, 1.808721e+01, 2.039417e+01, 2.301259e+01, 2.598453e+01,
1376 2.935771e+01, 3.318630e+01, 3.753180e+01, 4.246399e+01, 4.806208e+01,
1377 5.441597e+01, 6.162770e+01, 6.981310e+01, 7.910361e+01, 8.964844e+01,
1378 1.016169e+02, 1.152013e+02, 1.306197e+02, 1.481198e+02, 1.679826e+02,
1379 1.905270e+02, 2.161152e+02, 2.451581e+02, 2.781221e+02, 3.155365e+02,
1380 3.580024e+02, 4.062016e+02, 4.609081e+02, 5.230007e+02, 5.934765e+02,
1381 6.734672e+02, 7.642575e+02, 8.673056e+02, 9.842662e+02, 1.117018e+03,
1382 1.267692e+03, 1.438709e+03, 1.632816e+03, 1.853128e+03, 2.103186e+03,
1383 2.387004e+03, 2.709140e+03, 3.074768e+03, 3.489760e+03, 3.960780e+03,
1384 4.495394e+03, 5.102185e+03, 5.790900e+03, 6.572600e+03, 7.459837e+03,
1385 8.466860e+03, 9.609843e+03, 1.090714e+04, 1.237959e+04, 1.405083e+04,
1386 1.594771e+04, 1.810069e+04, 2.054434e+04, 2.331792e+04, 2.646595e+04,
1387 3.003901e+04, 3.409446e+04, 3.869745e+04, 4.392189e+04, 4.985168e+04,
1388 5.658206e+04, 6.422112e+04, 7.289153e+04, 8.273254e+04, 9.390219e+04,
void ComputeLowEnergyCof(const G4Material *material)
T max(const T t1, const T t2)
brief Return the largest of the two arguments
G4double SumOverBordCerenkov(G4int intervalNumber, G4double energy)
std::ostringstream G4ExceptionDescription
std::vector< ExP01TrackerHit * > a
G4double SumOverIntervaldEdx(G4int intervalNumber)
G4double SumOverInterCerenkov(G4int intervalNumber)
G4double GetStepPlasmonLoss(G4double step)
static constexpr double keV
Float_t x1[n_points_granero]
G4double RePartDielectricConst(G4double energy)
static constexpr double hbarc
G4double DifPAIySection(G4int intervalNumber, G4double betaGammaSq)
G4double SumOverInterPlasmon(G4int intervalNumber)
G4double SumOverBorderdEdx(G4int intervalNumber, G4double energy)
G4double RutherfordIntegral(G4int intervalNumber, G4double limitLow, G4double limitHigh)
G4int GetMaxInterval() const
static const G4int fMaxSplineSize
Float_t y2[n_points_geant4]
void SplainPAI(G4double betaGammaSq)
G4double SumOverBorder(G4int intervalNumber, G4double energy)
static constexpr double electron_mass_c2
G4double SumOverInterval(G4int intervalNumber)
G4double PAIdNdxPlasmon(G4int intervalNumber, G4double betaGammaSq)
static constexpr double eV
void NormShift(G4double betaGammaSq)
G4double GetStepEnergyLoss(G4double step)
G4double PAIdNdxCerenkov(G4int intervalNumber, G4double betaGammaSq)
G4double GetSandiaMatTablePAI(G4int, G4int) const
G4double GetLorentzFactor(G4int j) const
void CallError(G4int i, const G4String &methodName) const
G4double G4ParticleHPJENDLHEData::G4double result
static const G4double fLorentzFactor[112]
G4double SumOverBordPlasmon(G4int intervalNumber, G4double energy)
G4double ImPartDielectricConst(G4int intervalNumber, G4double energy)
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *description)
static G4int fNumberOfGammas
static const G4double fDelta
G4GLOB_DLL std::ostream G4cout
void Initialize(const G4Material *material, G4double maxEnergyTransfer, G4double betaGammaSq, G4SandiaTable *)
G4long G4Poisson(G4double mean)
static const G4double fError
void IntegralPAIySection()
static constexpr double pi
static constexpr double fine_structure_const
Float_t x2[n_points_geant4]
const G4Element * GetElement(G4int iel) const
G4double GetElectronDensity() const
static const G4int fRefGammaNumber
size_t GetNumberOfElements() const
G4double GetStepCerenkovLoss(G4double step)
G4double GetDensity() const