34 #define INCLXX_IN_GEANT4_MODE 1
127 isParticle1Spectator(false),
128 isParticle2Spectator(false),
148 <<
") MeV = cutNN" <<
"; returning a NULL channel" <<
'\n');
178 INCL_DEBUG(
"CM distance of approach is too small: " << minDist <<
">" <<
202 const G4double StrangenessProdCX = (NLKProductionCX + NSKProductionCX + NLKpiProductionCX + NSKpiProductionCX + NLK2piProductionCX + NSK2piProductionCX + NNKKbProductionCX + NNMissingCX)/
bias;
204 G4double counterweight = (1. -
bias * StrangenessProdCX / (StrangenessProdCX + UnStrangeProdCX))/(1. - StrangenessProdCX / (StrangenessProdCX + UnStrangeProdCX));
206 if(counterweight < 0.5) {
208 limit_bias = 0.5*UnStrangeProdCX/StrangenessProdCX+1;
246 if(elasticCX > rChannel) {
249 INCL_DEBUG(
"NN interaction: elastic channel chosen" <<
'\n');
252 }
else if((elasticCX + deltaProductionCX) > rChannel) {
255 INCL_DEBUG(
"NN interaction: Delta channel chosen" <<
'\n');
258 }
else if(elasticCX + deltaProductionCX + onePiProductionCX > rChannel) {
261 INCL_DEBUG(
"NN interaction: one Pion channel chosen" <<
'\n');
264 }
else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX > rChannel) {
267 INCL_DEBUG(
"NN interaction: two Pions channel chosen" <<
'\n');
270 }
else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX > rChannel) {
273 INCL_DEBUG(
"NN interaction: three Pions channel chosen" <<
'\n');
276 }
else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + fourPiProductionCX > rChannel) {
279 INCL_DEBUG(
"NN interaction: four Pions channel chosen" <<
'\n');
282 }
else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + fourPiProductionCX
283 + etaProductionCX > rChannel) {
286 INCL_DEBUG(
"NN interaction: Eta channel chosen" <<
'\n');
289 }
else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + fourPiProductionCX
290 + etaProductionCX + etadeltaProductionCX > rChannel) {
293 INCL_DEBUG(
"NN interaction: Delta Eta channel chosen" <<
'\n');
296 }
else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + fourPiProductionCX
297 + etaProductionCX + etadeltaProductionCX + etaonePiProductionCX > rChannel) {
300 INCL_DEBUG(
"NN interaction: Eta + one Pion channel chosen" <<
'\n');
303 }
else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + fourPiProductionCX
304 + etaProductionCX + etadeltaProductionCX + etaonePiProductionCX + etatwoPiProductionCX > rChannel) {
307 INCL_DEBUG(
"NN interaction: Eta + two Pions channel chosen" <<
'\n');
310 }
else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + fourPiProductionCX
311 + etaProductionCX + etadeltaProductionCX + etaonePiProductionCX + etatwoPiProductionCX + etathreePiProductionCX > rChannel) {
314 INCL_DEBUG(
"NN interaction: Eta + three Pions channel chosen" <<
'\n');
317 }
else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + fourPiProductionCX
318 + etaProductionCX + etadeltaProductionCX + etaonePiProductionCX + etatwoPiProductionCX + etathreePiProductionCX + etafourPiProductionCX > rChannel) {
321 INCL_DEBUG(
"NN interaction: Eta + four Pions channel chosen" <<
'\n');
324 }
else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + fourPiProductionCX
325 + etaProductionCX + etadeltaProductionCX + etaonePiProductionCX + etatwoPiProductionCX + etathreePiProductionCX + etafourPiProductionCX
326 + omegaProductionCX > rChannel) {
329 INCL_DEBUG(
"NN interaction: Omega channel chosen" <<
'\n');
332 }
else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + fourPiProductionCX
333 + etaProductionCX + etadeltaProductionCX + etaonePiProductionCX + etatwoPiProductionCX + etathreePiProductionCX + etafourPiProductionCX
334 + omegaProductionCX + omegadeltaProductionCX > rChannel) {
337 INCL_DEBUG(
"NN interaction: Delta Omega channel chosen" <<
'\n');
340 }
else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + fourPiProductionCX
341 + etaProductionCX + etadeltaProductionCX + etaonePiProductionCX + etatwoPiProductionCX + etathreePiProductionCX + etafourPiProductionCX
342 + omegaProductionCX + omegadeltaProductionCX + omegaonePiProductionCX > rChannel) {
345 INCL_DEBUG(
"NN interaction: Omega + one Pion channel chosen" <<
'\n');
348 }
else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + fourPiProductionCX
349 + etaProductionCX + etadeltaProductionCX + etaonePiProductionCX + etatwoPiProductionCX + etathreePiProductionCX + etafourPiProductionCX
350 + omegaProductionCX + omegadeltaProductionCX + omegaonePiProductionCX + omegatwoPiProductionCX > rChannel) {
353 INCL_DEBUG(
"NN interaction: Omega + two Pions channel chosen" <<
'\n');
356 }
else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + fourPiProductionCX
357 + etaProductionCX + etadeltaProductionCX + etaonePiProductionCX + etatwoPiProductionCX + etathreePiProductionCX + etafourPiProductionCX
358 + omegaProductionCX + omegadeltaProductionCX + omegaonePiProductionCX + omegatwoPiProductionCX + omegathreePiProductionCX > rChannel) {
361 INCL_DEBUG(
"NN interaction: Omega + three Pions channel chosen" <<
'\n');
364 }
else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + fourPiProductionCX
365 + etaProductionCX + etadeltaProductionCX + etaonePiProductionCX + etatwoPiProductionCX + etathreePiProductionCX + etafourPiProductionCX
366 + omegaProductionCX + omegadeltaProductionCX + omegaonePiProductionCX + omegatwoPiProductionCX + omegathreePiProductionCX + omegafourPiProductionCX > rChannel) {
369 INCL_DEBUG(
"NN interaction: Omega + four Pions channel chosen" <<
'\n');
372 }
else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + fourPiProductionCX
373 + etaProductionCX + etadeltaProductionCX + etaonePiProductionCX + etatwoPiProductionCX + etathreePiProductionCX + etafourPiProductionCX
374 + omegaProductionCX + omegadeltaProductionCX + omegaonePiProductionCX + omegatwoPiProductionCX + omegathreePiProductionCX + omegafourPiProductionCX
375 + NLKProductionCX > rChannel) {
378 INCL_DEBUG(
"NN interaction: NLK channel chosen" <<
'\n');
381 }
else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + fourPiProductionCX
382 + etaProductionCX + etadeltaProductionCX + etaonePiProductionCX + etatwoPiProductionCX + etathreePiProductionCX + etafourPiProductionCX
383 + omegaProductionCX + omegadeltaProductionCX + omegaonePiProductionCX + omegatwoPiProductionCX + omegathreePiProductionCX + omegafourPiProductionCX
384 + NLKProductionCX + NLKpiProductionCX > rChannel) {
387 INCL_DEBUG(
"NN interaction: NLKpi channel chosen" <<
'\n');
390 }
else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + fourPiProductionCX
391 + etaProductionCX + etadeltaProductionCX + etaonePiProductionCX + etatwoPiProductionCX + etathreePiProductionCX + etafourPiProductionCX
392 + omegaProductionCX + omegadeltaProductionCX + omegaonePiProductionCX + omegatwoPiProductionCX + omegathreePiProductionCX + omegafourPiProductionCX
393 + NLKProductionCX + NLKpiProductionCX + NLK2piProductionCX > rChannel) {
396 INCL_DEBUG(
"NN interaction: NLK2pi channel chosen" <<
'\n');
399 }
else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + fourPiProductionCX
400 + etaProductionCX + etadeltaProductionCX + etaonePiProductionCX + etatwoPiProductionCX + etathreePiProductionCX + etafourPiProductionCX
401 + omegaProductionCX + omegadeltaProductionCX + omegaonePiProductionCX + omegatwoPiProductionCX + omegathreePiProductionCX + omegafourPiProductionCX
402 + NLKProductionCX + NLKpiProductionCX + NLK2piProductionCX + NSKProductionCX > rChannel) {
405 INCL_DEBUG(
"NN interaction: NSK channel chosen" <<
'\n');
408 }
else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + fourPiProductionCX
409 + etaProductionCX + etadeltaProductionCX + etaonePiProductionCX + etatwoPiProductionCX + etathreePiProductionCX + etafourPiProductionCX
410 + omegaProductionCX + omegadeltaProductionCX + omegaonePiProductionCX + omegatwoPiProductionCX + omegathreePiProductionCX + omegafourPiProductionCX
411 + NLKProductionCX + NLKpiProductionCX + NLK2piProductionCX + NSKProductionCX + NSKpiProductionCX > rChannel) {
414 INCL_DEBUG(
"NN interaction: NSKpi channel chosen" <<
'\n');
417 }
else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + fourPiProductionCX
418 + etaProductionCX + etadeltaProductionCX + etaonePiProductionCX + etatwoPiProductionCX + etathreePiProductionCX + etafourPiProductionCX
419 + omegaProductionCX + omegadeltaProductionCX + omegaonePiProductionCX + omegatwoPiProductionCX + omegathreePiProductionCX + omegafourPiProductionCX
420 + NLKProductionCX + NLKpiProductionCX + NLK2piProductionCX + NSKProductionCX + NSKpiProductionCX + NSK2piProductionCX > rChannel) {
423 INCL_DEBUG(
"NN interaction: NSK2pi channel chosen" <<
'\n');
426 }
else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + fourPiProductionCX
427 + etaProductionCX + etadeltaProductionCX + etaonePiProductionCX + etatwoPiProductionCX + etathreePiProductionCX + etafourPiProductionCX
428 + omegaProductionCX + omegadeltaProductionCX + omegaonePiProductionCX + omegatwoPiProductionCX + omegathreePiProductionCX + omegafourPiProductionCX
429 + NLKProductionCX + NLKpiProductionCX + NLK2piProductionCX + NSKProductionCX + NSKpiProductionCX + NSK2piProductionCX + NNKKbProductionCX > rChannel) {
432 INCL_DEBUG(
"NN interaction: NNKKb channel chosen" <<
'\n');
435 }
else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + fourPiProductionCX
436 + etaProductionCX + etadeltaProductionCX + etaonePiProductionCX + etatwoPiProductionCX + etathreePiProductionCX + etafourPiProductionCX
437 + omegaProductionCX + omegadeltaProductionCX + omegaonePiProductionCX + omegatwoPiProductionCX + omegathreePiProductionCX + omegafourPiProductionCX
438 + NLKProductionCX + NLKpiProductionCX + NLK2piProductionCX + NSKProductionCX + NSKpiProductionCX + NSK2piProductionCX + NNKKbProductionCX + NNMissingCX> rChannel) {
441 INCL_DEBUG(
"NN interaction: Missing Strangeness channel chosen" <<
'\n');
445 INCL_WARN(
"inconsistency within the NN Cross Sections (sum!=inelastic)" <<
'\n');
447 INCL_WARN(
"Returning an Missing Strangeness channel" <<
'\n');
451 }
else if(NNKKbProductionCX>0.) {
452 INCL_WARN(
"Returning an NNKKb channel" <<
'\n');
456 }
else if(NSK2piProductionCX>0.) {
457 INCL_WARN(
"Returning an NSK2pi channel" <<
'\n');
461 }
else if(NSKpiProductionCX>0.) {
462 INCL_WARN(
"Returning an NSKpi channel" <<
'\n');
466 }
else if(NSKProductionCX>0.) {
467 INCL_WARN(
"Returning an NSK channel" <<
'\n');
471 }
else if(NLK2piProductionCX>0.) {
472 INCL_WARN(
"Returning an NLK2pi channel" <<
'\n');
476 }
else if(NLKpiProductionCX>0.) {
477 INCL_WARN(
"Returning an NLKpi channel" <<
'\n');
481 }
else if(NLKProductionCX>0.) {
482 INCL_WARN(
"Returning an NLK channel" <<
'\n');
486 }
else if(omegafourPiProductionCX>0.) {
487 INCL_WARN(
"Returning an Omega + four Pions channel" <<
'\n');
491 }
else if(omegathreePiProductionCX>0.) {
492 INCL_WARN(
"Returning an Omega + three Pions channel" <<
'\n');
496 }
else if(omegatwoPiProductionCX>0.) {
497 INCL_WARN(
"Returning an Omega + two Pions channel" <<
'\n');
501 }
else if(omegaonePiProductionCX>0.) {
502 INCL_WARN(
"Returning an Omega + one Pion channel" <<
'\n');
506 }
else if(omegadeltaProductionCX>0.) {
507 INCL_WARN(
"Returning an Omega + Delta channel" <<
'\n');
511 }
else if(omegaProductionCX>0.) {
512 INCL_WARN(
"Returning an Omega channel" <<
'\n');
516 }
else if(etafourPiProductionCX>0.) {
517 INCL_WARN(
"Returning an Eta + four Pions channel" <<
'\n');
521 }
else if(etathreePiProductionCX>0.) {
522 INCL_WARN(
"Returning an Eta + threev channel" <<
'\n');
526 }
else if(etatwoPiProductionCX>0.) {
527 INCL_WARN(
"Returning an Eta + two Pions channel" <<
'\n');
531 }
else if(etaonePiProductionCX>0.) {
532 INCL_WARN(
"Returning an Eta + one Pion channel" <<
'\n');
536 }
else if(etadeltaProductionCX>0.) {
537 INCL_WARN(
"Returning an Eta + Delta channel" <<
'\n');
541 }
else if(etaProductionCX>0.) {
542 INCL_WARN(
"Returning an Eta channel" <<
'\n');
546 }
else if(fourPiProductionCX>0.) {
547 INCL_WARN(
"Returning a 4pi channel" <<
'\n');
551 }
else if(threePiProductionCX>0.) {
552 INCL_WARN(
"Returning a 3pi channel" <<
'\n');
556 }
else if(twoPiProductionCX>0.) {
557 INCL_WARN(
"Returning a 2pi channel" <<
'\n');
561 }
else if(onePiProductionCX>0.) {
562 INCL_WARN(
"Returning a 1pi channel" <<
'\n');
566 }
else if(deltaProductionCX>0.) {
567 INCL_WARN(
"Returning a delta-production channel" <<
'\n');
572 INCL_WARN(
"Returning an elastic channel" <<
'\n');
591 const G4double StrangenessProdCX = (NLKProductionCX + NSKProductionCX + DeltaLKProductionCX + DeltaSKProductionCX + NNKKbProductionCX)/
bias;
593 G4double counterweight = (1. -
bias * StrangenessProdCX / (StrangenessProdCX + UnStrangeProdCX))/(1. - StrangenessProdCX / (StrangenessProdCX + UnStrangeProdCX));
595 if(counterweight < 0.5){
597 limit_bias = 0.5*UnStrangeProdCX/StrangenessProdCX+1;
611 if(elasticCX > rChannel) {
614 INCL_DEBUG(
"NDelta interaction: elastic channel chosen" <<
'\n');
617 }
else if (elasticCX + recombinationCX > rChannel){
621 INCL_DEBUG(
"NDelta interaction: recombination channel chosen" <<
'\n');
624 }
else if (elasticCX + recombinationCX + NLKProductionCX > rChannel){
627 INCL_DEBUG(
"NDelta interaction: NLK channel chosen" <<
'\n');
630 }
else if (elasticCX + recombinationCX + NLKProductionCX + NSKProductionCX > rChannel){
633 INCL_DEBUG(
"NDelta interaction: NSK channel chosen" <<
'\n');
636 }
else if (elasticCX + recombinationCX + NLKProductionCX + NSKProductionCX + DeltaLKProductionCX > rChannel){
639 INCL_DEBUG(
"NDelta interaction: DeltaLK channel chosen" <<
'\n');
642 }
else if (elasticCX + recombinationCX + NLKProductionCX + NSKProductionCX + DeltaLKProductionCX + DeltaSKProductionCX > rChannel){
645 INCL_DEBUG(
"NDelta interaction: DeltaSK channel chosen" <<
'\n');
648 }
else if (elasticCX + recombinationCX + NLKProductionCX + NSKProductionCX + DeltaLKProductionCX + DeltaSKProductionCX + NNKKbProductionCX > rChannel){
651 INCL_DEBUG(
"NDelta interaction: NNKKb channel chosen" <<
'\n');
656 INCL_ERROR(
"rChannel > (StrangenessProdCX + UnStrangeProdCX) in NDelta interaction: return an elastic channel" <<
'\n');
665 INCL_DEBUG(
"DeltaDelta interaction: elastic channel chosen" <<
'\n');
683 const G4double StrangenessProdCX = (LKProdCX + SKProdCX + LKpiProdCX + SKpiProdCX + LK2piProdCX + SK2piProdCX + NKKbProdCX + MissingCX)/
bias;
685 G4double counterweight = (1. -
bias * StrangenessProdCX / (StrangenessProdCX + UnStrangeProdCX))/(1. - StrangenessProdCX / (StrangenessProdCX + UnStrangeProdCX));
687 if(counterweight < 0.5) {
689 limit_bias = 0.5*UnStrangeProdCX/StrangenessProdCX+1;
715 if(elasticCX > rChannel) {
718 INCL_DEBUG(
"PiN interaction: elastic channel chosen" <<
'\n');
721 }
else if(elasticCX + deltaProductionCX > rChannel) {
724 INCL_DEBUG(
"PiN interaction: Delta channel chosen" <<
'\n');
727 }
else if(elasticCX + deltaProductionCX + onePiProductionCX > rChannel) {
730 INCL_DEBUG(
"PiN interaction: one Pion channel chosen" <<
'\n');
733 }
else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX > rChannel) {
736 INCL_DEBUG(
"PiN interaction: two Pions channel chosen" <<
'\n');
739 }
else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX > rChannel) {
742 INCL_DEBUG(
"PiN interaction: three Pions channel chosen" <<
'\n');
745 }
else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + etaProductionCX > rChannel) {
748 INCL_DEBUG(
"PiN interaction: Eta channel chosen" <<
'\n');
751 }
else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + etaProductionCX+ omegaProductionCX > rChannel) {
754 INCL_DEBUG(
"PiN interaction: Omega channel chosen" <<
'\n');
757 }
else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + etaProductionCX+ omegaProductionCX
758 + LKProdCX > rChannel) {
761 INCL_DEBUG(
"PiN interaction: LK channel chosen" <<
'\n');
764 }
else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + etaProductionCX+ omegaProductionCX
765 + LKProdCX + SKProdCX > rChannel) {
768 INCL_DEBUG(
"PiN interaction: SK channel chosen" <<
'\n');
771 }
else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + etaProductionCX+ omegaProductionCX
772 + LKProdCX + SKProdCX + LKpiProdCX > rChannel) {
775 INCL_DEBUG(
"PiN interaction: LKpi channel chosen" <<
'\n');
778 }
else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + etaProductionCX+ omegaProductionCX
779 + LKProdCX + SKProdCX + LKpiProdCX + SKpiProdCX > rChannel) {
782 INCL_DEBUG(
"PiN interaction: SKpi channel chosen" <<
'\n');
785 }
else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + etaProductionCX+ omegaProductionCX
786 + LKProdCX + SKProdCX + LKpiProdCX + SKpiProdCX + LK2piProdCX > rChannel) {
789 INCL_DEBUG(
"PiN interaction: LK2pi channel chosen" <<
'\n');
792 }
else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + etaProductionCX+ omegaProductionCX
793 + LKProdCX + SKProdCX + LKpiProdCX + SKpiProdCX + LK2piProdCX + SK2piProdCX > rChannel) {
796 INCL_DEBUG(
"PiN interaction: SK2pi channel chosen" <<
'\n');
799 }
else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + etaProductionCX+ omegaProductionCX
800 + LKProdCX + SKProdCX + LKpiProdCX + SKpiProdCX + LK2piProdCX + SK2piProdCX + NKKbProdCX > rChannel) {
803 INCL_DEBUG(
"PiN interaction: NKKb channel chosen" <<
'\n');
806 }
else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + etaProductionCX+ omegaProductionCX
807 + LKProdCX + SKProdCX + LKpiProdCX + SKpiProdCX + LK2piProdCX + SK2piProdCX + NKKbProdCX + MissingCX> rChannel) {
810 INCL_DEBUG(
"PiN interaction: Missinge Strangeness channel chosen" <<
'\n');
815 INCL_WARN(
"inconsistency within the PiN Cross Sections (sum!=inelastic)" <<
'\n');
817 INCL_WARN(
"Returning a Missinge Strangeness channel" <<
'\n');
821 }
else if(NKKbProdCX>0.) {
822 INCL_WARN(
"Returning a NKKb channel" <<
'\n');
826 }
else if(SK2piProdCX>0.) {
827 INCL_WARN(
"Returning a SK2pi channel" <<
'\n');
831 }
else if(LK2piProdCX>0.) {
832 INCL_WARN(
"Returning a LK2pi channel" <<
'\n');
836 }
else if(SKpiProdCX>0.) {
837 INCL_WARN(
"Returning a SKpi channel" <<
'\n');
841 }
else if(LKpiProdCX>0.) {
842 INCL_WARN(
"Returning a LKpi channel" <<
'\n');
846 }
else if(SKProdCX>0.) {
847 INCL_WARN(
"Returning a SK channel" <<
'\n');
851 }
else if(LKProdCX>0.) {
852 INCL_WARN(
"Returning a LK channel" <<
'\n');
856 }
else if(omegaProductionCX>0.) {
857 INCL_WARN(
"Returning a Omega channel" <<
'\n');
861 }
else if(etaProductionCX>0.) {
862 INCL_WARN(
"Returning a Eta channel" <<
'\n');
866 }
else if(threePiProductionCX>0.) {
867 INCL_WARN(
"Returning a 3pi channel" <<
'\n');
871 }
else if(twoPiProductionCX>0.) {
872 INCL_WARN(
"Returning a 2pi channel" <<
'\n');
876 }
else if(onePiProductionCX>0.) {
877 INCL_WARN(
"Returning a 1pi channel" <<
'\n');
881 }
else if(deltaProductionCX>0.) {
882 INCL_WARN(
"Returning a delta-production channel" <<
'\n');
887 INCL_WARN(
"Returning an elastic channel" <<
'\n');
904 if(elasticCX > rChannel) {
907 INCL_DEBUG(
"EtaN interaction: elastic channel chosen" <<
'\n');
909 }
else if(elasticCX + onePiProductionCX > rChannel) {
912 INCL_DEBUG(
"EtaN interaction: PiN channel chosen" <<
'\n');
914 }
else if(elasticCX + onePiProductionCX + twoPiProductionCX > rChannel) {
917 INCL_DEBUG(
"EtaN interaction: PiPiN channel chosen" <<
'\n');
922 INCL_WARN(
"inconsistency within the EtaN Cross Sections (sum!=inelastic)" <<
'\n');
923 if(twoPiProductionCX>0.) {
924 INCL_WARN(
"Returning a PiPiN channel" <<
'\n');
927 }
else if(onePiProductionCX>0.) {
928 INCL_WARN(
"Returning a PiN channel" <<
'\n');
932 INCL_WARN(
"Returning an elastic channel" <<
'\n');
949 if(elasticCX > rChannel) {
952 INCL_DEBUG(
"OmegaN interaction: elastic channel chosen" <<
'\n');
954 }
else if(elasticCX + onePiProductionCX > rChannel) {
957 INCL_DEBUG(
"OmegaN interaction: PiN channel chosen" <<
'\n');
959 }
else if(elasticCX + onePiProductionCX + twoPiProductionCX > rChannel) {
962 INCL_DEBUG(
"OmegaN interaction: PiPiN channel chosen" <<
'\n');
966 INCL_WARN(
"inconsistency within the OmegaN Cross Sections (sum!=inelastic)" <<
'\n');
967 if(twoPiProductionCX>0.) {
968 INCL_WARN(
"Returning a PiPiN channel" <<
'\n');
971 }
else if(onePiProductionCX>0.) {
972 INCL_WARN(
"Returning a PiN channel" <<
'\n');
976 INCL_WARN(
"Returning an elastic channel" <<
'\n');
991 if(elasticCX > rChannel){
994 INCL_DEBUG(
"KN interaction: elastic channel chosen" <<
'\n');
996 }
else if(elasticCX + quasielasticCX > rChannel){
999 INCL_DEBUG(
"KN interaction: quasi-elastic channel chosen" <<
'\n');
1001 }
else if(elasticCX + quasielasticCX + NKToNKpiCX > rChannel){
1004 INCL_DEBUG(
"KN interaction: NKpi channel chosen" <<
'\n');
1006 }
else if(elasticCX + quasielasticCX + NKToNKpiCX + NKToNK2piCX > rChannel){
1009 INCL_DEBUG(
"KN interaction: NK2pi channel chosen" <<
'\n');
1012 INCL_WARN(
"inconsistency within the KN Cross Sections (sum!=inelastic)" <<
'\n');
1013 if(NKToNK2piCX>0.) {
1014 INCL_WARN(
"Returning a NKToNK2pi channel" <<
'\n');
1017 }
else if(NKToNKpiCX>0.) {
1018 INCL_WARN(
"Returning a NKToNKpi channel" <<
'\n');
1021 }
else if(quasielasticCX>0.) {
1022 INCL_WARN(
"Returning a quasi-elastic channel" <<
'\n');
1026 INCL_WARN(
"Returning an elastic channel" <<
'\n');
1045 if(elasticCX > rChannel){
1048 INCL_DEBUG(
"KbN interaction: elastic channel chosen" <<
'\n');
1050 }
else if(elasticCX + quasielasticCX > rChannel){
1053 INCL_DEBUG(
"KbN interaction: quasi-elastic channel chosen" <<
'\n');
1055 }
else if(elasticCX + quasielasticCX + NKbToNKbpiCX > rChannel){
1058 INCL_DEBUG(
"KbN interaction: NKbpi channel chosen" <<
'\n');
1060 }
else if(elasticCX + quasielasticCX + NKbToNKbpiCX + NKbToNKb2piCX > rChannel){
1063 INCL_DEBUG(
"KbN interaction: NKb2pi channel chosen" <<
'\n');
1065 }
else if(elasticCX + quasielasticCX + NKbToNKbpiCX + NKbToNKb2piCX + NKbToLpiCX > rChannel){
1068 INCL_DEBUG(
"KbN interaction: Lpi channel chosen" <<
'\n');
1070 }
else if(elasticCX + quasielasticCX + NKbToNKbpiCX + NKbToNKb2piCX + NKbToLpiCX + NKbToL2piCX > rChannel){
1073 INCL_DEBUG(
"KbN interaction: L2pi channel chosen" <<
'\n');
1075 }
else if(elasticCX + quasielasticCX + NKbToNKbpiCX + NKbToNKb2piCX + NKbToLpiCX + NKbToL2piCX + NKbToSpiCX > rChannel){
1078 INCL_DEBUG(
"KbN interaction: Spi channel chosen" <<
'\n');
1080 }
else if(elasticCX + quasielasticCX + NKbToNKbpiCX + NKbToNKb2piCX + NKbToLpiCX + NKbToL2piCX + NKbToSpiCX + NKbToS2piCX > rChannel){
1083 INCL_DEBUG(
"KbN interaction: S2pi channel chosen" <<
'\n');
1086 INCL_WARN(
"inconsistency within the KbN Cross Sections (sum!=inelastic)" <<
'\n');
1087 if(NKbToS2piCX>0.) {
1088 INCL_WARN(
"Returning a NKbToS2pi channel" <<
'\n');
1091 }
else if(NKbToSpiCX>0.) {
1092 INCL_WARN(
"Returning a NKbToSpi channel" <<
'\n');
1095 }
else if(NKbToL2piCX>0.) {
1096 INCL_WARN(
"Returning a NKbToL2pi channel" <<
'\n');
1099 }
else if(NKbToLpiCX>0.) {
1100 INCL_WARN(
"Returning a NKbToLpi channel" <<
'\n');
1103 }
else if(NKbToNKb2piCX>0.) {
1104 INCL_WARN(
"Returning a NKbToNKb2pi channel" <<
'\n');
1107 }
else if(NKbToNKbpiCX>0.) {
1108 INCL_WARN(
"Returning a NKbToNKbpi channel" <<
'\n');
1111 }
else if(quasielasticCX>0.) {
1112 INCL_WARN(
"Returning a quasi-elastic channel" <<
'\n');
1116 INCL_WARN(
"Returning an elastic channel" <<
'\n');
1129 if(elasticCX > rChannel){
1132 INCL_DEBUG(
"NLambda interaction: elastic channel chosen" <<
'\n');
1134 }
else if(elasticCX + NLToNSCX > rChannel){
1137 INCL_DEBUG(
"NLambda interaction: quasi-elastic channel chosen" <<
'\n');
1140 INCL_WARN(
"inconsistency within the NLambda Cross Sections (sum!=inelastic)" <<
'\n');
1142 INCL_WARN(
"Returning a quasi-elastic channel" <<
'\n');
1146 INCL_WARN(
"Returning an elastic channel" <<
'\n');
1160 if(elasticCX > rChannel){
1163 INCL_DEBUG(
"NSigma interaction: elastic channel chosen" <<
'\n');
1165 }
else if(elasticCX + NSToNLCX > rChannel){
1168 INCL_DEBUG(
"NSigma interaction: NLambda channel chosen" <<
'\n');
1170 }
else if(elasticCX + NSToNLCX + NSToNSCX > rChannel){
1173 INCL_DEBUG(
"NSigma interaction: NSigma quasi-elastic channel chosen" <<
'\n');
1176 INCL_WARN(
"inconsistency within the NSigma Cross Sections (sum!=inelastic)" <<
'\n');
1178 INCL_WARN(
"Returning a quasi-elastic channel" <<
'\n');
1181 }
else if(NSToNLCX>0.) {
1182 INCL_WARN(
"Returning a NLambda channel" <<
'\n');
1186 INCL_WARN(
"Returning an elastic channel" <<
'\n');
1194 INCL_DEBUG(
"BinaryCollisionAvatar can only handle nucleons (for the moment)."
1236 INCL_ERROR(
"First collision must be within a target spectator and a non-target spectator");
1254 std::stringstream
ss;
1255 ss <<
"(avatar " <<
theTime <<
" 'nn-collision" <<
'\n'
G4double total(Particle const *const p1, Particle const *const p2)
G4double NDeltaToNSK(Particle const *const p1, Particle const *const p2)
const G4INCL::ThreeVector & getPosition() const
G4double NDeltaToDeltaSK(Particle const *const p1, Particle const *const p2)
G4double NKbToSpi(Particle const *const p1, Particle const *const p2)
void setType(AvatarType t)
G4double NNToNNOmegaExclu(Particle const *const p1, Particle const *const p2)
static G4ThreadLocal Particle * backupParticle1
G4double NKbToNKb2pi(Particle const *const p1, Particle const *const p2)
virtual ~BinaryCollisionAvatar()
G4bool isOmega() const
Is this an omega?
const G4INCL::ThreeVector & getMomentum() const
G4double dot(const ThreeVector &v) const
G4double elastic(Particle const *const p1, Particle const *const p2)
FinalStateValidity getValidity() const
void setFirstCollisionSpectatorMomentum(const G4double x)
G4double squareTotalEnergyInCM(Particle const *const p1, Particle const *const p2)
G4double NKbToS2pi(Particle const *const p1, Particle const *const p2)
G4double NNToNNEtaExclu(Particle const *const p1, Particle const *const p2)
G4double NDeltaToDeltaLK(Particle const *const p1, Particle const *const p2)
void setFirstCollisionIsElastic(const G4bool e)
G4double NNToNDeltaOmega(Particle const *const p1, Particle const *const p2)
G4bool isSigma() const
Is this a Sigma?
G4double omegaNToPiPiN(Particle const *const p1, Particle const *const p2)
G4bool isParticle1Spectator
Delta-nucleon recombination channel.
virtual void postInteraction(FinalState *)
BinaryCollisionAvatar(G4double, G4double, G4INCL::Nucleus *, G4INCL::Particle *, G4INCL::Particle *)
G4double piNToDelta(Particle const *const p1, Particle const *const p2)
G4double NpiToSK2pi(Particle const *const p1, Particle const *const p2)
G4bool isLambda() const
Is this a Lambda?
G4double piNToEtaN(Particle const *const p1, Particle const *const p2)
static G4ThreadLocal G4double bias
G4double NNToNSKpi(Particle const *const p1, Particle const *const p2)
G4double piNToOmegaN(Particle const *const p1, Particle const *const p2)
G4double NLToNS(Particle const *const p1, Particle const *const p2)
G4double NNToMissingStrangeness(Particle const *const p1, Particle const *const p2)
G4bool isDelta() const
Is it a Delta?
G4double NKToNKpi(Particle const *const p1, Particle const *const p2)
G4double NDeltaToNN(Particle const *const p1, Particle const *const p2)
G4double NNToNNEtaxPi(const G4int xpi, Particle const *const p1, Particle const *const p2)
G4INCL::IChannel * getChannel()
void setFirstCollisionSpectatorPosition(const G4double x)
G4double NpiToSKpi(Particle const *const p1, Particle const *const p2)
void incrementAcceptedCollisions()
G4double NDeltaToNNKKb(Particle const *const p1, Particle const *const p2)
std::string print() const
G4double NSToNS(Particle const *const p1, Particle const *const p2)
G4double NpiToSK(Particle const *const p1, Particle const *const p2)
G4double etaNToPiPiN(Particle const *const p1, Particle const *const p2)
G4double NpiToLK2pi(Particle const *const p1, Particle const *const p2)
G4bool isParticle2Spectator
void setFirstCollisionXSec(const G4double x)
G4double NNToNLKpi(Particle const *const p1, Particle const *const p2)
G4bool isTargetSpectator() const
G4double NpiToNKKb(Particle const *const p1, Particle const *const p2)
void incrementBlockedCollisions()
G4double NKbToL2pi(Particle const *const p1, Particle const *const p2)
static G4ThreadLocal G4double cutNN
G4double omegaNToPiN(Particle const *const p1, Particle const *const p2)
void postInteraction(FinalState *)
G4int getAcceptedCollisions() const
G4double NDeltaToNLK(Particle const *const p1, Particle const *const p2)
G4double NNToNSK(Particle const *const p1, Particle const *const p2)
virtual void preInteraction()
G4double NSToNL(Particle const *const p1, Particle const *const p2)
G4double NNToNSK2pi(Particle const *const p1, Particle const *const p2)
G4double NKbToNKbpi(Particle const *const p1, Particle const *const p2)
G4double NNToNDelta(Particle const *const p1, Particle const *const p2)
G4bool isKaon() const
Is this a Kaon?
G4bool isEta() const
Is this an eta?
G4double NKToNK2pi(Particle const *const p1, Particle const *const p2)
static G4ThreadLocal G4double cutNNSquared
G4double NpiToLKpi(Particle const *const p1, Particle const *const p2)
G4double NpiToMissingStrangeness(Particle const *const p1, Particle const *const p2)
G4bool isAntiKaon() const
Is this an antiKaon?
G4double NNToxPiNN(const G4int xpi, Particle const *const p1, Particle const *const p2)
G4double NNToNNKKb(Particle const *const p1, Particle const *const p2)
void setFirstCollisionTime(const G4double t)
G4double etaNToPiN(Particle const *const p1, Particle const *const p2)
G4double piNToxPiN(const G4int xpi, Particle const *const p1, Particle const *const p2)
G4double NNToNLK2pi(Particle const *const p1, Particle const *const p2)
static G4ThreadLocal Particle * backupParticle2
G4double NNToNLK(Particle const *const p1, Particle const *const p2)
Strange cross sections.
G4double NKbToNKb(Particle const *const p1, Particle const *const p2)
void restoreParticles() const
Restore the state of both particles.
G4double getCurrentTime() const
G4double NNToNNOmegaxPi(const G4int xpi, Particle const *const p1, Particle const *const p2)
G4double NKToNK(Particle const *const p1, Particle const *const p2)
G4double NNToNDeltaEta(Particle const *const p1, Particle const *const p2)
G4double NKbToLpi(Particle const *const p1, Particle const *const p2)
G4double NpiToLK(Particle const *const p1, Particle const *const p2)