Geant4  10.03.p01
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
G4INCL::CrossSectionsMultiPionsAndResonances Class Reference

Multipion and mesonic Resonances cross sections. More...

#include <G4INCLCrossSectionsMultiPionsAndResonances.hh>

Inheritance diagram for G4INCL::CrossSectionsMultiPionsAndResonances:
Collaboration diagram for G4INCL::CrossSectionsMultiPionsAndResonances:

Public Member Functions

 CrossSectionsMultiPionsAndResonances ()
 
virtual G4double elastic (Particle const *const p1, Particle const *const p2)
 new elastic particle-particle cross section More...
 
virtual G4double total (Particle const *const p1, Particle const *const p2)
 new total particle-particle cross section More...
 
virtual G4double piNToxPiN (const G4int xpi, Particle const *const p1, Particle const *const p2)
 Cross section for X pion production - piN Channel (modified due to the mesonic resonances) More...
 
virtual G4double piNToEtaN (Particle const *const p1, Particle const *const p2)
 Cross sections for mesonic resonance production - piN Channel. More...
 
virtual G4double piNToOmegaN (Particle const *const p1, Particle const *const p2)
 Cross section for PiN->OmegaN. More...
 
virtual G4double piNToEtaPrimeN (Particle const *const p1, Particle const *const p2)
 Cross section for PiN->EtaPrimeN. More...
 
virtual G4double etaNToPiN (Particle const *const p1, Particle const *const p2)
 Cross sections for mesonic resonance absorption on nucleon - piN Channel. More...
 
virtual G4double omegaNToPiN (Particle const *const p1, Particle const *const p2)
 Cross section for OmegaN->PiN. More...
 
virtual G4double etaPrimeNToPiN (Particle const *const p1, Particle const *const p2)
 Cross section for EtaPrimeN->PiN. More...
 
virtual G4double etaNToPiPiN (Particle const *const p1, Particle const *const p2)
 Cross sections for mesonic resonance absorption on nucleon - pipiN Channel. More...
 
virtual G4double NNToNNEta (Particle const *const particle1, Particle const *const particle2)
 Cross section for Eta production (inclusive) - NN entrance channel. More...
 
virtual G4double NNToNNEtaExclu (Particle const *const particle1, Particle const *const particle2)
 Cross section for Eta production (exclusive) - NN entrance channel. More...
 
virtual G4double NNToNNOmega (Particle const *const particle1, Particle const *const particle2)
 Cross section for Omega production (inclusive) - NN entrance channel. More...
 
virtual G4double NNToNNOmegaExclu (Particle const *const particle1, Particle const *const particle2)
 Cross section for Omega production (exclusive) - NN entrance channel. More...
 
virtual G4double NNToxPiNN (const G4int xpi, Particle const *const p1, Particle const *const p2)
 Cross section for X pion production - NN Channel. More...
 
virtual G4double NNToNNEtaxPi (const G4int xpi, Particle const *const p1, Particle const *const p2)
 Cross section for X pion production - NNEta Channel. More...
 
virtual G4double NNToNDeltaEta (Particle const *const p1, Particle const *const p2)
 Cross section for N-Delta-Eta production - NNEta Channel. More...
 
virtual G4double NNToNNOmegaxPi (const G4int xpi, Particle const *const p1, Particle const *const p2)
 Cross section for X pion production - NNOmega Channel. More...
 
virtual G4double NNToNDeltaOmega (Particle const *const p1, Particle const *const p2)
 Cross section for N-Delta-Eta production - NNOmega Channel. More...
 
- Public Member Functions inherited from G4INCL::CrossSectionsMultiPions
 CrossSectionsMultiPions ()
 
virtual G4double NDeltaToNN (Particle const *const p1, Particle const *const p2)
 Cross section for NDelta->NN. More...
 
virtual G4double NNToNDelta (Particle const *const p1, Particle const *const p2)
 Cross section for Delta production - NN Channel. More...
 
virtual G4double piNToDelta (Particle const *const p1, Particle const *const p2)
 Cross section for Delta production - piN Channel. More...
 
virtual G4double calculateNNAngularSlope (G4double energyCM, G4int iso)
 Calculate the slope of the NN DDXS. More...
 
- Public Member Functions inherited from G4INCL::ICrossSections
 ICrossSections ()
 
virtual ~ICrossSections ()
 

Protected Member Functions

G4double piMinuspToEtaN (Particle const *const p1, Particle const *const p2)
 Internal function for pion cross sections. More...
 
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. More...
 
virtual G4double NNToNNEtaExcluIso (const G4double ener, const G4int iso)
 Isotopic Cross section for Eta production (exclusive) - NN entrance channel. More...
 
virtual G4double NNToNNEtaOnePi (Particle const *const part1, Particle const *const part2)
 Cross section for direct 1-pion production - NNEta channel. More...
 
virtual G4double NNToNNEtaOnePiOrDelta (Particle const *const part1, Particle const *const part2)
 Cross section for direct 1-pion production - NNEta channel. More...
 
virtual G4double NNToNNEtaTwoPi (Particle const *const part1, Particle const *const part2)
 Cross section for direct 2-pion production - NNEta channel. More...
 
virtual G4double NNToNNEtaThreePi (Particle const *const part1, Particle const *const part2)
 Cross section for direct 3-pion production - NNEta channel. More...
 
virtual G4double NNToNNEtaFourPi (Particle const *const part1, Particle const *const part2)
 Cross section for direct 4-pion production - NNEta channel. More...
 
virtual G4double NNToNNOmegaIso (const G4double ener, const G4int iso)
 Isotopic Cross section for Omega production (inclusive) - NN entrance channel. More...
 
virtual G4double NNToNNOmegaExcluIso (const G4double ener, const G4int iso)
 Isotopic Cross section for Omega production (exclusive) - NN entrance channel. More...
 
virtual G4double NNToNNOmegaOnePi (Particle const *const part1, Particle const *const part2)
 Cross section for direct 1-pion production - NNOmega channel. More...
 
virtual G4double NNToNNOmegaOnePiOrDelta (Particle const *const part1, Particle const *const part2)
 Cross section for direct 1-pion production - NNOmega channel. More...
 
virtual G4double NNToNNOmegaTwoPi (Particle const *const part1, Particle const *const part2)
 Cross section for direct 2-pion production - NNOmega channel. More...
 
virtual G4double NNToNNOmegaThreePi (Particle const *const part1, Particle const *const part2)
 Cross section for direct 3-pion production - NNOmega channel. More...
 
virtual G4double NNToNNOmegaFourPi (Particle const *const part1, Particle const *const part2)
 Cross section for direct 4-pion production - NNOmega channel. More...
 
virtual G4double etaNElastic (Particle const *const p1, Particle const *const p2)
 Cross sections for mesonic resonance absorption on nucleon - elastic Channel. More...
 
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. More...
 
virtual G4double omegaNToPiPiN (Particle const *const p1, Particle const *const p2)
 Cross sections for omega-induced 2Pi emission on nucleon. More...
 
- 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. More...
 
G4double NNElasticFixed (const G4double s, const G4int i)
 Internal implementation of the NN elastic cross section with fixed isospin. More...
 
G4double NNTot (Particle const *const part1, Particle const *const part2)
 Internal implementation of the NN total cross section. More...
 
G4double NNTotFixed (const G4double s, const G4int i)
 Internal implementation of the NN total cross section with fixed isospin. More...
 
G4double NNInelasticIso (const G4double ener, const G4int iso)
 Internal implementation of the isospin dependent NN reaction cross section. More...
 
virtual G4double NNOnePiOrDelta (const G4double ener, const G4int iso, const G4double xsiso)
 Cross section for direct 1-pion production + delta production - NN entrance channel. More...
 
virtual G4double NNTwoPi (const G4double ener, const G4int iso, const G4double xsiso)
 Cross section for direct 2-pion production - NN entrance channel. More...
 
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. More...
 
virtual G4double NNOnePi (Particle const *const part1, Particle const *const part2)
 Cross section for direct 1-pion production - NN entrance channel. More...
 
virtual G4double NNOnePiOrDelta (Particle const *const part1, Particle const *const part2)
 Cross section for direct 1-pion production - NN entrance channel. More...
 
virtual G4double NNTwoPi (Particle const *const part1, Particle const *const part2)
 Cross section for direct 2-pion production - NN entrance channel. More...
 
virtual G4double NNThreePi (Particle const *const part1, Particle const *const part2)
 Cross section for direct 3-pion production - NN entrance channel. More...
 
virtual G4double NNFourPi (Particle const *const part1, Particle const *const part2)
 Cross section for direct 4-pion production - NN entrance channel. More...
 
G4double spnPiPlusPHE (const G4double x)
 Internal function for pion cross sections. More...
 
G4double spnPiMinusPHE (const G4double x)
 Internal function for pion cross sections. More...
 
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. More...
 
virtual G4double piNTwoPi (Particle const *const p1, Particle const *const p2)
 Cross section for Two (more) pion production - piN entrance channel. More...
 

Protected Attributes

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

Static Protected Attributes

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

Detailed Description

Multipion and mesonic Resonances cross sections.

Definition at line 54 of file G4INCLCrossSectionsMultiPionsAndResonances.hh.

Constructor & Destructor Documentation

G4INCL::CrossSectionsMultiPionsAndResonances::CrossSectionsMultiPionsAndResonances ( )

Definition at line 77 of file G4INCLCrossSectionsMultiPionsAndResonances.cc.

77  :
78  s11pzHC(-2.228000000000294018,8.7560000000005723725,-0.61000000000023239325,-5.4139999999999780324,3.3338333333333348023,-0.75835000000000022049,0.060623611111111114688),
79  s01ppHC(2.0570000000126518344,-6.029000000012135826,36.768500000002462784,-45.275666666666553533,25.112666666666611953,-7.2174166666666639187,1.0478875000000000275,-0.060804365079365080846),
80  s01pzHC(0.18030000000000441851,7.8700999999999953598,-4.0548999999999990425,0.555199999999999959),
81  s11pmHC(0.20590000000000031866,3.3450999999999993936,-1.4401999999999997825,0.17076666666666664973),
82  s12pmHC(-0.77235999999999901328,4.2626599999999991117,-1.9008899999999997323,0.30192266666666663379,-0.012270833333333331986),
83  s12ppHC(-0.75724999999999975664,2.0934399999999998565,-0.3803099999999999814),
84  s12zzHC(-0.89599999999996965072,7.882999999999978632,-7.1049999999999961928,1.884333333333333089),
85  s02pzHC(-1.0579999999999967036,11.113999999999994089,-8.5259999999999990196,2.0051666666666666525),
86  s02pmHC(2.4009000000012553286,-7.7680000000013376183,20.619000000000433505,-16.429666666666723928,5.2525708333333363472,-0.58969166666666670206),
87  s12mzHC(-0.21858699999999976269,1.9148999999999999722,-0.31727500000000001065,-0.027695000000000000486)
88  {
89  }

Member Function Documentation

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

new elastic particle-particle cross section

Reimplemented from G4INCL::CrossSectionsMultiPions.

Definition at line 118 of file G4INCLCrossSectionsMultiPionsAndResonances.cc.

118  {
119  if((p1->isNucleon()||p1->isDelta()) && (p2->isNucleon()||p2->isDelta())){
120  return CrossSectionsMultiPions::elastic(p1, p2);
121  }
122  else if ((p1->isNucleon() && p2->isPion()) || (p2->isNucleon() && p1->isPion())){
123  return CrossSectionsMultiPions::elastic(p1, p2);
124  }
125  else if ((p1->isNucleon() && p2->isEta()) || (p2->isNucleon() && p1->isEta())){
126  return etaNElastic(p1, p2);
127  }
128  else if ((p1->isNucleon() && p2->isOmega()) || (p2->isNucleon() && p1->isOmega())){
129  return omegaNElastic(p1, p2);
130  }
131  else {
132  return 0.0;
133  }
134  }
virtual G4double omegaNElastic(Particle const *const p1, Particle const *const p2)
virtual G4double elastic(Particle const *const p1, Particle const *const p2)
Elastic 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.

Here is the call graph for this function:

Here is the caller graph for this function:

G4double G4INCL::CrossSectionsMultiPionsAndResonances::etaNElastic ( Particle const *const  p1,
Particle const *const  p2 
)
protectedvirtual

Cross sections for mesonic resonance absorption on nucleon - elastic Channel.

Definition at line 339 of file G4INCLCrossSectionsMultiPionsAndResonances.cc.

