Geant4 11.4.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4INCL::CrossSectionsAntiparticles Class Reference

Multipion, mesonic Resonances and strange cross sections. More...

#include <G4INCLCrossSectionsAntiparticles.hh>

Inheritance diagram for G4INCL::CrossSectionsAntiparticles:

Public Member Functions

 CrossSectionsAntiparticles ()
virtual G4double total (Particle const *const p1, Particle const *const p2)
 second new total particle-particle cross section
virtual G4double elastic (Particle const *const p1, Particle const *const p2)
 old elastic particle-particle cross section
virtual G4double NNbarElastic (Particle const *const p1, Particle const *const p2)
 Nucleon-AntiNucleon to Nucleon-AntiNucleon cross sections.
virtual G4double NNbarCEX (Particle const *const p1, Particle const *const p2)
virtual G4double NNbarToLLbar (Particle const *const p1, Particle const *const p2)
virtual G4double NNbarToNNbarpi (Particle const *const p1, Particle const *const p2)
 Nucleon-AntiNucleon to Nucleon-AntiNucleon + pions cross sections.
virtual G4double NNbarToNNbar2pi (Particle const *const p1, Particle const *const p2)
virtual G4double NNbarToNNbar3pi (Particle const *const p1, Particle const *const p2)
virtual G4double NNbarToAnnihilation (Particle const *const p1, Particle const *const p2)
 Nucleon-AntiNucleon total annihilation cross sections.
Public Member Functions inherited from G4INCL::CrossSectionsStrangeness
 CrossSectionsStrangeness ()
virtual G4double piNToxPiN (const G4int xpi, Particle const *const p1, Particle const *const p2)
 correction to old cross section
virtual G4double NNToxPiNN (const G4int xpi, Particle const *const p1, Particle const *const p2)
 Cross section for X pion production - NN Channel.
virtual G4double NYelastic (Particle const *const p1, Particle const *const p2)
 elastic scattering for Nucleon-Strange Particles cross sections
virtual G4double NKbelastic (Particle const *const p1, Particle const *const p2)
virtual G4double NKelastic (Particle const *const p1, Particle const *const p2)
virtual G4double NNToNLK (Particle const *const p1, Particle const *const p2)
 Nucleon-Nucleon to Stange particles cross sections.
virtual G4double NNToNSK (Particle const *const p1, Particle const *const p2)
virtual G4double NNToNLKpi (Particle const *const p1, Particle const *const p2)
virtual G4double NNToNSKpi (Particle const *const p1, Particle const *const p2)
virtual G4double NNToNLK2pi (Particle const *const p1, Particle const *const p2)
virtual G4double NNToNSK2pi (Particle const *const p1, Particle const *const p2)
virtual G4double NNToNNKKb (Particle const *const p1, Particle const *const p2)
virtual G4double NNToMissingStrangeness (Particle const *const p1, Particle const *const p2)
virtual G4double NDeltaToNLK (Particle const *const p1, Particle const *const p2)
 Nucleon-Delta to Stange particles cross sections.
virtual G4double NDeltaToNSK (Particle const *const p1, Particle const *const p2)
virtual G4double NDeltaToDeltaLK (Particle const *const p1, Particle const *const p2)
virtual G4double NDeltaToDeltaSK (Particle const *const p1, Particle const *const p2)
virtual G4double NDeltaToNNKKb (Particle const *const p1, Particle const *const p2)
virtual G4double NpiToLK (Particle const *const p1, Particle const *const p2)
 Nucleon-Pion to Strange particles cross sections.
