42 #ifndef G4NuclNuclDiffuseElastic_h 
   43 #define G4NuclNuclDiffuseElastic_h 1 
  315   std::vector<G4PhysicsTable*>  fAngleBank;
 
  317   std::vector<G4double> fElementNumberVector;
 
  318   std::vector<G4String> fElementNameVector;
 
  367   lowEnergyRecoilLimit = 
value;
 
  372   plabLowLimit = 
value;
 
  377   lowEnergyLimitHE = 
value;
 
  382   lowEnergyLimitQ = 
value;
 
  387   lowestEnergyLimit = 
value;
 
  397   G4double f2 = 2., f3 = 6., f4 = 24.; 
 
  401   if( std::fabs(x) < 0.01 )
 
  403     df = 1./(1. + x/f2 + x*x/f3 + x*x*x/f4);
 
  421   if( std::fabs(x) < 0.01 )
 
  425    result = 2. - x2 + x2*x2/6.;
 
  444   fBeta         = a/std::sqrt(1+a*a);
 
  486   r0 *= fNuclearRadiusCof;
 
  517   G4double sinHalfTheta  = std::sin(0.5*theta);
 
  518   G4double sinHalfTheta2 = sinHalfTheta*sinHalfTheta;
 
  526   G4double xsc           = ch2/((sinHalfTheta2+am)*(sinHalfTheta2+am));
 
  537   G4double sinHalfTheta  = std::sin(0.5*theta);
 
  538   G4double sinHalfTheta2 = sinHalfTheta*sinHalfTheta;
 
  540   G4double ch2           = fRutherfordRatio*fRutherfordRatio;
 
  542   G4double xsc           = ch2/(sinHalfTheta2+fAm)/(sinHalfTheta2+fAm);
 
  621             result += 1./z1 - 1./z3 +1./z5 -1./z7;
 
  636   tmp = t*std::exp(-z*z-1.26551223+t*(1.00002368+t*(0.37409196+t*(0.09678418+
 
  637         t*(-0.18628806+t*(0.27886807+t*(-1.13520398+t*(1.48851587+
 
  638         t*(-0.82215223+t*0.17087277)))))))));
 
  640   if( x >= 0.) result = 1. - tmp;
 
  641   else         result = 1. + tmp; 
 
  723   for( n = 1; n <= nMax; n++)
 
  733   sum *= 2.*std::exp(-z*z)/std::sqrt(
CLHEP::pi);
 
  744   result = 
G4Exp(x*x-fReZ*fReZ);
 
  745   result *= std::cos(2.*x*fReZ);
 
  755   result = 
G4Exp(x*x-fReZ*fReZ);
 
  756   result *= std::sin(2.*x*fReZ);
 
  799   G4double sinHalfTheta  = std::sin(0.5*theta);
 
  800   G4double sinHalfTheta2 = sinHalfTheta*sinHalfTheta; 
 
  801   sinHalfTheta2         += fAm;
 
  803   G4double order         = 2.*fCoulombPhase0 - fZommerfeld*
G4Log(sinHalfTheta2);
 
  807   ca                    *= -fZommerfeld/(2.*fWaveVector*sinHalfTheta2);
 
  819   G4double out = ca.real()*ca.real() + ca.imag()*ca.imag();
 
  834   fCoulombPhase0     = gammalog.imag();
 
  847   return gammalog.imag();
 
  858   fHalfRutThetaTg   = fZommerfeld/fProfileLambda;  
 
  859   fRutherfordTheta  = 2.*std::atan(fHalfRutThetaTg);
 
  860   fHalfRutThetaTg2  = fHalfRutThetaTg*fHalfRutThetaTg;
 
  871   G4double dTheta = fRutherfordTheta - theta;
 
  874   if(std::abs(dTheta) < 0.001) result = fProfileAlpha*fProfileDelta;
 
  877     argument = fProfileDelta*dTheta;
 
  892   G4double dTheta   = fRutherfordTheta + theta;
 
  893   G4double argument = fProfileDelta*dTheta;
 
  908   G4double dTheta = fRutherfordTheta - theta;
 
  911   if(std::abs(dTheta) < 0.001) result = 1.;
 
  914     argument = fProfileDelta*dTheta;
 
  916     result  /= std::sinh(result);
 
  927   G4double twosigma = 2.*fCoulombPhase0; 
 
  928   twosigma -= fZommerfeld*
G4Log(fHalfRutThetaTg2/(1.+fHalfRutThetaTg2));
 
  929   twosigma += fRutherfordTheta*fZommerfeld/fHalfRutThetaTg - 
CLHEP::halfpi;
 
  930   twosigma -= fProfileLambda*theta - 0.25*
CLHEP::pi;
 
  932   twosigma *= fCofPhase;
 
  945   G4double twosigma = 2.*fCoulombPhase0; 
 
  946   twosigma -= fZommerfeld*
