44 #define G4hhElastic_h 1
322 G4double sl, sh, ds, rAl, rAh, drA, rBl, rBh, drB, bql, bqh, dbq, bQl, bQh, dbQ, cIl, cIh, dcI;
331 delete theDynamicParticle;
338 if( fMassProj > trMass )
371 for( i = 0; i < 18; i++ )
if( sCMS <=
theNuclNuclData[i][0]*CLHEP::GeV )
break;
377 ds = (sCMS - sl)/(sh - sl);
399 this->
SetRA(rAl+drA*ds,0.173,0.316);
400 this->
SetRB(rBl+drB*ds,0.173,0.316);
402 this->
SetBq(bql+dbq*ds);
403 this->
SetBQ(bQl+dbQ*ds);
443 for( i = 0; i < 8; i++ )
if( sCMS <=
thePiKaNuclData[i][0]*CLHEP::GeV )
break;
449 ds = (sCMS - sl)/(sh - sl);
471 this->
SetRA(rAl+drA*ds,0.173,0.316);
472 this->
SetRB(rBl+drB*ds,0.173,0.173);
474 this->
SetBq(bql+dbq*ds);
475 this->
SetBQ(bQl+dbQ*ds);
574 G4complex res = exp13 + exp14 + exp23 + exp24;
620 dsdt *= real(F13)*real(F13) + imag(F13)*imag(F13);
637 dsdt *= real(F1)*real(F1) + imag(F1)*imag(F1);
686 dsdt *= real(F12)*real(F12) + imag(F12)*imag(F12);
757 dsdt *= real(F123)*real(F123) + imag(F123)*imag(F123);
771 G4double c1424 = real(z1424)/(CLHEP::hbarc*CLHEP::hbarc);
794 G4double c1324 = real(z1324)/(CLHEP::hbarc*CLHEP::hbarc);
798 G4double c1423 = real(z1423)/(CLHEP::hbarc*CLHEP::hbarc);
820 G4double c1324 = real(z1324)/(CLHEP::hbarc*CLHEP::hbarc);
824 G4double c1423 = real(z1423)/(CLHEP::hbarc*CLHEP::hbarc);
828 G4double c1314 = real(z1314)/(CLHEP::hbarc*CLHEP::hbarc);
832 G4double c2324 = real(z2324)/(CLHEP::hbarc*CLHEP::hbarc);
836 G4double c1323 = real(z1323)/(CLHEP::hbarc*CLHEP::hbarc);
840 G4double c1424 = real(z1424)/(CLHEP::hbarc*CLHEP::hbarc);
848 G4double x1 = ( -B - std::sqrt(B*B-4.*A*C) )/2./A;
849 G4double x2 = ( -B + std::sqrt(B*B-4.*A*C) )/2./A;
852 if( B*B-4.*A*C < 1.e-6 )
fBQ = std::abs(-B/2./A);
853 else if ( B < 0.)
fBQ = std::abs( ( -B - std::sqrt(B*B-4.*A*C) )/2./A);
854 else fBQ = std::abs( ( -B + std::sqrt(B*B-4.*A*C) )/2./A);
909 result /= 4.*
CLHEP::pi*CLHEP::hbarc*CLHEP::hbarc;
922 result /= 4.*
CLHEP::pi*CLHEP::hbarc*CLHEP::hbarc;
935 result /= 4.*
CLHEP::pi*CLHEP::hbarc*CLHEP::hbarc;
980 q += 2*b*b*b/a/a/a/27.;
1002 G4cout<<
"re_x1 = "<<real(x1)<<
"; re_x2 = "<<real(x2)<<
"; re_x3 = "<<real(x3)<<
G4endl;
1003 G4cout<<
"im_x1 = "<<imag(x1)<<
"; im_x2 = "<<imag(x2)<<
"; im_x3 = "<<imag(x3)<<
G4endl;
1009 if( r1 <= 1. && r1 >= 0. )
fBQ = r1;
1010 else if( r2 <= 1. && r2 >= 0. )
fBQ = r2;
1011 else if( r3 <= 1. && r3 >= 0. )
fBQ = r3;
1028 G4double p = std::sqrt(0.25*
fSpp - CLHEP::proton_mass_c2*CLHEP::proton_mass_c2);
1047 G4double p = std::sqrt(0.25*spp - CLHEP::proton_mass_c2*CLHEP::proton_mass_c2);
1051 dsdt *= real(F1)*real(F1) + imag(F1)*imag(F1);
1061 G4double p = std::sqrt(0.25*
fSpp - CLHEP::proton_mass_c2*CLHEP::proton_mass_c2);
1090 G4double p = std::sqrt(0.25*spp - CLHEP::proton_mass_c2*CLHEP::proton_mass_c2);
1094 dsdt *= real(F1)*real(F1) + imag(F1)*imag(F1);
1104 G4double p = std::sqrt(0.25*
fSpp - CLHEP::proton_mass_c2*CLHEP::proton_mass_c2);
1132 G4double p = std::sqrt(0.25*
fSpp - CLHEP::proton_mass_c2*CLHEP::proton_mass_c2);
1137 dsdt *= real(F1)*real(F1) + imag(F1)*imag(F1);
1148 G4double p = std::sqrt(0.25*spp - CLHEP::proton_mass_c2*CLHEP::proton_mass_c2);
1155 dsdt *= real(F1)*real(F1) + imag(F1)*imag(F1);
1164 dsdt0 *= real(F10)*real(F10) + imag(F10)*imag(F10);
void SetParametersCMS(G4double plab)
void SetRA(G4double rn, G4double pq, G4double pQ)
G4ParticleDefinition * thePionMinus
void CalculateBQ(G4double b)
void SetSigmaTot(G4double stot)
G4PhysicsLogVector * fEnergyVector
void CalculateBqQ13(G4double b)
G4complex GetF3qQgG(G4double qp)
G4complex GetF2qQgG(G4double qp)
static const G4double theNuclNuclData[18][6]
G4double GetExpRatioF123(G4double s, G4double q)
G4double lowEnergyRecoilLimit
double B(double temperature)
void SetSpp(G4double spp)
void SetImCof(G4double a)
G4double lowestEnergyLimit
void CalculateBqQ123(G4double b)
G4ParticleDefinition * theProton
static G4KaonMinus * KaonMinus()
G4double GetHadronNucleonXscNS(const G4DynamicParticle *, const G4ParticleDefinition *)
G4complex GetF1qQgG(G4double qp)
G4double GetdsdtF12(G4double s, G4double q)
void BuildTableT(G4ParticleDefinition *target, G4ParticleDefinition *projectile)
virtual G4bool IsApplicable(const G4HadProjectile &, G4Nucleus &)
std::vector< G4PhysicsTable * > fBankT
void BuildTableTest(G4ParticleDefinition *target, G4ParticleDefinition *projectile, G4double plab)
std::complex< G4double > G4complex
G4GLOB_DLL std::ostream G4cout
void SetCofF3(G4double f)
double A(double temperature)
const G4ParticleDefinition * GetDefinition() const
G4double GetTransfer(G4int iMomentum, G4int iTransfer, G4double position)
G4double lowEnergyLimitHE
void SetAlphaP(G4double a)
void SetCofF2(G4double f)
G4double GetdsdtF1(G4double s, G4double q)
G4HadronNucleonXsc * fHadrNuclXsc
static G4Proton * Proton()
static G4PionPlus * PionPlus()
G4double GetdsdtF123qQgG(G4double q)
G4double GetdsdtF123(G4double q)
G4ParticleDefinition * fProjectile
static G4Neutron * Neutron()
G4complex GetF2(G4double qp)
void SetRB(G4double rn, G4double pq, G4double pQ)
G4double SampleInvariantT(const G4ParticleDefinition *p, G4double plab, G4int, G4int)
G4double G4Log(G4double x)
G4double G4Exp(G4double initial_x)
Exponential Function double precision.
G4double GetdsdtF1qQgG(G4double s, G4double q)
G4double SampleBisectionalT(const G4ParticleDefinition *p, G4double plab)
static G4PionMinus * PionMinus()
G4double GetOpticalRatio()
G4complex GetF3(G4double qp)
void CalculateBqQ12(G4double b)
G4double GetdsdtF13qQG(G4double s, G4double q)
G4ParticleDefinition * thePionPlus
G4double GetdsdtF12qQgG(G4double s, G4double q)
static const G4double thePiKaNuclData[8][6]
static G4KaonPlus * KaonPlus()
void SetLambda(G4double L)
G4ThreeVector G4ParticleMomentum
G4ParticleDefinition * fTarget
G4ParticleDefinition * theNeutron
G4double SampleTest(G4double tMin)
G4complex GetF1(G4double qp)