34 #define INCLXX_IN_GEANT4_MODE 1
55 namespace CrossSections {
57 return theCrossSections->elastic(p1,p2);
61 return theCrossSections->total(p1,p2);
65 return theCrossSections->NDeltaToNN(p1,p2);
69 return theCrossSections->NNToNDelta(p1,p2);
73 return theCrossSections->NNToxPiNN(xpi,p1,p2);
77 return theCrossSections->piNToDelta(p1,p2);
81 return theCrossSections->piNToxPiN(xpi,p1,p2);
85 return theCrossSections->piNToEtaN(p1,p2);
89 return theCrossSections->piNToOmegaN(p1,p2);
93 return theCrossSections->piNToEtaPrimeN(p1,p2);
97 return theCrossSections->etaNToPiN(p1,p2);
101 return theCrossSections->etaNToPiPiN(p1,p2);
105 return theCrossSections->omegaNToPiN(p1,p2);
109 return theCrossSections->omegaNToPiPiN(p1,p2);
113 return theCrossSections->etaPrimeNToPiN(p1,p2);
117 return theCrossSections->NNToNNEta(p1,p2);
121 return theCrossSections->NNToNNEtaExclu(p1,p2);
125 return theCrossSections->NNToNNEtaxPi(xpi,p1,p2);
129 return theCrossSections->NNToNDeltaEta(p1,p2);
134 return theCrossSections->NNToNNOmega(p1,p2);
138 return theCrossSections->NNToNNOmegaExclu(p1,p2);
142 return theCrossSections->NNToNNOmegaxPi(xpi,p1,p2);
146 return theCrossSections->NNToNDeltaOmega(p1,p2);
151 return theCrossSections->NYelastic(p1,p2);
155 return theCrossSections->NKbelastic(p1,p2);
159 return theCrossSections->NKelastic(p1,p2);
163 return theCrossSections->NNToNLK(p1,p2);
167 return theCrossSections->NNToNSK(p1,p2);
171 return theCrossSections->NNToNLKpi(p1,p2);
175 return theCrossSections->NNToNSKpi(p1,p2);
179 return theCrossSections->NNToNLK2pi(p1,p2);
183 return theCrossSections->NNToNSK2pi(p1,p2);
187 return theCrossSections->NNToNNKKb(p1,p2);
191 return theCrossSections->NNToMissingStrangeness(p1,p2);
195 return theCrossSections->NDeltaToNLK(p1,p2);
198 return theCrossSections->NDeltaToNSK(p1,p2);
201 return theCrossSections->NDeltaToDeltaLK(p1,p2);
204 return theCrossSections->NDeltaToDeltaSK(p1,p2);
208 return theCrossSections->NDeltaToNNKKb(p1,p2);
212 return theCrossSections->NpiToLK(p1,p2);
216 return theCrossSections->NpiToSK(p1,p2);
220 return theCrossSections->p_pimToSmKp(p1,p2);
224 return theCrossSections->p_pimToSzKz(p1,p2);
228 return theCrossSections->p_pizToSzKp(p1,p2);
232 return theCrossSections->NpiToLKpi(p1,p2);
236 return theCrossSections->NpiToSKpi(p1,p2);
240 return theCrossSections->NpiToLK2pi(p1,p2);
244 return theCrossSections->NpiToSK2pi(p1,p2);
248 return theCrossSections->NpiToNKKb(p1,p2);
252 return theCrossSections->NpiToMissingStrangeness(p1,p2);
256 return theCrossSections->NLToNS(p1,p2);
260 return theCrossSections->NSToNL(p1,p2);
264 return theCrossSections->NSToNS(p1,p2);
268 return theCrossSections->NKToNK(p1,p2);
272 return theCrossSections->NKToNKpi(p1,p2);
276 return theCrossSections->NKToNK2pi(p1,p2);
280 return theCrossSections->NKbToNKb(p1,p2);
284 return theCrossSections->NKbToSpi(p1,p2);
288 return theCrossSections->NKbToLpi(p1,p2);
292 return theCrossSections->NKbToS2pi(p1,p2);
296 return theCrossSections->NKbToL2pi(p1,p2);
300 return theCrossSections->NKbToNKbpi(p1,p2);
304 return theCrossSections->NKbToNKb2pi(p1,p2);
309 return theCrossSections->calculateNNAngularSlope(energyCM, iso);
317 piPlusProjectile.
setEnergy(piPlusProjectile.
getMass()+projectileKineticEnergy);
320 piZeroProjectile.
setEnergy(piZeroProjectile.
getMass()+projectileKineticEnergy);
323 piMinusProjectile.
setEnergy(piMinusProjectile.
getMass()+projectileKineticEnergy);
328 const G4double sigmapipp =
total(&piPlusProjectile, &protonTarget);
329 const G4double sigmapipn =
total(&piPlusProjectile, &neutronTarget);
330 const G4double sigmapi0p =
total(&piZeroProjectile, &protonTarget);
331 const G4double sigmapi0n =
total(&piZeroProjectile, &neutronTarget);
332 const G4double sigmapimp =
total(&piMinusProjectile, &protonTarget);
333 const G4double sigmapimn =
total(&piMinusProjectile, &neutronTarget);
342 return interactionDistance;
351 const G4double kineticEnergyPerNucleon = kineticEnergy / aSpecies.
theA;
354 protonProjectile.
setEnergy(protonProjectile.
getMass()+kineticEnergyPerNucleon);
357 neutronProjectile.
setEnergy(neutronProjectile.
getMass()+kineticEnergyPerNucleon);
362 const G4double sigmapp =
total(&protonProjectile, &protonTarget);
363 const G4double sigmapn =
total(&protonProjectile, &neutronTarget);
364 const G4double sigmann =
total(&neutronProjectile, &neutronTarget);
373 return interactionDistance;
389 const G4double sigmakpp =
total(&kpProjectile, &protonTarget);
390 const G4double sigmakpn =
total(&kpProjectile, &neutronTarget);
391 const G4double sigmakzp =
total(&kzProjectile, &protonTarget);
392 const G4double sigmakzn =
total(&kzProjectile, &neutronTarget);
397 return interactionDistance;
413 const G4double sigmakmp =
total(&kmProjectile, &protonTarget);
414 const G4double sigmakmn =
total(&kmProjectile, &neutronTarget);
415 const G4double sigmakzp =
total(&kzProjectile, &protonTarget);
416 const G4double sigmakzn =
total(&kzProjectile, &neutronTarget);
421 return interactionDistance;
444 const G4double sigmaln =
total(&lProjectile, &neutronTarget);
445 const G4double sigmaspp =
total(&spProjectile, &protonTarget);
446 const G4double sigmaspn =
total(&spProjectile, &neutronTarget);
447 const G4double sigmaszp =
total(&szProjectile, &protonTarget);
448 const G4double sigmaszn =
total(&szProjectile, &neutronTarget);
449 const G4double sigmasmp =
total(&smProjectile, &protonTarget);
450 const G4double sigmasmn =
total(&smProjectile, &neutronTarget);
455 return interactionDistance;
459 theCrossSections =
c;
463 delete theCrossSections;
464 theCrossSections = NULL;
478 INCL_WARN(
"Truncated multipion cross sections were requested, but the specified maximum\n"
479 <<
"number of pions is <=0. Falling back to standard multipion cross-sections.\n");