G4double p_pimToLK0 (Particle const *const p1, Particle const *const p2)
virtual G4double NpiToSK (Particle const *const p1, Particle const *const p2)
G4double p_pipToSpKp (Particle const *const p1, Particle const *const p2)
virtual G4double p_pimToSzKz (Particle const *const p1, Particle const *const p2)
virtual G4double p_pimToSmKp (Particle const *const p1, Particle const *const p2)
virtual G4double p_pizToSzKp (Particle const *const p1, Particle const *const p2)
virtual G4double NpiToLKpi (Particle const *const p1, Particle const *const p2)
virtual G4double NpiToSKpi (Particle const *const p1, Particle const *const p2)
virtual G4double NpiToLK2pi (Particle const *const p1, Particle const *const p2)
virtual G4double NpiToSK2pi (Particle const *const p1, Particle const *const p2)
virtual G4double NpiToNKKb (Particle const *const p1, Particle const *const p2)
virtual G4double NpiToMissingStrangeness (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 NSToNL (Particle const *const p1, Particle const *const p2)
virtual G4double NSToNS (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 NKToNKpi (Particle const *const p1, Particle const *const p2)
virtual G4double NKToNK2pi (Particle const *const p1, Particle const *const p2)
virtual G4double NKbToNKb (Particle const *const p1, Particle const *const p2)
 Nucleon-antiKaon cross sections.
virtual G4double NKbToSpi (Particle const *const p1, Particle const *const p2)
virtual G4double NKbToLpi (Particle const *const p1, Particle const *const p2)
virtual G4double p_kmToL_pz (Particle const *const p1, Particle const *const p2)
virtual G4double NKbToS2pi (Particle const *const p1, Particle const *const p2)
virtual G4double NKbToL2pi (Particle const *const p1, Particle const *const p2)
virtual G4double p_kmToL_pp_pm (Particle const *const p1, Particle const *const p2)
virtual G4double NKbToNKbpi (Particle const *const p1, Particle const *const p2)
virtual G4double NKbToNKb2pi (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 etaNToSK (Particle const *const p1, Particle const *const p2)
virtual G4double omegaNToLK (Particle const *const p1, Particle const *const p2)
 Omega-Nucleon cross sections.
virtual G4double omegaNToSK (Particle const *const p1, Particle const *const p2)
virtual G4double omegaNToPiPiN (Particle const *const p1, Particle const *const p2)
 Cross sections for omega-induced 2Pi emission on nucleon.
Public Member Functions inherited from G4INCL::CrossSectionsMultiPionsAndResonances
 CrossSectionsMultiPionsAndResonances ()
virtual G4double piNToEtaN (Particle const *const p1, Particle const *const p2)
 Cross sections for mesonic resonance production - piN Channel.
virtual G4double piNToOmegaN (Particle const *const p1, Particle const *const p2)
 Cross section for PiN->OmegaN.
virtual G4double piNToEtaPrimeN (Particle const *const p1, Particle const *const p2)
 Cross section for PiN->EtaPrimeN.
virtual G4double etaNToPiN (Particle const *const p1, Particle const *const p2)
 Cross sections for mesonic resonance absorption on nucleon - piN Channel.
virtual G4double omegaNToPiN (Particle const *const p1, Particle const *const p2)
 Cross section for OmegaN->PiN.
virtual G4double etaPrimeNToPiN (Particle const *const p1, Particle const *const p2)
 Cross section for EtaPrimeN->PiN.
virtual G4double etaNToPiPiN (Particle const *const p1, Particle const *const p2)
 Cross sections for mesonic resonance absorption on nucleon - pipiN Channel.
virtual G4double NNToNNEta (Particle const *const particle1, Particle const *const particle2)
 Cross section for Eta production (inclusive) - NN entrance channel.
virtual G4double NNToNNEtaExclu (Particle const *const particle1, Particle const *const particle2)
 Cross section for Eta production (exclusive) - NN entrance channel.
virtual G4double NNToNNOmega (Particle const *const particle1, Particle const *const particle2)
 Cross section for Omega production (inclusive) - NN entrance channel.
virtual G4double NNToNNOmegaExclu (Particle const *const particle1, Particle const *const particle2)
 Cross section for Omega production (exclusive) - NN entrance channel.
virtual G4double NNToNNEtaxPi (const G4int xpi, Particle const *const p1, Particle const *const p2)
 Cross section for X pion production - NNEta Channel.
virtual G4double NNToNDeltaEta (Particle const *const p1, Particle const *const p2)
 Cross section for N-Delta-Eta production - NNEta Channel.
virtual G4double NNToNNOmegaxPi (const G4int xpi, Particle const *const p1, Particle const *const p2)
 Cross section for X pion production - NNOmega Channel.
virtual G4double NNToNDeltaOmega (Particle const *const p1, Particle const *const p2)
 Cross section for N-Delta-Eta production - NNOmega Channel.
Public Member Functions inherited from G4INCL::CrossSectionsMultiPions
 CrossSectionsMultiPions ()
virtual G4double NDeltaToNN (Particle const *const p1, Particle const *const p2)
 Cross section for NDelta->NN.
virtual G4double NNToNDelta (Particle const *const p1, Particle const *const p2)
 Cross section for Delta production - NN Channel.
virtual G4double piNToDelta (Particle const *const p1, Particle const *const p2)
 Cross section for Delta production - piN Channel.
virtual G4double calculateNNAngularSlope (G4double energyCM, G4int iso)
 Calculate the slope of the NN DDXS.
Public Member Functions inherited from G4INCL::ICrossSections
 ICrossSections ()
virtual ~ICrossSections ()

Protected Attributes

const HornerC7 s11pzHC
 Horner coefficients for s11pz.
const HornerC8 s01ppHC
 Horner coefficients for s01pp.
const HornerC4 s01pzHC
 Horner coefficients for s01pz.
const HornerC4 s11pmHC
 Horner coefficients for s11pm.
const HornerC5 s12pmHC
 Horner coefficients for s12pm.
const HornerC3 s12ppHC
 Horner coefficients for s12pp.
const HornerC4 s12zzHC
 Horner coefficients for s12zz.
const HornerC4 s02pzHC
 Horner coefficients for s02pz.
const HornerC6 s02pmHC
 Horner coefficients for s02pm.
const HornerC4 s12mzHC
 Horner coefficients for s12mz.
Protected Attributes inherited from G4INCL::CrossSectionsStrangeness
const HornerC7 s11pzHC
 Horner coefficients for s11pz.
const HornerC8 s01ppHC
 Horner coefficients for s01pp.
const HornerC4 s01pzHC
 Horner coefficients for s01pz.
const HornerC4 s11pmHC
 Horner coefficients for s11pm.
const HornerC5 s12pmHC
 Horner coefficients for s12pm.
const HornerC3 s12ppHC
 Horner coefficients for s12pp.
const HornerC4 s12zzHC
 Horner coefficients for s12zz.
const HornerC4 s02pzHC
 Horner coefficients for s02pz.
const HornerC6 s02pmHC
 Horner coefficients for s02pm.
const HornerC4 s12mzHC
 Horner coefficients for s12mz.
Protected Attributes inherited from G4INCL::CrossSectionsMultiPionsAndResonances
const HornerC7 s11pzHC
 Horner coefficients for s11pz.
const HornerC8 s01ppHC
 Horner coefficients for s01pp.
const HornerC4 s01pzHC
 Horner coefficients for s01pz.
const HornerC4 s11pmHC
 Horner coefficients for s11pm.
const HornerC5 s12pmHC
 Horner coefficients for s12pm.
const HornerC3 s12ppHC
 Horner coefficients for s12pp.
const HornerC4 s12zzHC
 Horner coefficients for s12zz.
const HornerC4 s02pzHC
 Horner coefficients for s02pz.
const HornerC6 s02pmHC
 Horner coefficients for s02pm.
const HornerC4 s12mzHC
 Horner coefficients for s12mz.
Protected Attributes inherited from G4INCL::CrossSectionsMultiPions
const HornerC7 s11pzHC
 Horner coefficients for s11pz.
const HornerC8 s01ppHC
 Horner coefficients for s01pp.
const HornerC4 s01pzHC
 Horner coefficients for s01pz.
const HornerC4 s11pmHC
 Horner coefficients for s11pm.
const HornerC5 s12pmHC
 Horner coefficients for s12pm.
const HornerC3 s12ppHC
 Horner coefficients for s12pp.
const HornerC4 s12zzHC
 Horner coefficients for s12zz.
const HornerC4 s02pzHC
 Horner coefficients for s02pz.
const HornerC6 s02pmHC
 Horner coefficients for s02pm.
const HornerC4 s12mzHC
 Horner coefficients for s12mz.

Static Protected Attributes

static const G4int nMaxPiNN = 4
 Maximum number of outgoing pions in NN collisions.
static const G4int nMaxPiPiN = 4
 Maximum number of outgoing pions in piN collisions.
Static Protected Attributes inherited from G4INCL::CrossSectionsStrangeness
static const G4int nMaxPiNN = 4
 Maximum number of outgoing pions in NN collisions.
static const G4int nMaxPiPiN = 4
 Maximum number of outgoing pions in piN collisions.
Static Protected Attributes inherited from G4INCL::CrossSectionsMultiPionsAndResonances
static const G4int nMaxPiNN = 4
 Maximum number of outgoing pions in NN collisions.
static const G4int nMaxPiPiN = 4
 Maximum number of outgoing pions in piN collisions.
static const G4double s11pzOOT = 0.0035761542037692665889
 One over threshold for s11pz.
static const G4double s01ppOOT = 0.003421025623481919853
 One over threshold for s01pp.
static const G4double s01pzOOT = 0.0035739814152966403123
 One over threshold for s01pz.
static const G4double s11pmOOT = 0.0034855350296270480281
 One over threshold for s11pm.
static const G4double s12pmOOT = 0.0016672224074691565119
 One over threshold for s12pm.
static const G4double s12ppOOT = 0.0016507643038726931312
 One over threshold for s12pp.
static const G4double s12zzOOT = 0.0011111111111111111111
 One over threshold for s12zz.
static const G4double s02pzOOT = 0.00125
 One over threshold for s02pz.
static const G4double s02pmOOT = 0.0016661112962345883443
 One over threshold for s02pm.
static const G4double s12mzOOT = 0.0017047391749062392793
 One over threshold for s12mz.
Static Protected Attributes inherited from G4INCL::CrossSectionsMultiPions
static const G4int nMaxPiNN = 4
 Maximum number of outgoing pions in NN collisions.
static const G4int nMaxPiPiN = 4
 Maximum number of outgoing pions in piN collisions.
static const G4double s11pzOOT = 0.0035761542037692665889
 One over threshold for s11pz.
static const G4double s01ppOOT = 0.003421025623481919853
 One over threshold for s01pp.
static const G4double s01pzOOT = 0.0035739814152966403123
 One over threshold for s01pz.
static const G4double s11pmOOT = 0.0034855350296270480281
 One over threshold for s11pm.
static const G4double s12pmOOT = 0.0016672224074691565119
 One over threshold for s12pm.
static const G4double s12ppOOT = 0.0016507643038726931312
 One over threshold for s12pp.
static const G4double s12zzOOT = 0.0011111111111111111111
 One over threshold for s12zz.
static const G4double s02pzOOT = 0.00125
 One over threshold for s02pz.
static const G4double s02pmOOT = 0.0016661112962345883443
 One over threshold for s02pm.
static const G4double s12mzOOT = 0.0017047391749062392793
 One over threshold for s12mz.

Additional Inherited Members

Protected Member Functions inherited from G4INCL::CrossSectionsMultiPionsAndResonances
G4double piMinuspToEtaN (Particle const *const p1, Particle const *const p2)
 Internal function for pion cross sections.
G4double piMinuspToEtaN (const G4double ECM)
G4double piMinuspToOmegaN (Particle const *const p1, Particle const *const p2)
G4double piMinuspToOmegaN (const G4double ECM)
virtual G4double NNToNNEtaIso (const G4double ener, const G4int iso)
 Cross section for One (more) pion production - piN entrance channel.
virtual G4double NNToNNEtaExcluIso (const G4double ener, const G4int iso)
 Isotopic Cross section for Eta production (exclusive) - NN entrance channel.
virtual G4double NNToNNEtaOnePi (Particle const *const part1, Particle const *const part2)
 Cross section for direct 1-pion production - NNEta channel.
virtual G4double NNToNNEtaOnePiOrDelta (Particle const *const part1, Particle const *const part2)
 Cross section for direct 1-pion production - NNEta channel.
virtual G4double NNToNNEtaTwoPi (Particle const *const part1, Particle const *const part2)
 Cross section for direct 2-pion production - NNEta channel.
virtual G4double NNToNNEtaThreePi (Particle const *const part1, Particle const *const part2)
 Cross section for direct 3-pion production - NNEta channel.
virtual G4double NNToNNEtaFourPi (Particle const *const part1, Particle const *const part2)
 Cross section for direct 4-pion production - NNEta channel.
virtual G4double NNToNNOmegaIso (const G4double ener, const G4int iso)
 Isotopic Cross section for Omega production (inclusive) - NN entrance channel.
virtual G4double NNToNNOmegaExcluIso (const G4double ener, const G4int iso)
 Isotopic Cross section for Omega production (exclusive) - NN entrance channel.
virtual G4double NNToNNOmegaOnePi (Particle const *const part1, Particle const *const part2)
 Cross section for direct 1-pion production - NNOmega channel.
virtual G4double NNToNNOmegaOnePiOrDelta (Particle const *const part1, Particle const *const part2)
 Cross section for direct 1-pion production - NNOmega channel.
virtual G4double NNToNNOmegaTwoPi (Particle const *const part1, Particle const *const part2)
 Cross section for direct 2-pion production - NNOmega channel.
virtual G4double NNToNNOmegaThreePi (Particle const *const part1, Particle const *const part2)
 Cross section for direct 3-pion production - NNOmega channel.
virtual G4double NNToNNOmegaFourPi (Particle const *const part1, Particle const *const part2)
 Cross section for direct 4-pion production - NNOmega channel.
virtual G4double etaNElastic (Particle const *const p1, Particle const *const p2)
 Cross sections for mesonic resonance absorption on nucleon - elastic Channel.
virtual G4double omegaNElastic (Particle const *const p1, Particle const *const p2)
virtual G4double omegaNInelastic (Particle const *const p1, Particle const *const p2)
 Cross sections for mesonic resonance absorption on nucleon - inelastic Channel.
Protected Member Functions inherited from G4INCL::CrossSectionsMultiPions
G4double NNElastic (Particle const *const part1, Particle const *const part2)
 Internal implementation of the NN elastic cross section.
G4double NNElasticFixed (const G4double s, const G4int i)
 Internal implementation of the NN elastic cross section with fixed isospin.
G4double NNTot (Particle const *const part1, Particle const *const part2)
 Internal implementation of the NN total cross section.
G4double NNTotFixed (const G4double s, const G4int i)
 Internal implementation of the NN total cross section with fixed isospin.
G4double NNInelasticIso (const G4double ener, const G4int iso)
 Internal implementation of the isospin dependent NN reaction cross section.
virtual G4double NNOnePiOrDelta (const G4double ener, const G4int iso, const G4double xsiso)
 Cross section for direct 1-pion production + delta production - NN entrance channel.
virtual G4double NNTwoPi (const G4double ener, const G4int iso, const G4double xsiso)
 Cross section for direct 2-pion production - NN entrance channel.
virtual G4double NNThreePi (const G4double ener, const G4int iso, const G4double xsiso, const G4double xs1pi, const G4double xs2pi)
 Cross section for direct 3-pion production - NN entrance channel.
virtual G4double NNOnePi (Particle const *const part1, Particle const *const part2)
 Cross section for direct 1-pion production - NN entrance channel.
virtual G4double NNOnePiOrDelta (Particle const *const part1, Particle const *const part2)
 Cross section for direct 1-pion production - NN entrance channel.
virtual G4double NNTwoPi (Particle const *const part1, Particle const *const part2)
 Cross section for direct 2-pion production - NN entrance channel.
virtual G4double NNThreePi (Particle const *const part1, Particle const *const part2)
 Cross section for direct 3-pion production - NN entrance channel.
virtual G4double NNFourPi (Particle const *const part1, Particle const *const part2)
 Cross section for direct 4-pion production - NN entrance channel.
G4double spnPiPlusPHE (const G4double x)
 Internal function for pion cross sections.
G4double spnPiMinusPHE (const G4double x)
 Internal function for pion cross sections.
G4double piNIne (Particle const *const p1, Particle const *const p2)
G4double piNTot (Particle const *const p1, Particle const *const p2)
G4double piNTopiN (Particle const *const p1, Particle const *const p2)
G4double piPluspIne (Particle const *const p1, Particle const *const p2)
G4double piMinuspIne (Particle const *const p1, Particle const *const p2)
G4double piPluspOnePi (Particle const *const p1, Particle const *const p2)
G4double piMinuspOnePi (Particle const *const p1, Particle const *const p2)
G4double piPluspTwoPi (Particle const *const p1, Particle const *const p2)
G4double piMinuspTwoPi (Particle const *const p1, Particle const *const p2)
virtual G4double piNOnePi (Particle const *const p1, Particle const *const p2)
 Cross section for One (more) pion production - piN entrance channel.
virtual G4double piNTwoPi (Particle const *const p1, Particle const *const p2)
 Cross section for Two (more) pion production - piN entrance channel.

Detailed Description

Multipion, mesonic Resonances and strange cross sections.

Definition at line 56 of file G4INCLCrossSectionsAntiparticles.hh.

Constructor & Destructor Documentation

◆ CrossSectionsAntiparticles()

G4INCL::CrossSectionsAntiparticles::CrossSectionsAntiparticles ( )

Definition at line 67 of file G4INCLCrossSectionsAntiparticles.cc.

67 :
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)
78 {
79 }
const HornerC5 s12pmHC
Horner coefficients for s12pm.
const HornerC8 s01ppHC
Horner coefficients for s01pp.
const HornerC6 s02pmHC
Horner coefficients for s02pm.
const HornerC4 s11pmHC
Horner coefficients for s11pm.
const HornerC4 s12zzHC
Horner coefficients for s12zz.
const HornerC4 s12mzHC
Horner coefficients for s12mz.
const HornerC4 s02pzHC
Horner coefficients for s02pz.
const HornerC3 s12ppHC
Horner coefficients for s12pp.
const HornerC4 s01pzHC
Horner coefficients for s01pz.
const HornerC7 s11pzHC
Horner coefficients for s11pz.

Member Function Documentation

◆ elastic()

G4double G4INCL::CrossSectionsAntiparticles::elastic ( Particle const *const p1,
Particle const *const p2 )
virtual

old elastic particle-particle cross section

Reimplemented from G4INCL::CrossSectionsStrangeness.

Definition at line 149 of file G4INCLCrossSectionsAntiparticles.cc.

149 {
150 if ((p1->isNucleon() && p2->isAntiNucleon()) || (p1->isAntiNucleon() && p2->isNucleon()))
151 return NNbarElastic(p1, p2);
152 if((p1->isNucleon()||p1->isDelta()) && (p2->isNucleon()||p2->isDelta())){ // N-N, N-Delta, Delta-Delta
154 }
155 else if ((p1->isNucleon() && p2->isPion()) || (p2->isNucleon() && p1->isPion())){
157 }
158 else if ((p1->isNucleon() && p2->isEta()) || (p2->isNucleon() && p1->isEta())){
160 }
161 else if ((p1->isNucleon() && p2->isHyperon()) || (p2->isNucleon() && p1->isHyperon())){
163 }
164 else if ((p1->isNucleon() && p2->isKaon()) || (p2->isNucleon() && p1->isKaon())){
166 }
167 else if ((p1->isNucleon() && p2->isAntiKaon()) || (p2->isNucleon() && p1->isAntiKaon())){
169 }
170 else {
171 return 0.0;
172 }
173 }
virtual G4double NNbarElastic(Particle const *const p1, Particle const *const p2)
Nucleon-AntiNucleon to Nucleon-AntiNucleon cross sections.
virtual G4double etaNElastic(Particle const *const p1, Particle const *const p2)
Cross sections for mesonic resonance absorption on nucleon - elastic Channel.
virtual G4double elastic(Particle const *const p1, Particle const *const p2)
Elastic particle-particle cross section.
virtual G4double NKbelastic(Particle const *const p1, Particle const *const p2)
virtual G4double NKelastic(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

Referenced by total().

◆ NNbarCEX()

G4double G4INCL::CrossSectionsAntiparticles::NNbarCEX ( Particle const *const p1,
Particle const *const p2 )
virtual

Reimplemented from G4INCL::CrossSectionsMultiPions.

Definition at line 175 of file G4INCLCrossSectionsAntiparticles.cc.

175 {
176 //brief ppbar
177 // p pbar -> n nbar (BFMM 204)
178 //
179 //brief nnbar
180 // n nbar -> p pbar (same as BFMM 204, but no threshold)
181 //
182
183// assert((p1->isAntiNucleon() && p2->isNucleon()) || (p1->isNucleon() && p2->isAntiNucleon()));
184
185 G4double sigma=0.;
186 const G4int iso=ParticleTable::getIsospin(p1->getType()) + ParticleTable::getIsospin(p2->getType());
187 // iso == 2 || iso == -2 (n pbar or p nbar)
188
189 const std::vector<G4double> BFMM204 = {7.549, -0.041, -2.959, -6.835, 1.629, 0.114};
190 //{6.875, 0.590, -0.003, -6.629, 1.532, 0.114}
191 //const G4double Eth_PPbar_NNbar = 0.114;
192 const std::vector<G4double> BFMM204nn = {7.549, -0.041, -2.959, -6.835, 1.629};
193 //const G4double Eth_NNbar_PPbar = 0.0;
194
195 const Particle *antinucleon;
196 const Particle *nucleon;
197
198 if (p1->isAntiNucleon()) {
199 antinucleon = p1;
200 nucleon = p2;
201 }
202 else {
203 antinucleon = p2;
204 nucleon = p1;
205 }
206
207 const G4double pLab = 0.001*KinematicsUtils::momentumInLab(antinucleon, nucleon); // GeV
208
209 if(iso == 2 || iso == -2){ //npbar or pnbar
210 sigma = 0.0;
211 return sigma;
212 }
213 else{ // ppbar or nnbar
214 if(p1->getType()==antiProton || p1->getType()==Proton)
215 sigma = KinematicsUtils::compute_xs(std::move(BFMM204), pLab); // ppbar case
216 else
217 sigma = KinematicsUtils::compute_xs(std::move(BFMM204nn), pLab); // nnbar case
218 return sigma;
219 }
220 }
double G4double
Definition G4Types.hh:83
int G4int
Definition G4Types.hh:85
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.
G4int getIsospin(const ParticleType t)
Get the isospin of a particle.
G4bool antinucleon(G4int ityp)
G4bool nucleon(G4int ityp)

Referenced by NNbarElastic(), and total().

◆ NNbarElastic()

G4double G4INCL::CrossSectionsAntiparticles::NNbarElastic ( Particle const *const p1,
Particle const *const p2 )
virtual

Nucleon-AntiNucleon to Nucleon-AntiNucleon cross sections.

Reimplemented from G4INCL::CrossSectionsMultiPions.

Definition at line 222 of file G4INCLCrossSectionsAntiparticles.cc.

222 {
223 //brief ppbar
224 // p pbar -> p pbar (BFMM 2)
225 //
226 //brief npbar
227 // n pbar -> n pbar (BFMM 472)
228 //
229 //brief nnbar
230 // n nbar -> n nbar (same as BFMM 2)
231 //
232 //brief pnbar
233 // p nbar -> p nbar (same as BFMM 472) --> Total -annihilation
234 //
235
236// assert((p1->isAntiNucleon() && p2->isNucleon()) || (p1->isNucleon() && p2->isAntiNucleon()));
237
238 G4double sigma=0.;
239 const G4int iso=ParticleTable::getIsospin(p1->getType()) + ParticleTable::getIsospin(p2->getType());
240 // iso == 2 || iso == -2 (n pbar or p nbar)
241
242 const std::vector<G4double> BFMM2 = {110.496, -65.605, -0.198, -34.813, 4.317};
243 //elastic ppbar;
244 const std::vector<G4double> BFMM472 = {14.625, 23.413, -0.288, -9.002, 1.084};
245 //elastic pnbar;
246
247 const Particle *antinucleon;
248 const Particle *nucleon;
249
250 if (p1->isAntiNucleon()) {
251 antinucleon = p1;
252 nucleon = p2;
253 }
254 else {
255 antinucleon = p2;
256 nucleon = p1;
257 }
258
259 const G4double pLab = 0.001*KinematicsUtils::momentumInLab(antinucleon, nucleon); // GeV
260
261 if(iso == 2 || iso == -2){ // npbar or pnbar
262 if (iso ==2 && pLab < nbar_pbarThreshold){//nbarp low energy
263 sigma = total(p1, p2) - NNbarToAnnihilation(p1, p2);// Total minus annihilation
264 }
265 else{
266 sigma = KinematicsUtils::compute_xs(BFMM472, pLab); //pbarn
267 }
268 return sigma;
269 }
270 else { // ppbar or nnbar
271 if(p1->getType()==antiProton || p1->getType()==Proton)
272 sigma = KinematicsUtils::compute_xs(BFMM2, pLab); // ppbar case
273 else{
274 if (pLab < nbar_pbarThreshold){ //nnbar low energy case
275 sigma = total(p1, p2) - NNbarToAnnihilation(p1, p2) - NNbarCEX(p1, p2);// Total minus annihilation minus CEX
276 }
277 else{
278 sigma = KinematicsUtils::compute_xs(BFMM2, pLab); // nnbar high energy case (same as ppbar)
279 }
280 }
281 return sigma;
282 }
283 }
virtual G4double NNbarCEX(Particle const *const p1, Particle const *const p2)
virtual G4double NNbarToAnnihilation(Particle const *const p1, Particle const *const p2)
Nucleon-AntiNucleon total annihilation cross sections.
virtual G4double total(Particle const *const p1, Particle const *const p2)
second new total particle-particle cross section
const G4double nbar_pbarThreshold

Referenced by elastic().

◆ NNbarToAnnihilation()

G4double G4INCL::CrossSectionsAntiparticles::NNbarToAnnihilation ( Particle const *const p1,
Particle const *const p2 )
virtual

Nucleon-AntiNucleon total annihilation cross sections.

Reimplemented from G4INCL::CrossSectionsMultiPions.

Definition at line 583 of file G4INCLCrossSectionsAntiparticles.cc.

583 {
584 //brief ppbar
585 /*
586 This part only contains total annihilation xs, the choice of a particular final state
587 will be done in the channel file.
588 As long as we only have good data for ppbar, we assume that for npbar, pnbar and nnbar the xs
589 will be the same, but in order to compensate for the Coulombic effect the ppbar annihilation xs
590 is multiplied by the pnbar total xs and divided by the ppbar total xs.
591 */
592
593// assert((p1->isAntiNucleon() && p2->isNucleon()) || (p1->isNucleon() && p2->isAntiNucleon()));
594
595 G4double sigma=0.;
596 const G4int iso=ParticleTable::getIsospin(p1->getType()) + ParticleTable::getIsospin(p2->getType());
597 // iso == 2 || iso == -2 (n pbar or p nbar)
598
599 const std::vector<G4double> BFMM6 = {66.098, 0.153, -4.576, -38.319, 6.625}; //ppbar annihilation xs
600 const std::vector<G4double> BFMM1 = {119.066, 6.251, -0.006, -60.046, 11.958}; //ppbar total xs
601 const std::vector<G4double> BFMM471 = {108.104, 15.708, 0.832, -54.632, -6.958}; //npbar total xs
602
603 const Particle *antinucleon;
604 const Particle *nucleon;
605
606 if (p1->isAntiNucleon()) {
607 antinucleon = p1;
608 nucleon = p2;
609 }
610 else {
611 antinucleon = p2;
612 nucleon = p1;
613 }
614
615 const G4double pLab = 0.001*KinematicsUtils::momentumInLab(antinucleon, nucleon); // GeV
617 const G4double hbar_c = 197.326968; // MeV.fm
618 const G4double Ek_cm = std::sqrt(mu*mu + std::pow(KinematicsUtils::momentumInCM(antinucleon,nucleon),2)) - mu;
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)); //Strong Interaction Potential (MeV)
621 const G4double x_m = (k*0.97); //Nuclear contact radius (fm)
622 const G4double X_m = (K*0.97);
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 ; //GeV
634
635 if(iso == 2 || iso == -2){ // pnbar or npbar
636 if (iso ==2 && pLab < nbar_pbarThreshold) { //nbarp != pbarn at low momenta
637 return sigma_nbar_low;
638 }
639 else { //pbarn
640 sigma = KinematicsUtils::compute_xs(std::move(BFMM6), pLab)*KinematicsUtils::compute_xs(std::move(BFMM471), pLab)/KinematicsUtils::compute_xs(std::move(BFMM1), pLab);
641 return sigma;
642 }
643 }
644 else if(p1->getType()==antiProton || p2->getType()==Proton){ // ppbar case
645 sigma = KinematicsUtils::compute_xs(std::move(BFMM6), pLab);
646 return sigma;
647 }
648 else{ // nnbar case
649 sigma = KinematicsUtils::compute_xs(std::move(BFMM6), pLab)*KinematicsUtils::compute_xs(std::move(BFMM471), pLab)/KinematicsUtils::compute_xs(std::move(BFMM1), pLab);
650 return sigma;
651 }
652 }
G4double momentumInCM(Particle const *const p1, Particle const *const p2)
gives the momentum in the CM frame of two particles.
const G4double pi
G4double getRealMass(const G4INCL::ParticleType t)
Get particle mass (in MeV/c^2).

Referenced by NNbarElastic(), and total().

◆ NNbarToLLbar()

G4double G4INCL::CrossSectionsAntiparticles::NNbarToLLbar ( Particle const *const p1,
Particle const *const p2 )
virtual

Reimplemented from G4INCL::CrossSectionsMultiPions.

Definition at line 285 of file G4INCLCrossSectionsAntiparticles.cc.

285 {
286 // this channel includes all states with lambdas, sigmas and xis and their antiparticles
287
288 //brief ppbar
289 // p pbar -> l lbar (BFMM 121)
290 // ppbar -> l lbar pi0 (BFMM 113)
291 // ppbar -> splus pim lbar || sminusbar pim l (BFMM 136)
292 // ppbar -> sminus pip lbar || splusbar l pip (BFMM 146)
293 // ppbar -> sp spbar (BFMM 139)
294 // ppbar -> sm smbar (BFMM 149)
295 // ppbar -> szero szerobar (BFMM 144)
296 // ppbar -> ximinus ximinusbar (BFMM 101)
297 // ppbar -> szero lbar || szerobar l (BFMM 143)
298 //
299 //
300 //brief npbar
301 // n pbar -> l lbar pi- (BFMM 487)
302 // n pbar -> l sbarplus || lbar sminus (BFMM 488)
303 //
304 //
305 //brief nnbar
306 // all same as for ppbar
307 //
308 //
309 //brief pnbar
310 // p nbar -> l lbar pi+ (same as BFMM 487)
311 // p nbar -> l sbarminus || lbar splus (same as BFMM 488)
312 //
313
314 const std::vector<G4double> BFMM121 = {2.379, -2.738, -1.260, -1.915, 0.430, 1.437};
315 //const G4double Eth_PPbar_LLbar = 1.437;
316 const std::vector<G4double> BFMM113 = {-0.105, 0.000, -5.099, 0.188, -0.050, 1.820};
317 //const G4double Eth_PPbar_LLbar_pi0 = 1.820;
318 const std::vector<G4double> BFMM139 = {0.142, -0.291, -1.702, -0.058, 0.001, 1.851};
319 //const G4double Eth_PPbar_SpSpbar = 1.851;
320 const std::vector<G4double> BFMM149 = {1.855, -2.238, -1.002, -1.279, 0.252, 1.896};
321 //const G4double Eth_PPbar_SmSmbar = 1.896;
322 const std::vector<G4double> BFMM136 = {1.749, -2.506, -1.222, -1.262, 0.274, 2.042};
323 //const G4double Eth_PPbar_SpLbar_pim = 2.042;
324 const std::vector<G4double> BFMM146 = {1.037, -1.437, -1.155, -0.709, 0.138, 2.065};
325 //const G4double Eth_PPbar_SmLbar_pip = 2.065;
326 const std::vector<G4double> BFMM143 = {0.652, -1.006, -1.805, -0.537, 0.121, 1.653};
327 //const G4double Eth_PPbar_Szero_Lbar = 1.653;
328
329// assert((p1->isAntiNucleon() && p2->isNucleon()) || (p1->isNucleon() && p2->isAntiNucleon()));
330
331 G4double sigma=0.;
332 const G4int iso=ParticleTable::getIsospin(p1->getType()) + ParticleTable::getIsospin(p2->getType());
333 // iso == 2 || iso == -2 (n pbar or p nbar)
334
335 const Particle *antinucleon;
336 const Particle *nucleon;
337
338 if (p1->isAntiNucleon()) {
339 antinucleon = p1;
340 nucleon = p2;
341 }
342 else {
343 antinucleon = p2;
344 nucleon = p1;
345 }
346
347 const G4double pLab = 0.001*KinematicsUtils::momentumInLab(antinucleon, nucleon); // GeV
348
349 //fixed due to limited data
350 G4double BFMM144;
351 if(pLab > 1.868) BFMM144 = 0.008; //sigmazero sigmazerobar
352 else BFMM144 = 0.0;
353 G4double BFMM101;
354 if(pLab > 1.868) BFMM101 = 0.002; //xizero xizerobar
355 else BFMM101 = 0.0;
356
357 // npbar cross sections (fixed due to limited data)
358 G4double BFMM487;
359 if(pLab > 2.1) BFMM487 = 0.048; //llbar piminus
360 else BFMM487 = 0.0;
361 G4double BFMM488;
362 if(pLab > 2.0) BFMM488 = 0.139; //lsigmaminus +cc
363 else BFMM488 = 0.0;
364
365 if(iso == 2 || iso == -2){ //npbar or pnbar
366 sigma = BFMM487 + BFMM488;
367 return sigma;
368 }
369 else{ // ppbar or nnbar
370 sigma = KinematicsUtils::compute_xs(std::move(BFMM113), pLab)
371 +KinematicsUtils::compute_xs(std::move(BFMM139), pLab)+KinematicsUtils::compute_xs(std::move(BFMM136), pLab)
372 +KinematicsUtils::compute_xs(std::move(BFMM146), pLab)+KinematicsUtils::compute_xs(std::move(BFMM143), pLab)
373 +KinematicsUtils::compute_xs(std::move(BFMM121), pLab)+KinematicsUtils::compute_xs(std::move(BFMM149), pLab)
374 +BFMM144 +BFMM101; // nnbar case totally same as ppbar
375 return sigma;
376 }
377 }

Referenced by total().

◆ NNbarToNNbar2pi()

G4double G4INCL::CrossSectionsAntiparticles::NNbarToNNbar2pi ( Particle const *const p1,
Particle const *const p2 )
virtual

Reimplemented from G4INCL::CrossSectionsMultiPions.

Definition at line 449 of file G4INCLCrossSectionsAntiparticles.cc.

449 {
450 //brief ppbar
451 // p pbar -> p pbar pi+ pi- (BFMM 167)
452 // p pbar -> p nbar pi- pi0 (same as BFMM 490)
453 // p pbar -> n pbar pi+ pi0 (same as BFMM 490)
454 // p pbar -> n nbar pi+ pi- (BFMM 198)
455 //
456 //brief npbar
457 // n pbar -> p pbar pi- pi0 (BFMM 490)
458 // n pbar -> p nbar pi- pi- (BFMM 492)
459 // n pbar -> n pbar pi+ pi- (BFMM 494)
460 // n pbar -> n nbar pi- pi0 (same as BFMM 490)
461 //
462 //brief nnbar
463 // n nbar -> n nbar pi+ pi- (same as BFMM 167)
464 // n nbar -> p nbar pi- pi0 (same as BFMM 490)
465 // n nbar -> n pbar pi+ pi0 (same as BFMM 490)
466 // n nbar -> p pbar pi+ pi- (same as BFMM 198)
467 //
468 //brief pnbar
469 // p nbar -> p pbar pi+ pi0 (same as BFMM 490)
470 // p nbar -> n pbar pi+ pi+ (same as BFMM 492)
471 // p nbar -> p nbar pi+ pi- (same as BFMM 494)
472 // p nbar -> n nbar pi+ pi0 (same as BFMM 490)
473 //
474 //
475 // BFMM 188,199 are very close in value, 491 is larger
476
477// assert((p1->isAntiNucleon() && p2->isNucleon()) || (p1->isNucleon() && p2->isAntiNucleon()));
478
479 G4double sigma=0.;
480 const G4int iso=ParticleTable::getIsospin(p1->getType()) + ParticleTable::getIsospin(p2->getType());
481 // iso == 2 || iso == -2 (n pbar or p nbar)
482
483 const std::vector<G4double> BFMM167 = {-6.885, 0.476, 1.206, 13.857, -5.728, 1.220};
484 //const G4double Eth_PPbar_PPbar_pip_pim = 1.220;
485 const std::vector<G4double> BFMM198 = {1.857, -21.213, -3.448, 0.827, -0.390, 1.231};
486 //const G4double Eth_PPbar_NNbar_pip_pim = 1.231;
487 const std::vector<G4double> BFMM490 = {-3.594, 0.811, 0.306, 5.108, -1.625, 1.201};
488 //const G4double Eth_PNbar_PPbar_pim_pi0 = 1.201;
489 const std::vector<G4double> BFMM492 = {-5.443, 7.254, -2.936, 8.441, -2.588, 1.221};
490 //const G4double Eth_PNbar_NPbar_pim_pim = 1.221;
491 const std::vector<G4double> BFMM494 = {21.688, -38.709, -2.062, -17.783, 3.895, 1.221};
492 //const G4double Eth_NPbar_NPbar_pip_pim = 1.221;
493
494 const Particle *antinucleon;
495 const Particle *nucleon;
496
497 if (p1->isAntiNucleon()) {
498 antinucleon = p1;
499 nucleon = p2;
500 }
501 else {
502 antinucleon = p2;
503 nucleon = p1;
504 }
505
506 const G4double pLab = 0.001*KinematicsUtils::momentumInLab(antinucleon, nucleon); // GeV
507
508 if(iso == 2 || iso == -2){ // pnbar or npbar
509 sigma = KinematicsUtils::compute_xs(BFMM490, pLab) + KinematicsUtils::compute_xs(BFMM490, pLab) + KinematicsUtils::compute_xs(std::move(BFMM167), pLab) + KinematicsUtils::compute_xs(std::move(BFMM198), pLab);
510 return sigma;
511 }
512 else{ // ppbar or nnbar
513 sigma = KinematicsUtils::compute_xs(BFMM490, pLab) + KinematicsUtils::compute_xs(BFMM490, pLab) + KinematicsUtils::compute_xs(std::move(BFMM492), pLab) + KinematicsUtils::compute_xs(std::move(BFMM494), pLab);
514 return sigma;
515 }
516 }

Referenced by total().

◆ NNbarToNNbar3pi()

G4double G4INCL::CrossSectionsAntiparticles::NNbarToNNbar3pi ( Particle const *const p1,
Particle const *const p2 )
virtual

Reimplemented from G4INCL::CrossSectionsMultiPions.

Definition at line 518 of file G4INCLCrossSectionsAntiparticles.cc.

518 {
519 //brief ppbar
520 // p pbar -> p pbar pi+ pi- pi0 (BFMM 161)
521 // p pbar -> p nbar 2pi- pi+ (BFMM 169)
522 // p pbar -> n pbar 2pi+ pi- (BFMM 201)
523 // p pbar -> n nbar pi+ pi- pi0 (BFMM 197)
524 //
525 //brief npbar
526 // n pbar -> p pbar 2pi- pi+ (same as BFMM 169)
527 // n pbar -> p nbar 2pi- pi0 (same as BFMM 197)
528 // n pbar -> n pbar pi+ pi- pi0 (same as BFMM 161)
529 // n pbar -> n nbar 2pi- pi+ (same as BFMM 169)
530 //
531 //brief nnbar
532 // n nbar -> n nbar pi+ pi- pi0 (same as BFMM 161)
533 // n nbar -> p nbar 2pi- pi+ (same as BFMM 169)
534 // n nbar -> n pbar 2pi+ pi- (same as BFMM 201)
535 // n nbar -> p pbar pi+ pi- pi0 (same as BFMM 197)
536 //
537 //brief pnbar
538 // p nbar -> p pbar 2pi+ pi- (same as BFMM 169)
539 // p nbar -> n pbar 2pi+ pi0 (same as BFMM 197)
540 // p nbar -> p nbar pi+ pi- pi0 (same as BFMM 161)
541 // p nbar -> n nbar 2pi+ pi- (same as BFMM 169)
542 //
543
544// assert((p1->isAntiNucleon() && p2->isNucleon()) || (p1->isNucleon() && p2->isAntiNucleon()));
545
546 G4double sigma=0.;
547 const G4int iso=ParticleTable::getIsospin(p1->getType()) + ParticleTable::getIsospin(p2->getType());
548 // iso == 2 || iso == -2 (n pbar or p nbar)
549
550 const std::vector<G4double> BFMM161 = {-6.434, 1.351, -5.185, 7.754, -1.692, 1.604};
551 //const G4double Eth_PPbar_PPbar_pip_pim_pi0 = 1.604;
552 const std::vector<G4double> BFMM169 = {3.696, -5.356, -0.053, 1.941, -0.432, 1.624};
553 //const G4double Eth_PPbar_PNbar_2pim_pip = 1.624;
554 const std::vector<G4double> BFMM201 = {-1.070, -0.636, -0.009, 2.335, -0.499, 1.624};
555 //const G4double Eth_PPbar_NPbar_2pip_pim = 1.624;
556 const std::vector<G4double> BFMM197 = {1.857, -21.213, -3.448, 0.827, -0.390, 1.616};
557 //const G4double Eth_PPbar_NNbar_pip_pim_pi0 = 1.616;
558
559 const Particle *antinucleon;
560 const Particle *nucleon;
561
562 if (p1->isAntiNucleon()) {
563 antinucleon = p1;
564 nucleon = p2;
565 }
566 else {
567 antinucleon = p2;
568 nucleon = p1;
569 }
570
571 const G4double pLab = 0.001*KinematicsUtils::momentumInLab(antinucleon, nucleon); // GeV
572
573 if(iso == 2 || iso == -2){ // pnbar or npbar
574 sigma = KinematicsUtils::compute_xs(BFMM169, pLab) + KinematicsUtils::compute_xs(BFMM169, pLab) + KinematicsUtils::compute_xs(std::move(BFMM197), pLab) + KinematicsUtils::compute_xs(std::move(BFMM161), pLab);
575 return sigma;
576 }
577 else{ // ppbar or nnbar
578 sigma = KinematicsUtils::compute_xs(std::move(BFMM161), pLab) + KinematicsUtils::compute_xs(std::move(BFMM169), pLab) + KinematicsUtils::compute_xs(std::move(BFMM197), pLab) + KinematicsUtils::compute_xs(std::move(BFMM201), pLab);
579 return sigma;
580 }
581 }

Referenced by total().

◆ NNbarToNNbarpi()

G4double G4INCL::CrossSectionsAntiparticles::NNbarToNNbarpi ( Particle const *const p1,
Particle const *const p2 )
virtual

Nucleon-AntiNucleon to Nucleon-AntiNucleon + pions cross sections.

Reimplemented from G4INCL::CrossSectionsMultiPions.

Definition at line 379 of file G4INCLCrossSectionsAntiparticles.cc.

379 {
380 //brief ppbar
381 // p pbar -> p pbar pi0 (BFMM 185)
382 // p pbar -> p nbar pi- (BFMM 188)
383 // p pbar -> n pbar pi+ (BFMM 199)
384 // p pbar -> n nbar pi0 (no data)
385 //
386 //brief npbar
387 // n pbar -> p pbar pi- (BFMM 491)
388 // n pbar -> p nbar pion (impossible)
389 // n pbar -> n pbar pi0 (BFMM 495)
390 // n pbar -> n nbar pi- (same as BFMM 188)
391 //
392 //brief nnbar
393 // n nbar -> n nbar pi0 (same as BFMM 185)
394 // n nbar -> p nbar pi- (same as BFMM 188)
395 // n nbar -> n pbar pi+ (same as BFMM 199)
396 // n nbar -> p pbar pi0 (no data)
397 //
398 //brief pnbar
399 // p nbar -> p pbar pi+ (same as BFMM 491)
400 // p nbar -> n pbar pion (impossible)
401 // p nbar -> p nbar pi0 (BFMM 495)
402 // p nbar -> n nbar pi- (same as BFMM 188)
403 //
404 //
405 // BFMM 188,199 are very close in value, 491 is larger
406
407// assert((p1->isAntiNucleon() && p2->isNucleon()) || (p1->isNucleon() && p2->isAntiNucleon()));
408
409 G4double sigma=0.;
410 const G4int iso=ParticleTable::getIsospin(p1->getType()) + ParticleTable::getIsospin(p2->getType());
411 // iso == 2 || iso == -2 (n pbar or p nbar)
412
413 const std::vector<G4double> BFMM185 = {-0.734, 0.841, 0.905, 3.415, -2.316, 0.775};
414 //{22.781, -22.602, -0.752, -11.036, 1.548, 0.775}
415 //const G4double Eth_PPbar_PPbar_pi0 = 0.775;
416 const std::vector<G4double> BFMM188 = { -0.442, 0.501, 0.002, 3.434, -1.201, 0.798};
417 //const G4double Eth_PPbar_PNbar_pim = 0.798;
418 const std::vector<G4double> BFMM199 = {-2.025, 2.055, -2.355, 6.064, -2.004, 0.798};
419 //const G4double Eth_PPbar_NPbar_pip = 0.798;
420 const std::vector<G4double> BFMM491 = {24.125, -20.669, -1.534, -19.573, 4.493, 0.787};
421 //const G4double Eth_NPbar_PPbar_pim = 0.787;
422 const std::vector<G4double> BFMM495 = {-0.650, -0.140, -0.058, 5.166, -1.705, 0.777};
423 //const G4double Eth_NPbar_NPbar_pi0 = 0.777;
424
425 const Particle *antinucleon;
426 const Particle *nucleon;
427
428 if (p1->isAntiNucleon()) {
429 antinucleon = p1;
430 nucleon = p2;
431 }
432 else {
433 antinucleon = p2;
434 nucleon = p1;
435 }
436
437 const G4double pLab = 0.001*KinematicsUtils::momentumInLab(antinucleon, nucleon); // GeV
438
439 if(iso == 2 || iso == -2){ //npbar or pnbar
440 sigma = KinematicsUtils::compute_xs(std::move(BFMM491), pLab) + KinematicsUtils::compute_xs(std::move(BFMM185), pLab) + KinematicsUtils::compute_xs(std::move(BFMM188), pLab);
441 return sigma;
442 }
443 else{ // ppbar or nnbar
444 sigma = KinematicsUtils::compute_xs(std::move(BFMM199), pLab) + KinematicsUtils::compute_xs(std::move(BFMM185), pLab) + KinematicsUtils::compute_xs(std::move(BFMM188), pLab);
445 return sigma;
446 }
447 }

Referenced by total().

◆ total()

G4double G4INCL::CrossSectionsAntiparticles::total ( Particle const *const p1,
Particle const *const p2 )
virtual

second new total particle-particle cross section

redefining previous cross sections

Reimplemented from G4INCL::CrossSectionsStrangeness.

Definition at line 83 of file G4INCLCrossSectionsAntiparticles.cc.

83 {
84 G4double inelastic;
85 if ((p1->isNucleon() && p2->isAntiNucleon()) || (p1->isAntiNucleon() && p2->isNucleon())){
86 const G4int iso = ParticleTable::getIsospin(p1->getType()) + ParticleTable::getIsospin(p2->getType());
87 const Particle *antinucleon;
88 const Particle *nucleon;
89 if (p1->isAntiNucleon()) {
90 antinucleon = p1;
91 nucleon = p2;
92 }
93 else {
94 antinucleon = p2;
95 nucleon = p1;
96 }
97 const G4double pLab = 0.001*KinematicsUtils::momentumInLab(antinucleon, nucleon); // GeV
98 const std::vector<G4double> coef_nbarp_total = {1.69447, 5.26254E+08, -5.36346, -0.39766, 0.0243057};//OBELIX data
99 G4double sigma = KinematicsUtils::compute_xs(coef_nbarp_total,pLab*1000);
100 if(iso == 2 && pLab < nbar_pbarThreshold){//nbarp low energy
101 return sigma*1000;
102
103 }
104 else if(antinucleon->getType() == antiNeutron && nucleon->getType() == Neutron && pLab < nbar_pbarThreshold){ //nbarn low energy
105 return 1000*sigma + NNbarCEX(p1, p2);
106 }
107 else {
108 inelastic = NNbarCEX(p1, p2) + NNbarToNNbarpi(p1, p2) + NNbarToNNbar2pi(p1, p2) + NNbarToNNbar3pi(p1, p2) + NNbarToAnnihilation(p1, p2) + NNbarToLLbar(p1, p2);
109 }
110 } else if(p1->isNucleon() && p2->isNucleon()) {
111 return CrossSectionsMultiPions::NNTot(p1, p2);
112 } else if((p1->isNucleon() && p2->isDelta()) ||
113 (p1->isDelta() && p2->isNucleon())) {
114 inelastic = CrossSectionsMultiPions::NDeltaToNN(p1, p2) + NDeltaToNLK(p1, p2) + NDeltaToNSK(p1, p2) + NDeltaToDeltaLK(p1, p2) + NDeltaToDeltaSK(p1, p2) + NDeltaToNNKKb(p1, p2);
115 } else if((p1->isNucleon() && p2->isPion()) ||
116 (p1->isPion() && p2->isNucleon())) {
118 } else if((p1->isNucleon() && p2->isEta()) ||
119 (p1->isEta() && p2->isNucleon())) {
121 } else if((p1->isNucleon() && p2->isOmega()) ||
122 (p1->isOmega() && p2->isNucleon())) {
124 } else if((p1->isNucleon() && p2->isEtaPrime()) ||
125 (p1->isEtaPrime() && p2->isNucleon())) {
127 } else if((p1->isNucleon() && p2->isLambda()) ||
128 (p1->isLambda() && p2->isNucleon())) {
129 inelastic = CrossSectionsStrangeness::NLToNS(p1,p2);
130 } else if((p1->isNucleon() && p2->isSigma()) ||
131 (p1->isSigma() && p2->isNucleon())) {
133 } else if((p1->isNucleon() && p2->isKaon()) ||
134 (p1->isKaon() && p2->isNucleon())) {
136 } else if((p1->isNucleon() && p2->isAntiKaon()) ||
137 (p1->isAntiKaon() && p2->isNucleon())) {
138 inelastic = CrossSectionsStrangeness::NKbToLpi(p1,p2)
142 } else {
143 inelastic = 0.;
144 }
145 return inelastic + elastic(p1, p2);
146 }
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)
virtual G4double NNbarToNNbarpi(Particle const *const p1, Particle const *const p2)
Nucleon-AntiNucleon to Nucleon-AntiNucleon + pions cross sections.
virtual G4double NNbarToNNbar3pi(Particle const *const p1, Particle const *const p2)
virtual G4double NNbarToNNbar2pi(Particle const *const p1, Particle const *const p2)
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)
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 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 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 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.

