34#define INCLXX_IN_GEANT4_MODE 1
49 const G4double NNToMultiPionsChannel::angularSlope = 6.;
58 std::fill(isosp, isosp+4, 0);
72 list.push_back(particle1);
73 list.push_back(particle2);
85 const ThreeVector rcol = (rcolnucleon1+rcolnucleon2)*0.5;
87 for(
G4int i=0; i<npion; ++i) {
100 void NNToMultiPionsChannel::isospinRepartition() {
103 const G4int itot=iso1+iso2;
107 if (p < 1.) pn_ppPim();
108 else if (p < 2.) pn_pnPi0();
111 else if (npion == 2) {
114 if (p >= 14.) pp_nnPipPip();
115 else if (p >= 11.) pp_pnPipPi0();
116 else if (p >= 7.) pp_ppPi0Pi0();
119 else if (itot == -2) {
121 if (p >= 14.) nn_ppPimPim();
122 else if (p >= 11.) nn_pnPimPi0();
123 else if (p >= 7.) nn_nnPi0Pi0();
139 if (p >= 51.) pn_nnPipPi0();
140 else if (p >= 33.) pn_pnPi0Pi0();
141 else if (p >= 9.) pn_pnPipPim();
146 else if (npion == 3) {
149 if (p >= 42.) pp_nnPipPipPi0();
150 else if (p >= 39.) pp_pnPipPi0Pi0();
151 else if (p >= 33.) pp_pnPipPipPim();
152 else if (p >= 22.) pp_ppPi0Pi0Pi0();
153 else pp_ppPipPimPi0();
155 else if (itot == -2) {
156 if (p >= 42.) nn_ppPimPimPi0();
157 else if (p >= 39.) nn_pnPimPi0Pi0();
158 else if (p >= 33.) nn_pnPipPimPim();
159 else if (p >= 22.) nn_nnPi0Pi0Pi0();
160 else nn_nnPipPimPi0();
163 if (p >= 57.) pn_nnPipPi0Pi0();
164 else if (p >= 51.) pn_nnPipPipPim();
165 else if (p >= 37.) pn_pnPi0Pi0Pi0();
166 else if (p >= 9.) pn_pnPi0PipPim();
167 else if (p >= 6.) pn_ppPimPi0Pi0();
168 else pn_ppPimPimPip();
172 else if (npion == 4) {
175 if (p >= 48.) pp_nnPipPipPipPim();
176 else if (p >= 42.) pp_nnPipPipPi0Pi0();
177 else if (p >= 36.) pp_pnPipPipPi0Pim();
178 else if (p >= 33.) pp_pnPipPi0Pi0Pi0();
179 else if (p >= 19.) pp_ppPipPipPimPim();
180 else if (p >= 4.) pp_ppPipPi0Pi0Pim();
181 else pp_ppPi0Pi0Pi0Pi0();
183 else if (itot == -2) {
184 if (p >= 48.) nn_ppPipPimPimPim();
185 else if (p >= 42.) nn_ppPi0Pi0PimPim();
186 else if (p >= 36.) nn_pnPipPi0PimPim();
187 else if (p >= 33.) nn_pnPi0Pi0Pi0Pim();
188 else if (p >= 19.) nn_nnPipPipPimPim();
189 else if (p >= 4.) nn_nnPipPi0Pi0Pim();
190 else nn_nnPi0Pi0Pi0Pi0();
196 if (p < 1.) pn_pnPi0Pi0Pi0Pi0();
197 else if (p < 5.) pn_pnPipPi0Pi0Pim();
198 else pn_pnPipPipPimPim();
201 if (p < 3.) pn_ppPi0Pi0Pi0Pim();
202 else if (p < 9.) pn_ppPipPi0PimPim();
203 else if (p < 15.) pn_pnPi0Pi0Pi0Pi0();
204 else if (p < 35.) pn_pnPipPi0Pi0Pim();
205 else if (p < 51.) pn_pnPipPipPimPim();
206 else if (p < 54.) pn_nnPipPi0Pi0Pi0();
207 else pn_nnPipPipPi0Pim();
217 void NNToMultiPionsChannel::pn_ppPim() {
222 void NNToMultiPionsChannel::pn_pnPi0() {
225 void NNToMultiPionsChannel::pn_nnPip() {
230 void NNToMultiPionsChannel::pp_nnPipPip() {
236 void NNToMultiPionsChannel::nn_ppPimPim() {
242 void NNToMultiPionsChannel::pn_pnPipPim() {
246 void NNToMultiPionsChannel::pn_pnPi0Pi0() {
250 void NNToMultiPionsChannel::pp_ppPipPim() {
254 void NNToMultiPionsChannel::nn_nnPipPim() {
258 void NNToMultiPionsChannel::pp_ppPi0Pi0() {
262 void NNToMultiPionsChannel::nn_nnPi0Pi0() {
266 void NNToMultiPionsChannel::pp_pnPipPi0() {
272 void NNToMultiPionsChannel::pn_ppPimPi0() {
278 void NNToMultiPionsChannel::pn_nnPipPi0() {
284 void NNToMultiPionsChannel::nn_pnPimPi0() {
290 void NNToMultiPionsChannel::pp_pnPipPi0Pi0() {
297 void NNToMultiPionsChannel::nn_pnPimPi0Pi0() {
304 void NNToMultiPionsChannel::pn_nnPipPi0Pi0() {
311 void NNToMultiPionsChannel::pp_ppPipPimPi0() {
316 void NNToMultiPionsChannel::nn_nnPipPimPi0() {
321 void NNToMultiPionsChannel::pp_ppPi0Pi0Pi0() {
326 void NNToMultiPionsChannel::nn_nnPi0Pi0Pi0() {
331 void NNToMultiPionsChannel::pp_pnPipPipPim() {
338 void NNToMultiPionsChannel::pp_nnPipPipPi0() {
345 void NNToMultiPionsChannel::pn_ppPimPi0Pi0() {
352 void NNToMultiPionsChannel::pn_ppPimPimPip() {
359 void NNToMultiPionsChannel::pn_pnPi0PipPim() {
364 void NNToMultiPionsChannel::pn_pnPi0Pi0Pi0() {
369 void NNToMultiPionsChannel::pn_nnPipPipPim() {
376 void NNToMultiPionsChannel::nn_pnPipPimPim() {
383 void NNToMultiPionsChannel::nn_ppPimPimPi0() {
390 void NNToMultiPionsChannel::pp_nnPipPipPi0Pi0() {
398 void NNToMultiPionsChannel::pp_nnPipPipPipPim() {
406 void NNToMultiPionsChannel::nn_ppPi0Pi0PimPim() {
414 void NNToMultiPionsChannel::nn_ppPipPimPimPim() {
422 void NNToMultiPionsChannel::pp_ppPi0Pi0Pi0Pi0() {
428 void NNToMultiPionsChannel::nn_nnPi0Pi0Pi0Pi0() {
434 void NNToMultiPionsChannel::pn_pnPi0Pi0Pi0Pi0() {
440 void NNToMultiPionsChannel::pp_ppPipPi0Pi0Pim() {
446 void NNToMultiPionsChannel::nn_nnPipPi0Pi0Pim() {
452 void NNToMultiPionsChannel::pn_pnPipPi0Pi0Pim() {
458 void NNToMultiPionsChannel::pp_ppPipPipPimPim() {
464 void NNToMultiPionsChannel::nn_nnPipPipPimPim() {
470 void NNToMultiPionsChannel::pn_pnPipPipPimPim() {
476 void NNToMultiPionsChannel::pp_pnPipPi0Pi0Pi0() {
484 void NNToMultiPionsChannel::pn_nnPipPi0Pi0Pi0() {
492 void NNToMultiPionsChannel::pp_nnPipPi0Pi0Pi0() {
500 void NNToMultiPionsChannel::pp_pnPipPipPi0Pim() {
508 void NNToMultiPionsChannel::pn_nnPipPipPi0Pim() {
516 void NNToMultiPionsChannel::pp_nnPipPipPi0Pim() {
524 void NNToMultiPionsChannel::nn_pnPi0Pi0Pi0Pim() {
532 void NNToMultiPionsChannel::pn_ppPi0Pi0Pi0Pim() {
540 void NNToMultiPionsChannel::nn_pnPipPi0PimPim() {
548 void NNToMultiPionsChannel::pn_ppPipPi0PimPim() {
557 void NNToMultiPionsChannel::inter2Part(
const G4double p) {
void addModifiedParticle(Particle *p)
void addCreatedParticle(Particle *p)
void fillFinalState(FinalState *fs)
virtual ~NNToMultiPionsChannel()
NNToMultiPionsChannel(const G4int, Particle *, Particle *)
const G4INCL::ThreeVector & getPosition() const
G4INCL::ParticleType getType() const
void setType(ParticleType t)
G4double totalEnergyInCM(Particle const *const p1, Particle const *const p2)
G4int getIsospin(const ParticleType t)
Get the isospin of a particle.
ParticleType getNucleonType(const G4int isosp)
Get the type of nucleon.
ParticleType getPionType(const G4int isosp)
Get the type of pion.
void generateBiased(const G4double sqrtS, ParticleList &particles, const size_t index, const G4double slope)
Generate a biased event in the CM system.
Adapter const & getAdapter()