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

Cross sections used in INCL4.6. More...

#include <G4INCLCrossSectionsINCL46.hh>

+ Inheritance diagram for G4INCL::CrossSectionsINCL46:

Public Member Functions

virtual G4double elastic (Particle const *const p1, Particle const *const p2)
 Elastic particle-particle cross section.
 
virtual G4double total (Particle const *const p1, Particle const *const p2)
 Total (elastic+inelastic) particle-particle cross section.
 
virtual G4double NDeltaToNN (Particle const *const p1, Particle const *const p2)
 Cross section for NDelta->NN.
 
virtual G4double NNToNDelta (Particle const *const p1, Particle const *const p2)
 Cross section for NN->NDelta.
 
virtual G4double piNToDelta (Particle const *const p1, Particle const *const p2)
 Cross section for piN->NDelta.
 
virtual G4double NNToxPiNN (const G4int xpi, Particle const *const p1, Particle const *const p2)
 Cross section for X pion production - NN Channel.
 
virtual G4double piNToxPiN (const G4int xpi, Particle const *const p1, Particle const *const p2)
 Cross section for X pion production - piN Channel.
 
virtual G4double piNToEtaN (Particle const *const p1, Particle const *const p2)
 Cross sections for mesonic resonance production - piN Channel.
 
virtual G4double piNToOmegaN (Particle const *const p1, Particle const *const p2)
 Cross section for PiN->OmegaN.
 
virtual G4double piNToEtaPrimeN (Particle const *const p1, Particle const *const p2)
 Cross section for PiN->EtaPrimeN.
 
virtual G4double etaNToPiN (Particle const *const p1, Particle const *const p2)
 Cross sections for mesonic resonance absorption on nucleons - piN Channel.
 
virtual G4double omegaNToPiN (Particle const *const p1, Particle const *const p2)
 Cross section for OmegaN->PiN.
 
virtual G4double etaPrimeNToPiN (Particle const *const p1, Particle const *const p2)
 Cross section for EtaPrimeN->PiN.
 
virtual G4double etaNToPiPiN (Particle const *const p1, Particle const *const p2)
 Cross sections for mesonic resonance absorption on nucleon - pipiN Channel.
 
virtual G4double omegaNToPiPiN (Particle const *const p1, Particle const *const p2)
 Cross section for OmegaN->PiPiN.
 
virtual G4double NNToNNEta (Particle const *const p1, Particle const *const p2)
 Cross section for Eta production - NN entrance channel.
 
virtual G4double NNToNNEtaExclu (Particle const *const p1, Particle const *const p2)
 Cross section for Eta production (exclusive) - NN entrance channel.
 
virtual G4double NNToNNEtaxPi (const G4int xpi, Particle const *const p1, Particle const *const p2)
 Cross section for X pion production - NNEta Channel.
 
virtual G4double NNToNDeltaEta (Particle const *const p1, Particle const *const p2)
 Cross section for N-Delta-Eta production - NNEta Channel.
 
virtual G4double NYelastic (Particle const *const p1, Particle const *const p2)
 elastic scattering for Nucleon-Strange Particles cross sections
 
virtual G4double NKbelastic (Particle const *const p1, Particle const *const p2)
 
virtual G4double NKelastic (Particle const *const p1, Particle const *const p2)
 
virtual G4double NNToNLK (Particle const *const p1, Particle const *const p2)
 Nucleon-Nucleon to Stange particles cross sections.
 
virtual G4double NNToNSK (Particle const *const p1, Particle const *const p2)
 
virtual G4double NNToNLKpi (Particle const *const p1, Particle const *const p2)
 
virtual G4double NNToNSKpi (Particle const *const p1, Particle const *const p2)
 
virtual G4double NNToNLK2pi (Particle const *const p1, Particle const *const p2)
 
virtual G4double NNToNSK2pi (Particle const *const p1, Particle const *const p2)
 
virtual G4double NNToNNKKb (Particle const *const p1, Particle const *const p2)
 
virtual G4double NNToMissingStrangeness (Particle const *const p1, Particle const *const p2)
 
virtual G4double NDeltaToNLK (Particle const *const p1, Particle const *const p2)
 Nucleon-Delta to Stange particles cross sections.
 
virtual G4double NDeltaToNSK (Particle const *const p1, Particle const *const p2)
 
virtual G4double NDeltaToDeltaLK (Particle const *const p1, Particle const *const p2)
 
virtual G4double NDeltaToDeltaSK (Particle const *const p1, Particle const *const p2)
 
virtual G4double NDeltaToNNKKb (Particle const *const p1, Particle const *const p2)
 
virtual G4double NpiToLK (Particle const *const p1, Particle const *const p2)
 Nucleon-Pion to Stange particles cross sections.
 
virtual G4double NpiToSK (Particle const *const p1, Particle const *const p2)
 
virtual G4double p_pimToSzKz (Particle const *const p1, Particle const *const p2)
 
virtual G4double p_pimToSmKp (Particle const *const p1, Particle const *const p2)
 
virtual G4double p_pizToSzKp (Particle const *const p1, Particle const *const p2)
 
virtual G4double NpiToLKpi (Particle const *const p1, Particle const *const p2)
 
virtual G4double NpiToSKpi (Particle const *const p1, Particle const *const p2)
 
virtual G4double NpiToLK2pi (Particle const *const p1, Particle const *const p2)
 
virtual G4double NpiToSK2pi (Particle const *const p1, Particle const *const p2)
 
virtual G4double NpiToNKKb (Particle const *const p1, Particle const *const p2)
 
virtual G4double NpiToMissingStrangeness (Particle const *const p1, Particle const *const p2)
 
virtual G4double NLToNS (Particle const *const p1, Particle const *const p2)
 Nucleon-Hyperon cross sections.
 
virtual G4double NSToNL (Particle const *const p1, Particle const *const p2)
 
virtual G4double NSToNS (Particle const *const p1, Particle const *const p2)
 
virtual G4double NKToNK (Particle const *const p1, Particle const *const p2)
 Nucleon-Kaon inelastic cross sections.
 
virtual G4double NKToNKpi (Particle const *const p1, Particle const *const p2)
 
virtual G4double NKToNK2pi (Particle const *const p1, Particle const *const p2)
 
virtual G4double NKbToNKb (Particle const *const p1, Particle const *const p2)
 Nucleon-antiKaon inelastic cross sections.
 
virtual G4double NKbToSpi (Particle const *const p1, Particle const *const p2)
 
virtual G4double NKbToLpi (Particle const *const p1, Particle const *const p2)
 
virtual G4double NKbToS2pi (Particle const *const p1, Particle const *const p2)
 
virtual G4double NKbToL2pi (Particle const *const p1, Particle const *const p2)
 
virtual G4double NKbToNKbpi (Particle const *const p1, Particle const *const p2)
 
virtual G4double NKbToNKb2pi (Particle const *const p1, Particle const *const p2)
 