Referenced by NNbarElastic().

Member Data Documentation

◆ nMaxPiNN

const G4int G4INCL::CrossSectionsAntiparticles::nMaxPiNN = 4
staticprotected

Maximum number of outgoing pions in NN collisions.

Definition at line 82 of file G4INCLCrossSectionsAntiparticles.hh.

◆ nMaxPiPiN

const G4int G4INCL::CrossSectionsAntiparticles::nMaxPiPiN = 4
staticprotected

Maximum number of outgoing pions in piN collisions.

Definition at line 85 of file G4INCLCrossSectionsAntiparticles.hh.

◆ s01ppHC

const HornerC8 G4INCL::CrossSectionsAntiparticles::s01ppHC
protected

Horner coefficients for s01pp.

Definition at line 90 of file G4INCLCrossSectionsAntiparticles.hh.

Referenced by CrossSectionsAntiparticles().

◆ s01pzHC

const HornerC4 G4INCL::CrossSectionsAntiparticles::s01pzHC
protected

Horner coefficients for s01pz.

Definition at line 92 of file G4INCLCrossSectionsAntiparticles.hh.

Referenced by CrossSectionsAntiparticles().

◆ s02pmHC

const HornerC6 G4INCL::CrossSectionsAntiparticles::s02pmHC
protected

