File indexing completed on 2026-09-28 09:13:37
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034 #define INCLXX_IN_GEANT4_MODE 1
0035
0036 #include "globals.hh"
0037
0038
0039
0040
0041
0042
0043
0044
0045 #ifndef G4INCLCROSSSECTIONSMULTIPIONS_HH
0046 #define G4INCLCROSSSECTIONSMULTIPIONS_HH
0047
0048 #include "G4INCLICrossSections.hh"
0049 #include "G4INCLHornerFormEvaluator.hh"
0050
0051 namespace G4INCL {
0052
0053
0054 class CrossSectionsMultiPions : public ICrossSections{
0055 public:
0056 CrossSectionsMultiPions();
0057
0058
0059 virtual G4double elastic(Particle const * const p1, Particle const * const p2);
0060
0061
0062 virtual G4double total(Particle const * const p1, Particle const * const p2);
0063
0064
0065 virtual G4double NDeltaToNN(Particle const * const p1, Particle const * const p2);
0066
0067
0068 virtual G4double NNToNDelta(Particle const * const p1, Particle const * const p2);
0069
0070
0071 virtual G4double piNToDelta(Particle const * const p1, Particle const * const p2);
0072
0073
0074 virtual G4double piNToxPiN(const G4int xpi, Particle const * const p1, Particle const * const p2);
0075
0076
0077 virtual G4double NNToxPiNN(const G4int xpi, Particle const * const p1, Particle const * const p2);
0078
0079
0080
0081
0082
0083
0084
0085
0086 virtual G4double calculateNNAngularSlope(G4double energyCM, G4int iso);
0087
0088
0089 virtual G4double piNToEtaN(Particle const * const p1, Particle const * const p2);
0090 virtual G4double piNToOmegaN(Particle const * const p1, Particle const * const p2);
0091 virtual G4double piNToEtaPrimeN(Particle const * const p1, Particle const * const p2);
0092
0093
0094 virtual G4double etaNToPiPiN(Particle const * const p1, Particle const * const p2);
0095 virtual G4double omegaNToPiPiN(Particle const * const p1, Particle const * const p2);
0096
0097
0098 virtual G4double etaNToPiN(Particle const * const p1, Particle const * const p2);
0099 virtual G4double omegaNToPiN(Particle const * const p1, Particle const * const p2);
0100 virtual G4double etaPrimeNToPiN(Particle const * const p1, Particle const * const p2);
0101
0102
0103 virtual G4double etaNToLK(Particle const * const p1, Particle const * const p2);
0104 virtual G4double omegaNToLK(Particle const * const p1, Particle const * const p2);
0105 virtual G4double etaNToSK(Particle const * const p1, Particle const * const p2);
0106 virtual G4double omegaNToSK(Particle const * const p1, Particle const * const p2);
0107
0108
0109 virtual G4double NNToNNEta(Particle const * const particle1, Particle const * const particle2);
0110
0111
0112 virtual G4double NNToNNEtaExclu(Particle const * const particle1, Particle const * const particle2);
0113
0114
0115 virtual G4double NNToNNEtaxPi(const G4int xpi, Particle const * const p1, Particle const * const p2);
0116
0117
0118 virtual G4double NNToNDeltaEta(Particle const * const p1, Particle const * const p2);
0119
0120
0121 virtual G4double NNToNNOmega(Particle const * const particle1, Particle const * const particle2);
0122
0123
0124 virtual G4double NNToNNOmegaExclu(Particle const * const particle1, Particle const * const particle2);
0125
0126
0127 virtual G4double NNToNNOmegaxPi(const G4int xpi, Particle const * const p1, Particle const * const p2);
0128
0129
0130 virtual G4double NNToNDeltaOmega(Particle const * const p1, Particle const * const p2);
0131
0132
0133
0134 virtual G4double NYelastic(Particle const * const p1, Particle const * const p2);
0135 virtual G4double NKbelastic(Particle const * const p1, Particle const * const p2);
0136 virtual G4double NKelastic(Particle const * const p1, Particle const * const p2);
0137
0138
0139 virtual G4double NNToNLK(Particle const * const p1, Particle const * const p2);
0140 virtual G4double NNToNSK(Particle const * const p1, Particle const * const p2);
0141 virtual G4double NNToNLKpi(Particle const * const p1, Particle const * const p2);
0142 virtual G4double NNToNSKpi(Particle const * const p1, Particle const * const p2);
0143 virtual G4double NNToNLK2pi(Particle const * const p1, Particle const * const p2);
0144 virtual G4double NNToNSK2pi(Particle const * const p1, Particle const * const p2);
0145 virtual G4double NNToNNKKb(Particle const * const p1, Particle const * const p2);
0146
0147 virtual G4double NNToMissingStrangeness(Particle const * const p1, Particle const * const p2);
0148
0149
0150 virtual G4double NDeltaToNLK(Particle const * const p1, Particle const * const p2);
0151 virtual G4double NDeltaToNSK(Particle const * const p1, Particle const * const p2);
0152 virtual G4double NDeltaToDeltaLK(Particle const * const p1, Particle const * const p2);
0153 virtual G4double NDeltaToDeltaSK(Particle const * const p1, Particle const * const p2);
0154
0155 virtual G4double NDeltaToNNKKb(Particle const * const p1, Particle const * const p2);
0156
0157
0158 virtual G4double NpiToLK(Particle const * const p1, Particle const * const p2);
0159 virtual G4double NpiToSK(Particle const * const p1, Particle const * const p2);
0160 virtual G4double p_pimToSzKz(Particle const * const p1, Particle const * const p2);
0161 virtual G4double p_pimToSmKp(Particle const * const p1, Particle const * const p2);
0162 virtual G4double p_pizToSzKp(Particle const * const p1, Particle const * const p2);
0163 virtual G4double NpiToLKpi(Particle const * const p1, Particle const * const p2);
0164 virtual G4double NpiToSKpi(Particle const * const p1, Particle const * const p2);
0165 virtual G4double NpiToLK2pi(Particle const * const p1, Particle const * const p2);
0166 virtual G4double NpiToSK2pi(Particle const * const p1, Particle const * const p2);
0167 virtual G4double NpiToNKKb(Particle const * const p1, Particle const * const p2);
0168
0169 virtual G4double NpiToMissingStrangeness(Particle const * const p1, Particle const * const p2);
0170
0171
0172 virtual G4double NLToNS(Particle const * const p1, Particle const * const p2);
0173 virtual G4double NSToNL(Particle const * const p1, Particle const * const p2);
0174 virtual G4double NSToNS(Particle const * const p1, Particle const * const p2);
0175
0176
0177 virtual G4double NKToNK(Particle const * const p1, Particle const * const p2);
0178 virtual G4double NKToNKpi(Particle const * const p1, Particle const * const p2);
0179 virtual G4double NKToNK2pi(Particle const * const p1, Particle const * const p2);
0180
0181
0182 virtual G4double NKbToNKb(Particle const * const p1, Particle const * const p2);
0183 virtual G4double NKbToSpi(Particle const * const p1, Particle const * const p2);
0184 virtual G4double NKbToLpi(Particle const * const p1, Particle const * const p2);
0185 virtual G4double NKbToS2pi(Particle const * const p1, Particle const * const p2);
0186 virtual G4double NKbToL2pi(Particle const * const p1, Particle const * const p2);
0187 virtual G4double NKbToNKbpi(Particle const * const p1, Particle const * const p2);
0188 virtual G4double NKbToNKb2pi(Particle const * const p1, Particle const * const p2);
0189
0190
0191
0192 virtual G4double NNbarElastic(Particle const* const p1, Particle const* const p2);
0193 virtual G4double NNbarCEX(Particle const* const p1, Particle const* const p2);
0194
0195 virtual G4double NNbarToLLbar(Particle const * const p1, Particle const * const p2);
0196
0197
0198 virtual G4double NNbarToNNbarpi(Particle const* const p1, Particle const* const p2);
0199 virtual G4double NNbarToNNbar2pi(Particle const* const p1, Particle const* const p2);
0200 virtual G4double NNbarToNNbar3pi(Particle const* const p1, Particle const* const p2);
0201
0202
0203 virtual G4double NNbarToAnnihilation(Particle const* const p1, Particle const* const p2);
0204
0205 protected:
0206
0207 static const G4int nMaxPiNN;
0208
0209
0210 static const G4int nMaxPiPiN;
0211
0212
0213 const HornerC7 s11pzHC;
0214
0215 const HornerC8 s01ppHC;
0216
0217 const HornerC4 s01pzHC;
0218
0219 const HornerC4 s11pmHC;
0220
0221 const HornerC5 s12pmHC;
0222
0223 const HornerC3 s12ppHC;
0224
0225 const HornerC4 s12zzHC;
0226
0227 const HornerC4 s02pzHC;
0228
0229 const HornerC6 s02pmHC;
0230
0231 const HornerC4 s12mzHC;
0232
0233
0234 static const G4double s11pzOOT;
0235
0236 static const G4double s01ppOOT;
0237
0238 static const G4double s01pzOOT;
0239
0240 static const G4double s11pmOOT;
0241
0242 static const G4double s12pmOOT;
0243
0244 static const G4double s12ppOOT;
0245
0246 static const G4double s12zzOOT;
0247
0248 static const G4double s02pzOOT;
0249
0250 static const G4double s02pmOOT;
0251
0252 static const G4double s12mzOOT;
0253
0254
0255 G4double NNElastic(Particle const * const part1, Particle const * const part2);
0256
0257
0258 G4double NNElasticFixed(const G4double s, const G4int i);
0259
0260
0261 G4double NNTot(Particle const * const part1, Particle const * const part2);
0262
0263
0264 G4double NNTotFixed(const G4double s, const G4int i);
0265
0266
0267 G4double NNInelasticIso(const G4double ener, const G4int iso);
0268
0269
0270 virtual G4double NNOnePiOrDelta(const G4double ener, const G4int iso, const G4double xsiso);
0271
0272 virtual G4double NNTwoPi(const G4double ener, const G4int iso, const G4double xsiso);
0273
0274 virtual G4double NNThreePi(const G4double ener, const G4int iso, const G4double xsiso, const G4double xs1pi, const G4double xs2pi);
0275
0276
0277 virtual G4double NNOnePi(Particle const * const part1, Particle const * const part2);
0278
0279 virtual G4double NNOnePiOrDelta(Particle const * const part1, Particle const * const part2);
0280
0281 virtual G4double NNTwoPi(Particle const * const part1, Particle const * const part2);
0282
0283 virtual G4double NNThreePi(Particle const * const part1, Particle const * const part2);
0284
0285 virtual G4double NNFourPi(Particle const * const part1, Particle const * const part2);
0286
0287
0288 G4double spnPiPlusPHE(const G4double x);
0289
0290 G4double spnPiMinusPHE(const G4double x);
0291 G4double piNIne(Particle const * const p1, Particle const * const p2);
0292 G4double piNTot(Particle const * const p1, Particle const * const p2);
0293 G4double piNTopiN(Particle const * const p1, Particle const * const p2);
0294 G4double piPluspIne(Particle const * const p1, Particle const * const p2);
0295 G4double piMinuspIne(Particle const * const p1, Particle const * const p2);
0296 G4double piPluspOnePi(Particle const * const p1, Particle const * const p2);
0297 G4double piMinuspOnePi(Particle const * const p1, Particle const * const p2);
0298 G4double piPluspTwoPi(Particle const * const p1, Particle const * const p2);
0299 G4double piMinuspTwoPi(Particle const * const p1, Particle const * const p2);
0300
0301
0302 virtual G4double piNOnePi(Particle const * const p1, Particle const * const p2);
0303
0304
0305 virtual G4double piNTwoPi(Particle const * const p1, Particle const * const p2);
0306
0307
0308 };
0309 }
0310
0311 #endif