virtual G4double NNToNNOmega (Particle const *const particle1, Particle const *const particle2)
 Cross section for Eta production - NN entrance channel.
 
virtual G4double NNToNNOmegaExclu (Particle const *const particle1, Particle const *const particle2)
 Cross section for Eta production (exclusive) - NN entrance channel.
 
virtual G4double NNToNNOmegaxPi (const G4int xpi, Particle const *const p1, Particle const *const p2)
 Cross section for X pion production - NNEta Channel.
 
virtual G4double NNToNDeltaOmega (Particle const *const p1, Particle const *const p2)
 Cross section for N-Delta-Eta production - NNEta Channel.
 
virtual G4double calculateNNAngularSlope (G4double energyCM, G4int iso)
 Calculate the slope of the NN DDXS.
 
- Public Member Functions inherited from G4INCL::ICrossSections
 ICrossSections ()
 
virtual ~ICrossSections ()
 
virtual G4double elastic (Particle const *const p1, Particle const *const p2)=0
 Elastic particle-particle cross section.
 
virtual G4double total (Particle const *const p1, Particle const *const p2)=0
 Total (elastic+inelastic) particle-particle cross section.
 
virtual G4double NDeltaToNN (Particle const *const p1, Particle const *const p2)=0
 Cross section for NDelta->NN.
 
virtual G4double NNToNDelta (Particle const *const p1, Particle const *const p2)=0
 Cross section for NN->NDelta.
 
virtual G4double NNToxPiNN (const G4int xpi, Particle const *const p1, Particle const *const p2)=0
 Cross section for NN->xpiN.
 
virtual G4double piNToDelta (Particle const *const p1, Particle const *const p2)=0
 Cross section for piN->NDelta.
 
virtual G4double piNToxPiN (const G4int xpi, Particle const *const p1, Particle const *const p2)=0
 Cross section for piN->piNpi.
 
virtual G4double piNToEtaN (Particle const *const p1, Particle const *const p2)=0
 Cross section for PiN->EtaN.
 
virtual G4double piNToOmegaN (Particle const *const p1, Particle const *const p2)=0
 Cross section for PiN->OmegaN.
 
virtual G4double piNToEtaPrimeN (Particle const *const p1, Particle const *const p2)=0
 Cross section for PiN->EtaPrimeN.
 
virtual G4double etaNToPiN (Particle const *const p1, Particle const *const p2)=0
 Cross section for EtaN->PiN.
 
virtual G4double etaNToPiPiN (Particle const *const p1, Particle const *const p2)=0
 Cross section for EtaN->PiPiN.
 
virtual G4double omegaNToPiN (Particle const *const p1, Particle const *const p2)=0
 Cross section for OmegaN->PiN.
 
virtual G4double omegaNToPiPiN (Particle const *const p1, Particle const *const p2)=0
 Cross section for OmegaN->PiPiN.
 
virtual G4double etaPrimeNToPiN (Particle const *const p1, Particle const *const p2)=0
 Cross section for EtaPrimeN->PiN.
 
virtual G4double NNToNNEta (Particle const *const p1, Particle const *const p2)=0
 Cross section for NN->NNEta (inclusive)
 
virtual G4double NNToNNEtaExclu (Particle const *const p1, Particle const *const p2)=0
 Cross section for NN->NNEta (exclusive)
 
virtual G4double NNToNNEtaxPi (const G4int xpi, Particle const *const p1, Particle const *const p2)=0
 Cross section for NN->NNEtaxPi.
 
virtual G4double NNToNDeltaEta (Particle const *const p1, Particle const *const p2)=0
 Cross section for N-Delta-Eta production - NNEta Channel.
 
virtual G4double NNToNNOmega (Particle const *const p1, Particle const *const p2)=0
 Cross section for NN->NNEta (inclusive)
 
virtual G4double NNToNNOmegaExclu (Particle const *const p1, Particle const *const p2)=0
 Cross section for NN->NNEta (exclusive)
 
virtual G4double NNToNNOmegaxPi (const G4int xpi, Particle const *const p1, Particle const *const p2)=0
 Cross section for NN->NNEtaxPi.
 
virtual G4double NNToNDeltaOmega (Particle const *const p1, Particle const *const p2)=0
 Cross section for N-Delta-Eta production - NNEta Channel.
 
virtual G4double NYelastic (Particle const *const p1, Particle const *const p2)=0
 elastic scattering for Nucleon-Strange Particles cross sections
 
virtual G4double NKbelastic (Particle const *const p1, Particle const *const p2)=0
 
virtual G4double NKelastic (Particle const *const p1, Particle const *const p2)=0
 
virtual G4double NNToNLK (Particle const *const p1, Particle const *const p2)=0
 Nucleon-Nucleon to Stange particles cross sections.
 
virtual G4double NNToNSK (Particle const *const p1, Particle const *const p2)=0
 
virtual G4double NNToNLKpi (Particle const *const p1, Particle const *const p2)=0
 
virtual G4double NNToNSKpi (Particle const *const p1, Particle const *const p2)=0
 
virtual G4double NNToNLK2pi (Particle const *const p1, Particle const *const p2)=0
 
virtual G4double NNToNSK2pi (Particle const *const p1, Particle const *const p2)=0
 
virtual G4double NNToNNKKb (Particle const *const p1, Particle const *const p2)=0
 
virtual G4double NNToMissingStrangeness (Particle const *const p1, Particle const *const p2)=0
 
virtual G4double NDeltaToNLK (Particle const *const p1, Particle const *const p2)=0
 Nucleon-Delta to Stange particles cross sections.
 
virtual G4double NDeltaToNSK (Particle const *const p1, Particle const *const p2)=0
 
virtual G4double NDeltaToDeltaLK (Particle const *const p1, Particle const *const p2)=0
 
virtual G4double NDeltaToDeltaSK (Particle const *const p1, Particle const *const p2)=0
 
virtual G4double NDeltaToNNKKb (Particle const *const p1, Particle const *const p2)=0
 
virtual G4double NpiToLK (Particle const *const p1, Particle const *const p2)=0
 Nucleon-Pion to Stange particles cross sections.
 
virtual G4double NpiToSK (Particle const *const p1, Particle const *const p2)=0
 
virtual G4double p_pimToSzKz (Particle const *const p1, Particle const *const p2)=0
 
virtual G4double p_pimToSmKp (Particle const *const p1, Particle const *const p2)=0
 
virtual G4double p_pizToSzKp (Particle const *const p1, Particle const *const p2)=0
 
virtual G4double NpiToLKpi (Particle const *const p1, Particle const *const p2)=0
 
virtual G4double NpiToSKpi (Particle const *const p1, Particle const *const p2)=0
 
virtual G4double NpiToLK2pi (Particle const *const p1, Particle const *const p2)=0
 
virtual G4double NpiToSK2pi (Particle const *const p1, Particle const *const p2)=0
 
virtual G4double NpiToNKKb (Particle const *const p1, Particle const *const p2)=0
 