Horner coefficients for s02pm.

Definition at line 104 of file G4INCLCrossSectionsAntiparticles.hh.

Referenced by CrossSectionsAntiparticles().

◆ s02pzHC

const HornerC4 G4INCL::CrossSectionsAntiparticles::s02pzHC
protected

Horner coefficients for s02pz.

Definition at line 102 of file G4INCLCrossSectionsAntiparticles.hh.

Referenced by CrossSectionsAntiparticles().

◆ s11pmHC

const HornerC4 G4INCL::CrossSectionsAntiparticles::s11pmHC
protected

Horner coefficients for s11pm.

Definition at line 94 of file G4INCLCrossSectionsAntiparticles.hh.

Referenced by CrossSectionsAntiparticles().

◆ s11pzHC

const HornerC7 G4INCL::CrossSectionsAntiparticles::s11pzHC
protected

Horner coefficients for s11pz.

Definition at line 88 of file G4INCLCrossSectionsAntiparticles.hh.

Referenced by CrossSectionsAntiparticles().

◆ s12mzHC

const HornerC4 G4INCL::CrossSectionsAntiparticles::s12mzHC
protected

Horner coefficients for s12mz.

Definition at line 106 of file G4INCLCrossSectionsAntiparticles.hh.

Referenced by CrossSectionsAntiparticles().

◆ s12pmHC

const HornerC5 G4INCL::CrossSectionsAntiparticles::s12pmHC
protected

Horner coefficients for s12pm.

Definition at line 96 of file G4INCLCrossSectionsAntiparticles.hh.

Referenced by CrossSectionsAntiparticles().

◆ s12ppHC

const HornerC3 G4INCL::CrossSectionsAntiparticles::s12ppHC
protected

Horner coefficients for s12pp.

Definition at line 98 of file G4INCLCrossSectionsAntiparticles.hh.

Referenced by CrossSectionsAntiparticles().

◆ s12zzHC

const HornerC4 G4INCL::CrossSectionsAntiparticles::s12zzHC
protected

Horner coefficients for s12zz.

Definition at line 100 of file G4INCLCrossSectionsAntiparticles.hh.

Referenced by CrossSectionsAntiparticles().


The documentation for this class was generated from the following files: