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

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

#include <G4INCLCrossSectionsINCL46.hh>

Inheritance diagram for G4INCL::CrossSectionsINCL46:
Collaboration diagram for G4INCL::CrossSectionsINCL46:

Public Member Functions

virtual G4double elastic (Particle const *const p1, Particle const *const p2)
 Elastic particle-particle cross section. More...
 
virtual G4double total (Particle const *const p1, Particle const *const p2)
 Total (elastic+inelastic) particle-particle cross section. More...
 
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 NN->NDelta. More...
 
virtual G4double piNToDelta (Particle const *const p1, Particle const *const p2)
 Cross section for piN->NDelta. 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 piNToxPiN (const G4int xpi, Particle const *const p1, Particle const *const p2)
 Cross section for X pion production - piN Channel. 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 nucleons - 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 omegaNToPiPiN (Particle const *const p1, Particle const *const p2)
 Cross section for OmegaN->PiPiN. More...
 
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 NNToNDeltaEta (Particle const *const p1, Particle const *const p2)
 Cross section for N-Delta-Eta production - NNEta Channel. More...
 
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 NNToNDeltaOmega (Particle const *const p1, Particle const *const p2)
 Cross section for N-Delta-Eta production - NNEta 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 elasticNNLegacy (Particle const *const part1, Particle const *const part2)
 Internal implementation of the elastic cross section. More...
 
G4double deltaProduction (const G4int isospin, const G4double pLab)
 Internal function for the delta-production cross section. More...
 
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

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:76
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  }
double G4double
Definition: G4Types.hh:76

Here is the caller graph for this function:

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.

Here is the call graph for this function:

Here is the caller graph for this function:

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  }
G4double squareTotalEnergyInCM(Particle const *const p1, Particle const *const p2)
int G4int
Definition: G4Types.hh:78
const XML_Char * s
Definition: expat.h:262
G4int getIsospin(const ParticleType t)
Get the isospin of a particle.
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
const G4double effectiveNucleonMass

Here is the call graph for this function:

Here is the caller graph for this function:

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  }
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  }
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  }
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 G4ParticleHPJENDLHEData::G4double result
G4double deltaProduction(const G4int isospin, const G4double pLab)
Internal function for the delta-production cross section.
G4double squareTotalEnergyInCM(Particle const *const p1, Particle const *const p2)
int G4int
Definition: G4Types.hh:78
const XML_Char * s
Definition: expat.h:262
G4int getIsospin(const ParticleType t)
Get the isospin of a particle.
const G4double effectiveNucleonMass2
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
const G4double effectiveNucleonMass

Here is the call graph for this function:

Here is the caller graph for this function:

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 deltaProduction(const G4int isospin, const G4double pLab)
Internal function for the delta-production cross section.
int G4int
Definition: G4Types.hh:78
const G4double effectivePionMass
G4int getIsospin(const ParticleType t)
Get the isospin of a particle.
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)
const G4double effectiveNucleonMass

Here is the call graph for this function:

Here is the caller graph for this function:

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  }
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  }
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  }
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  }
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  }
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  }
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  }
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  }
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  }
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  }
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  }
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)
int G4int
Definition: G4Types.hh:78
G4double spnPiPlusPHE(const G4double x)
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::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  }
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  }
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  }
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  }
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  }

Here is the caller graph for this function:

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  }

Here is the caller graph for this function:

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 piNToDelta(Particle const *const p1, Particle const *const p2)
Cross section for piN-&gt;NDelta.
virtual G4double NDeltaToNN(Particle const *const p1, Particle const *const p2)
Cross section for NDelta-&gt;NN.
virtual G4double NNToNDelta(Particle const *const p1, Particle const *const p2)
Cross section for NN-&gt;NDelta.
virtual G4double elastic(Particle const *const p1, Particle const *const p2)
Elastic particle-particle cross section.
double G4double
Definition: G4Types.hh:76

Here is the call graph for this function:


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