virtual G4double NpiToMissingStrangeness (Particle const *const p1, Particle const *const p2)=0
 
virtual G4double NLToNS (Particle const *const p1, Particle const *const p2)=0
 Nucleon-Hyperon cross sections.
 
virtual G4double NSToNL (Particle const *const p1, Particle const *const p2)=0
 
virtual G4double NSToNS (Particle const *const p1, Particle const *const p2)=0
 
virtual G4double NKToNK (Particle const *const p1, Particle const *const p2)=0
 Nucleon-Kaon inelastic cross sections.
 
virtual G4double NKToNKpi (Particle const *const p1, Particle const *const p2)=0
 
virtual G4double NKToNK2pi (Particle const *const p1, Particle const *const p2)=0
 
virtual G4double NKbToNKb (Particle const *const p1, Particle const *const p2)=0
 Nucleon-antiKaon inelastic cross sections.
 
virtual G4double NKbToSpi (Particle const *const p1, Particle const *const p2)=0
 
virtual G4double NKbToLpi (Particle const *const p1, Particle const *const p2)=0
 
virtual G4double NKbToS2pi (Particle const *const p1, Particle const *const p2)=0
 
virtual G4double NKbToL2pi (Particle const *const p1, Particle const *const p2)=0
 
virtual G4double NKbToNKbpi (Particle const *const p1, Particle const *const p2)=0
 
virtual G4double NKbToNKb2pi (Particle const *const p1, Particle const *const p2)=0
 
virtual G4double calculateNNAngularSlope (G4double energyCM, G4int iso)=0
 Calculate the slope of the NN DDXS.
 

Protected Member Functions

G4double elasticNNLegacy (Particle const *const part1, Particle const *const part2)
 Internal implementation of the elastic cross section.
 
G4double deltaProduction (const G4int isospin, const G4double pLab)
 Internal function for the delta-production cross section.
 
G4double spnPiPlusPHE (const G4double x)
 
G4double spnPiMinusPHE (const G4double x)
 

Detailed Description

Cross sections used in INCL4.6.

Definition at line 53 of file G4INCLCrossSectionsINCL46.hh.

Member Function Documentation

◆ calculateNNAngularSlope()

G4double G4INCL::CrossSectionsINCL46::calculateNNAngularSlope ( G4double  energyCM,
G4int  iso 
)
virtual

Calculate the slope of the NN DDXS.

Parameters
energyCMenergy in the CM frame, in MeV
isototal isospin of the system
Returns
the slope of the angular distribution

Implements G4INCL::ICrossSections.

Definition at line 345 of file G4INCLCrossSectionsINCL46.cc.

345 {
346 G4double x = 0.001 * pl; // Change to GeV
347 if(iso != 0) {
348 if(pl <= 2000.0) {
349 x = std::pow(x, 8);
350 return 5.5e-6 * x/(7.7 + x);
351 } else {
352 return (5.34 + 0.67*(x - 2.0)) * 1.0e-6;
353 }
354 } else {
355 if(pl < 800.0) {
356 G4double b = (7.16 - 1.63*x) * 1.0e-6;
357 return b/(1.0 + std::exp(-(x - 0.45)/0.05));
358 } else if(pl < 1100.0) {
359 return (9.87 - 4.88 * x) * 1.0e-6;
360 } else {
361 return (3.68 + 0.76*x) * 1.0e-6;
362 }
363 }
364 return 0.0; // Should never reach this point
365 }
double G4double
Definition: G4Types.hh:83

◆ deltaProduction()

G4double G4INCL::CrossSectionsINCL46::deltaProduction ( const G4int  isospin,
const G4double  pLab 
)
protected

Internal function for the delta-production cross section.

Definition at line 149 of file G4INCLCrossSectionsINCL46.cc.

149 {
150 G4double xs = 0.0;
151// assert(isospin==-2 || isospin==0 || isospin==2);
152
153 const G4double momentumGeV = 0.001 * pLab;
154 if(pLab < 800.0) {
155 return 0.0;
156 }
157
158 if(isospin==2 || isospin==-2) { // pp, nn
159 if(pLab >= 2000.0) {
160 xs = (41.0 + (60.0*momentumGeV - 54.0)*std::exp(-1.2*momentumGeV) - 77.0/(momentumGeV + 1.5));
161 } else if(pLab >= 1500.0 && pLab < 2000.0) {
162 xs = (41.0 + 60.0*(momentumGeV - 0.9)*std::exp(-1.2*momentumGeV) - 1250.0/(momentumGeV+50.0)+ 4.0*std::pow(momentumGeV - 1.3, 2));
163 } else if(pLab < 1500.0) {
164 xs = (23.5 + 24.6/(1.0 + std::exp(-10.0*momentumGeV + 12.0))
165 -1250.0/(momentumGeV +50.0)+4.0*std::pow(momentumGeV - 1.3,2));
166 }
167 } else if(isospin==0) { // pn
168 if(pLab >= 2000.0) {
169 xs = (42.0 - 77.0/(momentumGeV + 1.5));
170 } else if(pLab >= 1000.0 && pLab < 2000.0) {
171 xs = (24.2 + 8.9*momentumGeV - 31.1/std::sqrt(momentumGeV));
172 } else if(pLab < 1000.0) {
173 xs = (33.0 + 196.0*std::sqrt(std::pow(std::abs(momentumGeV - 0.95),5))
174 -31.1/std::sqrt(momentumGeV));
175 }
176 }
177
178 if(xs < 0.0) return 0.0;
179 else return xs;
180 }

Referenced by NDeltaToNN(), and NNToNDelta().

◆ elastic()

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

Elastic particle-particle cross section.

Implements G4INCL::ICrossSections.

Definition at line 336 of file G4INCLCrossSectionsINCL46.cc.

336 {
337// if(!p1->isPion() && !p2->isPion())
338 if((p1->isNucleon()||p1->isDelta()) && (p2->isNucleon()||p2->isDelta()))
339 // return elasticNN(p1, p2); // New implementation
340 return elasticNNLegacy(p1, p2); // Translated from INCL4.6 FORTRAN
341 else
342 return 0.0; // No pion-nucleon elastic scattering
343 }
G4double elasticNNLegacy(Particle const *const part1, Particle const *const part2)
Internal implementation of the elastic cross section.

Referenced by total().

◆ elasticNNLegacy()

G4double G4INCL::CrossSectionsINCL46::elasticNNLegacy ( Particle const *const  part1,
Particle const *const  part2 
)
protected

Internal implementation of the elastic cross section.

Definition at line 92 of file G4INCLCrossSectionsINCL46.cc.

