Geant4-11
Public Member Functions | Protected Member Functions
G4INCL::CrossSectionsINCL46 Class Reference

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

#include <G4INCLCrossSectionsINCL46.hh>

Inheritance diagram for G4INCL::CrossSectionsINCL46:
G4INCL::ICrossSections

Public Member Functions

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

Protected Member Functions

G4double deltaProduction (const G4int isospin, const G4double pLab)
 Internal function for the delta-production cross section. More...
 
G4double elasticNNLegacy (Particle const *const part1, Particle const *const part2)
 Internal implementation of the elastic cross section. More...
 
G4double spnPiMinusPHE (const G4double x)
 
G4double spnPiPlusPHE (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.

References elasticNNLegacy(), G4INCL::Particle::isDelta(), and G4INCL::Particle::isNucleon().

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
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 }
static constexpr double s
Definition: G4SIunits.hh:154
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

References G4INCL::ParticleTable::effectiveNucleonMass, G4INCL::ParticleTable::getIsospin(), G4INCL::Particle::getType(), G4INCL::Particle::isNucleon(), G4INCL::KinematicsUtils::momentumInLab(), s, and G4INCL::KinematicsUtils::squareTotalEnergyInCM().

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

References deltaProduction(), G4INCL::ParticleTable::effectiveNucleonMass, G4INCL::ParticleTable::effectiveNucleonMass2, G4INCL::ParticleTable::getIsospin(), G4INCL::Particle::getMass(), G4INCL::Particle::getType(), G4INCL::Particle::isDelta(), G4INCL::KinematicsUtils::momentumInLab(), s, and G4INCL::KinematicsUtils::squareTotalEnergyInCM().

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

References deltaProduction(), G4INCL::ParticleTable::effectiveNucleonMass, G4INCL::ParticleTable::effectivePionMass, G4INCL::ParticleTable::getIsospin(), G4INCL::Particle::getType(), G4INCL::KinematicsUtils::momentumInLab(), and G4INCL::KinematicsUtils::totalEnergyInCM().

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)

References G4INCL::ParticleTable::getIsospin(), G4INCL::Particle::getType(), INCL_ERROR, G4INCL::Particle::isNucleon(), G4INCL::Particle::isPion(), spnPiMinusPHE(), spnPiPlusPHE(), and G4INCL::KinematicsUtils::totalEnergyInCM().

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.

References elastic(), G4INCL::Particle::isDelta(), G4INCL::Particle::isNucleon(), G4INCL::Particle::isPion(), NDeltaToNN(), NNToNDelta(), and piNToDelta().


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