G4Log(fHalfRutThetaTg2/(1.+fHalfRutThetaTg2));
 
  947   twosigma += fRutherfordTheta*fZommerfeld/fHalfRutThetaTg - 
CLHEP::halfpi;
 
  948   twosigma += fProfileLambda*theta - 0.25*
CLHEP::pi;
 
  950   twosigma *= fCofPhase;
 
  992   G4double mod2 = out.real()*out.real() + out.imag()*out.imag();
 
 1003   G4double sinThetaR  = 2.*fHalfRutThetaTg/(1. + fHalfRutThetaTg2);
 
 1004   G4double dTheta     = 0.5*(theta - fRutherfordTheta);
 
 1005   G4double sindTheta  = std::sin(dTheta);
 
 1012   G4double out = 0.5*( cosFresnel*cosFresnel + sinFresnel*sinFresnel );
 
 1047   G4double mod2 = out.real()*out.real() + out.imag()*out.imag();
 
 1059   G4double mod2 = out.real()*out.real() + out.imag()*out.imag();
 
 1070   G4double mod2 = out.real()*out.real() + out.imag()*out.imag();
 
 1082   G4double Elab = std::sqrt ( mp * mp + Plab * Plab );
 
 1083   G4double sMand  = mp*mp + mt*mt + 2*Elab*mt ;
 
G4double G4ParticleHPJENDLHEData::G4double result
 
G4double GetCoulombIntegralXsc(const G4ParticleDefinition *particle, G4double momentum, G4double Z, G4double theta1, G4double theta2)
 
static G4Pow * GetInstance()
 
G4double CalculateNuclearRad(G4double A)
 
G4double Legendre96(T &typeT, F f, G4double a, G4double b)
 
G4complex GetErfcComp(G4complex z, G4int nMax)
 
void SetProfileLambda(G4double pl)
 
G4NuclNuclDiffuseElastic()
 
static constexpr double Bohr_radius
 
void SetNuclearRadiusCof(G4double r)
 
G4double AmplitudeSimMod2(G4double theta)
 
G4double GetExpSin(G4double x)
 
G4double CalculateAm(G4double momentum, G4double n, G4double Z)
 
static constexpr double hbarc
 
G4double GetCofAlphaMax()
 
void SetCofAlphaCoulomb(G4double pa)
 
G4double SampleTableThetaCMS(const G4ParticleDefinition *aParticle, G4double p, G4double Z, G4double A)
 
G4double GetScatteringAngle(G4int iMomentum, G4int iAngle, G4double position)
 
G4double DampFactor(G4double z)
 
void SetProfileDelta(G4double pd)
 
G4double GetExpCos(G4double x)
 
G4double GetDiffElasticProb(G4double theta)
 
G4complex AmplitudeNear(G4double theta)
 
G4double GetInvCoulombElasticXsc(const G4ParticleDefinition *particle, G4double tMand, G4double momentum, G4double A, G4double Z)
 
G4complex PhaseNear(G4double theta)
 
G4complex CoulombAmplitude(G4double theta)
 
G4double GetErf(G4double x)
 
G4complex AmplitudeGla(G4double theta)
 
G4double GetRatioSim(G4double theta)
 
G4double GetDiffuseElasticSumXsc(const G4ParticleDefinition *particle, G4double theta, G4double momentum, G4double A, G4double Z)
 
G4double GetCoulombElasticXsc(const G4ParticleDefinition *particle, G4double theta, G4double momentum, G4double Z)
 
void CalculateCoulombPhaseZero()
 
G4double GetDiffuseElasticXsc(const G4ParticleDefinition *particle, G4double theta, G4double momentum, G4double A)
 
G4double CalculateParticleBeta(const G4ParticleDefinition *particle, G4double momentum)
 
G4double SampleThetaCMS(const G4ParticleDefinition *aParticle, G4double p, G4double A)
 
G4double GetCoulombTotalXsc(const G4ParticleDefinition *particle, G4double momentum, G4double Z)
 
G4double Profile(G4double theta)
 
G4complex AmplitudeGG(G4double theta)
 
G4double GetSinHaPit2(G4double t)
 
G4complex GammaLogB2n(G4complex xx)
 
void SetEtaRatio(G4double pa)
 
void SetPlabLowLimit(G4double value)
 
G4double CalculateCoulombPhase(G4int n)
 
std::complex< G4double > G4complex
 
G4GLOB_DLL std::ostream G4cout
 
double A(double temperature)
 
G4double GetHadronNucleonXscNS(G4ParticleDefinition *pParticle, G4double pTkin, G4ParticleDefinition *tParticle)
 
const XML_Char int const XML_Char * value
 
void SetCofDelta(G4double pa)
 
void CalculateRutherfordAnglePar()
 
void TestAngleTable(const G4ParticleDefinition *theParticle, G4double partMom, G4double Z, G4double A)
 