92 {
93
94
95 G4int i = ParticleTable::getIsospin(part1->getType())
96 + ParticleTable::getIsospin(part2->getType());
97
98 /* The NN cross section is parametrised as a function of the lab momentum
99 * of one of the nucleons. For NDelta or DeltaDelta, the physical
100 * assumption is that the cross section is the same as NN *for the same
101 * total CM energy*. Thus, we calculate s from the particles involved, and
102 * we convert this value to the lab momentum of a nucleon *as if this were
103 * an NN collision*.
104 */
105
106 const G4double s = KinematicsUtils::squareTotalEnergyInCM(part1, part2);
108 if(plab > 2.) { // NN, Delta-Nucleon and Delta-Delta for plab > 2.0 GeV
109 return 77./(plab+1.5);
110 }
111 else if (part1->isNucleon() && part2->isNucleon()){ // NN
112 if (i == 0) { // pn
113 if (plab < 0.450) {
114 G4double alp=std::log(plab);
115 return 6.3555*std::exp(-3.2481*alp-0.377*alp*alp);
116 }
117 else if (plab < 0.800) {
118 return (33.+196.*std::sqrt(std::pow(std::abs(plab-0.95),5)));
119 }
120 else {
121 return 31./std::sqrt(plab);
122 }
123 }
124 else { // nn and pp
125 if (plab < 0.440) {
126 return 34.*std::pow(plab/0.4, (-2.104));
127 }
128 else if (plab < 0.800) {
129 return (23.5+1000.*std::pow(plab-0.7, 4));
130 }
131 else {
132 return (1250./(50.+plab)-4.*std::pow(plab-1.3, 2));
133 }
134 }
135 }
136 else { // Delta-Nucleon and Delta-Delta
137 if (plab < 0.440) {
138 return 34.*std::pow(plab/0.4, (-2.104));
139 }
140 else if (plab < 0.800) {
141 return (23.5+1000.*std::pow(plab-0.7, 4));
142 }
143 else {
144 return (1250./(50.+plab)-4.*std::pow(plab-1.3, 2));
145 }
146 }
147 }
int G4int
Definition: G4Types.hh:85
G4double squareTotalEnergyInCM(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.
G4int getIsospin(const ParticleType t)
Get the isospin of a particle.
const G4double effectiveNucleonMass

Referenced by elastic().

◆ etaNToPiN()

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

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

Implements G4INCL::ICrossSections.

Definition at line 397 of file G4INCLCrossSectionsINCL46.cc.

397 {
398 //
399 // Eta-Nucleon producing Pion cross sections
400 //
401 return 0.;
402 }

◆ etaNToPiPiN()

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

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

Implements G4INCL::ICrossSections.

Definition at line 405 of file G4INCLCrossSectionsINCL46.cc.

405 {
406 //
407 // Eta-Nucleon producing Two Pions cross sections
408 //
409 return 0.;
410 }

◆ etaPrimeNToPiN()

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

Cross section for EtaPrimeN->PiN.

Implements G4INCL::ICrossSections.

Definition at line 426 of file G4INCLCrossSectionsINCL46.cc.

426 {
427 //
428 // EtaPrime-Nucleon producing Pion cross sections
429 //
430 return 0.;
431 }

◆ NDeltaToDeltaLK()

G4double G4INCL::CrossSectionsINCL46::NDeltaToDeltaLK ( Particle const *const  p1,
Particle const *const  p2 
)
virtual

Implements G4INCL::ICrossSections.

Definition at line 570 of file G4INCLCrossSectionsINCL46.cc.

570 {
571 // Nucleon-Delta producing Delta Lambda Kaon cross section
572 return 0;
573 }

◆ NDeltaToDeltaSK()

G4double G4INCL::CrossSectionsINCL46::NDeltaToDeltaSK ( Particle const *const  p1,
Particle const *const  p2 
)
virtual

Implements G4INCL::ICrossSections.

Definition at line 574 of file G4INCLCrossSectionsINCL46.cc.

574 {
575 // Nucleon-Delta producing Delta Sigma Kaon cross section
576 return 0;
577 }

◆ NDeltaToNLK()

G4double G4INCL::CrossSectionsINCL46::NDeltaToNLK ( Particle const *const  p1,
Particle const *const  p2 
)
virtual

Nucleon-Delta to Stange particles cross sections.

Implements G4INCL::ICrossSections.

Definition at line 562 of file G4INCLCrossSectionsINCL46.cc.

562 {
563 // Nucleon-Delta producing Nucleon Lambda Kaon cross section
564 return 0;
565 }

◆ NDeltaToNN()

G4double G4INCL::CrossSectionsINCL46::NDeltaToNN ( Particle const *const  p1,
Particle const *const  p2 
)
virtual

Cross section for NDelta->NN.

Implements G4INCL::ICrossSections.

Definition at line 286 of file G4INCLCrossSectionsINCL46.cc.

286 {
287 const G4int isospin = ParticleTable::getIsospin(p1->getType()) + ParticleTable::getIsospin(p2->getType());
288 if(isospin==4 || isospin==-4) return 0.0;
289
291 G4double Ecm = std::sqrt(s);
292 G4int deltaIsospin;
293 G4double deltaMass;
294 if(p1->isDelta()) {
295 deltaIsospin = ParticleTable::getIsospin(p1->getType());
296 deltaMass = p1->getMass();
297 } else {
298 deltaIsospin = ParticleTable::getIsospin(p2->getType());
299 deltaMass = p2->getMass();
300 }
301
302 if(Ecm <= 938.3 + deltaMass) {
303 return 0.0;
304 }
305
306 if(Ecm < 938.3 + deltaMass + 2.0) {
307 Ecm = 938.3 + deltaMass + 2.0;
308 s = Ecm*Ecm;
309 }
310
312 (s - std::pow(ParticleTable::effectiveNucleonMass + deltaMass, 2));
313 const G4double y = s/(s - std::pow(deltaMass - ParticleTable::effectiveNucleonMass, 2));
314 /* Concerning the way we calculate the lab momentum, see the considerations
315 * in CrossSections::elasticNNLegacy().
316 */
318 G4double result = 0.5 * x * y * deltaProduction(isospin, pLab);
319 result *= 3.*(32.0 + isospin * isospin * (deltaIsospin * deltaIsospin - 5))/64.0;
320 result /= 1.0 + 0.25 * isospin * isospin;
321 return result;
322 }
G4double deltaProduction(const G4int isospin, const G4double pLab)
Internal function for the delta-production cross section.
const G4double effectiveNucleonMass2

Referenced by total().

◆ NDeltaToNNKKb()

G4double G4INCL::CrossSectionsINCL46::NDeltaToNNKKb ( Particle const *const  p1,
Particle const *const  p2 
)
virtual

Implements G4INCL::ICrossSections.

Definition at line 579 of file G4INCLCrossSectionsINCL46.cc.

579 {
580 // Nucleon-Delta producing Nucleon-Nucleon Kaon antiKaon cross section
581 return 0;
582 }

◆ NDeltaToNSK()

G4double G4INCL::CrossSectionsINCL46::NDeltaToNSK ( Particle const *const  p1,
Particle const *const  p2 
)
virtual

Implements G4INCL::ICrossSections.

Definition at line 566 of file G4INCLCrossSectionsINCL46.cc.

566 {
567 // Nucleon-Delta producing Nucleon Sigma Kaon cross section
568 return 0;
569 }

◆ NKbelastic()

G4double G4INCL::CrossSectionsINCL46::NKbelastic ( Particle const *const  p1,
Particle const *const  p2 
)
virtual

Implements G4INCL::ICrossSections.

Definition at line 499 of file G4INCLCrossSectionsINCL46.cc.

499 {
500 //
501 // antiKaon-Nucleon elastic cross sections
502 //
503 return 0.;
504 }

◆ NKbToL2pi()

G4double G4INCL::CrossSectionsINCL46::NKbToL2pi ( Particle const *const  p1,
Particle const *const  p2 
)
virtual

Implements G4INCL::ICrossSections.

Definition at line 719 of file G4INCLCrossSectionsINCL46.cc.

719 {
720 //
721 // Nucleon-antiKaon producing Lambda-2pion cross sections
722 //
723 return 0.;
724 }

◆ NKbToLpi()

G4double G4INCL::CrossSectionsINCL46::NKbToLpi ( Particle const *const  p1,
Particle const *const  p2 
)
virtual

Implements G4INCL::ICrossSections.

Definition at line 705 of file G4INCLCrossSectionsINCL46.cc.

705 {
706 //
707 // Nucleon-antiKaon producing Lambda-pion cross sections
708 //
709 return 0.;
710 }

◆ NKbToNKb()

G4double G4INCL::CrossSectionsINCL46::NKbToNKb ( Particle const *const  p1,
Particle const *const  p2 
)
virtual

Nucleon-antiKaon inelastic cross sections.

Implements G4INCL::ICrossSections.

Definition at line 691 of file G4INCLCrossSectionsINCL46.cc.

691 {
692 //
693 // Nucleon-antiKaon quasi-elastic cross sections
694 //
695 return 0.;
696 }

◆ NKbToNKb2pi()

G4double G4INCL::CrossSectionsINCL46::NKbToNKb2pi ( Particle const *const  p1,
Particle const *const  p2 
)
virtual

Implements G4INCL::ICrossSections.

Definition at line 733 of file G4INCLCrossSectionsINCL46.cc.

733 {
734 //
735 // Nucleon-antiKaon producing Nucleon-antiKaon-2pion cross sections
736 //
737 return 0.;
738 }

◆ NKbToNKbpi()

G4double G4INCL::CrossSectionsINCL46::NKbToNKbpi ( Particle const *const  p1,
Particle const *const  p2 
)
virtual

Implements G4INCL::ICrossSections.

Definition at line 726 of file G4INCLCrossSectionsINCL46.cc.

726 {
727 //
728 // Nucleon-antiKaon producing Nucleon-antiKaon-pion cross sections
729 //
730 return 0.;
731 }

◆ NKbToS2pi()

G4double G4INCL::CrossSectionsINCL46::NKbToS2pi ( Particle const *const  p1,
Particle const *const  p2 
)
virtual

Implements G4INCL::ICrossSections.

Definition at line 712 of file G4INCLCrossSectionsINCL46.cc.

712 {
713 //
714 // Nucleon-antiKaon producing Sigma-2pion cross sections
715 //
716 return 0.;
717 }

◆ NKbToSpi()

G4double G4INCL::CrossSectionsINCL46::NKbToSpi ( Particle const *const  p1,
Particle const *const  p2 
)
virtual

Implements G4INCL::ICrossSections.

Definition at line 698 of file G4INCLCrossSectionsINCL46.cc.

698 {
699 //
700 // Nucleon-antiKaon producing Sigma-pion cross sections
701 //
702 return 0.;
703 }

◆ NKelastic()

G4double G4INCL::CrossSectionsINCL46::NKelastic ( Particle const *const  p1,
Particle const *const  p2 
)
virtual

Implements G4INCL::ICrossSections.

Definition at line 492 of file G4INCLCrossSectionsINCL46.cc.

492 {
493 //
494 // Kaon-Nucleon elastic cross sections
495 //
496 return 0.;
497 }

◆ NKToNK()

G4double G4INCL::CrossSectionsINCL46::NKToNK ( Particle const *const  p1,
Particle const *const  p2 
)
virtual

Nucleon-Kaon inelastic cross sections.

Implements G4INCL::ICrossSections.

Definition at line 670 of file G4INCLCrossSectionsINCL46.cc.

670 {
671 //
672 // Nucleon-Kaon quasi-elastic cross sections
673 //
674 return 0.;
675 }

◆ NKToNK2pi()

G4double G4INCL::CrossSectionsINCL46::NKToNK2pi ( Particle const *const  p1,
Particle const *const  p2 
)
virtual

Implements G4INCL::ICrossSections.

Definition at line 684 of file G4INCLCrossSectionsINCL46.cc.

684 {
685 //
686 // Nucleon-Kaon producing Nucleon-Kaon-2pion cross sections
687 //
688 return 0.;
689 }

◆ NKToNKpi()

G4double G4INCL::CrossSectionsINCL46::NKToNKpi ( Particle const *const  p1,
Particle const *const  p2 
)
virtual

Implements G4INCL::ICrossSections.

Definition at line 677 of file G4INCLCrossSectionsINCL46.cc.

677 {
678 //
679 // Nucleon-Kaon producing Nucleon-Kaon-pion cross sections
680 //
681 return 0.;
682 }

◆ NLToNS()

G4double G4INCL::CrossSectionsINCL46::NLToNS ( Particle const *const  p1,
Particle const *const  p2 
)
virtual

Nucleon-Hyperon cross sections.

Implements G4INCL::ICrossSections.

Definition at line 649 of file G4INCLCrossSectionsINCL46.cc.

649 {
650 //
651 // Nucleon-Hyperon multiplet changing cross sections
652 //
653 return 0.;
654 }

◆ NNToMissingStrangeness()

G4double G4INCL::CrossSectionsINCL46::NNToMissingStrangeness ( Particle const *const  p1,
Particle const *const  p2 
)
virtual

Implements G4INCL::ICrossSections.

Definition at line 555 of file G4INCLCrossSectionsINCL46.cc.

555 {
556 //
557 // Nucleon-Nucleon missing strangeness production cross sections
558 //
559 return 0.;
560 }

◆ NNToNDelta()

G4double G4INCL::CrossSectionsINCL46::NNToNDelta ( Particle const *const  p1,
Particle const *const  p2 
)
virtual

Cross section for NN->NDelta.

Implements G4INCL::ICrossSections.

Definition at line 324 of file G4INCLCrossSectionsINCL46.cc.

324 {
325// assert(p1->isNucleon() && p2->isNucleon());
326 const G4double sqrts = KinematicsUtils::totalEnergyInCM(p1,p2);
327 if(sqrts < ParticleTable::effectivePionMass + 2*ParticleTable::effectiveNucleonMass + 50.) { // approximately yields INCL4.6's hard-coded threshold in collis, 2065 MeV
328 return 0.0;
329 } else {
330 const G4double pLab = KinematicsUtils::momentumInLab(p1,p2);
331 const G4int isospin = ParticleTable::getIsospin(p1->getType()) + ParticleTable::getIsospin(p2->getType());
332 return deltaProduction(isospin, pLab);
333 }
334 }
G4double totalEnergyInCM(Particle const *const p1, Particle const *const p2)
const G4double effectivePionMass

Referenced by total().

◆ NNToNDeltaEta()

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

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

Implements G4INCL::ICrossSections.

Definition at line 451 of file G4INCLCrossSectionsINCL46.cc.

451 {
452 //
453 // Nucleon-Nucleon producing N-Delta-Eta cross sections
454 //
455 return 0.;
456 }

◆ NNToNDeltaOmega()

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

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

Implements G4INCL::ICrossSections.

Definition at line 476 of file G4INCLCrossSectionsINCL46.cc.

476 {
477 //
478 // Nucleon-Nucleon producing N-Delta-Omega cross sections
479 //
480 return 0.;
481 }

◆ NNToNLK()

G4double G4INCL::CrossSectionsINCL46::NNToNLK ( Particle const *const  p1,
Particle const *const  p2 
)
virtual

Nucleon-Nucleon to Stange particles cross sections.

Implements G4INCL::ICrossSections.

Definition at line 506 of file G4INCLCrossSectionsINCL46.cc.

506 {
507 //
508 // Nucleon-Nucleon producing N-Lambda-Kaon cross sections
509 //
510 return 0.;
511 }

◆ NNToNLK2pi()

G4double G4INCL::CrossSectionsINCL46::NNToNLK2pi ( Particle const *const  p1,
Particle const *const  p2 
)
virtual

Implements G4INCL::ICrossSections.

Definition at line 534 of file G4INCLCrossSectionsINCL46.cc.

534 {
535 //
536 // Nucleon-Nucleon producing N-Lambda-Kaon-2pion cross sections
537 //
538 return 0.;
539 }

◆ NNToNLKpi()

G4double G4INCL::CrossSectionsINCL46::NNToNLKpi ( Particle const *const  p1,
Particle const *const  p2 
)
virtual

Implements G4INCL::ICrossSections.

Definition at line 520 of file G4INCLCrossSectionsINCL46.cc.

520 {
521 //
522 // Nucleon-Nucleon producing N-Lambda-Kaon-pion cross sections
523 //
524 return 0.;
525 }

◆ NNToNNEta()

G4double G4INCL::CrossSectionsINCL46::NNToNNEta ( Particle const *const  p1,
Particle const *const  p2 
)
virtual

Cross section for Eta production - NN entrance channel.

Implements G4INCL::ICrossSections.

Definition at line 433 of file G4INCLCrossSectionsINCL46.cc.

433 {
434 //
435 // Nucleon-Nucleon producing Eta cross sections
436 //
437 return 0.;
438 }

◆ NNToNNEtaExclu()

G4double G4INCL::CrossSectionsINCL46::NNToNNEtaExclu ( Particle const *const  p1,
Particle const *const  p2 
)
virtual

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

Implements G4INCL::ICrossSections.

Definition at line 440 of file G4INCLCrossSectionsINCL46.cc.

440 {
441 //
442 // Nucleon-Nucleon producing Eta cross sections
443 //
444 return 0.;
445 }

◆ NNToNNEtaxPi()

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

Cross section for X pion production - NNEta Channel.

Implements G4INCL::ICrossSections.

Definition at line 447 of file G4INCLCrossSectionsINCL46.cc.

447 {
448 return 0.;
449 }

◆ NNToNNKKb()

G4double G4INCL::CrossSectionsINCL46::NNToNNKKb ( Particle const *const  p1,
Particle const *const  p2 
)
virtual

Implements G4INCL::ICrossSections.

Definition at line 548 of file G4INCLCrossSectionsINCL46.cc.

548 {
549 //
550 // Nucleon-Nucleon producing Nucleon-Nucleon-Kaon-antiKaon cross sections
551 //
552 return 0.;
553 }

◆ NNToNNOmega()

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

Cross section for Eta production - NN entrance channel.

Implements G4INCL::ICrossSections.

Definition at line 458 of file G4INCLCrossSectionsINCL46.cc.

458 {
459 //
460 // Nucleon-Nucleon producing Omega cross sections
461 //
462 return 0.;
463 }

◆ NNToNNOmegaExclu()

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

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

Implements G4INCL::ICrossSections.

Definition at line 465 of file G4INCLCrossSectionsINCL46.cc.

465 {
466 //
467 // Nucleon-Nucleon producing Omega cross sections
468 //
469 return 0.;
470 }

◆ NNToNNOmegaxPi()

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

Cross section for X pion production - NNEta Channel.

Implements G4INCL::ICrossSections.

Definition at line 472 of file G4INCLCrossSectionsINCL46.cc.

472 {
473 return 0.;
474 }

◆ NNToNSK()

G4double G4INCL::CrossSectionsINCL46::NNToNSK ( Particle const *const  p1,
Particle const *const  p2 
)
virtual

Implements G4INCL::ICrossSections.

Definition at line 513 of file G4INCLCrossSectionsINCL46.cc.

513 {
514 //
515 // Nucleon-Nucleon producing N-Sigma-Kaon cross sections
516 //
517 return 0.;
518 }

◆ NNToNSK2pi()

G4double G4INCL::CrossSectionsINCL46::NNToNSK2pi ( Particle const *const  p1,
Particle const *const  p2 
)
virtual

Implements G4INCL::ICrossSections.

Definition at line 541 of file G4INCLCrossSectionsINCL46.cc.

541 {
542 //
543 // Nucleon-Nucleon producing N-Sigma-Kaon-2pion cross sections
544 //
545 return 0.;
546 }

◆ NNToNSKpi()

G4double G4INCL::CrossSectionsINCL46::NNToNSKpi ( Particle const *const  p1,
Particle const *const  p2 
)
virtual

Implements G4INCL::ICrossSections.

Definition at line 527 of file G4INCLCrossSectionsINCL46.cc.

527 {
528 //
529 // Nucleon-Nucleon producing N-Sigma-Kaon-pion cross sections
530 //
531 return 0.;
532 }

◆ NNToxPiNN()

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

Cross section for X pion production - NN Channel.

Implements G4INCL::ICrossSections.

Definition at line 368 of file G4INCLCrossSectionsINCL46.cc.

368 {
369 return 0.;
370 }

◆ NpiToLK()

G4double G4INCL::CrossSectionsINCL46::NpiToLK ( Particle const *const  p1,
Particle const *const  p2 
)
virtual

Nucleon-Pion to Stange particles cross sections.

Implements G4INCL::ICrossSections.

Definition at line 584 of file G4INCLCrossSectionsINCL46.cc.

584 {
585 //
586 // Pion-Nucleon producing Lambda-Kaon cross sections
587 //
588 return 0.;
589 }

◆ NpiToLK2pi()

G4double G4INCL::CrossSectionsINCL46::NpiToLK2pi ( Particle const *const  p1,
Particle const *const  p2 
)
virtual

Implements G4INCL::ICrossSections.

Definition at line 621 of file G4INCLCrossSectionsINCL46.cc.

621 {
622 //
623 // Pion-Nucleon producing Lambda-Kaon-2pion cross sections
624 //
625 return 0.;
626 }

◆ NpiToLKpi()

G4double G4INCL::CrossSectionsINCL46::NpiToLKpi ( Particle const *const  p1,
Particle const *const  p2 
)
virtual

Implements G4INCL::ICrossSections.

Definition at line 607 of file G4INCLCrossSectionsINCL46.cc.

607 {
608 //
609 // Pion-Nucleon producing Lambda-Kaon-pion cross sections
610 //
611 return 0.;
612 }

◆ NpiToMissingStrangeness()

G4double G4INCL::CrossSectionsINCL46::NpiToMissingStrangeness ( Particle const *const  p1,
Particle const *const  p2 
)
virtual

Implements G4INCL::ICrossSections.

Definition at line 642 of file G4INCLCrossSectionsINCL46.cc.

642 {
643 //
644 // Pion-Nucleon missing strangeness production cross sections
645 //
646 return 0.;
647 }

◆ NpiToNKKb()

G4double G4INCL::CrossSectionsINCL46::NpiToNKKb ( Particle const *const  p1,
Particle const *const  p2 
)
virtual

Implements G4INCL::ICrossSections.

Definition at line 635 of file G4INCLCrossSectionsINCL46.cc.

635 {
636 //
637 // Pion-Nucleon producing Nucleon-Kaon-antiKaon cross sections
638 //
639 return 0.;
640 }

◆ NpiToSK()

G4double G4INCL::CrossSectionsINCL46::NpiToSK ( Particle const *const  p1,
Particle const *const  p2 
)
virtual

Implements G4INCL::ICrossSections.

Definition at line 591 of file G4INCLCrossSectionsINCL46.cc.

591 {
592 //
593 // Pion-Nucleon producing Sigma-Kaon cross sections
594 //
595 return 0.;
596 }

◆ NpiToSK2pi()

G4double G4INCL::CrossSectionsINCL46::NpiToSK2pi ( Particle const *const  p1,
Particle const *const  p2 
)
virtual

Implements G4INCL::ICrossSections.

Definition at line 628 of file G4INCLCrossSectionsINCL46.cc.

628 {
629 //
630 // Pion-Nucleon producing Lambda-Kaon-2pion cross sections
631 //
632 return 0.;
633 }

◆ NpiToSKpi()

G4double G4INCL::CrossSectionsINCL46::NpiToSKpi ( Particle const *const  p1,
Particle const *const  p2 
)
virtual

Implements G4INCL::ICrossSections.

Definition at line 614 of file G4INCLCrossSectionsINCL46.cc.

614 {
615 //
616 // Pion-Nucleon producing Sigma-Kaon-pion cross sections
617 //
618 return 0.;
619 }

◆ NSToNL()

G4double G4INCL::CrossSectionsINCL46::NSToNL ( Particle const *const  p1,
Particle const *const  p2 
)
virtual

Implements G4INCL::ICrossSections.

Definition at line 656 of file G4INCLCrossSectionsINCL46.cc.

656 {
657 //
658 // Nucleon-Sigma quasi-elastic cross sections
659 //
660 return 0.;
661 }

◆ NSToNS()

G4double G4INCL::CrossSectionsINCL46::NSToNS ( Particle const *const  p1,
Particle const *const  p2 
)
virtual

Implements G4INCL::ICrossSections.

Definition at line 663 of file G4INCLCrossSectionsINCL46.cc.

663 {
664 //
665 // Nucleon-Sigma quasi-elastic cross sections
666 //
667 return 0.;
668 }

◆ NYelastic()

G4double G4INCL::CrossSectionsINCL46::NYelastic ( Particle const *const  p1,
Particle const *const  p2 
)
virtual

elastic scattering for Nucleon-Strange Particles cross sections

Implements G4INCL::ICrossSections.

Definition at line 485 of file G4INCLCrossSectionsINCL46.cc.

485 {
486 //
487 // Hyperon-Nucleon elastic cross sections
488 //
489 return 0.;
490 }

◆ omegaNToPiN()

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

Cross section for OmegaN->PiN.

Implements G4INCL::ICrossSections.

Definition at line 412 of file G4INCLCrossSectionsINCL46.cc.

412 {
413 //
414 // Omega-Nucleon producing Pion cross sections
415 //
416 return 0.;
417 }

◆ omegaNToPiPiN()

G4double G4INCL::CrossSectionsINCL46::omegaNToPiPiN ( Particle const *const  p1,
Particle const *const  p2 
)
virtual

Cross section for OmegaN->PiPiN.

Implements G4INCL::ICrossSections.

Definition at line 419 of file G4INCLCrossSectionsINCL46.cc.

419 {
420 //
421 // Omega-Nucleon producing Two Pions cross sections
422 //
423 return 0.;
424 }

◆ p_pimToSmKp()

G4double G4INCL::CrossSectionsINCL46::p_pimToSmKp ( Particle const *const  p1,
Particle const *const  p2 
)
virtual

Implements G4INCL::ICrossSections.

Definition at line 597 of file G4INCLCrossSectionsINCL46.cc.

597 {
598 return 0.;
599 }

◆ p_pimToSzKz()

G4double G4INCL::CrossSectionsINCL46::p_pimToSzKz ( Particle const *const  p1,
Particle const *const  p2 
)
virtual

Implements G4INCL::ICrossSections.

Definition at line 600 of file G4INCLCrossSectionsINCL46.cc.

600 {
601 return 0.;
602 }

◆ p_pizToSzKp()

G4double G4INCL::CrossSectionsINCL46::p_pizToSzKp ( Particle const *const  p1,
Particle const *const  p2 
)
virtual

Implements G4INCL::ICrossSections.

Definition at line 603 of file G4INCLCrossSectionsINCL46.cc.

603 {
604 return 0.;
605 }

◆ piNToDelta()

G4double G4INCL::CrossSectionsINCL46::piNToDelta ( Particle const *const  p1,
Particle const *const  p2 
)
virtual

Cross section for piN->NDelta.

Implements G4INCL::ICrossSections.

Definition at line 227 of file G4INCLCrossSectionsINCL46.cc.

227 {
228 // FUNCTION SPN(X,IND2T3,IPIT3,f17)
229 // SIGMA(PI+ + P) IN THE (3,3) REGION
230 // NEW FIT BY J.VANDERMEULEN + FIT BY Th AOUST ABOVE (3,3) RES
231 // CONST AT LOW AND VERY HIGH ENERGY
232 // COMMON/BL8/RATHR,RAMASS REL21800
233 // integer f17
234 // RATHR and RAMASS are always 0.0!!!
235
236 G4double x = KinematicsUtils::totalEnergyInCM(particle1, particle2);
237 if(x>10000.) return 0.0; // no cross section above this value
238
239 G4int ipit3 = 0;
240 G4int ind2t3 = 0;
241 G4double ramass = 0.0;
242
243 if(particle1->isPion()) {
244 ipit3 = ParticleTable::getIsospin(particle1->getType());
245 } else if(particle2->isPion()) {
246 ipit3 = ParticleTable::getIsospin(particle2->getType());
247 }
248
249 if(particle1->isNucleon()) {
250 ind2t3 = ParticleTable::getIsospin(particle1->getType());
251 } else if(particle2->isNucleon()) {
252 ind2t3 = ParticleTable::getIsospin(particle2->getType());
253 }
254
255 G4double y=x*x;
256 G4double q2=(y-1076.0*1076.0)*(y-800.0*800.0)/y/4.0;
257 if (q2 <= 0.) {
258 return 0.0;
259 }
260 G4double q3 = std::pow(std::sqrt(q2),3);
261 G4double f3 = q3/(q3 + 5832000.); // 5832000 = 180^3
262 G4double spnResult = 326.5/(std::pow((x-1215.0-ramass)*2.0/(110.0-ramass), 2)+1.0);
263 spnResult = spnResult*(1.0-5.0*ramass/1215.0);
264 G4double cg = 4.0 + G4double(ind2t3)*G4double(ipit3);
265 spnResult = spnResult*f3*cg/6.0;
266
267 if(x < 1200.0 && spnResult < 5.0) {
268 spnResult = 5.0;
269 }
270
271 // HE pi+ p and pi- n
272 if(x > 1290.0) {
273 if((ind2t3 == 1 && ipit3 == 2) || (ind2t3 == -1 && ipit3 == -2))
274 spnResult=spnPiPlusPHE(x);
275 else if((ind2t3 == 1 && ipit3 == -2) || (ind2t3 == -1 && ipit3 == 2))
276 spnResult=spnPiMinusPHE(x);
277 else if(ipit3 == 0) spnResult = (spnPiPlusPHE(x) + spnPiMinusPHE(x))/2.0; // (spnpipphe(x)+spnpimphe(x))/2.0
278 else {
279 INCL_ERROR("Unknown configuration!" << '\n');
280 }
281 }
282
283 return spnResult;
284 }
#define INCL_ERROR(x)
G4double spnPiMinusPHE(const G4double x)
G4double spnPiPlusPHE(const G4double x)

Referenced by total().

◆ piNToEtaN()

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

Cross sections for mesonic resonance production - piN Channel.

Implements G4INCL::ICrossSections.

Definition at line 376 of file G4INCLCrossSectionsINCL46.cc.

376 {
377 //
378 // Pion-Nucleon producing Eta cross sections
379 //
380 return 0.;
381 }

◆ piNToEtaPrimeN()

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

Cross section for PiN->EtaPrimeN.

Implements G4INCL::ICrossSections.

Definition at line 390 of file G4INCLCrossSectionsINCL46.cc.

390 {
391 //
392 // Pion-Nucleon producing EtaPrime cross sections
393 //
394 return 0.;
395 }

◆ piNToOmegaN()

G4double G4INCL::CrossSectionsINCL46::piNToOmegaN ( Particle const *const  p1,
Particle const *const  p2 
)
virtual

Cross section for PiN->OmegaN.

Implements G4INCL::ICrossSections.

Definition at line 383 of file G4INCLCrossSectionsINCL46.cc.

383 {
384 //
385 // Pion-Nucleon producing Omega cross sections
386 //
387 return 0.;
388 }

◆ piNToxPiN()

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

Cross section for X pion production - piN Channel.

Implements G4INCL::ICrossSections.

Definition at line 372 of file G4INCLCrossSectionsINCL46.cc.

372 {
373 return 0.;
374 }

◆ spnPiMinusPHE()

G4double G4INCL::CrossSectionsINCL46::spnPiMinusPHE ( const G4double  x)
protected

Definition at line 195 of file G4INCLCrossSectionsINCL46.cc.

195 {
196 // HE pi- p and pi+ n
197 if(x <= 1475.0) {
198 return 0.00120683*(x-1372.52)*(x-1372.52)+26.2058;
199 } else if(x > 1475.0 && x <= 1565.0) {
200 return 1.15873e-05*x*x+49965.6/((x-1519.59)*(x-1519.59)+2372.55);
201 } else if(x > 1565.0 && x <= 2400.0) {
202 return 34.0248+43262.2/((x-1681.65)*(x-1681.65)+1689.35);
203 } else if(x > 2400.0 && x <= 7500.0) {
204 return 3.3e-7*(x-7500.0)*(x-7500.0)+24.5;
205 } else {
206 return 24.5;
207 }
208 }

Referenced by piNToDelta().

◆ spnPiPlusPHE()

G4double G4INCL::CrossSectionsINCL46::spnPiPlusPHE ( const G4double  x)
protected

Definition at line 182 of file G4INCLCrossSectionsINCL46.cc.

182 {
183 // HE and LE pi- p and pi+ n
184 if(x <= 1750.0) {
185 return -2.33730e-06*std::pow(x, 3)+1.13819e-02*std::pow(x,2)
186 -1.83993e+01*x+9893.4;
187 } else if(x > 1750.0 && x <= 2175.0) {
188 return 1.13531e-06*std::pow(x, 3)-6.91694e-03*std::pow(x, 2)
189 +1.39907e+01*x-9360.76;
190 } else {
191 return -3.18087*std::log(x)+52.9784;
192 }
193 }

Referenced by piNToDelta().

◆ total()

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

Total (elastic+inelastic) particle-particle cross section.

Implements G4INCL::ICrossSections.

Definition at line 210 of file G4INCLCrossSectionsINCL46.cc.

210 {
211 G4double inelastic = 0.0;
212 if(p1->isNucleon() && p2->isNucleon()) {
213 inelastic = NNToNDelta(p1, p2);
214 } else if((p1->isNucleon() && p2->isDelta()) ||
215 (p1->isDelta() && p2->isNucleon())) {
216 inelastic = NDeltaToNN(p1, p2);
217 } else if((p1->isNucleon() && p2->isPion()) ||
218 (p1->isPion() && p2->isNucleon())) {
219 inelastic = piNToDelta(p1, p2);
220 } else {
221 inelastic = 0.0;
222 }
223
224 return inelastic + elastic(p1, p2);
225 }
virtual G4double NDeltaToNN(Particle const *const p1, Particle const *const p2)
Cross section for NDelta->NN.
virtual G4double NNToNDelta(Particle const *const p1, Particle const *const p2)
Cross section for NN->NDelta.
virtual G4double piNToDelta(Particle const *const p1, Particle const *const p2)
Cross section for piN->NDelta.
virtual G4double elastic(Particle const *const p1, Particle const *const p2)
Elastic particle-particle cross section.

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