42#ifndef G4NuclNuclDiffuseElastic_h
43#define G4NuclNuclDiffuseElastic_h 1
325 std::vector<G4PhysicsTable*> fAngleBank;
327 std::vector<G4double> fElementNumberVector;
328 std::vector<G4String> fElementNameVector;
377 lowEnergyRecoilLimit = value;
382 plabLowLimit = value;
387 lowEnergyLimitHE = value;
392 lowEnergyLimitQ = value;
397 lowestEnergyLimit = value;
408 G4double modvalue, value2, fact1, fact2, arg, shift, bessel;
410 modvalue = fabs(value);
412 if ( value < 8.0 && value > -8.0 )
414 value2 = value*value;
416 fact1 = 57568490574.0 + value2*(-13362590354.0
417 + value2*( 651619640.7
418 + value2*(-11214424.18
419 + value2*( 77392.33017
420 + value2*(-184.9052456 ) ) ) ) );
422 fact2 = 57568490411.0 + value2*( 1029532985.0
423 + value2*( 9494680.718
424 + value2*(59272.64853
425 + value2*(267.8532712
426 + value2*1.0 ) ) ) );
428 bessel = fact1/fact2;
436 shift = modvalue-0.785398164;
438 fact1 = 1.0 + value2*(-0.1098628627e-2
439 + value2*(0.2734510407e-4
440 + value2*(-0.2073370639e-5
441 + value2*0.2093887211e-6 ) ) );
443 fact2 = -0.1562499995e-1 + value2*(0.1430488765e-3
444 + value2*(-0.6911147651e-5
445 + value2*(0.7621095161e-6
446 - value2*0.934945152e-7 ) ) );
448 bessel = sqrt(0.636619772/modvalue)*(cos(shift)*fact1 - arg*sin(shift)*fact2 );
460 G4double modvalue, value2, fact1, fact2, arg, shift, bessel;
462 modvalue = fabs(value);
464 if ( modvalue < 8.0 )
466 value2 = value*value;
468 fact1 = value*(72362614232.0 + value2*(-7895059235.0
469 + value2*( 242396853.1
470 + value2*(-2972611.439
471 + value2*( 15704.48260
472 + value2*(-30.16036606 ) ) ) ) ) );
474 fact2 = 144725228442.0 + value2*(2300535178.0
475 + value2*(18583304.74
476 + value2*(99447.43394
477 + value2*(376.9991397
478 + value2*1.0 ) ) ) );
479 bessel = fact1/fact2;
487 shift = modvalue - 2.356194491;
489 fact1 = 1.0 + value2*( 0.183105e-2
490 + value2*(-0.3516396496e-4
491 + value2*(0.2457520174e-5
492 + value2*(-0.240337019e-6 ) ) ) );
494 fact2 = 0.04687499995 + value2*(-0.2002690873e-3
495 + value2*( 0.8449199096e-5
496 + value2*(-0.88228987e-6
497 + value2*0.105787412e-6 ) ) );
499 bessel = sqrt( 0.636619772/modvalue)*(cos(shift)*fact1 - arg*sin(shift)*fact2);
501 if (value < 0.0) bessel = -bessel;
513 G4double f2 = 2., f3 = 6., f4 = 24.;
517 if( std::fabs(x) < 0.01 )
519 df = 1./(1. + x/f2 + x*x/f3 + x*x*x/f4);
537 if( std::fabs(x) < 0.01 )
541 result = 2. - x2 + x2*x2/6.;
559 fBeta = a/std::sqrt(1+a*a);
570 fZommerfeld = CLHEP::fine_structure_const*Z1*Z2/beta;
583 G4double zn = 1.77*k*std::pow(Z,-1./3.)*CLHEP::Bohr_radius;
596 G4double r0 = 1.*CLHEP::fermi, radius;
599 r0 *= fNuclearRadiusCof;
616 radius = r0*std::pow(A, 1./3.);
630 G4double sinHalfTheta = std::sin(0.5*theta);
631 G4double sinHalfTheta2 = sinHalfTheta*sinHalfTheta;
639 G4double xsc = ch2/(sinHalfTheta2+am)/(sinHalfTheta2+am);
650 G4double sinHalfTheta = std::sin(0.5*theta);
651 G4double sinHalfTheta2 = sinHalfTheta*sinHalfTheta;
653 G4double ch2 = fRutherfordRatio*fRutherfordRatio;
655 G4double xsc = ch2/(sinHalfTheta2+fAm)/(sinHalfTheta2+fAm);
677 G4cout<<
"k*Bohr_radius = "<<k*CLHEP::Bohr_radius<<
G4endl;
680 G4double xsc = ch2*CLHEP::pi/(am +am*am);
711 G4double xsc = ch2*CLHEP::twopi*(c1-c2);
712 xsc /= (1 - c1 + am)*(1 - c2 + am);
724 static G4double cof[6] = { 76.18009172947146, -86.50532032941677,
725 24.01409824083091, -1.231739572450155,
726 0.1208650973866179e-2, -0.5395239384953e-5 } ;
730 tmp -= (z + 0.5) * std::log(tmp);
733 for ( j = 0; j <= 5; j++ )
738 return -tmp + std::log(2.5066282746310005*ser);
758 G4complex result = (z-0.5)*std::log(z)-z+0.5*std::log(CLHEP::twopi);
759 result += 1./z1 - 1./z3 +1./z5 -1./z7;
774 tmp = t*exp(-z*z-1.26551223+t*(1.00002368+t*(0.37409196+t*(0.09678418+
775 t*(-0.18628806+t*(0.27886807+t*(-1.13520398+t*(1.48851587+
776 t*(-0.82215223+t*0.17087277)))))))));
778 if( x >= 0.) result = 1. - tmp;
779 else result = 1. + tmp;
819 if ( n < 0 ) legPol = 0.;
820 else if( n == 0 ) legPol = 1.;
821 else if( n == 1 ) legPol = x;
822 else if( n == 2 ) legPol = (3.*x*x-1.)/2.;
823 else if( n == 3 ) legPol = (5.*x*x*x-3.*x)/2.;
824 else if( n == 4 ) legPol = (35.*x*x*x*x-30.*x*x+3.)/8.;
825 else if( n == 5 ) legPol = (63.*x*x*x*x*x-70.*x*x*x+15.*x)/8.;
826 else if( n == 6 ) legPol = (231.*x*x*x*x*x*x-315.*x*x*x*x+105.*x*x-5.)/16.;
831 legPol = std::sqrt( 2./(n*CLHEP::pi*std::sin(theta+epsilon)) )*std::sin( (n+0.5)*theta+0.25*CLHEP::pi );
881 G4double n2, cofn, shny, chny, fn, gn;
892 G4double cof1 = std::exp(-x*x)/CLHEP::pi;
900 for( n = 1; n <= nMax; n++)
904 cofn = std::exp(-0.5*n2)/(n2+twox2);
906 chny = std::cosh(n*y);
907 shny = std::sinh(n*y);
909 fn = twox - twoxcos2xy*chny + n*sin2xy*shny;
910 gn = twoxsin2xy*chny + n*cos2xy*shny;
921 if(std::abs(x) < 0.0001)
928 outRe +=
GetErf(x) + cof1*(1-cos2xy)/twox;
929 outIm += cof1*sin2xy/twox;
944 for( n = 1; n <= nMax; n++)
954 sum *= 2.*std::exp(-z*z)/std::sqrt(CLHEP::pi);
965 result = std::exp(x*x-fReZ*fReZ);
966 result *= std::cos(2.*x*fReZ);
976 result = std::exp(x*x-fReZ*fReZ);
977 result *= std::sin(2.*x*fReZ);
1000 outRe *= 2./sqrt(CLHEP::pi);
1001 outIm *= 2./sqrt(CLHEP::pi);
1047 G4double sinHalfTheta = std::sin(0.5*theta);
1048 G4double sinHalfTheta2 = sinHalfTheta*sinHalfTheta;
1049 sinHalfTheta2 += fAm;
1051 G4double order = 2.*fCoulombPhase0 - fZommerfeld*std::log(sinHalfTheta2);
1055 ca *= -fZommerfeld/(2.*fWaveVector*sinHalfTheta2);
1067 G4double out = ca.real()*ca.real() + ca.imag()*ca.imag();
1082 fCoulombPhase0 = gammalog.imag();
1095 return gammalog.imag();
1106 fHalfRutThetaTg = fZommerfeld/fProfileLambda;
1107 fRutherfordTheta = 2.*std::atan(fHalfRutThetaTg);
1108 fHalfRutThetaTg2 = fHalfRutThetaTg*fHalfRutThetaTg;
1119 G4double dTheta = fRutherfordTheta - theta;
1120 G4double result = 0., argument = 0.;
1122 if(std::abs(dTheta) < 0.001) result = fProfileAlpha*fProfileDelta;
1125 argument = fProfileDelta*dTheta;
1126 result = CLHEP::pi*argument*std::exp(fProfileAlpha*argument);
1127 result /= std::sinh(CLHEP::pi*argument);
1140 G4double dTheta = fRutherfordTheta + theta;
1141 G4double argument = fProfileDelta*dTheta;
1143 G4double result = CLHEP::pi*argument*std::exp(fProfileAlpha*argument);
1144 result /= std::sinh(CLHEP::pi*argument);
1156 G4double dTheta = fRutherfordTheta - theta;
1157 G4double result = 0., argument = 0.;
1159 if(std::abs(dTheta) < 0.001) result = 1.;
1162 argument = fProfileDelta*dTheta;
1163 result = CLHEP::pi*argument;
1164 result /= std::sinh(CLHEP::pi*argument);
1175 G4double twosigma = 2.*fCoulombPhase0;
1176 twosigma -= fZommerfeld*std::log(fHalfRutThetaTg2/(1.+fHalfRutThetaTg2));
1177 twosigma += fRutherfordTheta*fZommerfeld/fHalfRutThetaTg - CLHEP::halfpi;
1178 twosigma -= fProfileLambda*theta - 0.25*CLHEP::pi;
1180 twosigma *= fCofPhase;
1193 G4double twosigma = 2.*fCoulombPhase0;
1194 twosigma -= fZommerfeld*std::log(fHalfRutThetaTg2/(1.+fHalfRutThetaTg2));
1195 twosigma += fRutherfordTheta*fZommerfeld/fHalfRutThetaTg - CLHEP::halfpi;
1196 twosigma += fProfileLambda*theta - 0.25*CLHEP::pi;
1198 twosigma *= fCofPhase;
1212 G4double sinThetaR = 2.*fHalfRutThetaTg/(1. + fHalfRutThetaTg2);
1213 G4double cosHalfThetaR2 = 1./(1. + fHalfRutThetaTg2);
1215 G4double u = std::sqrt(0.5*fProfileLambda/sinThetaR);
1216 G4double kappa = u/std::sqrt(CLHEP::pi);
1217 G4double dTheta = theta - fRutherfordTheta;
1224 order /= std::sqrt(2.);
1227 G4complex a0 = 0.5*(1. + 4.*(1.+im*u2)*cosHalfThetaR2/3.)/sinThetaR;
1228 G4complex a1 = 0.5*(1. + 2.*(1.+im*u2m2p3)*cosHalfThetaR2)/sinThetaR;
1229 G4complex out = gamma*(1. - a1*dTheta) - a0;
1240 G4double sinThetaR = 2.*fHalfRutThetaTg/(1. + fHalfRutThetaTg2);
1241 G4double cosHalfThetaR2 = 1./(1. + fHalfRutThetaTg2);
1243 G4double u = std::sqrt(0.5*fProfileLambda/sinThetaR);
1244 G4double kappa = u/std::sqrt(CLHEP::pi);
1245 G4double dTheta = theta - fRutherfordTheta;
1252 order /= std::sqrt(2.);
1254 G4complex a0 = 0.5*(1. + 4.*(1.+im*u2)*cosHalfThetaR2/3.)/sinThetaR;
1255 G4complex a1 = 0.5*(1. + 2.*(1.+im*u2m2p3)*cosHalfThetaR2)/sinThetaR;
1256 G4complex out = -gamma*(1. - a1*dTheta) - a0;
1267 G4double kappa = std::sqrt(0.5*fProfileLambda/std::sin(theta)/CLHEP::pi);
1272 if( theta <= fRutherfordTheta )
1292 G4double kappa = std::sqrt(0.5*fProfileLambda/std::sin(theta)/CLHEP::pi);
1320 G4double mod2 = out.real()*out.real() + out.imag()*out.imag();
1330 G4double sinThetaR = 2.*fHalfRutThetaTg/(1. + fHalfRutThetaTg2);
1331 G4double dTheta = 0.5*(theta - fRutherfordTheta);
1332 G4double sindTheta = std::sin(dTheta);
1333 G4double persqrt2 = std::sqrt(0.5);
1336 order *= std::sqrt(0.5*fProfileLambda/sinThetaR)*2.*sindTheta;
1341 if ( theta <= fRutherfordTheta )
1361 G4double sinThetaR = 2.*fHalfRutThetaTg/(1. + fHalfRutThetaTg2);
1362 G4double dTheta = 0.5*(theta - fRutherfordTheta);
1363 G4double sindTheta = std::sin(dTheta);
1365 G4double order = std::sqrt(fProfileLambda/sinThetaR/CLHEP::pi)*2.*sindTheta;
1370 G4double out = 0.5*( cosFresnel*cosFresnel + sinFresnel*sinFresnel );
1381 G4double sinThetaR = 2.*fHalfRutThetaTg/(1. + fHalfRutThetaTg2);
1382 G4double dTheta = 0.5*(theta - fRutherfordTheta);
1383 G4double sindTheta = std::sin(dTheta);
1388 G4double order = std::sqrt(fProfileLambda/sinThetaR/CLHEP::pi)*2.*sindTheta;
1390 order = std::abs(order);
1398 if ( theta <= fRutherfordTheta )
1400 out = 1. + 0.5*( (0.5-cosFresnel)*(0.5-cosFresnel)+(0.5-sinFresnel)*(0.5-sinFresnel) )*prof2;
1401 out += ( cosFresnel + sinFresnel - 1. )*prof;
1405 out = 0.5*( (0.5-cosFresnel)*(0.5-cosFresnel)+(0.5-sinFresnel)*(0.5-sinFresnel) )*prof2;
1443 G4double mod2 = out.real()*out.real() + out.imag()*out.imag();
1458 for( n = 0; n < fMaxL; n++)
1462 b = ( std::sqrt(
G4double(n*(n+1)) ) )/fWaveVector;
1464 T12b = fSumSigma*std::exp(-b2/fNuclearRadiusSquare)/CLHEP::pi/fNuclearRadiusSquare;
1465 shiftN = std::exp( -0.5*(1.-im*fEtaRatio)*T12b ) - 1.;
1468 out /= 2.*im*fWaveVector;
1480 G4double mod2 = out.real()*out.real() + out.imag()*out.imag();
1492 G4double T12b, a, aTemp, b2, sinThetaH = std::sin(0.5*theta);
1493 G4double sinThetaH2 = sinThetaH*sinThetaH;
1497 a = -fSumSigma/CLHEP::twopi/fNuclearRadiusSquare;
1498 b2 = fWaveVector*fWaveVector*fNuclearRadiusSquare*sinThetaH2;
1502 for( n = 1; n < fMaxL; n++)
1504 T12b = aTemp*std::exp(-b2/n)/n;
1509 out *= -4.*im*fWaveVector/CLHEP::pi;
1521 G4double mod2 = out.real()*out.real() + out.imag()*out.imag();
1541 fNuclearRadius = fNuclearRadius1 + fNuclearRadius2;
1547 fWaveVector = partMom/CLHEP::hbarc;
1549 G4double lambda = fCofLambda*fWaveVector*fNuclearRadius;
1555 fBeta = a/std::sqrt(1+a*a);
1557 fRutherfordRatio = fZommerfeld/fWaveVector;
1558 fAm =
CalculateAm( partMom, fZommerfeld, fAtomicNumber);
1561 fProfileLambda = lambda;
1563 fProfileDelta = fCofDelta*fProfileLambda;
1564 fProfileAlpha = fCofAlpha*fProfileLambda;
1583 fWaveVector = partMom/CLHEP::hbarc;
1585 G4double lambda = fCofLambda*fWaveVector*fNuclearRadius;
1590 fBeta = a/std::sqrt(1+a*a);
1592 fRutherfordRatio = fZommerfeld/fWaveVector;
1593 fAm =
CalculateAm( partMom, fZommerfeld, fAtomicNumber);
1595 fProfileLambda = lambda;
1596 fProfileDelta = fCofDelta*fProfileLambda;
1597 fProfileAlpha = fCofAlpha*fProfileLambda;
1620 fNuclearRadiusSquare = fNuclearRadius1*fNuclearRadius1+fNuclearRadius2*fNuclearRadius2;
1627 fWaveVector = partMom/CLHEP::hbarc;
1630 if( pN < 0. ) pN = 0.;
1633 if( tN < 0. ) tN = 0.;
1642 G4cout<<
"fSumSigma = "<<fSumSigma/CLHEP::millibarn<<
" mb"<<
G4endl;
1643 G4cout<<
"pi*R2 = "<<CLHEP::pi*fNuclearRadiusSquare/CLHEP::millibarn<<
" mb"<<
G4endl;
1644 kR12 = fWaveVector*std::sqrt(fNuclearRadiusSquare);
1646 fMaxL = (
G4int(kR12)+1)*4;
1652 fBeta = a/std::sqrt(1+a*a);
1654 fAm =
CalculateAm( partMom, fZommerfeld, fAtomicNumber);
1683 G4double proj_energy = proj_mass + pTkin;
1684 G4double proj_momentum = std::sqrt(pTkin*(pTkin+2*proj_mass));
1688 sMand /= CLHEP::GeV*CLHEP::GeV;
1689 proj_momentum /= CLHEP::GeV;
1690 proj_energy /= CLHEP::GeV;
1691 proj_mass /= CLHEP::GeV;
1699 if( proj_momentum >= 1.2 )
1701 fEtaRatio = 0.13*(logS - 5.8579332)*std::pow(sMand,-0.18);
1703 else if( proj_momentum >= 0.6 )
1705 fEtaRatio = -75.5*(std::pow(proj_momentum,0.25)-0.95)/
1706 (std::pow(3*proj_momentum,2.2)+1);
1710 fEtaRatio = 15.5*proj_momentum/(27*proj_momentum*proj_momentum*proj_momentum+2);
1716 if( proj_momentum >= 10. )
1723 if( proj_momentum >= 10.)
1726 A0 = 100. - B0*std::log(3.0e7);
1728 xsection = A0 + B0*std::log(proj_energy) - 11
1729 + 103*std::pow(2*0.93827*proj_energy + proj_mass*proj_mass+
1730 0.93827*0.93827,-0.165);
1735 if(pParticle == tParticle)
1737 if( proj_momentum < 0.73 )
1739 hnXsc = 23 + 50*( std::pow( std::log(0.73/proj_momentum), 3.5 ) );
1741 else if( proj_momentum < 1.05 )
1743 hnXsc = 23 + 40*(std::log(proj_momentum/0.73))*
1744 (std::log(proj_momentum/0.73));
1749 75*(proj_momentum - 1.2)/(std::pow(proj_momentum,3.0) + 0.15);
1755 if( proj_momentum < 0.8 )
1757 hpXsc = 33+30*std::pow(std::log(proj_momentum/1.3),4.0);
1759 else if( proj_momentum < 1.4 )
1761 hpXsc = 33+30*std::pow(std::log(proj_momentum/0.95),2.0);
1766 20.8*(std::pow(proj_momentum,2.0)-1.35)/
1767 (std::pow(proj_momentum,2.50)+0.95);
1772 xsection *= CLHEP::millibarn;
1773 G4cout<<
"xsection = "<<xsection/CLHEP::millibarn<<
" mb"<<
G4endl;
1785 G4double Elab = std::sqrt ( mp * mp + Plab * Plab );
1786 G4double sMand = mp*mp + mt*mt + 2*Elab*mt ;
std::complex< G4double > G4complex
G4DLLIMPORT std::ostream G4cout
G4ParticleDefinition * GetDefinition() const
G4double GetKineticEnergy() const
G4double CalcMandelstamS(const G4double mp, const G4double mt, const G4double Plab)
G4double GetRatioSim(G4double theta)
G4double GetInvElasticXsc(const G4ParticleDefinition *particle, G4double theta, G4double momentum, G4double A, G4double Z)
void SetProfileAlpha(G4double pa)
G4double ThetaLabToThetaCMS(const G4DynamicParticle *aParticle, G4double tmass, G4double thetaLab)
G4double CalculateZommerfeld(G4double beta, G4double Z1, G4double Z2)
G4double SampleThetaLab(const G4HadProjectile *aParticle, G4double tmass, G4double A)
G4double CalculateParticleBeta(const G4ParticleDefinition *particle, G4double momentum)
void TestAngleTable(const G4ParticleDefinition *theParticle, G4double partMom, G4double Z, G4double A)
G4double GetCoulombTotalXsc(const G4ParticleDefinition *particle, G4double momentum, G4double Z)
void SetCofAlphaCoulomb(G4double pa)
G4double GetRatioGen(G4double theta)
G4double Profile(G4double theta)
G4double GetCofAlphaMax()
void SetCofLambda(G4double pa)
G4complex AmplitudeSim(G4double theta)
G4double GetDiffElasticSumProb(G4double theta)
G4double GetInvCoulombElasticXsc(const G4ParticleDefinition *particle, G4double tMand, G4double momentum, G4double A, G4double Z)
void InitialiseOnFly(G4double Z, G4double A)
G4NuclNuclDiffuseElastic()
void SetNuclearRadiusCof(G4double r)
G4double GetNuclearRadius()
G4double BesselJzero(G4double z)
G4double GetCoulombElasticXsc(const G4ParticleDefinition *particle, G4double theta, G4double momentum, G4double Z)
void SetRecoilKinEnergyLimit(G4double value)
G4complex AmplitudeFar(G4double theta)
void SetCofAlphaMax(G4double pa)
G4complex AmplitudeGla(G4double theta)
virtual ~G4NuclNuclDiffuseElastic()
G4complex GetErfComp(G4complex z, G4int nMax)
void SetEtaRatio(G4double pa)
G4complex GammaLogB2n(G4complex xx)
G4double GetCoulombIntegralXsc(const G4ParticleDefinition *particle, G4double momentum, G4double Z, G4double theta1, G4double theta2)
G4complex TestErfcInt(G4complex z)
G4complex Amplitude(G4double theta)
G4double AmplitudeSimMod2(G4double theta)
G4double CalculateCoulombPhase(G4int n)
G4double GetInvElasticSumXsc(const G4ParticleDefinition *particle, G4double tMand, G4double momentum, G4double A, G4double Z)
G4double GetLegendrePol(G4int n, G4double x)
G4double GetIntegrandFunction(G4double theta)
G4complex AmplitudeNear(G4double theta)
G4complex AmplitudeGG(G4double theta)
G4double GetSint(G4double x)
G4double GetHadronNucleonXscNS(G4ParticleDefinition *pParticle, G4double pTkin, G4ParticleDefinition *tParticle)
G4double CoulombAmplitudeMod2(G4double theta)
G4double IntegralElasticProb(const G4ParticleDefinition *particle, G4double theta, G4double momentum, G4double A)
void SetCofFar(G4double pa)
G4double ProfileNear(G4double theta)
G4double SampleTableThetaCMS(const G4ParticleDefinition *aParticle, G4double p, G4double Z, G4double A)
G4complex GetErfInt(G4complex z)
G4double GetFresnelDiffuseXsc(G4double theta)
G4double SampleT(const G4ParticleDefinition *aParticle, G4double p, G4double A)
void CalculateRutherfordAnglePar()
G4double GetCint(G4double x)
void InitParametersGla(const G4DynamicParticle *aParticle, G4double partMom, G4double Z, G4double A)
G4double BesselOneByArg(G4double z)
G4double GetSinHaPit2(G4double t)
G4complex PhaseNear(G4double theta)
void SetHEModelLowLimit(G4double value)
G4complex GammaLogarithm(G4complex xx)
G4double GetDiffuseElasticSumXsc(const G4ParticleDefinition *particle, G4double theta, G4double momentum, G4double A, G4double Z)
G4double GetCosHaPit2(G4double t)
G4complex GetErfcSer(G4complex z, G4int nMax)
G4complex CoulombAmplitude(G4double theta)
G4double GetScatteringAngle(G4int iMomentum, G4int iAngle, G4double position)
G4double GetDiffElasticSumProbA(G4double alpha)
void SetPlabLowLimit(G4double value)
G4double AmplitudeMod2(G4double theta)
G4double AmplitudeGlaMod2(G4double theta)
void CalculateCoulombPhaseZero()
G4complex TestErfcSer(G4complex z, G4int nMax)
G4complex GetErfcComp(G4complex z, G4int nMax)
G4double GetRutherfordXsc(G4double theta)
G4double ThetaCMStoThetaLab(const G4DynamicParticle *aParticle, G4double tmass, G4double thetaCMS)
G4double SampleTableT(const G4ParticleDefinition *aParticle, G4double p, G4double Z, G4double A)
G4double SampleThetaCMS(const G4ParticleDefinition *aParticle, G4double p, G4double A)
void SetCofDelta(G4double pa)
void SetQModelLowLimit(G4double value)
G4complex GetErfSer(G4complex z, G4int nMax)
G4double GetExpSin(G4double x)
void SetLowestEnergyLimit(G4double value)
G4complex TestErfcComp(G4complex z, G4int nMax)
void SetCofPhase(G4double pa)
void SetCofAlpha(G4double pa)
void SetProfileDelta(G4double pd)
G4double AmplitudeGGMod2(G4double theta)
G4double BesselJone(G4double z)
void InitDynParameters(const G4ParticleDefinition *theParticle, G4double partMom)
G4double CalculateNuclearRad(G4double A)
void InitParameters(const G4ParticleDefinition *theParticle, G4double partMom, G4double Z, G4double A)
G4complex GetErfcInt(G4complex z)
void SetProfileLambda(G4double pl)
G4double GetDiffuseElasticXsc(const G4ParticleDefinition *particle, G4double theta, G4double momentum, G4double A)
virtual G4double SampleInvariantT(const G4ParticleDefinition *p, G4double plab, G4int Z, G4int A)
G4double GetFresnelIntegrandXsc(G4double alpha)
G4double GetCofAlphaCoulomb()
G4double GetExpCos(G4double x)
G4complex PhaseFar(G4double theta)
G4double GetErf(G4double x)
G4double DampFactor(G4double z)
G4double ProfileFar(G4double theta)
G4double GetProfileLambda()
G4complex GammaMore(G4double theta)
G4double GetDiffElasticProb(G4double theta)
G4double CalculateAm(G4double momentum, G4double n, G4double Z)
G4complex GammaLess(G4double theta)
G4double GetPDGMass() const
G4double GetPDGCharge() const
G4int GetBaryonNumber() const