339  {
340  //
341  // Eta-Nucleon elastic cross sections
342  //
343 // assert((particle1->isNucleon() && particle2->isEta()) || (particle1->isEta() && particle2->isNucleon()));
344 
345  G4double sigma=0.;
346 
347  const Particle *eta;
348  const Particle *nucleon;
349 
350  if (particle1->isEta()) {
351  eta = particle1;
352  nucleon = particle2;
353  }
354  else {
355  eta = particle2;
356  nucleon = particle1;
357  }
358 
359  const G4double pLab = KinematicsUtils::momentumInLab(eta, nucleon);
360 
361  if (pLab < 700.)
362  sigma = 3.6838e-15*std::pow(pLab,6) - 9.7815e-12*std::pow(pLab,5) + 9.7914e-9*std::pow(pLab,4) -
363  4.3222e-06*std::pow(pLab,3) + 7.9188e-04*std::pow(pLab,2) - 1.8379e-01*pLab + 84.965;
364  else if (pLab < 1400.)
365  sigma = 3.562630e-16*std::pow(pLab,6) - 2.384766e-12*std::pow(pLab,5) + 6.601312e-9*std::pow(pLab,4) -
366  9.667078e-06*std::pow(pLab,3) + 7.894845e-03*std::pow(pLab,2) - 3.409200*pLab + 609.8501;
367  else if (pLab < 2025.)
368  sigma = -1.041950E-03*pLab + 2.110529E+00;
369  else
370  sigma=0.;
371 
372  if (sigma < 0.) sigma = 0.;
373  return sigma; // Parameterization from the ANL-Osaka DCC model [PRC88(2013)035209]
374  }
G4bool nucleon(G4int ityp)
G4double momentumInLab(Particle const *const p1, Particle const *const p2)
gives the momentum in the lab frame of two particles.
double G4double
Definition: G4Types.hh:76

Here is the call graph for this function:

Here is the caller graph for this function:

G4double G4INCL::CrossSectionsMultiPionsAndResonances::etaNToPiN ( Particle const *const  p1,
Particle const *const  p2 
)
virtual

Cross sections for mesonic resonance absorption on nucleon - piN Channel.

Reimplemented from G4INCL::CrossSectionsMultiPions.

Definition at line 256 of file G4INCLCrossSectionsMultiPionsAndResonances.cc.

256  {
257  //
258  // Eta-Nucleon producing Pion cross sections
259  //
260 // assert((particle1->isNucleon() && particle2->isEta()) || (particle1->isEta() && particle2->isNucleon()));
261 
262  const Particle *eta;
263  const Particle *nucleon;
264 
265  if (particle1->isEta()) {
266  eta = particle1;
267  nucleon = particle2;
268  }
269  else {
270  eta = particle2;
271  nucleon = particle1;
272  }
273 
274  const G4double pLab = KinematicsUtils::momentumInLab(eta, nucleon);
275  G4double sigma=0.;
276 
277  if (pLab <= 574.)
278  sigma= 1.511147E-13*std::pow(pLab,6)- 3.603636E-10*std::pow(pLab,5)+ 3.443487E-07*std::pow(pLab,4)- 1.681980E-04*std::pow(pLab,3)+ 4.437913E-02*std::pow(pLab,2)- 6.172108E+00*pLab+ 4.031449E+02;
279  else if (pLab <= 850.)
280  sigma= -8.00018E-14*std::pow(pLab,6)+ 3.50041E-10*std::pow(pLab,5)- 6.33891E-07*std::pow(pLab,4)+ 6.07658E-04*std::pow(pLab,3)- 3.24936E-01*std::pow(pLab,2)+ 9.18098E+01*pLab- 1.06943E+04;
281  else if (pLab <= 1300.)
282  sigma= 6.56364E-09*std::pow(pLab,3)- 2.07653E-05*std::pow(pLab,2)+ 1.84148E-02*pLab- 1.70427E+00;
283  else {
284  G4double ECM=KinematicsUtils::totalEnergyInCM(eta, nucleon);
288  G4double masseta;
289  G4double massnucleon;
290  G4double pCM_eta;
291  masseta=eta->getMass();
292  massnucleon=nucleon->getMass();
293  pCM_eta=KinematicsUtils::momentumInCM(ECM, masseta, massnucleon);
294  G4double pCM_PiZero=KinematicsUtils::momentumInCM(ECM, massPiZero, massProton);
295  G4double pCM_PiMinus=KinematicsUtils::momentumInCM(ECM, massPiMinus, massProton); // = pCM_PiPlus (because massPiMinus = massPiPlus)
296  sigma = (piMinuspToEtaN(ECM)/2.) * std::pow((pCM_PiZero/pCM_eta), 2) + piMinuspToEtaN(ECM) * std::pow((pCM_PiMinus/pCM_eta), 2);
297  }
298  if (sigma < 0.) sigma=0.;
299  return sigma;
300 }
G4double momentumInCM(Particle const *const p1, Particle const *const p2)
gives the momentum in the CM frame of two particles.
G4bool nucleon(G4int ityp)
G4double getINCLMass(const G4int A, const G4int Z)
Get INCL nuclear mass (in MeV/c^2)
G4double piMinuspToEtaN(Particle const *const p1, Particle const *const p2)
Internal function for pion cross sections.
G4double momentumInLab(Particle const *const p1, Particle const *const p2)
gives the momentum in the lab frame of two particles.
double G4double
Definition: G4Types.hh:76
G4double totalEnergyInCM(Particle const *const p1, Particle const *const p2)

Here is the call graph for this function:

Here is the caller graph for this function:

G4double G4INCL::CrossSectionsMultiPionsAndResonances::etaNToPiPiN ( Particle const *const  p1,
Particle const *const  p2 
)
virtual

Cross sections for mesonic resonance absorption on nucleon - pipiN Channel.

Reimplemented from G4INCL::CrossSectionsMultiPions.

Definition at line 302 of file G4INCLCrossSectionsMultiPionsAndResonances.cc.

302  {
303  //
304  // Eta-Nucleon producing Two Pions cross sections
305  //
306 // assert((particle1->isNucleon() && particle2->isEta()) || (particle1->isEta() && particle2->isNucleon()));
307 
308  G4double sigma=0.;
309 
310  const Particle *eta;
311  const Particle *nucleon;
312 
313  if (particle1->isEta()) {
314  eta = particle1;
315  nucleon = particle2;
316  }
317  else {
318  eta = particle2;
319  nucleon = particle1;
320  }
321 
322  const G4double pLab = KinematicsUtils::momentumInLab(eta, nucleon);
323 
324  if (pLab < 450.)
325  sigma = 2.01854221E-13*std::pow(pLab,6) - 3.49750459E-10*std::pow(pLab,5) + 2.46011585E-07*std::pow(pLab,4) - 9.01422901E-05*std::pow(pLab,3) + 1.83382964E-02*std::pow(pLab,2) - 2.03113098E+00*pLab + 1.10358550E+02;
326  else if (pLab < 600.)
327  sigma = 2.01854221E-13*std::pow(450.,6) - 3.49750459E-10*std::pow(450.,5) + 2.46011585E-07*std::pow(450.,4) - 9.01422901E-05*std::pow(450.,3) + 1.83382964E-02*std::pow(450.,2) - 2.03113098E+00*450. + 1.10358550E+02;
328  else if (pLab <= 1300.)
329  sigma = -6.32793049e-16*std::pow(pLab,6) + 3.95985900e-12*std::pow(pLab,5) - 1.01727714e-8*std::pow(pLab,4) +
330  1.37055547e-05*std::pow(pLab,3) - 1.01830486e-02*std::pow(pLab,2) + 3.93492126*pLab - 609.447145;
331  else
332  sigma = etaNToPiN(particle1,particle2);
333 
334  if (sigma < 0.) sigma = 0.;
335  return sigma; // Parameterization from the ANL-Osaka DCC model [PRC88(2013)035209] - eta p --> "pi+pi0 n" + "pi0 pi0 p" total XS
336  }
virtual G4double etaNToPiN(Particle const *const p1, Particle const *const p2)
Cross sections for mesonic resonance absorption on nucleon - piN Channel.
G4bool nucleon(G4int ityp)
G4double momentumInLab(Particle const *const p1, Particle const *const p2)
gives the momentum in the lab frame of two particles.
double G4double
Definition: G4Types.hh:76

Here is the call graph for this function:

Here is the caller graph for this function:

G4double G4INCL::CrossSectionsMultiPionsAndResonances::etaPrimeNToPiN ( Particle const *const  p1,
Particle const *const  p2 
)
virtual

Cross section for EtaPrimeN->PiN.

Reimplemented from G4INCL::CrossSectionsMultiPions.

Definition at line 492 of file G4INCLCrossSectionsMultiPionsAndResonances.cc.