void SetRecoilKinEnergyLimit(G4double value)
 
void InitParametersGla(const G4DynamicParticle *aParticle, G4double partMom, G4double Z, G4double A)
 
void SetLowestEnergyLimit(G4double value)
 
G4double CoulombAmplitudeMod2(G4double theta)
 
G4double GetIntegrandFunction(G4double theta)
 
void SetCofAlphaMax(G4double pa)
 
G4double BesselJone(G4double z)
 
G4double GetRutherfordXsc(G4double theta)
 
G4double GetInvElasticXsc(const G4ParticleDefinition *particle, G4double theta, G4double momentum, G4double A, G4double Z)
 
G4double SampleT(const G4ParticleDefinition *aParticle, G4double p, G4double A)
 
G4double GetDiffElasticSumProb(G4double theta)
 
G4complex TestErfcInt(G4complex z)
 
virtual G4double SampleInvariantT(const G4ParticleDefinition *p, G4double plab, G4int Z, G4int A)
 
void SetHEModelLowLimit(G4double value)
 
G4complex GammaMore(G4double theta)
 
G4double GetCofAlphaCoulomb()
 
G4double GetFresnelDiffuseXsc(G4double theta)
 
G4double ThetaCMStoThetaLab(const G4DynamicParticle *aParticle, G4double tmass, G4double thetaCMS)
 
G4double G4Log(G4double x)
 
G4double G4Exp(G4double initial_x)
Exponential Function double precision. 
 
void InitialiseOnFly(G4double Z, G4double A)
 
void SetProfileAlpha(G4double pa)
 
G4double BesselJzero(G4double z)
 
G4double GetProfileLambda()
 
G4double CalculateZommerfeld(G4double beta, G4double Z1, G4double Z2)
 
G4double GetPDGMass() const 
 
void InitDynParameters(const G4ParticleDefinition *theParticle, G4double partMom)
 
G4double A13(G4double A) const 
 
G4double GetRatioGen(G4double theta)
 
G4complex GammaLess(G4double theta)
 
void SetQModelLowLimit(G4double value)
 
G4double ProfileNear(G4double theta)
 
G4double GetFresnelIntegrandXsc(G4double alpha)
 
void SetCofPhase(G4double pa)
 
G4double SampleTableT(const G4ParticleDefinition *aParticle, G4double p, G4double Z, G4double A)
 
G4complex GetErfcSer(G4complex z, G4int nMax)
 
G4double AmplitudeMod2(G4double theta)
 
static constexpr double fermi
 
G4complex GetErfcInt(G4complex z)
 
G4complex Amplitude(G4double theta)
 
G4complex GetErfInt(G4complex z)
 
static constexpr double halfpi
 
void SetCofLambda(G4double pa)
 
G4complex AmplitudeFar(G4double theta)
 
G4double CalcMandelstamS(const G4double mp, const G4double mt, const G4double Plab)
 
G4double AmplitudeGGMod2(G4double theta)
 
G4complex TestErfcComp(G4complex z, G4int nMax)
 
virtual ~G4NuclNuclDiffuseElastic()
 
G4double GetLegendrePol(G4int n, G4double x)
 
G4double GetCosHaPit2(G4double t)
 
static constexpr double fine_structure_const
 
G4double GetPDGCharge() const 
 
static const G4double alpha
 
G4double GetSint(G4double x)
 
G4complex AmplitudeSim(G4double theta)
 
G4double GetInvElasticSumXsc(const G4ParticleDefinition *particle, G4double tMand, G4double momentum, G4double A, G4double Z)
 
G4double AmplitudeGlaMod2(G4double theta)
 
G4complex GetErfComp(G4complex z, G4int nMax)
 
G4double ThetaLabToThetaCMS(const G4DynamicParticle *aParticle, G4double tmass, G4double thetaLab)
 
void SetCofFar(G4double pa)
 
G4double GetDiffElasticSumProbA(G4double alpha)
 
G4double IntegralElasticProb(const G4ParticleDefinition *particle, G4double theta, G4double momentum, G4double A)
 
G4complex PhaseFar(G4double theta)
 
static constexpr double twopi
 
G4double GetNuclearRadius()
 
G4double ProfileFar(G4double theta)
 
static constexpr double pi
 
G4double SampleThetaLab(const G4HadProjectile *aParticle, G4double tmass, G4double A)
 
G4complex GetErfSer(G4complex z, G4int nMax)
 
G4complex TestErfcSer(G4complex z, G4int nMax)
 
G4double GetCint(G4double x)
 
void SetCofAlpha(G4double pa)
 
G4complex GammaLogarithm(G4complex xx)
 
G4double BesselOneByArg(G4double z)
 
void InitParameters(const G4ParticleDefinition *theParticle, G4double partMom, G4double Z, G4double A)