34#define INCLXX_IN_GEANT4_MODE 1
57 const G4double xrat=ekin*oneOverThreshold;
68 s11pzHC(-2.228000000000294018,8.7560000000005723725,-0.61000000000023239325,-5.4139999999999780324,3.3338333333333348023,-0.75835000000000022049,0.060623611111111114688),
69 s01ppHC(2.0570000000126518344,-6.029000000012135826,36.768500000002462784,-45.275666666666553533,25.112666666666611953,-7.2174166666666639187,1.0478875000000000275,-0.060804365079365080846),
70 s01pzHC(0.18030000000000441851,7.8700999999999953598,-4.0548999999999990425,0.555199999999999959),
71 s11pmHC(0.20590000000000031866,3.3450999999999993936,-1.4401999999999997825,0.17076666666666664973),
72 s12pmHC(-0.77235999999999901328,4.2626599999999991117,-1.9008899999999997323,0.30192266666666663379,-0.012270833333333331986),
73 s12ppHC(-0.75724999999999975664,2.0934399999999998565,-0.3803099999999999814),
74 s12zzHC(-0.89599999999996965072,7.882999999999978632,-7.1049999999999961928,1.884333333333333089),
75 s02pzHC(-1.0579999999999967036,11.113999999999994089,-8.5259999999999990196,2.0051666666666666525),
76 s02pmHC(2.4009000000012553286,-7.7680000000013376183,20.619000000000433505,-16.429666666666723928,5.2525708333333363472,-0.58969166666666670206),
77 s12mzHC(-0.21858699999999976269,1.9148999999999999722,-0.31727500000000001065,-0.027695000000000000486)
98 const std::vector<G4double> coef_nbarp_total = {1.69447, 5.26254E+08, -5.36346, -0.39766, 0.0243057};
105 return 1000*sigma +
NNbarCEX(p1, p2);
145 return inelastic +
elastic(p1, p2);
189 const std::vector<G4double> BFMM204 = {7.549, -0.041, -2.959, -6.835, 1.629, 0.114};
192 const std::vector<G4double> BFMM204nn = {7.549, -0.041, -2.959, -6.835, 1.629};
209 if(iso == 2 || iso == -2){
242 const std::vector<G4double> BFMM2 = {110.496, -65.605, -0.198, -34.813, 4.317};
244 const std::vector<G4double> BFMM472 = {14.625, 23.413, -0.288, -9.002, 1.084};
261 if(iso == 2 || iso == -2){
314 const std::vector<G4double> BFMM121 = {2.379, -2.738, -1.260, -1.915, 0.430, 1.437};
316 const std::vector<G4double> BFMM113 = {-0.105, 0.000, -5.099, 0.188, -0.050, 1.820};
318 const std::vector<G4double> BFMM139 = {0.142, -0.291, -1.702, -0.058, 0.001, 1.851};
320 const std::vector<G4double> BFMM149 = {1.855, -2.238, -1.002, -1.279, 0.252, 1.896};
322 const std::vector<G4double> BFMM136 = {1.749, -2.506, -1.222, -1.262, 0.274, 2.042};
324 const std::vector<G4double> BFMM146 = {1.037, -1.437, -1.155, -0.709, 0.138, 2.065};
326 const std::vector<G4double> BFMM143 = {0.652, -1.006, -1.805, -0.537, 0.121, 1.653};
351 if(pLab > 1.868) BFMM144 = 0.008;
354 if(pLab > 1.868) BFMM101 = 0.002;
359 if(pLab > 2.1) BFMM487 = 0.048;
362 if(pLab > 2.0) BFMM488 = 0.139;
365 if(iso == 2 || iso == -2){
366 sigma = BFMM487 + BFMM488;
413 const std::vector<G4double> BFMM185 = {-0.734, 0.841, 0.905, 3.415, -2.316, 0.775};
416 const std::vector<G4double> BFMM188 = { -0.442, 0.501, 0.002, 3.434, -1.201, 0.798};
418 const std::vector<G4double> BFMM199 = {-2.025, 2.055, -2.355, 6.064, -2.004, 0.798};
420 const std::vector<G4double> BFMM491 = {24.125, -20.669, -1.534, -19.573, 4.493, 0.787};
422 const std::vector<G4double> BFMM495 = {-0.650, -0.140, -0.058, 5.166, -1.705, 0.777};
439 if(iso == 2 || iso == -2){
483 const std::vector<G4double> BFMM167 = {-6.885, 0.476, 1.206, 13.857, -5.728, 1.220};
485 const std::vector<G4double> BFMM198 = {1.857, -21.213, -3.448, 0.827, -0.390, 1.231};
487 const std::vector<G4double> BFMM490 = {-3.594, 0.811, 0.306, 5.108, -1.625, 1.201};
489 const std::vector<G4double> BFMM492 = {-5.443, 7.254, -2.936, 8.441, -2.588, 1.221};
491 const std::vector<G4double> BFMM494 = {21.688, -38.709, -2.062, -17.783, 3.895, 1.221};
508 if(iso == 2 || iso == -2){
550 const std::vector<G4double> BFMM161 = {-6.434, 1.351, -5.185, 7.754, -1.692, 1.604};
552 const std::vector<G4double> BFMM169 = {3.696, -5.356, -0.053, 1.941, -0.432, 1.624};
554 const std::vector<G4double> BFMM201 = {-1.070, -0.636, -0.009, 2.335, -0.499, 1.624};
556 const std::vector<G4double> BFMM197 = {1.857, -21.213, -3.448, 0.827, -0.390, 1.616};
573 if(iso == 2 || iso == -2){
599 const std::vector<G4double> BFMM6 = {66.098, 0.153, -4.576, -38.319, 6.625};
600 const std::vector<G4double> BFMM1 = {119.066, 6.251, -0.006, -60.046, 11.958};
601 const std::vector<G4double> BFMM471 = {108.104, 15.708, 0.832, -54.632, -6.958};
619 const G4double k = std::sqrt(2*mu*Ek_cm)/(hbar_c);
620 const G4double K = std::sqrt(std::pow(k,2)+2*mu*85/std::pow(hbar_c,2));
623 const G4double T_0 = 4*K*k/(std::pow(K+k,2));
624 const G4double v_1 = std::pow(x_m,2)/(1+std::pow(x_m,2));
625 const G4double v_1_prime = (1/std::pow(x_m,2))+std::pow(1-1/std::pow(x_m,2),2);
626 const G4double T_1 = (4*x_m*X_m*v_1)/(std::pow(X_m,2)+(2*x_m*X_m+std::pow(x_m,2)*v_1_prime)*v_1);
627 const G4double v_2 = std::pow(x_m,4)/(9+3*std::pow(x_m,2)+std::pow(x_m,4));
628 const G4double v_2_prime = std::pow(1-(6/std::pow(x_m,2)),2) + std::pow((6/std::pow(x_m,3))-(3/std::pow(x_m,2)),2);
629 const G4double T_2 = (4*x_m*X_m*v_2)/(std::pow(X_m,2)+(2*x_m*X_m+std::pow(x_m,2)*v_2_prime)*v_2);
630 const G4double v_3 = std::pow(x_m,6)/(225+45*std::pow(x_m,2)+6*std::pow(x_m,4)+std::pow(x_m,6));
631 const G4double v_3_prime = (1 - (21/std::pow(x_m,2)) + (45/std::pow(x_m,4))) + std::pow((45/std::pow(x_m,3))-(6/x_m),2);
632 const G4double T_3 = (4*x_m*X_m*v_3)/(std::pow(X_m,2)+(2*x_m*X_m+std::pow(x_m,2)*v_3_prime)*v_3);
633 G4double sigma_nbar_low = (
Math::pi/std::pow(k,2)) * (T_0 + 3*T_1 + 5*T_2 + 7*T_3) * 10 ;
635 if(iso == 2 || iso == -2){
637 return sigma_nbar_low;
Multipion, mesonic Resonances, strange cross sections and antinucleon as projectile.
virtual G4double NNbarElastic(Particle const *const p1, Particle const *const p2)
Nucleon-AntiNucleon to Nucleon-AntiNucleon cross sections.
const HornerC5 s12pmHC
Horner coefficients for s12pm.
const HornerC8 s01ppHC
Horner coefficients for s01pp.
const HornerC6 s02pmHC
Horner coefficients for s02pm.
virtual G4double NNbarCEX(Particle const *const p1, Particle const *const p2)
const HornerC4 s11pmHC
Horner coefficients for s11pm.
virtual G4double NNbarToAnnihilation(Particle const *const p1, Particle const *const p2)
Nucleon-AntiNucleon total annihilation cross sections.
const HornerC4 s12zzHC
Horner coefficients for s12zz.
virtual G4double elastic(Particle const *const p1, Particle const *const p2)
old elastic particle-particle cross section
virtual G4double NNbarToLLbar(Particle const *const p1, Particle const *const p2)
const HornerC4 s12mzHC
Horner coefficients for s12mz.
virtual G4double NNbarToNNbarpi(Particle const *const p1, Particle const *const p2)
Nucleon-AntiNucleon to Nucleon-AntiNucleon + pions cross sections.
const HornerC4 s02pzHC
Horner coefficients for s02pz.
static const G4int nMaxPiNN
Maximum number of outgoing pions in NN collisions.
CrossSectionsAntiparticles()
virtual G4double NNbarToNNbar3pi(Particle const *const p1, Particle const *const p2)
const HornerC3 s12ppHC
Horner coefficients for s12pp.
const HornerC4 s01pzHC
Horner coefficients for s01pz.
const HornerC7 s11pzHC
Horner coefficients for s11pz.
virtual G4double NNbarToNNbar2pi(Particle const *const p1, Particle const *const p2)
static const G4int nMaxPiPiN
Maximum number of outgoing pions in piN collisions.
virtual G4double total(Particle const *const p1, Particle const *const p2)
second new total particle-particle cross section
virtual G4double etaNElastic(Particle const *const p1, Particle const *const p2)
Cross sections for mesonic resonance absorption on nucleon - elastic Channel.
virtual G4double etaNToPiPiN(Particle const *const p1, Particle const *const p2)
Cross sections for mesonic resonance absorption on nucleon - pipiN Channel.
virtual G4double omegaNInelastic(Particle const *const p1, Particle const *const p2)
Cross sections for mesonic resonance absorption on nucleon - inelastic Channel.
virtual G4double etaPrimeNToPiN(Particle const *const p1, Particle const *const p2)
Cross section for EtaPrimeN->PiN.
virtual G4double etaNToPiN(Particle const *const p1, Particle const *const p2)
Cross sections for mesonic resonance absorption on nucleon - piN Channel.
G4double piNTot(Particle const *const p1, Particle const *const p2)
virtual G4double elastic(Particle const *const p1, Particle const *const p2)
Elastic particle-particle cross section.
G4double NNTot(Particle const *const part1, Particle const *const part2)
Internal implementation of the NN total cross section.
virtual G4double NDeltaToNN(Particle const *const p1, Particle const *const p2)
Cross section for NDelta->NN.
virtual G4double NKbToNKb2pi(Particle const *const p1, Particle const *const p2)
virtual G4double etaNToSK(Particle const *const p1, Particle const *const p2)
virtual G4double NKbToNKbpi(Particle const *const p1, Particle const *const p2)
virtual G4double NKbToL2pi(Particle const *const p1, Particle const *const p2)
virtual G4double NKbelastic(Particle const *const p1, Particle const *const p2)
virtual G4double NLToNS(Particle const *const p1, Particle const *const p2)
Nucleon-Hyperon quasi-elastic cross sections.
virtual G4double NKToNK2pi(Particle const *const p1, Particle const *const p2)
virtual G4double NDeltaToDeltaSK(Particle const *const p1, Particle const *const p2)
virtual G4double NKToNKpi(Particle const *const p1, Particle const *const p2)
virtual G4double NDeltaToNSK(Particle const *const p1, Particle const *const p2)
virtual G4double NKelastic(Particle const *const p1, Particle const *const p2)
virtual G4double NKbToLpi(Particle const *const p1, Particle const *const p2)
virtual G4double NSToNS(Particle const *const p1, Particle const *const p2)
virtual G4double NSToNL(Particle const *const p1, Particle const *const p2)
virtual G4double etaNToLK(Particle const *const p1, Particle const *const p2)
eta-Nucleon cross sections
virtual G4double NKbToS2pi(Particle const *const p1, Particle const *const p2)
virtual G4double NKbToSpi(Particle const *const p1, Particle const *const p2)
virtual G4double NKToNK(Particle const *const p1, Particle const *const p2)
Nucleon-Kaon cross sections.
virtual G4double NDeltaToNNKKb(Particle const *const p1, Particle const *const p2)
virtual G4double NDeltaToDeltaLK(Particle const *const p1, Particle const *const p2)
virtual G4double NYelastic(Particle const *const p1, Particle const *const p2)
elastic scattering for Nucleon-Strange Particles cross sections
virtual G4double NDeltaToNLK(Particle const *const p1, Particle const *const p2)
Nucleon-Delta to Stange particles cross sections.
virtual G4double NKbToNKb(Particle const *const p1, Particle const *const p2)
Nucleon-antiKaon cross sections.
G4bool isLambda() const
Is this a Lambda?
G4bool isEtaPrime() const
Is this an etaprime?
G4bool isOmega() const
Is this an omega?
G4bool isSigma() const
Is this a Sigma?
G4bool isAntiNucleon() const
Is this an antinucleon?
G4bool isEta() const
Is this an eta?
G4bool isPion() const
Is this a pion?
G4bool isAntiKaon() const
Is this an antiKaon?
G4INCL::ParticleType getType() const
G4bool isKaon() const
Is this a Kaon?
G4bool isDelta() const
Is it a Delta?
G4bool isHyperon() const
Is this an Hyperon?
G4double compute_xs(const std::vector< G4double > coefficients, const G4double pLab)
G4double momentumInLab(Particle const *const p1, Particle const *const p2)
gives the momentum in the lab frame of two particles.
G4double momentumInCM(Particle const *const p1, Particle const *const p2)
gives the momentum in the CM frame of two particles.
G4double getRealMass(const G4INCL::ParticleType t)
Get particle mass (in MeV/c^2).
const G4double effectiveNucleonMass2
G4int getIsospin(const ParticleType t)
Get the isospin of a particle.
const G4double effectiveNucleonMass
const G4double nbar_pbarThreshold
static G4double eval(const G4double pLab, const G4double oneOverThreshold, HornerCoefficients< N > const &coeffs)
static G4double eval(const G4double x, HornerCoefficients< N > const &coeffs)