492  {
493 #else
494  G4double CrossSectionsMultiPionsAndResonances::etaPrimeNToPiN(Particle const * const particle1, Particle const * const particle2) {
495 #endif
496  //
497  // EtaPrime-Nucleon producing Pion cross sections
498  //
499 // assert((particle1->isNucleon() && particle2->isEtaPrime()) || (particle1->isEtaPrime() && particle2->isNucleon()));
500 
501  return 0.;
502  }
virtual G4double etaPrimeNToPiN(Particle const *const p1, Particle const *const p2)
Cross section for EtaPrimeN-&gt;PiN.
double G4double
Definition: G4Types.hh:76

Here is the caller graph for this function:

G4double G4INCL::CrossSectionsMultiPionsAndResonances::NNToNDeltaEta ( Particle const *const  p1,
Particle const *const  p2 
)
virtual

Cross section for N-Delta-Eta production - NNEta Channel.

Reimplemented from G4INCL::CrossSectionsMultiPions.

Definition at line 1102 of file G4INCLCrossSectionsMultiPionsAndResonances.cc.

1102  {
1103 // assert(p1->isNucleon() && p2->isNucleon());
1104  const G4int i = ParticleTable::getIsospin(p1->getType()) + ParticleTable::getIsospin(p2->getType());
1105  const G4double ener=KinematicsUtils::totalEnergyInCM(p1, p2) - 686.987; // 686.987 MeV translation to open pion production in NNEta
1106  if (ener < 2018.563) return 0.;
1107  G4double xsinelas;
1108  if (i!=0)
1109  xsinelas=CrossSectionsMultiPions::NNInelasticIso(ener, 2);
1110  else
1112  if (xsinelas <= 1.e-9) return 0.;
1113  G4double ratio=(NNToNNEta(p1, p2)-NNToNNEtaExclu(p1, p2))/xsinelas;
1114  G4double sigma = NNToNNEtaOnePiOrDelta(p1, p2)*ratio;
1115  if(i==0)
1116  sigma *= 0.5;
1117  return sigma;
1118  }
G4double NNInelasticIso(const G4double ener, const G4int iso)
Internal implementation of the isospin dependent NN reaction cross section.
virtual G4double NNToNNEtaOnePiOrDelta(Particle const *const part1, Particle const *const part2)
Cross section for direct 1-pion production - NNEta 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.
int G4int
Definition: G4Types.hh:78
G4int getIsospin(const ParticleType t)
Get the isospin of a particle.
double G4double
Definition: G4Types.hh:76
G4double totalEnergyInCM(Particle const *const p1, Particle const *const p2)

Here is the call graph for this function:

G4double G4INCL::CrossSectionsMultiPionsAndResonances::NNToNDeltaOmega ( Particle const *const  p1,
Particle const *const  p2 
)
virtual

Cross section for N-Delta-Eta production - NNOmega Channel.

Reimplemented from G4INCL::CrossSectionsMultiPions.

Definition at line 1252 of file G4INCLCrossSectionsMultiPionsAndResonances.cc.

1252  {
1253 // assert(p1->isNucleon() && p2->isNucleon());
1254 //jcd to be removed
1255 // return 0.;
1256 //jcd
1257  const G4int i = ParticleTable::getIsospin(p1->getType()) + ParticleTable::getIsospin(p2->getType());
1258  const G4double ener=KinematicsUtils::totalEnergyInCM(p1, p2) - 783.437; // 783.437 MeV translation to open pion production in NNOmega
1259  if (ener < 2018.563) return 0.;
1260  G4double xsinelas;
1261  if (i!=0)
1262  xsinelas=CrossSectionsMultiPions::NNInelasticIso(ener, 2);
1263  else
1265  if (xsinelas <= 1.e-9) return 0.;
1266  G4double ratio=(NNToNNOmega(p1, p2)-NNToNNOmegaExclu(p1, p2))/xsinelas;
1267  G4double sigma = NNToNNOmegaOnePiOrDelta(p1, p2)*ratio;
1268  if(i==0)
1269  sigma *= 0.5;
1270  return sigma;
1271  }
G4double NNInelasticIso(const G4double ener, const G4int iso)
Internal implementation of the isospin dependent NN reaction cross section.
virtual G4double NNToNNOmegaExclu(Particle const *const particle1, Particle const *const particle2)
Cross section for Omega production (exclusive) - NN entrance channel.
virtual G4double NNToNNOmegaOnePiOrDelta(Particle const *const part1, Particle const *const part2)
Cross section for direct 1-pion production - NNOmega channel.
virtual G4double NNToNNOmega(Particle const *const particle1, Particle const *const particle2)
Cross section for Omega production (inclusive) - NN entrance channel.
int G4int
Definition: G4Types.hh:78
G4int getIsospin(const ParticleType t)
Get the isospin of a particle.
double G4double
Definition: G4Types.hh:76
G4double totalEnergyInCM(Particle const *const p1, Particle const *const p2)

Here is the call graph for this function:

G4double G4INCL::CrossSectionsMultiPionsAndResonances::NNToNNEta ( Particle const *const  particle1,
Particle const *const  particle2 
)
virtual

Cross section for Eta production (inclusive) - NN entrance channel.

Reimplemented from G4INCL::CrossSectionsMultiPions.

Definition at line 703 of file G4INCLCrossSectionsMultiPionsAndResonances.cc.

703  {
704 
705  const G4double ener=KinematicsUtils::totalEnergyInCM(particle1, particle2);
706  const G4int iso=ParticleTable::getIsospin(particle1->getType()) + ParticleTable::getIsospin(particle2->getType());
707 
708  if (iso != 0) {
709  return NNToNNEtaIso(ener, iso);
710  }
711  else {
712  return 0.5*(NNToNNEtaIso(ener, 0)+NNToNNEtaIso(ener, 2));
713  }
714  }
virtual G4double NNToNNEtaIso(const G4double ener, const G4int iso)
Cross section for One (more) pion production - piN entrance channel.
int G4int
Definition: G4Types.hh:78
G4int getIsospin(const ParticleType t)
Get the isospin of a particle.
double G4double
Definition: G4Types.hh:76
G4double totalEnergyInCM(Particle const *const p1, Particle const *const p2)

Here is the call graph for this function:

Here is the caller graph for this function:

G4double G4INCL::CrossSectionsMultiPionsAndResonances::NNToNNEtaExclu ( Particle const *const  particle1,
Particle const *const  particle2 
)
virtual

Cross section for Eta production (exclusive) - NN entrance channel.

Reimplemented from G4INCL::CrossSectionsMultiPions.

Definition at line 777 of file G4INCLCrossSectionsMultiPionsAndResonances.cc.

777  {
778 
779  const G4double ener=KinematicsUtils::totalEnergyInCM(particle1, particle2);
780  const G4int iso=ParticleTable::getIsospin(particle1->getType()) + ParticleTable::getIsospin(particle2->getType());
781 
782  if (iso != 0) {
783  return NNToNNEtaExcluIso(ener, iso);
784  }
785  else {
786  return 0.5*(NNToNNEtaExcluIso(ener, 0)+NNToNNEtaExcluIso(ener, 2));
787  }
788  }
virtual G4double NNToNNEtaExcluIso(const G4double ener, const G4int iso)
Isotopic Cross section for Eta production (exclusive) - NN entrance channel.
int G4int
Definition: G4Types.hh:78
G4int getIsospin(const ParticleType t)
Get the isospin of a particle.
double G4double
Definition: G4Types.hh:76
G4double totalEnergyInCM(Particle const *const p1, Particle const *const p2)

Here is the call graph for this function:

Here is the caller graph for this function:

G4double G4INCL::CrossSectionsMultiPionsAndResonances::NNToNNEtaExcluIso ( const G4double  ener,
const G4int  iso 
)
protectedvirtual

Isotopic Cross section for Eta production (exclusive) - NN entrance channel.

Definition at line 716 of file G4INCLCrossSectionsMultiPionsAndResonances.cc.

716  {
717 
718  const G4double Ecm=0.001*ener;
719  G4double sNNEta; // pp->pp+eta
720  G4double sNNEta1; // np->np+eta
721  G4double sNNEta2; // np->d+eta (d wil be considered as np - How far is this right?)
722 
723  if(Ecm>=2.70555) { // By hand (JCD)
724  sNNEta = -70.1*Ecm + 430.23;
725  }
726  else {
727  sNNEta = -147043.497285*std::pow(Ecm,4) + 1487222.5438123*std::pow(Ecm,3) - 5634399.900744*std::pow(Ecm,2) + 9477290.199378*Ecm - 5972174.353438;
728  }
729 
733  G4double Thr0=0.;
734  if (iso > 0) {
735  Thr0=2.*Mp+Meta;
736  }
737  else if (iso < 0) {
738  Thr0=2.*Mn+Meta;
739  }
740  else {
741  Thr0=Mn+Mp+Meta;
742  }
743 
744  if (sNNEta < 1.e-9 || Ecm < Thr0) sNNEta = 0.; // Thr0: Ecm threshold
745 
746  if (iso != 0) {
747  return sNNEta/1000.; // parameterization in microbarn (not millibarn)!
748  }
749 
750  if(Ecm>=5.5) {
751 // if(Ecm>=4.) {
752 // if(Ecm>=5.) {
753 // sNNEta1 = 3*sNNEta;
754  sNNEta1 = sNNEta;
755  }
756  else if (Ecm>=2.70555) {
757 // sNNEta1 = -577.2757*Ecm + 3125.5683;
758 // sNNEta1 = -646.775*Ecm + 3313.605;
759 // sNNEta1 = -646.775*Ecm + 3313.605;
760 // sNNEta1 = sNNEta*(-4.23*Ecm+17.92); // going from a factor 6.5 (low) to 1 (high) (4.)
761  sNNEta1 = sNNEta*(-1.968187*Ecm+11.82503); // going from a factor 6.5 (low) to 1 (high) (5.5)
762  }
763  else {
764  sNNEta1 = 6.5*sNNEta; // 6.5: ratio pn/pp
765  }
766 // sNNEta1 = 6.5*sNNEta; // 6.5: ratio pn/pp
767 
768  sNNEta2 = -10220.89518466*Ecm*Ecm+51227.30841724*Ecm-64097.96025731;
769  if (sNNEta2 < 0.) sNNEta2=0.;
770 
771  sNNEta = 2*(sNNEta1+sNNEta2)-sNNEta;
772  if (sNNEta < 1.e-9 || Ecm < Thr0) sNNEta = 0.; // Thr0: Ecm threshold
773 
774  return sNNEta/1000.; // parameterization in microbarn (not millibarn)!
775  }
G4double getRealMass(const G4INCL::ParticleType t)
Get particle mass (in MeV/c^2)
double G4double
Definition: G4Types.hh:76

Here is the call graph for this function:

Here is the caller graph for this function:

G4double G4INCL::CrossSectionsMultiPionsAndResonances::NNToNNEtaFourPi ( Particle const *const  part1,
Particle const *const  part2 
)
protectedvirtual

Cross section for direct 4-pion production - NNEta channel.

Definition at line 1049 of file G4INCLCrossSectionsMultiPionsAndResonances.cc.

1049  {
1050  //
1051  // Nucleon-Nucleon producing one eta and four pions
1052  //
1053 
1054  const G4double ener=KinematicsUtils::totalEnergyInCM(particle1, particle2) - 686.987; // 686.987 MeV translation to open pion production in NNEta
1055  if (ener < 2018.563) return 0.;
1056  const G4double s = ener*ener;
1057  const G4int i = ParticleTable::getIsospin(particle1->getType()) + ParticleTable::getIsospin(particle2->getType());
1058  G4double xsinelas;
1059  if (i!=0)
1060  xsinelas=CrossSectionsMultiPions::NNInelasticIso(ener, 2);
1061  else
1063  if (xsinelas <= 1.e-9) return 0.;
1064  G4double ratio=(NNToNNEta(particle1, particle2)-NNToNNEtaExclu(particle1, particle2))/xsinelas;
1065  if(s<6.25E6)
1066  return 0.;
1067  const G4double sigma = NNToNNEta(particle1, particle2) - NNToNNEtaExclu(particle1, particle2) - ratio*(NNToNNEtaOnePiOrDelta(particle1, particle2) + NNToNNEtaTwoPi(particle1, particle2) + NNToNNEtaThreePi(particle1, particle2));
1068  return ((sigma>1.e-9) ? sigma : 0.);
1069  }
virtual G4double NNToNNEtaTwoPi(Particle const *const part1, Particle const *const part2)
Cross section for direct 2-pion production - NNEta channel.
G4double NNInelasticIso(const G4double ener, const G4int iso)
Internal implementation of the isospin dependent NN reaction cross section.
virtual G4double NNToNNEtaOnePiOrDelta(Particle const *const part1, Particle const *const part2)
Cross section for direct 1-pion production - NNEta 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.
int G4int
Definition: G4Types.hh:78
const XML_Char * s
Definition: expat.h:262
virtual G4double NNToNNEtaThreePi(Particle const *const part1, Particle const *const part2)
Cross section for direct 3-pion production - NNEta channel.
G4int getIsospin(const ParticleType t)
Get the isospin of a particle.
double G4double
Definition: G4Types.hh:76
G4double totalEnergyInCM(Particle const *const p1, Particle const *const p2)

Here is the call graph for this function:

Here is the caller graph for this function:

G4double G4INCL::CrossSectionsMultiPionsAndResonances::NNToNNEtaIso ( const G4double  ener,
const G4int  iso 
)
protectedvirtual

Cross section for One (more) pion production - piN entrance channel.

Cross section for Two (more) pion production - piN entrance channel Cross section for Three (more) pion production - piN entrance channel virtual G4double piNThreePi(Particle const * const p1, Particle const * const p2); Isotopic Cross section for Eta production (inclusive) - NN entrance channel

Definition at line 638 of file G4INCLCrossSectionsMultiPionsAndResonances.cc.

638  {
639 
640  const G4double Ecm=0.001*ener;
641  G4double sNNEta; // pp->pp+eta(+X)
642  G4double sNNEta1; // np->np+eta(+X)
643  G4double sNNEta2; // np->d+eta (d wil be considered as np - How far is this right?)
644  G4double x=Ecm*Ecm/5.88;
645 
646  if (Ecm > 5.5) {
647 // if (Ecm > 4) {
648  sNNEta = 2.5*std::pow((x-1.),1.47)*std::pow(x,-1.25)*1000.;
649  }
650  else if(Ecm>2.70555) {
651  sNNEta = 167.68*Ecm*Ecm-528.3*Ecm+442.29; // Mimicking the reduction seen in omega by HADES compared to Sibirtsev (5.5)
652 // sNNEta = 710.1*Ecm*Ecm-3719.7*Ecm+5106.2; // Mimicking the reduction seen in omega by HADES compared to Sibirtsev (4)
653 // sNNEta = 2.5*std::pow((x-1.),1.47)*std::pow(x,-1.25)*1000.*std::exp(-std::pow(Ecm-2.70555,0.2)*0.3020904); //exp to reduce from 1 to 0.7 (2.07555 --> 5)
654  if (sNNEta <= NNToNNEtaExcluIso(ener, 2)*1000.) sNNEta = NNToNNEtaExcluIso(ener, 2)*1000.;
655  }
656 /* if(Ecm>2.70555) {
657  sNNEta = 2.5*std::pow((x-1.),1.47)*std::pow(x,-1.25)*1000.;
658 // sNNEta = 2.5*std::pow((x-1.),1.47)*std::pow(x,-1.25)*1000.*std::exp(-std::pow(Ecm-2.70555,0.2)*0.3020904); //exp to reduce from 1 to 0.7 (2.07555 --> 5)
659  if (sNNEta <= NNToNNEtaExcluIso(ener, 2)*1000.) sNNEta = NNToNNEtaExcluIso(ener, 2)*1000.;
660  }*/
661  else {
662  sNNEta = NNToNNEtaExcluIso(ener, 2)*1000.;
663  }
664 
665  if (sNNEta < 1.e-9) sNNEta = 0.;
666 
667  if (iso != 0) {
668  return sNNEta/1000.; // parameterization in microbarn (not millibarn)!
669  }
670 
671  if(Ecm>=5.5) {
672 // if(Ecm>=4.) {
673 // if(Ecm>=5.) {
674 // sNNEta1 = 3*sNNEta;
675  sNNEta1 = sNNEta;
676  }
677  else if (Ecm>=2.70555) {
678 // sNNEta1 = 2349.400647*Ecm - 4794.192041; // with factor 3
679 // sNNEta1 = 329.2183*Ecm + 671.5123; // with factor 1
680 // sNNEta1 = 26.19086*Ecm + 1491.368; // with factor 1 and pp reduced
681 // sNNEta1 = sNNEta*(-4.23*Ecm+17.92); // going from a factor 6.5 (low) to 1 (high) (4)
682  sNNEta1 = sNNEta*(-1.968187*Ecm+11.82503); // going from a factor 6.5 (low) to 1 (high) (5.5)
683  }
684  else {
685  sNNEta1 = 6.5*sNNEta; // 6.5: ratio pn/pp
686  }
687 // sNNEta1 = 6.5*sNNEta; // 6.5: ratio pn/pp
688 
689  sNNEta2 = -10220.89518466*Ecm*Ecm+51227.30841724*Ecm-64097.96025731;
690  if (sNNEta2 < 0.) sNNEta2=0.;
691 
692  sNNEta = 2*(sNNEta1+sNNEta2)-sNNEta;
693 
697  if (sNNEta < 1.e-9 || Ecm < Mn+Mp+Meta) sNNEta = 0.;
698 
699  return sNNEta/1000.; // parameterization in microbarn (not millibarn)!
700 }
virtual G4double NNToNNEtaExcluIso(const G4double ener, const G4int iso)
Isotopic Cross section for Eta production (exclusive) - NN entrance channel.
G4double getRealMass(const G4INCL::ParticleType t)
Get particle mass (in MeV/c^2)
double G4double
Definition: G4Types.hh:76

Here is the call graph for this function:

Here is the caller graph for this function:

G4double G4INCL::CrossSectionsMultiPionsAndResonances::NNToNNEtaOnePi ( Particle const *const  part1,
Particle const *const  part2 
)
protectedvirtual

Cross section for direct 1-pion production - NNEta channel.

Definition at line 977 of file G4INCLCrossSectionsMultiPionsAndResonances.cc.

977  {
978  // Cross section for nucleon-nucleon producing one eta and one pion
979 
980  const G4int iso=ParticleTable::getIsospin(particle1->getType()) + ParticleTable::getIsospin(particle2->getType());
981  if (iso!=0)
982  return 0.;
983 
984  const G4double ener=KinematicsUtils::totalEnergyInCM(particle1, particle2) - 686.987; // 686.987 MeV translation to open pion production in NNEta (= 2705.55 - 2018.563; 4074595.287720512986=2018.563*2018.563)
985  if (ener < 2018.563) return 0.;
986 
989 
990  return 0.25*(CrossSectionsMultiPions::NNOnePiOrDelta(ener, 0, xsiso0)+ CrossSectionsMultiPions::NNOnePiOrDelta(ener, 2, xsiso2));
991  }
virtual G4double NNOnePiOrDelta(const G4double ener, const G4int iso, const G4double xsiso)
Cross section for direct 1-pion production + delta production - NN entrance channel.
G4double NNInelasticIso(const G4double ener, const G4int iso)
Internal implementation of the isospin dependent NN reaction cross section.
int G4int
Definition: G4Types.hh:78
G4int getIsospin(const ParticleType t)
Get the isospin of a particle.
double G4double
Definition: G4Types.hh:76
G4double totalEnergyInCM(Particle const *const p1, Particle const *const p2)

Here is the call graph for this function:

Here is the caller graph for this function:

G4double G4INCL::CrossSectionsMultiPionsAndResonances::NNToNNEtaOnePiOrDelta ( Particle const *const  part1,
Particle const *const  part2 
)
protectedvirtual

Cross section for direct 1-pion production - NNEta channel.

Definition at line 993 of file G4INCLCrossSectionsMultiPionsAndResonances.cc.

993  {
994  const G4double ener=KinematicsUtils::totalEnergyInCM(particle1, particle2) - 686.987; // 686.987 MeV translation to open pion production in NNEta
995  if (ener < 2018.563) return 0.;
996  const G4int iso=ParticleTable::getIsospin(particle1->getType()) + ParticleTable::getIsospin(particle2->getType());
997 
999  if (iso != 0)
1000  return CrossSectionsMultiPions::NNOnePiOrDelta(ener, iso, xsiso2);
1001  else {
1002  const G4double xsiso0=CrossSectionsMultiPions::NNInelasticIso(ener, 0);
1003  return 0.5*(CrossSectionsMultiPions::NNOnePiOrDelta(ener, 0, xsiso0)+ CrossSectionsMultiPions::NNOnePiOrDelta(ener, 2, xsiso2));
1004  }
1005  }
virtual G4double NNOnePiOrDelta(const G4double ener, const G4int iso, const G4double xsiso)
Cross section for direct 1-pion production + delta production - NN entrance channel.
G4double NNInelasticIso(const G4double ener, const G4int iso)
Internal implementation of the isospin dependent NN reaction cross section.
int G4int
Definition: G4Types.hh:78
G4int getIsospin(const ParticleType t)
Get the isospin of a particle.
double G4double
Definition: G4Types.hh:76
G4double totalEnergyInCM(Particle const *const p1, Particle const *const p2)

Here is the call graph for this function:

Here is the caller graph for this function:

G4double G4INCL::CrossSectionsMultiPionsAndResonances::NNToNNEtaThreePi ( Particle const *const  part1,
Particle const *const  part2 
)
protectedvirtual

Cross section for direct 3-pion production - NNEta channel.

Definition at line 1026 of file G4INCLCrossSectionsMultiPionsAndResonances.cc.

1026  {
1027  //
1028  // Nucleon-Nucleon producing one eta and three pions
1029  //
1030 
1031  const G4double ener=KinematicsUtils::totalEnergyInCM(particle1, particle2) - 686.987; // 686.987 MeV translation to open pion production in NNEta
1032  if (ener < 2018.563) return 0.;
1033  const G4int iso=ParticleTable::getIsospin(particle1->getType()) + ParticleTable::getIsospin(particle2->getType());
1034 
1035 
1036  const G4double xsiso2=CrossSectionsMultiPions::NNInelasticIso(ener, 2);
1037  const G4double xs1pi2=CrossSectionsMultiPions::NNOnePiOrDelta(ener, 2, xsiso2);
1038  const G4double xs2pi2=CrossSectionsMultiPions::NNTwoPi(ener, 2, xsiso2);
1039  if (iso != 0)
1040  return CrossSectionsMultiPions::NNThreePi(ener, 2, xsiso2, xs1pi2, xs2pi2);
1041  else {
1042  const G4double xsiso0=CrossSectionsMultiPions::NNInelasticIso(ener, 0);
1043  const G4double xs1pi0=CrossSectionsMultiPions::NNOnePiOrDelta(ener, 0, xsiso0);
1044  const G4double xs2pi0=CrossSectionsMultiPions::NNTwoPi(ener, 0, xsiso0);
1045  return 0.5*(CrossSectionsMultiPions::NNThreePi(ener, 0, xsiso0, xs1pi0, xs2pi0)+ CrossSectionsMultiPions::NNThreePi(ener, 2, xsiso2, xs1pi2, xs2pi2));
1046  }
1047  }
virtual G4double NNOnePiOrDelta(const G4double ener, const G4int iso, const G4double xsiso)
Cross section for direct 1-pion production + delta production - NN entrance channel.
G4double NNInelasticIso(const G4double ener, const G4int iso)
Internal implementation of the isospin dependent NN reaction cross section.
virtual G4double NNTwoPi(const G4double ener, const G4int iso, const G4double xsiso)
Cross section for direct 2-pion production - NN entrance channel.
int G4int
Definition: G4Types.hh:78
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.
G4int getIsospin(const ParticleType t)
Get the isospin of a particle.
double G4double
Definition: G4Types.hh:76
G4double totalEnergyInCM(Particle const *const p1, Particle const *const p2)

Here is the call graph for this function:

Here is the caller graph for this function:

G4double G4INCL::CrossSectionsMultiPionsAndResonances::NNToNNEtaTwoPi ( Particle const *const  part1,
Particle const *const  part2 
)
protectedvirtual

Cross section for direct 2-pion production - NNEta channel.

Definition at line 1007 of file G4INCLCrossSectionsMultiPionsAndResonances.cc.

1007  {
1008  //
1009  // Nucleon-Nucleon producing one eta and two pions
1010  //
1011  const G4double ener=KinematicsUtils::totalEnergyInCM(particle1, particle2) - 686.987; // 686.987 MeV translation to open pion production in NNEta
1012  if (ener < 2018.563) return 0.;
1013  const G4int iso=ParticleTable::getIsospin(particle1->getType()) + ParticleTable::getIsospin(particle2->getType());
1014 
1015 
1016  const G4double xsiso2=CrossSectionsMultiPions::NNInelasticIso(ener, 2);
1017  if (iso != 0) {
1018  return CrossSectionsMultiPions::NNTwoPi(ener, 2, xsiso2);
1019  }
1020  else {
1021  const G4double xsiso0=CrossSectionsMultiPions::NNInelasticIso(ener, 0);
1022  return 0.5*(CrossSectionsMultiPions::NNTwoPi(ener, 0, xsiso0)+ CrossSectionsMultiPions::NNTwoPi(ener, 2, xsiso2));
1023  }
1024  }
G4double NNInelasticIso(const G4double ener, const G4int iso)
Internal implementation of the isospin dependent NN reaction cross section.
virtual G4double NNTwoPi(const G4double ener, const G4int iso, const G4double xsiso)
Cross section for direct 2-pion production - NN entrance channel.
int G4int
Definition: G4Types.hh:78
G4int getIsospin(const ParticleType t)
Get the isospin of a particle.
double G4double
Definition: G4Types.hh:76
G4double totalEnergyInCM(Particle const *const p1, Particle const *const p2)

Here is the call graph for this function:

Here is the caller graph for this function:

G4double G4INCL::CrossSectionsMultiPionsAndResonances::NNToNNEtaxPi ( const G4int  xpi,
Particle const *const  p1,
Particle const *const  p2 
)
virtual

Cross section for X pion production - NNEta Channel.

Reimplemented from G4INCL::CrossSectionsMultiPions.

Definition at line 1071 of file G4INCLCrossSectionsMultiPionsAndResonances.cc.

1071  {
1072  //
1073  // Nucleon-Nucleon producing one eta and xpi pions
1074  //
1075 // assert(xpi>0 && xpi<=nMaxPiNN);
1076 // assert(particle1->isNucleon() && particle2->isNucleon());
1077 
1078  const G4double ener=KinematicsUtils::totalEnergyInCM(particle1, particle2) - 686.987; // 686.987 MeV translation to open pion production in NNEta
1079  if (ener < 2018.563) return 0.;
1080  const G4int i = ParticleTable::getIsospin(particle1->getType()) + ParticleTable::getIsospin(particle2->getType());
1081  G4double xsinelas;
1082  if (i!=0)
1083  xsinelas=CrossSectionsMultiPions::NNInelasticIso(ener, 2);
1084  else
1086  if (xsinelas <= 1.e-9) return 0.;
1087  G4double ratio=(NNToNNEta(particle1, particle2)-NNToNNEtaExclu(particle1, particle2))/xsinelas;
1088 
1089  if (xpi == 1)
1090  return NNToNNEtaOnePi(particle1, particle2)*ratio;
1091  else if (xpi == 2)
1092  return NNToNNEtaTwoPi(particle1, particle2)*ratio;
1093  else if (xpi == 3)
1094  return NNToNNEtaThreePi(particle1, particle2)*ratio;
1095  else if (xpi == 4)
1096  return NNToNNEtaFourPi(particle1, particle2);
1097  else // should never reach this point
1098  return 0.;
1099  }
virtual G4double NNToNNEtaTwoPi(Particle const *const part1, Particle const *const part2)
Cross section for direct 2-pion production - NNEta channel.
G4double NNInelasticIso(const G4double ener, const G4int iso)
Internal implementation of the isospin dependent NN reaction cross section.
virtual G4double NNToNNEtaFourPi(Particle const *const part1, Particle const *const part2)
Cross section for direct 4-pion production - NNEta channel.
virtual G4double NNToNNEta(Particle const *const particle1, Particle const *const particle2)
Cross section for Eta production (inclusive) - 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 NNToNNEtaExclu(Particle const *const particle1, Particle const *const particle2)
Cross section for Eta production (exclusive) - NN entrance channel.
int G4int
Definition: G4Types.hh:78
virtual G4double NNToNNEtaThreePi(Particle const *const part1, Particle const *const part2)
Cross section for direct 3-pion production - NNEta channel.
G4int getIsospin(const ParticleType t)
Get the isospin of a particle.
double G4double
Definition: G4Types.hh:76
G4double totalEnergyInCM(Particle const *const p1, Particle const *const p2)

Here is the call graph for this function:

G4double G4INCL::CrossSectionsMultiPionsAndResonances::NNToNNOmega ( Particle const *const  particle1,
Particle const *const  particle2 
)
virtual

Cross section for Omega production (inclusive) - NN entrance channel.

Reimplemented from G4INCL::CrossSectionsMultiPions.

Definition at line 825 of file G4INCLCrossSectionsMultiPionsAndResonances.cc.

825  {
826 
827  const G4double ener=KinematicsUtils::totalEnergyInCM(particle1, particle2);
828  const G4int iso=ParticleTable::getIsospin(particle1->getType()) + ParticleTable::getIsospin(particle2->getType());
829 //jcd to be removed
830 // return 0.;
831 //jcd
832  if (iso != 0) {
833  return NNToNNOmegaIso(ener, iso);
834  }
835  else {
836  return 0.5*(NNToNNOmegaIso(ener, 0)+NNToNNOmegaIso(ener, 2));
837  }
838  }
virtual G4double NNToNNOmegaIso(const G4double ener, const G4int iso)
Isotopic Cross section for Omega production (inclusive) - NN entrance channel.
int G4int
Definition: G4Types.hh:78
G4int getIsospin(const ParticleType t)
Get the isospin of a particle.
double G4double
Definition: G4Types.hh:76
G4double totalEnergyInCM(Particle const *const p1, Particle const *const p2)

Here is the call graph for this function:

Here is the caller graph for this function:

G4double G4INCL::CrossSectionsMultiPionsAndResonances::NNToNNOmegaExclu ( Particle const *const  particle1,
Particle const *const  particle2 
)
virtual

Cross section for Omega production (exclusive) - NN entrance channel.

Reimplemented from G4INCL::CrossSectionsMultiPions.

Definition at line 885 of file G4INCLCrossSectionsMultiPionsAndResonances.cc.

885  {
886 //jcd to be removed
887 // return 0.;
888 //jcd
889 
890  const G4double ener=KinematicsUtils::totalEnergyInCM(particle1, particle2);
891  const G4int iso=ParticleTable::getIsospin(particle1->getType()) + ParticleTable::getIsospin(particle2->getType());
892 
893  if (iso != 0) {
894  return NNToNNOmegaExcluIso(ener, iso);
895  }
896  else {
897  return 0.5*(NNToNNOmegaExcluIso(ener, 0)+NNToNNOmegaExcluIso(ener, 2));
898  }
899  }
int G4int
Definition: G4Types.hh:78
virtual G4double NNToNNOmegaExcluIso(const G4double ener, const G4int iso)
Isotopic Cross section for Omega production (exclusive) - NN entrance channel.
G4int getIsospin(const ParticleType t)
Get the isospin of a particle.
double G4double
Definition: G4Types.hh:76
G4double totalEnergyInCM(Particle const *const p1, Particle const *const p2)

Here is the call graph for this function:

Here is the caller graph for this function:

G4double G4INCL::CrossSectionsMultiPionsAndResonances::NNToNNOmegaExcluIso ( const G4double  ener,
const G4int  iso 
)
protectedvirtual

Isotopic Cross section for Omega production (exclusive) - NN entrance channel.

Definition at line 840 of file G4INCLCrossSectionsMultiPionsAndResonances.cc.

840  {
841 
842  const G4double Ecm=0.001*ener;
843  G4double sNNOmega; // pp->pp+eta
844  G4double sNNOmega1; // np->np+eta
845  G4double sthroot=std::sqrt(7.06);
846 
847  if(Ecm>=3.0744) { // By hand (JCD)
848  sNNOmega = 330.*(Ecm-sthroot)/(1.05+std::pow((Ecm-sthroot),2));
849  }
850  else if(Ecm>=2.65854){
851  sNNOmega = -1208.09757*std::pow(Ecm,3) + 10773.3322*std::pow(Ecm,2) - 31661.0223*Ecm + 30728.7241 ;
852  }
853  else {
854  sNNOmega = 0. ;
855  }
856 
860  G4double Thr0=0.;
861  if (iso > 0) {
862  Thr0=2.*Mp+Momega;
863  }
864  else if (iso < 0) {
865  Thr0=2.*Mn+Momega;
866  }
867  else {
868  Thr0=Mn+Mp+Momega;
869  }
870 
871  if (sNNOmega < 1.e-9 || Ecm < Thr0) sNNOmega = 0.; // Thr0: Ecm threshold
872 
873  if (iso != 0) {
874  return sNNOmega/1000.; // parameterization in microbarn (not millibarn)!
875  }
876 
877  sNNOmega1 = 3*sNNOmega; // 3.0: ratio pn/pp
878 
879  sNNOmega = 2*sNNOmega1-sNNOmega;
880  if (sNNOmega < 1.e-9 || Ecm < Thr0) sNNOmega = 0.;
881 
882  return sNNOmega/1000.; // parameterization in microbarn (not millibarn)!
883  }
G4double getRealMass(const G4INCL::ParticleType t)
Get particle mass (in MeV/c^2)
double G4double
Definition: G4Types.hh:76

Here is the call graph for this function:

Here is the caller graph for this function:

G4double G4INCL::CrossSectionsMultiPionsAndResonances::NNToNNOmegaFourPi ( Particle const *const  part1,
Particle const *const  part2 
)
protectedvirtual

Cross section for direct 4-pion production - NNOmega channel.

Definition at line 1193 of file G4INCLCrossSectionsMultiPionsAndResonances.cc.

1193  {
1194  //
1195  // Nucleon-Nucleon producing one omega and four pions
1196  //
1197 //jcd to be removed
1198 // return 0.;
1199 //jcd
1200 
1201  const G4double ener=KinematicsUtils::totalEnergyInCM(particle1, particle2) - 783.437; // 783.437 MeV translation to open pion production in NNOmega
1202  if (ener < 2018.563) return 0.;
1203  const G4double s = ener*ener;
1204  const G4int i = ParticleTable::getIsospin(particle1->getType()) + ParticleTable::getIsospin(particle2->getType());
1205  G4double xsinelas;
1206  if (i!=0)
1207  xsinelas=CrossSectionsMultiPions::NNInelasticIso(ener, 2);
1208  else
1210  if (xsinelas <= 1.e-9) return 0.;
1211  G4double ratio=(NNToNNOmega(particle1, particle2)-NNToNNOmegaExclu(particle1, particle2))/xsinelas;
1212  if(s<6.25E6)
1213  return 0.;
1214  const G4double sigma = NNToNNOmega(particle1, particle2) - NNToNNOmegaExclu(particle1, particle2) - ratio*(NNToNNOmegaOnePiOrDelta(particle1, particle2) + NNToNNOmegaTwoPi(particle1, particle2) + NNToNNOmegaThreePi(particle1, particle2));
1215  return ((sigma>1.e-9) ? sigma : 0.);
1216  }
virtual G4double NNToNNOmegaTwoPi(Particle const *const part1, Particle const *const part2)
Cross section for direct 2-pion production - NNOmega channel.
G4double NNInelasticIso(const G4double ener, const G4int iso)
Internal implementation of the isospin dependent NN reaction cross section.
virtual G4double NNToNNOmegaExclu(Particle const *const particle1, Particle const *const particle2)
Cross section for Omega production (exclusive) - NN entrance channel.
virtual G4double NNToNNOmegaOnePiOrDelta(Particle const *const part1, Particle const *const part2)
Cross section for direct 1-pion production - NNOmega channel.
virtual G4double NNToNNOmega(Particle const *const particle1, Particle const *const particle2)
Cross section for Omega production (inclusive) - NN entrance channel.
int G4int
Definition: G4Types.hh:78
const XML_Char * s
Definition: expat.h:262
virtual G4double NNToNNOmegaThreePi(Particle const *const part1, Particle const *const part2)
Cross section for direct 3-pion production - NNOmega channel.
G4int getIsospin(const ParticleType t)
Get the isospin of a particle.
double G4double
Definition: G4Types.hh:76
G4double totalEnergyInCM(Particle const *const p1, Particle const *const p2)

Here is the call graph for this function:

Here is the caller graph for this function:

G4double G4INCL::CrossSectionsMultiPionsAndResonances::NNToNNOmegaIso ( const G4double  ener,
const G4int  iso 
)
protectedvirtual

Isotopic Cross section for Omega production (inclusive) - NN entrance channel.

Definition at line 791 of file G4INCLCrossSectionsMultiPionsAndResonances.cc.

791  {
792 
793  const G4double Ecm=0.001*ener;
794  G4double sNNOmega; // pp->pp+eta(+X)
795  G4double sNNOmega1; // np->np+eta(+X)
796  G4double x=Ecm*Ecm/7.06;
797 
798  if(Ecm>4.0) {
799  sNNOmega = 2.5*std::pow(x-1, 1.47)*std::pow(x, -1.11) ;
800  }
801  else if(Ecm>2.802) { // 2802 MeV -> threshold to open inclusive (based on multipion threshold and omega mass)
802  sNNOmega = (568.5254*Ecm*Ecm - 2694.045*Ecm + 3106.247)/1000.;
803  if (sNNOmega <= NNToNNOmegaExcluIso(ener, 2)) sNNOmega = NNToNNOmegaExcluIso(ener, 2);
804  }
805  else {
806  sNNOmega = NNToNNOmegaExcluIso(ener, 2);
807  }
808 
809  if (sNNOmega < 1.e-9) sNNOmega = 0.;
810 
811  if (iso != 0) {
812  return sNNOmega;
813  }
814 
815  sNNOmega1 = 3.*sNNOmega; // 3.0: ratio pn/pp (5 from theory; 2 from experiments)
816 
817  sNNOmega = 2.*sNNOmega1-sNNOmega;
818 
819  if (sNNOmega < 1.e-9) sNNOmega = 0.;
820 
821  return sNNOmega;
822  }
virtual G4double NNToNNOmegaExcluIso(const G4double ener, const G4int iso)
Isotopic Cross section for Omega production (exclusive) - NN entrance channel.
double G4double
Definition: G4Types.hh:76

Here is the call graph for this function:

Here is the caller graph for this function:

G4double G4INCL::CrossSectionsMultiPionsAndResonances::NNToNNOmegaOnePi ( Particle const *const  part1,
Particle const *const  part2 
)
protectedvirtual

Cross section for direct 1-pion production - NNOmega channel.

Definition at line 1121 of file G4INCLCrossSectionsMultiPionsAndResonances.cc.

1121  {
1122  // Cross section for nucleon-nucleon producing one omega and one pion
1123 
1124  const G4int iso=ParticleTable::getIsospin(particle1->getType()) + ParticleTable::getIsospin(particle2->getType());
1125  if (iso!=0)
1126  return 0.;
1127 
1128  const G4double ener=KinematicsUtils::totalEnergyInCM(particle1, particle2) - 783.437; // 783.437 MeV translation to open pion production in NNOmega (= 2802. - 2018.563; 4074595.287720512986=2018.563*2018.563)
1129  if (ener < 2018.563) return 0.;
1130 
1131  const G4double xsiso2=CrossSectionsMultiPions::NNInelasticIso(ener, 2);
1132  const G4double xsiso0=CrossSectionsMultiPions::NNInelasticIso(ener, 0);
1133 
1134  return 0.25*(CrossSectionsMultiPions::NNOnePiOrDelta(ener, 0, xsiso0)+ CrossSectionsMultiPions::NNOnePiOrDelta(ener, 2, xsiso2));
1135  }
virtual G4double NNOnePiOrDelta(const G4double ener, const G4int iso, const G4double xsiso)
Cross section for direct 1-pion production + delta production - NN entrance channel.
G4double NNInelasticIso(const G4double ener, const G4int iso)
Internal implementation of the isospin dependent NN reaction cross section.
int G4int
Definition: G4Types.hh:78
G4int getIsospin(const ParticleType t)
Get the isospin of a particle.
double G4double
Definition: G4Types.hh:76
G4double totalEnergyInCM(Particle const *const p1, Particle const *const p2)

Here is the call graph for this function:

Here is the caller graph for this function:

G4double G4INCL::CrossSectionsMultiPionsAndResonances::NNToNNOmegaOnePiOrDelta ( Particle const *const  part1,
Particle const *const  part2 
)
protectedvirtual

Cross section for direct 1-pion production - NNOmega channel.

Definition at line 1137 of file G4INCLCrossSectionsMultiPionsAndResonances.cc.

1137  {
1138  const G4double ener=KinematicsUtils::totalEnergyInCM(particle1, particle2) - 783.437; // 783.437 MeV translation to open pion production in NNOmega
1139  if (ener < 2018.563) return 0.;
1140  const G4int iso=ParticleTable::getIsospin(particle1->getType()) + ParticleTable::getIsospin(particle2->getType());
1141 
1142  const G4double xsiso2=CrossSectionsMultiPions::NNInelasticIso(ener, 2);
1143  if (iso != 0)
1144  return CrossSectionsMultiPions::NNOnePiOrDelta(ener, iso, xsiso2);
1145  else {
1146  const G4double xsiso0=CrossSectionsMultiPions::NNInelasticIso(ener, 0);
1147  return 0.5*(CrossSectionsMultiPions::NNOnePiOrDelta(ener, 0, xsiso0)+ CrossSectionsMultiPions::NNOnePiOrDelta(ener, 2, xsiso2));
1148  }
1149  }
virtual G4double NNOnePiOrDelta(const G4double ener, const G4int iso, const G4double xsiso)
Cross section for direct 1-pion production + delta production - NN entrance channel.
G4double NNInelasticIso(const G4double ener, const G4int iso)
Internal implementation of the isospin dependent NN reaction cross section.
int G4int
Definition: G4Types.hh:78
G4int getIsospin(const ParticleType t)
Get the isospin of a particle.
double G4double
Definition: G4Types.hh:76
G4double totalEnergyInCM(Particle const *const p1, Particle const *const p2)

Here is the call graph for this function:

Here is the caller graph for this function:

G4double G4INCL::CrossSectionsMultiPionsAndResonances::NNToNNOmegaThreePi ( Particle const *const  part1,
Particle const *const  part2 
)
protectedvirtual

Cross section for direct 3-pion production - NNOmega channel.

Definition at line 1170 of file G4INCLCrossSectionsMultiPionsAndResonances.cc.

1170  {
1171  //
1172  // Nucleon-Nucleon producing one omega and three pions
1173  //
1174 
1175  const G4double ener=KinematicsUtils::totalEnergyInCM(particle1, particle2) - 783.437; // 783.437 MeV translation to open pion production in NNOmega
1176  if (ener < 2018.563) return 0.;
1177  const G4int iso=ParticleTable::getIsospin(particle1->getType()) + ParticleTable::getIsospin(particle2->getType());
1178 
1179 
1180  const G4double xsiso2=CrossSectionsMultiPions::NNInelasticIso(ener, 2);
1181  const G4double xs1pi2=CrossSectionsMultiPions::NNOnePiOrDelta(ener, 2, xsiso2);
1182  const G4double xs2pi2=CrossSectionsMultiPions::NNTwoPi(ener, 2, xsiso2);
1183  if (iso != 0)
1184  return CrossSectionsMultiPions::NNThreePi(ener, 2, xsiso2, xs1pi2, xs2pi2);
1185  else {
1186  const G4double xsiso0=CrossSectionsMultiPions::NNInelasticIso(ener, 0);
1187  const G4double xs1pi0=CrossSectionsMultiPions::NNOnePiOrDelta(ener, 0, xsiso0);
1188  const G4double xs2pi0=CrossSectionsMultiPions::NNTwoPi(ener, 0, xsiso0);
1189  return 0.5*(CrossSectionsMultiPions::NNThreePi(ener, 0, xsiso0, xs1pi0, xs2pi0)+ CrossSectionsMultiPions::NNThreePi(ener, 2, xsiso2, xs1pi2, xs2pi2));
1190  }
1191  }
virtual G4double NNOnePiOrDelta(const G4double ener, const G4int iso, const G4double xsiso)
Cross section for direct 1-pion production + delta production - NN entrance channel.
G4double NNInelasticIso(const G4double ener, const G4int iso)
Internal implementation of the isospin dependent NN reaction cross section.
virtual G4double NNTwoPi(const G4double ener, const G4int iso, const G4double xsiso)
Cross section for direct 2-pion production - NN entrance channel.
int G4int
Definition: G4Types.hh:78
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.
G4int getIsospin(const ParticleType t)
Get the isospin of a particle.
double G4double
Definition: G4Types.hh:76
G4double totalEnergyInCM(Particle const *const p1, Particle const *const p2)

Here is the call graph for this function:

Here is the caller graph for this function:

G4double G4INCL::CrossSectionsMultiPionsAndResonances::NNToNNOmegaTwoPi ( Particle const *const  part1,
Particle const *const  part2 
)
protectedvirtual

Cross section for direct 2-pion production - NNOmega channel.

Definition at line 1151 of file G4INCLCrossSectionsMultiPionsAndResonances.cc.

1151  {
1152  //
1153  // Nucleon-Nucleon producing one omega and two pions
1154  //
1155  const G4double ener=KinematicsUtils::totalEnergyInCM(particle1, particle2) - 783.437; // 783.437 MeV translation to open pion production in NNOmega
1156  if (ener < 2018.563) return 0.;
1157  const G4int iso=ParticleTable::getIsospin(particle1->getType()) + ParticleTable::getIsospin(particle2->getType());
1158 
1159 
1160  const G4double xsiso2=CrossSectionsMultiPions::NNInelasticIso(ener, 2);
1161  if (iso != 0) {
1162  return CrossSectionsMultiPions::NNTwoPi(ener, 2, xsiso2);
1163  }
1164  else {
1165  const G4double xsiso0=CrossSectionsMultiPions::NNInelasticIso(ener, 0);
1166  return 0.5*(CrossSectionsMultiPions::NNTwoPi(ener, 0, xsiso0)+ CrossSectionsMultiPions::NNTwoPi(ener, 2, xsiso2));
1167  }
1168  }
G4double NNInelasticIso(const G4double ener, const G4int iso)
Internal implementation of the isospin dependent NN reaction cross section.
virtual G4double NNTwoPi(const G4double ener, const G4int iso, const G4double xsiso)
Cross section for direct 2-pion production - NN entrance channel.
int G4int
Definition: G4Types.hh:78
G4int getIsospin(const ParticleType t)
Get the isospin of a particle.
double G4double
Definition: G4Types.hh:76
G4double totalEnergyInCM(Particle const *const p1, Particle const *const p2)

Here is the call graph for this function:

Here is the caller graph for this function:

G4double G4INCL::CrossSectionsMultiPionsAndResonances::NNToNNOmegaxPi ( const G4int  xpi,
Particle const *const  p1,
Particle const *const  p2 
)
virtual

Cross section for X pion production - NNOmega Channel.

Reimplemented from G4INCL::CrossSectionsMultiPions.

Definition at line 1218 of file G4INCLCrossSectionsMultiPionsAndResonances.cc.

1218  {
1219  //
1220  // Nucleon-Nucleon producing one omega and xpi pions
1221  //
1222 // assert(xpi>0 && xpi<=nMaxPiNN);
1223 // assert(particle1->isNucleon() && particle2->isNucleon());
1224 //jcd to be removed
1225 // return 0.;
1226 //jcd
1227 
1228  const G4double ener=KinematicsUtils::totalEnergyInCM(particle1, particle2) - 783.437; // 783.437 MeV translation to open pion production in NNOmega
1229  if (ener < 2018.563) return 0.;
1230  const G4int i = ParticleTable::getIsospin(particle1->getType()) + ParticleTable::getIsospin(particle2->getType());
1231  G4double xsinelas;
1232  if (i!=0)
1233  xsinelas=CrossSectionsMultiPions::NNInelasticIso(ener, 2);
1234  else
1236  if (xsinelas <= 1.e-9) return 0.;
1237  G4double ratio=(NNToNNOmega(particle1, particle2)-NNToNNOmegaExclu(particle1, particle2))/xsinelas;
1238 
1239  if (xpi == 1)
1240  return NNToNNOmegaOnePi(particle1, particle2)*ratio;
1241  else if (xpi == 2)
1242  return NNToNNOmegaTwoPi(particle1, particle2)*ratio;
1243  else if (xpi == 3)
1244  return NNToNNOmegaThreePi(particle1, particle2)*ratio;
1245  else if (xpi == 4)
1246  return NNToNNOmegaFourPi(particle1, particle2);
1247  else // should never reach this point
1248  return 0.;
1249  }
virtual G4double NNToNNOmegaTwoPi(Particle const *const part1, Particle const *const part2)
Cross section for direct 2-pion production - NNOmega channel.
G4double NNInelasticIso(const G4double ener, const G4int iso)
Internal implementation of the isospin dependent NN reaction cross section.
virtual G4double NNToNNOmegaExclu(Particle const *const particle1, Particle const *const particle2)
Cross section for Omega 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.
int G4int
Definition: G4Types.hh:78
virtual G4double NNToNNOmegaThreePi(Particle const *const part1, Particle const *const part2)
Cross section for direct 3-pion production - NNOmega channel.
G4int getIsospin(const ParticleType t)
Get the isospin of a particle.
virtual G4double NNToNNOmegaFourPi(Particle const *const part1, Particle const *const part2)
Cross section for direct 4-pion production - NNOmega channel.
virtual G4double NNToNNOmegaOnePi(Particle const *const part1, Particle const *const part2)
Cross section for direct 1-pion production - NNOmega channel.
double G4double
Definition: G4Types.hh:76
G4double totalEnergyInCM(Particle const *const p1, Particle const *const p2)

Here is the call graph for this function:

G4double G4INCL::CrossSectionsMultiPionsAndResonances::NNToxPiNN ( const G4int  xpi,
Particle const *const  p1,
Particle const *const  p2 
)
virtual

Cross section for X pion production - NN Channel.

Reimplemented from G4INCL::CrossSectionsMultiPions.

Definition at line 902 of file G4INCLCrossSectionsMultiPionsAndResonances.cc.

902  {
903  //
904  // Nucleon-Nucleon producing xpi pions cross sections
905  //
906 // assert(xpi>0 && xpi<=nMaxPiNN);
907 // assert(particle1->isNucleon() && particle2->isNucleon());
908 
909  G4double oldXS1Pi=CrossSectionsMultiPions::NNToxPiNN(1,particle1, particle2);
910  G4double oldXS2Pi=CrossSectionsMultiPions::NNToxPiNN(2,particle1, particle2);
911  G4double oldXS3Pi=CrossSectionsMultiPions::NNToxPiNN(3,particle1, particle2);
912  G4double oldXS4Pi=CrossSectionsMultiPions::NNToxPiNN(4,particle1, particle2);
913  G4double xsEtaOmega=NNToNNEta(particle1, particle2)+NNToNNOmega(particle1, particle2);
914  G4double newXS1Pi=0.;
915  G4double newXS2Pi=0.;
916  G4double newXS3Pi=0.;
917  G4double newXS4Pi=0.;
918 
919  if (xpi == 1) {
920  if (oldXS4Pi != 0. || oldXS3Pi != 0.)
921  newXS1Pi=oldXS1Pi;
922  else if (oldXS2Pi != 0.) {
923  newXS2Pi=oldXS2Pi-xsEtaOmega;
924  if (newXS2Pi < 0.)
925  newXS1Pi=oldXS1Pi-(xsEtaOmega-oldXS2Pi);
926  else
927  newXS1Pi=oldXS1Pi;
928  }
929  else
930  newXS1Pi=oldXS1Pi-xsEtaOmega;
931  return newXS1Pi;
932  }
933  else if (xpi == 2) {
934  if (oldXS4Pi != 0.)
935  newXS2Pi=oldXS2Pi;
936  else if (oldXS3Pi != 0.) {
937  newXS3Pi=oldXS3Pi-xsEtaOmega;
938  if (newXS3Pi < 0.)
939  newXS2Pi=oldXS2Pi-(xsEtaOmega-oldXS3Pi);
940  else
941  newXS2Pi=oldXS2Pi;
942  }
943  else {
944  newXS2Pi=oldXS2Pi-xsEtaOmega;
945  if (newXS2Pi < 0.)
946  newXS2Pi=0.;
947  }
948  return newXS2Pi;
949  }
950  else if (xpi == 3) {
951  if (oldXS4Pi != 0.) {
952  newXS4Pi=oldXS4Pi-xsEtaOmega;
953  if (newXS4Pi < 0.)
954  newXS3Pi=oldXS3Pi-(xsEtaOmega-oldXS4Pi);
955  else
956  newXS3Pi=oldXS3Pi;
957  }
958  else {
959  newXS3Pi=oldXS3Pi-xsEtaOmega;
960  if (newXS3Pi < 0.)
961  newXS3Pi=0.;
962  }
963  return newXS3Pi;
964  }
965  else if (xpi == 4) {
966  newXS4Pi=oldXS4Pi-xsEtaOmega;
967  if (newXS4Pi < 0.)
968  newXS4Pi=0.;
969  return newXS4Pi;
970  }
971 
972  else // should never reach this point
973  return 0.;
974  }
virtual G4double NNToxPiNN(const G4int xpi, Particle const *const p1, Particle const *const p2)
Cross section for X pion production - NN Channel.
virtual G4double NNToNNEta(Particle const *const particle1, Particle const *const particle2)
Cross section for Eta production (inclusive) - NN entrance channel.
virtual G4double NNToNNOmega(Particle const *const particle1, Particle const *const particle2)
Cross section for Omega production (inclusive) - NN entrance channel.
double G4double
Definition: G4Types.hh:76

Here is the call graph for this function:

G4double G4INCL::CrossSectionsMultiPionsAndResonances::omegaNElastic ( Particle const *const  p1,
Particle const *const  p2 
)
protectedvirtual

Definition at line 404 of file G4INCLCrossSectionsMultiPionsAndResonances.cc.

404  {
405  //
406  // Omega-Nucleon elastic cross sections
407  //
408 // assert((particle1->isNucleon() && particle2->isOmega()) || (particle1->isOmega() && particle2->isNucleon()));
409 
410  G4double sigma=0.;
411 
412  const Particle *omega;
413  const Particle *nucleon;
414 
415  if (particle1->isOmega()) {
416  omega = particle1;
417  nucleon = particle2;
418  }
419  else {
420  omega = particle2;
421  nucleon = particle1;
422  }
423 
424  const G4double pLab = KinematicsUtils::momentumInLab(omega, nucleon)/1000.; // GeV/c
425 
426  sigma = 5.4 + 10.*std::exp(-0.6*pLab); // Eq.(21) in G.I. Lykasov et al., EPJA 6, 71-81 (1999)
427 
428  return sigma;
429  }
G4bool nucleon(G4int ityp)
G4double momentumInLab(Particle const *const p1, Particle const *const p2)
gives the momentum in the lab frame of two particles.
double G4double
Definition: G4Types.hh:76

Here is the call graph for this function:

Here is the caller graph for this function:

G4double G4INCL::CrossSectionsMultiPionsAndResonances::omegaNInelastic ( Particle const *const  p1,
Particle const *const  p2 
)
protectedvirtual

Cross sections for mesonic resonance absorption on nucleon - inelastic Channel.

Definition at line 376 of file G4INCLCrossSectionsMultiPionsAndResonances.cc.

376  {
377  //
378  // Omega-Nucleon inelastic cross sections
379  //
380 // assert((particle1->isNucleon() && particle2->isOmega()) || (particle1->isOmega() && particle2->isNucleon()));
381 
382  G4double sigma=0.;
383 
384  const Particle *omega;
385  const Particle *nucleon;
386 
387  if (particle1->isOmega()) {
388  omega = particle1;
389  nucleon = particle2;
390  }
391  else {
392  omega = particle2;
393  nucleon = particle1;
394  }
395 
396  const G4double pLab = KinematicsUtils::momentumInLab(omega, nucleon)/1000.; // GeV/c
397 
398  sigma = 20. + 4.0/pLab; // Eq.(24) in G.I. Lykasov et al., EPJA 6, 71-81 (1999)
399 
400  return sigma;
401  }
G4bool nucleon(G4int ityp)
G4double momentumInLab(Particle const *const p1, Particle const *const p2)
gives the momentum in the lab frame of two particles.
double G4double
Definition: G4Types.hh:76

Here is the call graph for this function:

Here is the caller graph for this function:

G4double G4INCL::CrossSectionsMultiPionsAndResonances::omegaNToPiN ( Particle const *const  p1,
Particle const *const  p2 
)
virtual

Cross section for OmegaN->PiN.

Reimplemented from G4INCL::CrossSectionsMultiPions.

Definition at line 432 of file G4INCLCrossSectionsMultiPionsAndResonances.cc.

432  {
433  //
434  // Omega-Nucleon producing Pion cross sections
435  //
436 // assert((particle1->isNucleon() && particle2->isOmega()) || (particle1->isOmega() && particle2->isNucleon()));
437 
438  G4double ECM=KinematicsUtils::totalEnergyInCM(particle1, particle2);
439 
443 
444  G4double massomega;
445  G4double massnucleon;
446  G4double pCM_omega;
447  G4double pLab_omega;
448 
449  G4double sigma=0.;
450 
451  if (particle1->isOmega()) {
452  massomega=particle1->getMass();
453  massnucleon=particle2->getMass();
454  }
455  else {
456  massomega=particle2->getMass();
457  massnucleon=particle1->getMass();
458  }
459  pCM_omega=KinematicsUtils::momentumInCM(ECM, massomega, massnucleon);
460  pLab_omega=KinematicsUtils::momentumInLab(ECM*ECM, massomega, massnucleon);
461 
462  G4double pCM_PiZero=KinematicsUtils::momentumInCM(ECM, massPiZero, massProton);
463  G4double pCM_PiMinus=KinematicsUtils::momentumInCM(ECM, massPiMinus, massProton); // = pCM_PiPlus (because massPiMinus = massPiPlus)
464 
465  sigma = (piMinuspToOmegaN(ECM)/2.) * std::pow((pCM_PiZero/pCM_omega), 2)
466  + piMinuspToOmegaN(ECM) * std::pow((pCM_PiMinus/pCM_omega), 2);
467 
468  if (sigma > omegaNInelastic(particle1, particle2) || (pLab_omega < 200.)) {
469 // if (sigma > omegaNInelastic(particle1, particle2)) {
470  sigma = omegaNInelastic(particle1, particle2);
471  }
472 
473  return sigma;
474  }
virtual G4double omegaNInelastic(Particle const *const p1, Particle const *const p2)
Cross sections for mesonic resonance absorption on nucleon - inelastic Channel.
G4double momentumInCM(Particle const *const p1, Particle const *const p2)
gives the momentum in the CM frame of two particles.
G4double getINCLMass(const G4int A, const G4int Z)
Get INCL nuclear mass (in MeV/c^2)
G4double piMinuspToOmegaN(Particle const *const p1, Particle const *const p2)
G4double momentumInLab(Particle const *const p1, Particle const *const p2)
gives the momentum in the lab frame of two particles.
double G4double
Definition: G4Types.hh:76
G4double totalEnergyInCM(Particle const *const p1, Particle const *const p2)

Here is the call graph for this function:

Here is the caller graph for this function:

G4double G4INCL::CrossSectionsMultiPionsAndResonances::omegaNToPiPiN ( Particle const *const  p1,
Particle const *const  p2 
)
protectedvirtual

Cross sections for omega-induced 2Pi emission on nucleon.

Reimplemented from G4INCL::CrossSectionsMultiPions.

Definition at line 477 of file G4INCLCrossSectionsMultiPionsAndResonances.cc.

477  {
478  //
479  // Omega-Nucleon producing 2 PionS cross sections
480  //
481 // assert((particle1->isNucleon() && particle2->isOmega()) || (particle1->isOmega() && particle2->isNucleon()));
482 
483  G4double sigma=0.;
484 
485  sigma = omegaNInelastic(particle1,particle2) - omegaNToPiN(particle1,particle2) ;
486 
487  return sigma;
488  }
virtual G4double omegaNToPiN(Particle const *const p1, Particle const *const p2)
Cross section for OmegaN-&gt;PiN.
virtual G4double omegaNInelastic(Particle const *const p1, Particle const *const p2)
Cross sections for mesonic resonance absorption on nucleon - inelastic Channel.
double G4double
Definition: G4Types.hh:76

Here is the call graph for this function:

G4double G4INCL::CrossSectionsMultiPionsAndResonances::piMinuspToEtaN ( Particle const *const  p1,
Particle const *const  p2 
)
protected

Internal function for pion cross sections.

Definition at line 504 of file G4INCLCrossSectionsMultiPionsAndResonances.cc.

504  {
505  //
506  // Pion-Nucleon producing Eta cross sections
507  //
508 // assert((particle1->isNucleon() && particle2->isPion()) || (particle1->isPion() && particle2->isNucleon()));
509 
510  G4double masspion;
511  G4double massnucleon;
512  if (particle1->isPion()) {
513  masspion=particle1->getMass();
514  massnucleon=particle2->getMass();
515  }
516  else {
517  masspion=particle2->getMass();
518  massnucleon=particle1->getMass();
519  }
520 
521  G4double ECM=KinematicsUtils::totalEnergyInCM(particle1, particle2);
522  G4double plab=KinematicsUtils::momentumInLab(ECM*ECM, masspion, massnucleon)/1000.; // GeV/c
523 
524  G4double sigma;
525 
526 // new parameterization (JCD) - end of february 2016
527  if (ECM < 1486.5) sigma=0.;
528  else
529  {
530  if (ECM < 1535.)
531  {
532  sigma = -0.0000003689197974814*std::pow(ECM,4) + 0.002260193900097*std::pow(ECM,3) - 5.193105877187*std::pow(ECM,2) + 5303.505273919*ECM - 2031265.900648;
533  }
534  else if (ECM < 1670.)
535  {
536  sigma = -0.0000000337986446*std::pow(ECM,4) + 0.000218279989*std::pow(ECM,3) - 0.528276144*std::pow(ECM,2) + 567.828367*ECM - 228709.42;
537  }
538  else if (ECM < 1714.)
539  {
540  sigma = 0.000003737765*std::pow(ECM,2) - 0.005664062*ECM;
541  }
542  else sigma=1.47*std::pow(plab, -1.68);
543  }
544 //
545 
546  return sigma;
547  }
G4double momentumInLab(Particle const *const p1, Particle const *const p2)
gives the momentum in the lab frame of two particles.
double G4double
Definition: G4Types.hh:76
G4double totalEnergyInCM(Particle const *const p1, Particle const *const p2)

Here is the call graph for this function:

Here is the caller graph for this function:

G4double G4INCL::CrossSectionsMultiPionsAndResonances::piMinuspToEtaN ( const G4double  ECM)
protected

Definition at line 549 of file G4INCLCrossSectionsMultiPionsAndResonances.cc.

549  {
550  //
551  // Pion-Nucleon producing Eta cross sections
552  //
553 
554  const G4double masspion = ParticleTable::getRealMass(PiMinus);
555  const G4double massnucleon = ParticleTable::getRealMass(Proton);
556 
557  G4double plab=KinematicsUtils::momentumInLab(ECM*ECM, masspion, massnucleon)/1000.; // GeV/c
558 
559  G4double sigma;
560 
561 // new parameterization (JCD) - end of february 2016
562  if (ECM < 1486.5) sigma=0.;
563  else
564  {
565  if (ECM < 1535.)
566  {
567  sigma = -0.0000003689197974814*std::pow(ECM,4) + 0.002260193900097*std::pow(ECM,3) - 5.193105877187*std::pow(ECM,2) + 5303.505273919*ECM - 2031265.900648;
568  }
569  else if (ECM < 1670.)
570  {
571  sigma = -0.0000000337986446*std::pow(ECM,4) + 0.000218279989*std::pow(ECM,3) - 0.528276144*std::pow(ECM,2) + 567.828367*ECM - 228709.42;
572  }
573  else if (ECM < 1714.)
574  {
575  sigma = 0.000003737765*std::pow(ECM,2) - 0.005664062*ECM;
576  }
577  else sigma=1.47*std::pow(plab, -1.68);
578  }
579 //
580 
581  return sigma;
582  }
G4double getRealMass(const G4INCL::ParticleType t)
Get particle mass (in MeV/c^2)
G4double momentumInLab(Particle const *const p1, Particle const *const p2)
gives the momentum in the lab frame of two particles.
double G4double
Definition: G4Types.hh:76

Here is the call graph for this function:

G4double G4INCL::CrossSectionsMultiPionsAndResonances::piMinuspToOmegaN ( Particle const *const  p1,
Particle const *const  p2 
)
protected

Definition at line 584 of file G4INCLCrossSectionsMultiPionsAndResonances.cc.

584  {
585  //
586  // Pion-Nucleon producing Omega cross sections
587  //
588 // assert((particle1->isNucleon() && particle2->isPion()) || (particle1->isPion() && particle2->isNucleon()));
589 //jcd to be removed
590 // return 0.;
591 //jcd
592 
593 // G4double param=1.095 ; // Deneye (Thesis)
594  G4double param=1.0903 ; // JCD (threshold taken into account)
595 
596  G4double masspion;
597  G4double massnucleon;
598  if (particle1->isPion()) {
599  masspion=particle1->getMass();
600  massnucleon=particle2->getMass();
601  }
602  else {
603  masspion=particle2->getMass();
604  massnucleon=particle1->getMass();
605  }
606  G4double ECM=KinematicsUtils::totalEnergyInCM(particle1, particle2);
607  G4double plab=KinematicsUtils::momentumInLab(ECM*ECM, masspion, massnucleon)/1000.; // GeV/c
608 
609  G4double sigma;
610  if (plab < param) sigma=0.;
611  else sigma=13.76*(plab-param)/(std::pow(plab, 3.33) - 1.07); // Phys. Rev. C 41, 1701–1718 (1990)
612 
613  return sigma;
614 }
G4double momentumInLab(Particle const *const p1, Particle const *const p2)
gives the momentum in the lab frame of two particles.
double G4double
Definition: G4Types.hh:76
G4double totalEnergyInCM(Particle const *const p1, Particle const *const p2)

Here is the call graph for this function:

Here is the caller graph for this function:

G4double G4INCL::CrossSectionsMultiPionsAndResonances::piMinuspToOmegaN ( const G4double  ECM)
protected

Definition at line 615 of file G4INCLCrossSectionsMultiPionsAndResonances.cc.

615  {
616  //
617  // Pion-Nucleon producing Omega cross sections
618  //
619 //jcd to be removed
620 // return 0.;
621 //jcd
622 
623 // G4double param=1.095 ; // Deneye (Thesis)
624  G4double param=1.0903 ; // JCD (threshold taken into account)
625 
626  const G4double masspion = ParticleTable::getRealMass(PiMinus);
627  const G4double massnucleon = ParticleTable::getRealMass(Proton);
628 
629  G4double plab=KinematicsUtils::momentumInLab(ECM*ECM, masspion, massnucleon)/1000.; // GeV/c
630 
631  G4double sigma;
632  if (plab < param) sigma=0.;
633  else sigma=13.76*(plab-param)/(std::pow(plab, 3.33)-1.07);
634 
635  return sigma;
636 }
G4double getRealMass(const G4INCL::ParticleType t)
Get particle mass (in MeV/c^2)
G4double momentumInLab(Particle const *const p1, Particle const *const p2)
gives the momentum in the lab frame of two particles.
double G4double
Definition: G4Types.hh:76

Here is the call graph for this function:

G4double G4INCL::CrossSectionsMultiPionsAndResonances::piNToEtaN ( Particle const *const  p1,
Particle const *const  p2 
)
virtual

Cross sections for mesonic resonance production - piN Channel.

Reimplemented from G4INCL::CrossSectionsMultiPions.

Definition at line 195 of file G4INCLCrossSectionsMultiPionsAndResonances.cc.

195  {
196  //
197  // Pion-Nucleon producing Eta cross sections
198  //
199 // assert((particle1->isNucleon() && particle2->isPion()) || (particle1->isPion() && particle2->isNucleon()));
200 
201  G4double sigma;
202  sigma=piMinuspToEtaN(particle1,particle2);
203 
204  const G4int isoin = ParticleTable::getIsospin(particle1->getType()) + ParticleTable::getIsospin(particle2->getType());
205 
206  if (isoin == -1) {
207  if ((particle1->getType()) == Proton || (particle2->getType()) == Proton) return sigma;
208  else return 0.5 * sigma;
209  }
210  else if (isoin == 1) {
211  if ((particle1->getType()) == Neutron || (particle2->getType()) == Neutron) return sigma;
212  else return 0.5 * sigma;
213  }
214  else return 0. ; // should never return 0. (?)
215 
216 // return sigma;
217  }
int G4int
Definition: G4Types.hh:78
G4int getIsospin(const ParticleType t)
Get the isospin of a particle.
G4double piMinuspToEtaN(Particle const *const p1, Particle const *const p2)
Internal function for pion cross sections.
double G4double
Definition: G4Types.hh:76

Here is the call graph for this function:

Here is the caller graph for this function:

G4double G4INCL::CrossSectionsMultiPionsAndResonances::piNToEtaPrimeN ( Particle const *const  p1,
Particle const *const  p2 
)
virtual

Cross section for PiN->EtaPrimeN.

Reimplemented from G4INCL::CrossSectionsMultiPions.

Definition at line 244 of file G4INCLCrossSectionsMultiPionsAndResonances.cc.

244  {
245 #else
246  G4double CrossSectionsMultiPionsAndResonances::piNToEtaPrimeN(Particle const * const particle1, Particle const * const particle2) {
247 #endif
248  //
249  // Pion-Nucleon producing EtaPrime cross sections
250  //
251 // assert((particle1->isNucleon() && particle2->isPion()) || (particle1->isPion() && particle2->isNucleon()));
252 
253  return 0.;
254  }
virtual G4double piNToEtaPrimeN(Particle const *const p1, Particle const *const p2)
Cross section for PiN-&gt;EtaPrimeN.
double G4double
Definition: G4Types.hh:76
G4double G4INCL::CrossSectionsMultiPionsAndResonances::piNToOmegaN ( Particle const *const  p1,
Particle const *const  p2 
)
virtual

Cross section for PiN->OmegaN.

Reimplemented from G4INCL::CrossSectionsMultiPions.

Definition at line 219 of file G4INCLCrossSectionsMultiPionsAndResonances.cc.

219  {
220  //
221  // Pion-Nucleon producing Omega cross sections
222  //
223 // assert((particle1->isNucleon() && particle2->isPion()) || (particle1->isPion() && particle2->isNucleon()));
224 
225  G4double sigma;
226  sigma=piMinuspToOmegaN(particle1,particle2);
227 
228  const G4int isoin = ParticleTable::getIsospin(particle1->getType()) + ParticleTable::getIsospin(particle2->getType());
229 
230  if (isoin == -1) {
231  if ((particle1->getType()) == Proton || (particle2->getType()) == Proton) return sigma;
232  else return 0.5 * sigma;
233  }
234  else if (isoin == 1) {
235  if ((particle1->getType()) == Neutron || (particle2->getType()) == Neutron) return sigma;
236  else return 0.5 * sigma;
237  }
238  else return 0. ; // should never return 0. (?)
239 
240 // return sigma;
241  }
int G4int
Definition: G4Types.hh:78
G4int getIsospin(const ParticleType t)
Get the isospin of a particle.
G4double piMinuspToOmegaN(Particle const *const p1, Particle const *const p2)
double G4double
Definition: G4Types.hh:76

Here is the call graph for this function:

Here is the caller graph for this function:

G4double G4INCL::CrossSectionsMultiPionsAndResonances::piNToxPiN ( const G4int  xpi,
Particle const *const  p1,
Particle const *const  p2 
)
virtual

Cross section for X pion production - piN Channel (modified due to the mesonic resonances)

Reimplemented from G4INCL::CrossSectionsMultiPions.

Definition at line 137 of file G4INCLCrossSectionsMultiPionsAndResonances.cc.

137  {
138  //
139  // pion-Nucleon producing xpi pions cross sections (corrected due to eta and omega)
140  //
141 // assert(xpi>1 && xpi<=nMaxPiPiN);
142 // assert((particle1->isNucleon() && particle2->isPion()) || (particle1->isPion() && particle2->isNucleon()));
143 
144  const G4double oldXS2Pi=CrossSectionsMultiPions::piNToxPiN(2,particle1, particle2);
145  const G4double oldXS3Pi=CrossSectionsMultiPions::piNToxPiN(3,particle1, particle2);
146  const G4double oldXS4Pi=CrossSectionsMultiPions::piNToxPiN(4,particle1, particle2);
147  const G4double xsEta=piNToEtaN(particle1, particle2);
148  const G4double xsOmega=piNToOmegaN(particle1, particle2);
149  G4double newXS2Pi=0.;
150  G4double newXS3Pi=0.;
151  G4double newXS4Pi=0.;
152 
153  if (xpi == 2) {
154  if (oldXS4Pi != 0.)
155  newXS2Pi=oldXS2Pi;
156  else if (oldXS3Pi != 0.) {
157  newXS3Pi=oldXS3Pi-xsEta-xsOmega;
158  if (newXS3Pi < 1.e-09)
159  newXS2Pi=oldXS2Pi-(xsEta+xsOmega-oldXS3Pi);
160  else
161  newXS2Pi=oldXS2Pi;
162  }
163  else {
164  newXS2Pi=oldXS2Pi-xsEta-xsOmega;
165  if (newXS2Pi < 1.e-09)
166  newXS2Pi=0.;
167  }
168  return newXS2Pi;
169  }
170  else if (xpi == 3) {
171  if (oldXS4Pi != 0.) {
172  newXS4Pi=oldXS4Pi-xsEta-xsOmega;
173  if (newXS4Pi < 1.e-09)
174  newXS3Pi=oldXS3Pi-(xsEta+xsOmega-oldXS4Pi);
175  else
176  newXS3Pi=oldXS3Pi;
177  }
178  else {
179  newXS3Pi=oldXS3Pi-xsEta-xsOmega;
180  if (newXS3Pi < 1.e-09)
181  newXS3Pi=0.;
182  }
183  return newXS3Pi;
184  }
185  else if (xpi == 4) {
186  newXS4Pi=oldXS4Pi-xsEta-xsOmega;
187  if (newXS4Pi < 1.e-09)
188  newXS4Pi=0.;
189  return newXS4Pi;
190  }
191  else // should never reach this point
192  return 0.;
193  }
virtual G4double piNToxPiN(const G4int xpi, Particle const *const p1, Particle const *const p2)
Cross section for X pion production - piN Channel.
virtual G4double piNToOmegaN(Particle const *const p1, Particle const *const p2)
Cross section for PiN-&gt;OmegaN.
double G4double
Definition: G4Types.hh:76
virtual G4double piNToEtaN(Particle const *const p1, Particle const *const p2)
Cross sections for mesonic resonance production - piN Channel.

Here is the call graph for this function:

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

new total particle-particle cross section

Reimplemented from G4INCL::CrossSectionsMultiPions.

Definition at line 91 of file G4INCLCrossSectionsMultiPionsAndResonances.cc.

91  {
92  G4double inelastic;
93  if(p1->isNucleon() && p2->isNucleon()) {
94  return CrossSectionsMultiPions::NNTot(p1, p2);
95  } else if((p1->isNucleon() && p2->isDelta()) ||
96  (p1->isDelta() && p2->isNucleon())) {
97  inelastic = CrossSectionsMultiPions::NDeltaToNN(p1, p2);
98  } else if((p1->isNucleon() && p2->isPion()) ||
99  (p1->isPion() && p2->isNucleon())) {
100  return CrossSectionsMultiPions::piNTot(p1,p2);
101  } else if((p1->isNucleon() && p2->isEta()) ||
102  (p1->isEta() && p2->isNucleon())) {
103  inelastic = etaNToPiN(p1,p2) + etaNToPiPiN(p1,p2);
104  } else if((p1->isNucleon() && p2->isOmega()) ||
105  (p1->isOmega() && p2->isNucleon())) {
106  inelastic = omegaNInelastic(p1,p2);
107  } else if((p1->isNucleon() && p2->isEtaPrime()) ||
108  (p1->isEtaPrime() && p2->isNucleon())) {
109  inelastic = etaPrimeNToPiN(p1,p2);
110  } else {
111  inelastic = 0.;
112  }
113 
114  return inelastic + elastic(p1, p2);
115  }
virtual G4double omegaNInelastic(Particle const *const p1, Particle const *const p2)
Cross sections for mesonic resonance absorption on nucleon - inelastic Channel.
virtual G4double etaNToPiN(Particle const *const p1, Particle const *const p2)
Cross sections for mesonic resonance absorption on nucleon - piN Channel.
virtual G4double etaPrimeNToPiN(Particle const *const p1, Particle const *const p2)
Cross section for EtaPrimeN-&gt;PiN.
G4double NNTot(Particle const *const part1, Particle const *const part2)
Internal implementation of the NN total cross section.
G4double piNTot(Particle const *const p1, Particle const *const p2)
virtual G4double elastic(Particle const *const p1, Particle const *const p2)
new elastic particle-particle cross section
virtual G4double NDeltaToNN(Particle const *const p1, Particle const *const p2)
Cross section for NDelta-&gt;NN.
double G4double
Definition: G4Types.hh:76
virtual G4double etaNToPiPiN(Particle const *const p1, Particle const *const p2)
Cross sections for mesonic resonance absorption on nucleon - pipiN Channel.

Here is the call graph for this function:

Member Data Documentation

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

Maximum number of outgoing pions in NN collisions.

Definition at line 110 of file G4INCLCrossSectionsMultiPionsAndResonances.hh.

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

Maximum number of outgoing pions in piN collisions.

Definition at line 113 of file G4INCLCrossSectionsMultiPionsAndResonances.hh.

const HornerC8 G4INCL::CrossSectionsMultiPionsAndResonances::s01ppHC
protected

Horner coefficients for s01pp.

Definition at line 118 of file G4INCLCrossSectionsMultiPionsAndResonances.hh.

const G4double G4INCL::CrossSectionsMultiPionsAndResonances::s01ppOOT = 0.003421025623481919853
staticprotected

One over threshold for s01pp.

Definition at line 139 of file G4INCLCrossSectionsMultiPionsAndResonances.hh.

const HornerC4 G4INCL::CrossSectionsMultiPionsAndResonances::s01pzHC
protected

Horner coefficients for s01pz.

Definition at line 120 of file G4INCLCrossSectionsMultiPionsAndResonances.hh.

const G4double G4INCL::CrossSectionsMultiPionsAndResonances::s01pzOOT = 0.0035739814152966403123
staticprotected

One over threshold for s01pz.

Definition at line 141 of file G4INCLCrossSectionsMultiPionsAndResonances.hh.

const HornerC6 G4INCL::CrossSectionsMultiPionsAndResonances::s02pmHC
protected

Horner coefficients for s02pm.

Definition at line 132 of file G4INCLCrossSectionsMultiPionsAndResonances.hh.

const G4double G4INCL::CrossSectionsMultiPionsAndResonances::s02pmOOT = 0.0016661112962345883443
staticprotected

One over threshold for s02pm.

Definition at line 153 of file G4INCLCrossSectionsMultiPionsAndResonances.hh.

const HornerC4 G4INCL::CrossSectionsMultiPionsAndResonances::s02pzHC
protected

Horner coefficients for s02pz.

Definition at line 130 of file G4INCLCrossSectionsMultiPionsAndResonances.hh.

const G4double G4INCL::CrossSectionsMultiPionsAndResonances::s02pzOOT = 0.00125
staticprotected

One over threshold for s02pz.

Definition at line 151 of file G4INCLCrossSectionsMultiPionsAndResonances.hh.

const HornerC4 G4INCL::CrossSectionsMultiPionsAndResonances::s11pmHC
protected

Horner coefficients for s11pm.

Definition at line 122 of file G4INCLCrossSectionsMultiPionsAndResonances.hh.

const G4double G4INCL::CrossSectionsMultiPionsAndResonances::s11pmOOT = 0.0034855350296270480281
staticprotected

One over threshold for s11pm.

Definition at line 143 of file G4INCLCrossSectionsMultiPionsAndResonances.hh.

const HornerC7 G4INCL::CrossSectionsMultiPionsAndResonances::s11pzHC
protected

Horner coefficients for s11pz.

Definition at line 116 of file G4INCLCrossSectionsMultiPionsAndResonances.hh.

const G4double G4INCL::CrossSectionsMultiPionsAndResonances::s11pzOOT = 0.0035761542037692665889
staticprotected

One over threshold for s11pz.

Definition at line 137 of file G4INCLCrossSectionsMultiPionsAndResonances.hh.

const HornerC4 G4INCL::CrossSectionsMultiPionsAndResonances::s12mzHC
protected

Horner coefficients for s12mz.

Definition at line 134 of file G4INCLCrossSectionsMultiPionsAndResonances.hh.

const G4double G4INCL::CrossSectionsMultiPionsAndResonances::s12mzOOT = 0.0017047391749062392793
staticprotected

One over threshold for s12mz.

Definition at line 155 of file G4INCLCrossSectionsMultiPionsAndResonances.hh.

const HornerC5 G4INCL::CrossSectionsMultiPionsAndResonances::s12pmHC
protected

Horner coefficients for s12pm.

Definition at line 124 of file G4INCLCrossSectionsMultiPionsAndResonances.hh.

const G4double G4INCL::CrossSectionsMultiPionsAndResonances::s12pmOOT = 0.0016672224074691565119
staticprotected

One over threshold for s12pm.

Definition at line 145 of file G4INCLCrossSectionsMultiPionsAndResonances.hh.

const HornerC3 G4INCL::CrossSectionsMultiPionsAndResonances::s12ppHC
protected

Horner coefficients for s12pp.

Definition at line 126 of file G4INCLCrossSectionsMultiPionsAndResonances.hh.

const G4double G4INCL::CrossSectionsMultiPionsAndResonances::s12ppOOT = 0.0016507643038726931312
staticprotected

One over threshold for s12pp.

Definition at line 147 of file G4INCLCrossSectionsMultiPionsAndResonances.hh.

const HornerC4 G4INCL::CrossSectionsMultiPionsAndResonances::s12zzHC
protected

Horner coefficients for s12zz.

Definition at line 128 of file G4INCLCrossSectionsMultiPionsAndResonances.hh.

const G4double G4INCL::CrossSectionsMultiPionsAndResonances::s12zzOOT = 0.0011111111111111111111
staticprotected

One over threshold for s12zz.

Definition at line 149 of file G4INCLCrossSectionsMultiPionsAndResonances.hh.


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