Check again the distance of approach. In order for the avatar to be realised, we have to perform a check in the CM system. We define a distance four-vector as
with a non-zero time component (the collision happens simultaneously for the two particles in the lab system, but not in the CM system). In order for the avatar to be realised, we require that
Bias apply for this reaction in order to get the same ParticleBias for all stange particles. Can be reduced after because of the safeguard.
145 {
146
147
148
153
154 if(energyCM2 < cutNNSquared) {
155 INCL_DEBUG(
"CM energy = sqrt(" << energyCM2 <<
") MeV < std::sqrt(" << cutNNSquared
156 << ") MeV = cutNN" << "; returning a NULL channel" << '\n');
158 return NULL;
159 }
160 }
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
185 if(minDist > theCrossSection) {
186 INCL_DEBUG(
"CM distance of approach is too small: " << minDist <<
">" <<
187 theCrossSection <<"; returning a NULL channel" << '\n');
189 return NULL;
190 }
191
192
193
194
195
198
199
201
210
217 const G4double StrangenessProdCX = (NLKProductionCX + NSKProductionCX + NLKpiProductionCX + NSKpiProductionCX + NLK2piProductionCX + NSK2piProductionCX + NNKKbProductionCX + NNMissingCX)/bias_apply;
218
219 G4double counterweight = (1. - bias_apply * StrangenessProdCX / (StrangenessProdCX + UnStrangeProdCX))/(1. - StrangenessProdCX / (StrangenessProdCX + UnStrangeProdCX));
220
221 if(counterweight < 0.5) {
222 counterweight = 0.5;
223 bias_apply = 0.5*UnStrangeProdCX/StrangenessProdCX+1;
232 }
233
234
241
254
256
257
258
260
261 if(elasticCX > rChannel) {
262
263 isElastic = true;
264 INCL_DEBUG(
"NN interaction: elastic channel chosen" <<
'\n');
267 } else if((elasticCX + deltaProductionCX) > rChannel) {
268 isElastic = false;
269
270 INCL_DEBUG(
"NN interaction: Delta channel chosen" <<
'\n');
273 } else if(elasticCX + deltaProductionCX + onePiProductionCX > rChannel) {
274 isElastic = false;
275
276 INCL_DEBUG(
"NN interaction: one Pion channel chosen" <<
'\n');
279 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX > rChannel) {
280 isElastic = false;
281
282 INCL_DEBUG(
"NN interaction: two Pions channel chosen" <<
'\n');
285 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX > rChannel) {
286 isElastic = false;
287
288 INCL_DEBUG(
"NN interaction: three Pions channel chosen" <<
'\n');
291 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + fourPiProductionCX > rChannel) {
292 isElastic = false;
293
294 INCL_DEBUG(
"NN interaction: four Pions channel chosen" <<
'\n');
297 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + fourPiProductionCX
298 + etaProductionCX > rChannel) {
299 isElastic = false;
300
301 INCL_DEBUG(
"NN interaction: Eta channel chosen" <<
'\n');
304 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + fourPiProductionCX
305 + etaProductionCX + etadeltaProductionCX > rChannel) {
306 isElastic = false;
307
308 INCL_DEBUG(
"NN interaction: Delta Eta channel chosen" <<
'\n');
311 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + fourPiProductionCX
312 + etaProductionCX + etadeltaProductionCX + etaonePiProductionCX > rChannel) {
313 isElastic = false;
314
315 INCL_DEBUG(
"NN interaction: Eta + one Pion channel chosen" <<
'\n');
318 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + fourPiProductionCX
319 + etaProductionCX + etadeltaProductionCX + etaonePiProductionCX + etatwoPiProductionCX > rChannel) {
320 isElastic = false;
321
322 INCL_DEBUG(
"NN interaction: Eta + two Pions channel chosen" <<
'\n');
325 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + fourPiProductionCX
326 + etaProductionCX + etadeltaProductionCX + etaonePiProductionCX + etatwoPiProductionCX + etathreePiProductionCX > rChannel) {
327 isElastic = false;
328
329 INCL_DEBUG(
"NN interaction: Eta + three Pions channel chosen" <<
'\n');
332 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + fourPiProductionCX
333 + etaProductionCX + etadeltaProductionCX + etaonePiProductionCX + etatwoPiProductionCX + etathreePiProductionCX + etafourPiProductionCX > rChannel) {
334 isElastic = false;
335
336 INCL_DEBUG(
"NN interaction: Eta + four Pions channel chosen" <<
'\n');
339 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + fourPiProductionCX
340 + etaProductionCX + etadeltaProductionCX + etaonePiProductionCX + etatwoPiProductionCX + etathreePiProductionCX + etafourPiProductionCX
341 + omegaProductionCX > rChannel) {
342 isElastic = false;
343
344 INCL_DEBUG(
"NN interaction: Omega channel chosen" <<
'\n');
347 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + fourPiProductionCX
348 + etaProductionCX + etadeltaProductionCX + etaonePiProductionCX + etatwoPiProductionCX + etathreePiProductionCX + etafourPiProductionCX
349 + omegaProductionCX + omegadeltaProductionCX > rChannel) {
350 isElastic = false;
351
352 INCL_DEBUG(
"NN interaction: Delta Omega channel chosen" <<
'\n');
355 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + fourPiProductionCX
356 + etaProductionCX + etadeltaProductionCX + etaonePiProductionCX + etatwoPiProductionCX + etathreePiProductionCX + etafourPiProductionCX
357 + omegaProductionCX + omegadeltaProductionCX + omegaonePiProductionCX > rChannel) {
358 isElastic = false;
359
360 INCL_DEBUG(
"NN interaction: Omega + one Pion channel chosen" <<
'\n');
363 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + fourPiProductionCX
364 + etaProductionCX + etadeltaProductionCX + etaonePiProductionCX + etatwoPiProductionCX + etathreePiProductionCX + etafourPiProductionCX
365 + omegaProductionCX + omegadeltaProductionCX + omegaonePiProductionCX + omegatwoPiProductionCX > rChannel) {
366 isElastic = false;
367
368 INCL_DEBUG(
"NN interaction: Omega + two Pions channel chosen" <<
'\n');
371 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + fourPiProductionCX
372 + etaProductionCX + etadeltaProductionCX + etaonePiProductionCX + etatwoPiProductionCX + etathreePiProductionCX + etafourPiProductionCX
373 + omegaProductionCX + omegadeltaProductionCX + omegaonePiProductionCX + omegatwoPiProductionCX + omegathreePiProductionCX > rChannel) {
374 isElastic = false;
375
376 INCL_DEBUG(
"NN interaction: Omega + three Pions channel chosen" <<
'\n');
379 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + fourPiProductionCX
380 + etaProductionCX + etadeltaProductionCX + etaonePiProductionCX + etatwoPiProductionCX + etathreePiProductionCX + etafourPiProductionCX
381 + omegaProductionCX + omegadeltaProductionCX + omegaonePiProductionCX + omegatwoPiProductionCX + omegathreePiProductionCX + omegafourPiProductionCX > rChannel) {
382 isElastic = false;
383
384 INCL_DEBUG(
"NN interaction: Omega + four Pions channel chosen" <<
'\n');
387 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + fourPiProductionCX
388 + etaProductionCX + etadeltaProductionCX + etaonePiProductionCX + etatwoPiProductionCX + etathreePiProductionCX + etafourPiProductionCX
389 + omegaProductionCX + omegadeltaProductionCX + omegaonePiProductionCX + omegatwoPiProductionCX + omegathreePiProductionCX + omegafourPiProductionCX
390 + NLKProductionCX > rChannel) {
391 isElastic = false;
392 isStrangeProduction = true;
393
394 INCL_DEBUG(
"NN interaction: NLK channel chosen" <<
'\n');
397 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + fourPiProductionCX
398 + etaProductionCX + etadeltaProductionCX + etaonePiProductionCX + etatwoPiProductionCX + etathreePiProductionCX + etafourPiProductionCX
399 + omegaProductionCX + omegadeltaProductionCX + omegaonePiProductionCX + omegatwoPiProductionCX + omegathreePiProductionCX + omegafourPiProductionCX
400 + NLKProductionCX + NLKpiProductionCX > rChannel) {
401 isElastic = false;
402 isStrangeProduction = true;
403
404 INCL_DEBUG(
"NN interaction: NLKpi channel chosen" <<
'\n');
407 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + fourPiProductionCX
408 + etaProductionCX + etadeltaProductionCX + etaonePiProductionCX + etatwoPiProductionCX + etathreePiProductionCX + etafourPiProductionCX
409 + omegaProductionCX + omegadeltaProductionCX + omegaonePiProductionCX + omegatwoPiProductionCX + omegathreePiProductionCX + omegafourPiProductionCX
410 + NLKProductionCX + NLKpiProductionCX + NLK2piProductionCX > rChannel) {
411 isElastic = false;
412 isStrangeProduction = true;
413
414 INCL_DEBUG(
"NN interaction: NLK2pi 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 > rChannel) {
421 isElastic = false;
422 isStrangeProduction = true;
423
424 INCL_DEBUG(
"NN interaction: NSK channel chosen" <<
'\n');
427 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + fourPiProductionCX
428 + etaProductionCX + etadeltaProductionCX + etaonePiProductionCX + etatwoPiProductionCX + etathreePiProductionCX + etafourPiProductionCX
429 + omegaProductionCX + omegadeltaProductionCX + omegaonePiProductionCX + omegatwoPiProductionCX + omegathreePiProductionCX + omegafourPiProductionCX
430 + NLKProductionCX + NLKpiProductionCX + NLK2piProductionCX + NSKProductionCX + NSKpiProductionCX > rChannel) {
431 isElastic = false;
432 isStrangeProduction = true;
433
434 INCL_DEBUG(
"NN interaction: NSKpi channel chosen" <<
'\n');
437 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + fourPiProductionCX
438 + etaProductionCX + etadeltaProductionCX + etaonePiProductionCX + etatwoPiProductionCX + etathreePiProductionCX + etafourPiProductionCX
439 + omegaProductionCX + omegadeltaProductionCX + omegaonePiProductionCX + omegatwoPiProductionCX + omegathreePiProductionCX + omegafourPiProductionCX
440 + NLKProductionCX + NLKpiProductionCX + NLK2piProductionCX + NSKProductionCX + NSKpiProductionCX + NSK2piProductionCX > rChannel) {
441 isElastic = false;
442 isStrangeProduction = true;
443
444 INCL_DEBUG(
"NN interaction: NSK2pi channel chosen" <<
'\n');
447 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + fourPiProductionCX
448 + etaProductionCX + etadeltaProductionCX + etaonePiProductionCX + etatwoPiProductionCX + etathreePiProductionCX + etafourPiProductionCX
449 + omegaProductionCX + omegadeltaProductionCX + omegaonePiProductionCX + omegatwoPiProductionCX + omegathreePiProductionCX + omegafourPiProductionCX
450 + NLKProductionCX + NLKpiProductionCX + NLK2piProductionCX + NSKProductionCX + NSKpiProductionCX + NSK2piProductionCX + NNKKbProductionCX > rChannel) {
451 isElastic = false;
452 isStrangeProduction = true;
453
454 INCL_DEBUG(
"NN interaction: NNKKb channel chosen" <<
'\n');
457 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + fourPiProductionCX
458 + etaProductionCX + etadeltaProductionCX + etaonePiProductionCX + etatwoPiProductionCX + etathreePiProductionCX + etafourPiProductionCX
459 + omegaProductionCX + omegadeltaProductionCX + omegaonePiProductionCX + omegatwoPiProductionCX + omegathreePiProductionCX + omegafourPiProductionCX
460 + NLKProductionCX + NLKpiProductionCX + NLK2piProductionCX + NSKProductionCX + NSKpiProductionCX + NSK2piProductionCX + NNKKbProductionCX + NNMissingCX> rChannel) {
461 isElastic = false;
462 isStrangeProduction = true;
463
464 INCL_DEBUG(
"NN interaction: Missing Strangeness channel chosen" <<
'\n');
467 } else {
468 INCL_WARN(
"inconsistency within the NN Cross Sections (sum!=inelastic)" <<
'\n');
469 if(NNMissingCX>0.) {
470 INCL_WARN(
"Returning an Missing Strangeness channel" <<
'\n');
472 isElastic = false;
473 isStrangeProduction = true;
475 } else if(NNKKbProductionCX>0.) {
476 INCL_WARN(
"Returning an NNKKb channel" <<
'\n');
478 isElastic = false;
479 isStrangeProduction = true;
481 } else if(NSK2piProductionCX>0.) {
482 INCL_WARN(
"Returning an NSK2pi channel" <<
'\n');
484 isElastic = false;
485 isStrangeProduction = true;
487 } else if(NSKpiProductionCX>0.) {
488 INCL_WARN(
"Returning an NSKpi channel" <<
'\n');
490 isElastic = false;
491 isStrangeProduction = true;
493 } else if(NSKProductionCX>0.) {
494 INCL_WARN(
"Returning an NSK channel" <<
'\n');
496 isElastic = false;
497 isStrangeProduction = true;
499 } else if(NLK2piProductionCX>0.) {
500 INCL_WARN(
"Returning an NLK2pi channel" <<
'\n');
502 isElastic = false;
503 isStrangeProduction = true;
505 } else if(NLKpiProductionCX>0.) {
506 INCL_WARN(
"Returning an NLKpi channel" <<
'\n');
508 isElastic = false;
509 isStrangeProduction = true;
511 } else if(NLKProductionCX>0.) {
512 INCL_WARN(
"Returning an NLK channel" <<
'\n');
514 isElastic = false;
515 isStrangeProduction = true;
517 } else if(omegafourPiProductionCX>0.) {
518 INCL_WARN(
"Returning an Omega + four Pions channel" <<
'\n');
520 isElastic = false;
522 } else if(omegathreePiProductionCX>0.) {
523 INCL_WARN(
"Returning an Omega + three Pions channel" <<
'\n');
525 isElastic = false;
527 } else if(omegatwoPiProductionCX>0.) {
528 INCL_WARN(
"Returning an Omega + two Pions channel" <<
'\n');
530 isElastic = false;
532 } else if(omegaonePiProductionCX>0.) {
533 INCL_WARN(
"Returning an Omega + one Pion channel" <<
'\n');
535 isElastic = false;
537 } else if(omegadeltaProductionCX>0.) {
538 INCL_WARN(
"Returning an Omega + Delta channel" <<
'\n');
540 isElastic = false;
542 } else if(omegaProductionCX>0.) {
543 INCL_WARN(
"Returning an Omega channel" <<
'\n');
545 isElastic = false;
547 } else if(etafourPiProductionCX>0.) {
548 INCL_WARN(
"Returning an Eta + four Pions channel" <<
'\n');
550 isElastic = false;
552 } else if(etathreePiProductionCX>0.) {
553 INCL_WARN(
"Returning an Eta + threev channel" <<
'\n');
555 isElastic = false;
557 } else if(etatwoPiProductionCX>0.) {
558 INCL_WARN(
"Returning an Eta + two Pions channel" <<
'\n');
560 isElastic = false;
562 } else if(etaonePiProductionCX>0.) {
563 INCL_WARN(
"Returning an Eta + one Pion channel" <<
'\n');
565 isElastic = false;
567 } else if(etadeltaProductionCX>0.) {
568 INCL_WARN(
"Returning an Eta + Delta channel" <<
'\n');
570 isElastic = false;
572 } else if(etaProductionCX>0.) {
573 INCL_WARN(
"Returning an Eta channel" <<
'\n');
575 isElastic = false;
577 } else if(fourPiProductionCX>0.) {
578 INCL_WARN(
"Returning a 4pi channel" <<
'\n');
580 isElastic = false;
582 } else if(threePiProductionCX>0.) {
583 INCL_WARN(
"Returning a 3pi channel" <<
'\n');
585 isElastic = false;
587 } else if(twoPiProductionCX>0.) {
588 INCL_WARN(
"Returning a 2pi channel" <<
'\n');
590 isElastic = false;
592 } else if(onePiProductionCX>0.) {
593 INCL_WARN(
"Returning a 1pi channel" <<
'\n');
595 isElastic = false;
597 } else if(deltaProductionCX>0.) {
598 INCL_WARN(
"Returning a delta-production channel" <<
'\n');
600 isElastic = false;
602 } else {
603 INCL_WARN(
"Returning an elastic channel" <<
'\n');
605 isElastic = true;
607 }
608 }
609
610
611 }
614
620
622 const G4double StrangenessProdCX = (NLKProductionCX + NSKProductionCX + DeltaLKProductionCX + DeltaSKProductionCX + NNKKbProductionCX)/bias_apply;
623
624 G4double counterweight = (1. - bias_apply * StrangenessProdCX / (StrangenessProdCX + UnStrangeProdCX))/(1. - StrangenessProdCX / (StrangenessProdCX + UnStrangeProdCX));
625
626 if(counterweight < 0.5){
627 counterweight = 0.5;
628 bias_apply = 0.5*UnStrangeProdCX/StrangenessProdCX+1;
629
635 }
636
639
641
642 if(elasticCX > rChannel) {
643 isElastic = true;
644
645 INCL_DEBUG(
"NDelta interaction: elastic channel chosen" <<
'\n');
648 } else if (elasticCX + recombinationCX > rChannel){
649 isElastic = false;
650
651
652 INCL_DEBUG(
"NDelta interaction: recombination channel chosen" <<
'\n');
655 } else if (elasticCX + recombinationCX + NLKProductionCX > rChannel){
656 isElastic = false;
657 isStrangeProduction = true;
658
659 INCL_DEBUG(
"NDelta interaction: NLK channel chosen" <<
'\n');
662 } else if (elasticCX + recombinationCX + NLKProductionCX + NSKProductionCX > rChannel){
663 isElastic = false;
664 isStrangeProduction = true;
665
666 INCL_DEBUG(
"NDelta interaction: NSK channel chosen" <<
'\n');
669 } else if (elasticCX + recombinationCX + NLKProductionCX + NSKProductionCX + DeltaLKProductionCX > rChannel){
670 isElastic = false;
671 isStrangeProduction = true;
672
673 INCL_DEBUG(
"NDelta interaction: DeltaLK channel chosen" <<
'\n');
676 } else if (elasticCX + recombinationCX + NLKProductionCX + NSKProductionCX + DeltaLKProductionCX + DeltaSKProductionCX > rChannel){
677 isElastic = false;
678 isStrangeProduction = true;
679
680 INCL_DEBUG(
"NDelta interaction: DeltaSK channel chosen" <<
'\n');
683 } else if (elasticCX + recombinationCX + NLKProductionCX + NSKProductionCX + DeltaLKProductionCX + DeltaSKProductionCX + NNKKbProductionCX > rChannel){
684 isElastic = false;
685 isStrangeProduction = true;
686
687 INCL_DEBUG(
"NDelta interaction: NNKKb channel chosen" <<
'\n');
690 }
691 else{
692 INCL_ERROR(
"rChannel > (StrangenessProdCX + UnStrangeProdCX) in NDelta interaction: return an elastic channel" <<
'\n');
694 isElastic = true;
696 }
697
698
700 isElastic = true;
701 INCL_DEBUG(
"DeltaDelta interaction: elastic channel chosen" <<
'\n');
703
704
706
715
719 const G4double StrangenessProdCX = (LKProdCX + SKProdCX + LKpiProdCX + SKpiProdCX + LK2piProdCX + SK2piProdCX + NKKbProdCX + MissingCX)/bias_apply;
720
721 G4double counterweight = (1. - bias_apply * StrangenessProdCX / (StrangenessProdCX + UnStrangeProdCX))/(1. - StrangenessProdCX / (StrangenessProdCX + UnStrangeProdCX));
722
723 if(counterweight < 0.5) {
724 counterweight = 0.5;
725 bias_apply = 0.5*UnStrangeProdCX/StrangenessProdCX+1;
734 }
735
736
744
746
747
748
750
751 if(elasticCX > rChannel) {
752 isElastic = true;
753
754 INCL_DEBUG(
"PiN interaction: elastic channel chosen" <<
'\n');
757 } else if(elasticCX + deltaProductionCX > rChannel) {
758 isElastic = false;
759
760 INCL_DEBUG(
"PiN interaction: Delta channel chosen" <<
'\n');
763 } else if(elasticCX + deltaProductionCX + onePiProductionCX > rChannel) {
764 isElastic = false;
765
766 INCL_DEBUG(
"PiN interaction: one Pion channel chosen" <<
'\n');
769 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX > rChannel) {
770 isElastic = false;
771
772 INCL_DEBUG(
"PiN interaction: two Pions channel chosen" <<
'\n');
775 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX > rChannel) {
776 isElastic = false;
777
778 INCL_DEBUG(
"PiN interaction: three Pions channel chosen" <<
'\n');
781 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + etaProductionCX > rChannel) {
782 isElastic = false;
783
784 INCL_DEBUG(
"PiN interaction: Eta channel chosen" <<
'\n');
787 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + etaProductionCX+ omegaProductionCX > rChannel) {
788 isElastic = false;
789
790 INCL_DEBUG(
"PiN interaction: Omega channel chosen" <<
'\n');
793 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + etaProductionCX+ omegaProductionCX
794 + LKProdCX > rChannel) {
795 isElastic = false;
796 isStrangeProduction = true;
797
798 INCL_DEBUG(
"PiN interaction: LK channel chosen" <<
'\n');
801 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + etaProductionCX+ omegaProductionCX
802 + LKProdCX + SKProdCX > rChannel) {
803 isElastic = false;
804 isStrangeProduction = true;
805
806 INCL_DEBUG(
"PiN interaction: SK channel chosen" <<
'\n');
809 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + etaProductionCX+ omegaProductionCX
810 + LKProdCX + SKProdCX + LKpiProdCX > rChannel) {
811 isElastic = false;
812 isStrangeProduction = true;
813
814 INCL_DEBUG(
"PiN interaction: LKpi channel chosen" <<
'\n');
817 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + etaProductionCX+ omegaProductionCX
818 + LKProdCX + SKProdCX + LKpiProdCX + SKpiProdCX > rChannel) {
819 isElastic = false;
820 isStrangeProduction = true;
821
822 INCL_DEBUG(
"PiN interaction: SKpi channel chosen" <<
'\n');
825 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + etaProductionCX+ omegaProductionCX
826 + LKProdCX + SKProdCX + LKpiProdCX + SKpiProdCX + LK2piProdCX > rChannel) {
827 isElastic = false;
828 isStrangeProduction = true;
829
830 INCL_DEBUG(
"PiN interaction: LK2pi channel chosen" <<
'\n');
833 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + etaProductionCX+ omegaProductionCX
834 + LKProdCX + SKProdCX + LKpiProdCX + SKpiProdCX + LK2piProdCX + SK2piProdCX > rChannel) {
835 isElastic = false;
836 isStrangeProduction = true;
837
838 INCL_DEBUG(
"PiN interaction: SK2pi channel chosen" <<
'\n');
841 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + etaProductionCX+ omegaProductionCX
842 + LKProdCX + SKProdCX + LKpiProdCX + SKpiProdCX + LK2piProdCX + SK2piProdCX + NKKbProdCX > rChannel) {
843 isElastic = false;
844 isStrangeProduction = true;
845
846 INCL_DEBUG(
"PiN interaction: NKKb channel chosen" <<
'\n');
849 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + etaProductionCX+ omegaProductionCX
850 + LKProdCX + SKProdCX + LKpiProdCX + SKpiProdCX + LK2piProdCX + SK2piProdCX + NKKbProdCX + MissingCX> rChannel) {
851 isElastic = false;
852 isStrangeProduction = true;
853
854 INCL_DEBUG(
"PiN interaction: Missinge Strangeness channel chosen" <<
'\n');
857 }
858 else {
859 INCL_WARN(
"inconsistency within the PiN Cross Sections (sum!=inelastic)" <<
'\n');
860 if(MissingCX>0.) {
861 INCL_WARN(
"Returning a Missinge Strangeness channel" <<
'\n');
863 isElastic = false;
864 isStrangeProduction = true;
866 } else if(NKKbProdCX>0.) {
867 INCL_WARN(
"Returning a NKKb channel" <<
'\n');
869 isElastic = false;
870 isStrangeProduction = true;
872 } else if(SK2piProdCX>0.) {
873 INCL_WARN(
"Returning a SK2pi channel" <<
'\n');
875 isElastic = false;
876 isStrangeProduction = true;
878 } else if(LK2piProdCX>0.) {
879 INCL_WARN(
"Returning a LK2pi channel" <<
'\n');
881 isElastic = false;
882 isStrangeProduction = true;
884 } else if(SKpiProdCX>0.) {
885 INCL_WARN(
"Returning a SKpi channel" <<
'\n');
887 isElastic = false;
888 isStrangeProduction = true;
890 } else if(LKpiProdCX>0.) {
891 INCL_WARN(
"Returning a LKpi channel" <<
'\n');
893 isElastic = false;
894 isStrangeProduction = true;
896 } else if(SKProdCX>0.) {
897 INCL_WARN(
"Returning a SK channel" <<
'\n');
899 isElastic = false;
900 isStrangeProduction = true;
902 } else if(LKProdCX>0.) {
903 INCL_WARN(
"Returning a LK channel" <<
'\n');
905 isElastic = false;
906 isStrangeProduction = true;
908 } else if(omegaProductionCX>0.) {
909 INCL_WARN(
"Returning a Omega channel" <<
'\n');
911 isElastic = false;
913 } else if(etaProductionCX>0.) {
914 INCL_WARN(
"Returning a Eta channel" <<
'\n');
916 isElastic = false;
918 } else if(threePiProductionCX>0.) {
919 INCL_WARN(
"Returning a 3pi channel" <<
'\n');
921 isElastic = false;
923 } else if(twoPiProductionCX>0.) {
924 INCL_WARN(
"Returning a 2pi channel" <<
'\n');
926 isElastic = false;
928 } else if(onePiProductionCX>0.) {
929 INCL_WARN(
"Returning a 1pi channel" <<
'\n');
931 isElastic = false;
933 } else if(deltaProductionCX>0.) {
934 INCL_WARN(
"Returning a delta-production channel" <<
'\n');
936 isElastic = false;
938 } else {
939 INCL_WARN(
"Returning an elastic channel" <<
'\n');
941 isElastic = true;
943 }
944 }
946
947
952
953
955
956 if(elasticCX > rChannel) {
957
958 isElastic = true;
959 INCL_DEBUG(
"EtaN interaction: elastic channel chosen" <<
'\n');
961 } else if(elasticCX + onePiProductionCX > rChannel) {
962 isElastic = false;
963
964 INCL_DEBUG(
"EtaN interaction: PiN channel chosen" <<
'\n');
966 } else if(elasticCX + onePiProductionCX + twoPiProductionCX > rChannel) {
967 isElastic = false;
968
969 INCL_DEBUG(
"EtaN interaction: PiPiN channel chosen" <<
'\n');
971 }
972
973 else {
974 INCL_WARN(
"inconsistency within the EtaN Cross Sections (sum!=inelastic)" <<
'\n');
975 if(twoPiProductionCX>0.) {
976 INCL_WARN(
"Returning a PiPiN channel" <<
'\n');
977 isElastic = false;
979 } else if(onePiProductionCX>0.) {
980 INCL_WARN(
"Returning a PiN channel" <<
'\n');
981 isElastic = false;
983 } else {
984 INCL_WARN(
"Returning an elastic channel" <<
'\n');
985 isElastic = true;
987 }
988 }
989
991
992
997
998
1000
1001 if(elasticCX > rChannel) {
1002
1003 isElastic = true;
1004 INCL_DEBUG(
"OmegaN interaction: elastic channel chosen" <<
'\n');
1006 } else if(elasticCX + onePiProductionCX > rChannel) {
1007 isElastic = false;
1008
1009 INCL_DEBUG(
"OmegaN interaction: PiN channel chosen" <<
'\n');
1011 } else if(elasticCX + onePiProductionCX + twoPiProductionCX > rChannel) {
1012 isElastic = false;
1013
1014 INCL_DEBUG(
"OmegaN interaction: PiPiN channel chosen" <<
'\n');
1016 }
1017 else {
1018 INCL_WARN(
"inconsistency within the OmegaN Cross Sections (sum!=inelastic)" <<
'\n');
1019 if(twoPiProductionCX>0.) {
1020 INCL_WARN(
"Returning a PiPiN channel" <<
'\n');
1021 isElastic = false;
1023 } else if(onePiProductionCX>0.) {
1024 INCL_WARN(
"Returning a PiN channel" <<
'\n');
1025 isElastic = false;
1027 } else {
1028 INCL_WARN(
"Returning an elastic channel" <<
'\n');
1029 isElastic = true;
1031 }
1032 }
1034
1040
1041
1043 if(elasticCX > rChannel){
1044
1045 isElastic = true;
1046 INCL_DEBUG(
"KN interaction: elastic channel chosen" <<
'\n');
1048 } else if(elasticCX + quasielasticCX > rChannel){
1049
1050 isElastic = false;
1051 INCL_DEBUG(
"KN interaction: quasi-elastic channel chosen" <<
'\n');
1053 } else if(elasticCX + quasielasticCX + NKToNKpiCX > rChannel){
1054
1055 isElastic = false;
1056 INCL_DEBUG(
"KN interaction: NKpi channel chosen" <<
'\n');
1058 } else if(elasticCX + quasielasticCX + NKToNKpiCX + NKToNK2piCX > rChannel){
1059
1060 isElastic = false;
1061 INCL_DEBUG(
"KN interaction: NK2pi channel chosen" <<
'\n');
1063 } else {
1064 INCL_WARN(
"inconsistency within the KN Cross Sections (sum!=inelastic)" <<
'\n');
1065 if(NKToNK2piCX>0.) {
1066 INCL_WARN(
"Returning a NKToNK2pi channel" <<
'\n');
1067 isElastic = false;
1069 } else if(NKToNKpiCX>0.) {
1070 INCL_WARN(
"Returning a NKToNKpi channel" <<
'\n');
1071 isElastic = false;
1073 } else if(quasielasticCX>0.) {
1074 INCL_WARN(
"Returning a quasi-elastic channel" <<
'\n');
1075 isElastic = false;
1077 } else {
1078 INCL_WARN(
"Returning an elastic channel" <<
'\n');
1079 isElastic = true;
1081 }
1082 }
1084
1094
1095
1097 if(elasticCX > rChannel){
1098
1099 isElastic = true;
1100 INCL_DEBUG(
"KbN interaction: elastic channel chosen" <<
'\n');
1102 } else if(elasticCX + quasielasticCX > rChannel){
1103
1104 isElastic = false;
1105 INCL_DEBUG(
"KbN interaction: quasi-elastic channel chosen" <<
'\n');
1107 } else if(elasticCX + quasielasticCX + NKbToNKbpiCX > rChannel){
1108
1109 isElastic = false;
1110 INCL_DEBUG(
"KbN interaction: NKbpi channel chosen" <<
'\n');
1112 } else if(elasticCX + quasielasticCX + NKbToNKbpiCX + NKbToNKb2piCX > rChannel){
1113
1114 isElastic = false;
1115 INCL_DEBUG(
"KbN interaction: NKb2pi channel chosen" <<
'\n');
1117 } else if(elasticCX + quasielasticCX + NKbToNKbpiCX + NKbToNKb2piCX + NKbToLpiCX > rChannel){
1118
1119 isElastic = false;
1120 INCL_DEBUG(
"KbN interaction: Lpi channel chosen" <<
'\n');
1122 } else if(elasticCX + quasielasticCX + NKbToNKbpiCX + NKbToNKb2piCX + NKbToLpiCX + NKbToL2piCX > rChannel){
1123
1124 isElastic = false;
1125 INCL_DEBUG(
"KbN interaction: L2pi channel chosen" <<
'\n');
1127 } else if(elasticCX + quasielasticCX + NKbToNKbpiCX + NKbToNKb2piCX + NKbToLpiCX + NKbToL2piCX + NKbToSpiCX > rChannel){
1128
1129 isElastic = false;
1130 INCL_DEBUG(
"KbN interaction: Spi channel chosen" <<
'\n');
1132 } else if(elasticCX + quasielasticCX + NKbToNKbpiCX + NKbToNKb2piCX + NKbToLpiCX + NKbToL2piCX + NKbToSpiCX + NKbToS2piCX > rChannel){
1133
1134 isElastic = false;
1135 INCL_DEBUG(
"KbN interaction: S2pi channel chosen" <<
'\n');
1137 } else {
1138 INCL_WARN(
"inconsistency within the KbN Cross Sections (sum!=inelastic)" <<
'\n');
1139 if(NKbToS2piCX>0.) {
1140 INCL_WARN(
"Returning a NKbToS2pi channel" <<
'\n');
1141 isElastic = false;
1143 } else if(NKbToSpiCX>0.) {
1144 INCL_WARN(
"Returning a NKbToSpi channel" <<
'\n');
1145 isElastic = false;
1147 } else if(NKbToL2piCX>0.) {
1148 INCL_WARN(
"Returning a NKbToL2pi channel" <<
'\n');
1149 isElastic = false;
1151 } else if(NKbToLpiCX>0.) {
1152 INCL_WARN(
"Returning a NKbToLpi channel" <<
'\n');
1153 isElastic = false;
1155 } else if(NKbToNKb2piCX>0.) {
1156 INCL_WARN(
"Returning a NKbToNKb2pi channel" <<
'\n');
1157 isElastic = false;
1159 } else if(NKbToNKbpiCX>0.) {
1160 INCL_WARN(
"Returning a NKbToNKbpi channel" <<
'\n');
1161 isElastic = false;
1163 } else if(quasielasticCX>0.) {
1164 INCL_WARN(
"Returning a quasi-elastic channel" <<
'\n');
1165 isElastic = false;
1167 } else {
1168 INCL_WARN(
"Returning an elastic channel" <<
'\n');
1169 isElastic = true;
1171 }
1172 }
1174
1178
1179
1181 if(elasticCX > rChannel){
1182
1183 isElastic = true;
1184 INCL_DEBUG(
"NLambda interaction: elastic channel chosen" <<
'\n');
1186 } else if(elasticCX + NLToNSCX > rChannel){
1187
1188 isElastic = false;
1189 INCL_DEBUG(
"NLambda interaction: quasi-elastic channel chosen" <<
'\n');
1191 } else {
1192 INCL_WARN(
"inconsistency within the NLambda Cross Sections (sum!=inelastic)" <<
'\n');
1193 if(NLToNSCX>0.) {
1194 INCL_WARN(
"Returning a quasi-elastic channel" <<
'\n');
1195 isElastic = false;
1197 } else {
1198 INCL_WARN(
"Returning an elastic channel" <<
'\n');
1199 isElastic = true;
1201 }
1202 }
1204
1209
1210
1212 if(elasticCX > rChannel){
1213
1214 isElastic = true;
1215 INCL_DEBUG(
"NSigma interaction: elastic channel chosen" <<
'\n');
1217 } else if(elasticCX + NSToNLCX > rChannel){
1218
1219 isElastic = false;
1220 INCL_DEBUG(
"NSigma interaction: NLambda channel chosen" <<
'\n');
1222 } else if(elasticCX + NSToNLCX + NSToNSCX > rChannel){
1223
1224 isElastic = false;
1225 INCL_DEBUG(
"NSigma interaction: NSigma quasi-elastic channel chosen" <<
'\n');
1227 } else {
1228 INCL_WARN(
"inconsistency within the NSigma Cross Sections (sum!=inelastic)" <<
'\n');
1229 if(NSToNSCX>0.) {
1230 INCL_WARN(
"Returning a quasi-elastic channel" <<
'\n');
1231 isElastic = false;
1233 } else if(NSToNLCX>0.) {
1234 INCL_WARN(
"Returning a NLambda channel" <<
'\n');
1235 isElastic = false;
1237 } else {
1238 INCL_WARN(
"Returning an elastic channel" <<
'\n');
1239 isElastic = true;
1241 }
1242 }
1244
1253
1254
1255
1257 if (NNbElasticCX > rChannel) {
1258
1259 isElastic = true;
1260
1262 } else if (NNbElasticCX + NNbCEXCX > rChannel) {
1263
1264 isElastic = false;
1265
1267 } else if (NNbElasticCX + NNbCEXCX + NNbToLLbCX > rChannel) {
1268
1269 isElastic = false;
1270
1272 } else if (NNbElasticCX + NNbCEXCX + NNbToLLbCX + NNbToNNbpiCX > rChannel) {
1273
1274 isElastic = false;
1275
1277 } else if (NNbElasticCX + NNbCEXCX + NNbToLLbCX + NNbToNNbpiCX + NNbToNNb2piCX > rChannel) {
1278
1279 isElastic = false;
1280
1282 } else if (NNbElasticCX + NNbCEXCX + NNbToLLbCX + NNbToNNbpiCX + NNbToNNb2piCX + NNbToNNb3piCX > rChannel) {
1283
1284 isElastic = false;
1285
1287 } else if (NNbElasticCX + NNbCEXCX + NNbToLLbCX + NNbToNNbpiCX + NNbToNNb2piCX + NNbToNNb3piCX +AnnihilationCX > rChannel){
1288
1289 isElastic = false;
1293 }
1296 }
1299 }
1302 }
1303 else{
1305 INCL_ERROR(
"Annihilation type problem " <<
'\n');
1306 }
1309 } else {
1310 INCL_WARN(
"Inconsistency within the NNbar Cross Sections (sum != inelastic)" <<
'\n');
1311 if (NNbToNNb3piCX > 0.0) {
1312 INCL_WARN(
"Returning an NNbar 3pi channel" <<
'\n');
1313 isElastic = false;
1315 } else if (NNbToNNb2piCX > 0.0) {
1316 INCL_WARN(
"Returning an NNbar 2pi channel" <<
'\n');
1317 isElastic = false;
1319 } else if (NNbToNNbpiCX > 0.0) {
1320 INCL_WARN(
"Returning an NNbar pi channel" <<
'\n');
1321 isElastic = false;
1323 } else if (AnnihilationCX > 0.0) {
1324 INCL_WARN(
"Returning an NNbar annihilation channel" <<
'\n');
1325 isElastic = false;
1329 }
1332 }
1335 }
1338 }
1339 else{
1341 INCL_ERROR(
"Annihilation type problem " <<
'\n');
1342 }
1345 } else if (NNbCEXCX > 0.0) {
1346 INCL_WARN(
"Returning an NNbar CEX channel" <<
'\n');
1347 isElastic = false;
1349 } else if (NNbToLLbCX > 0.0) {
1350 INCL_WARN(
"Returning an NNbar LLbar channel" <<
'\n');
1351 isElastic = false;
1353 } else {
1354 INCL_WARN(
"Elastic NNbar channel chosen" <<
'\n');
1355 isElastic = true;
1357 }
1358 }
1359 }
1360
1361 else {
1362 INCL_DEBUG(
"BinaryCollisionAvatar can only handle nucleons (for the moment)."
1363 << '\n'
1365 << '\n'
1367 << '\n');
1369 return NULL;
1370 }
1371 }
G4int getAcceptedCollisions() const
void restoreParticles() const
Restore the state of both particles.
void setAType(AnnihilationType type)
G4bool isLambda() const
Is this a Lambda?
G4bool isOmega() const
Is this an omega?
G4bool isSigma() const
Is this a Sigma?
const G4INCL::ThreeVector & getPosition() const
static std::vector< G4int > MergeVectorBias(Particle const *const p1, Particle const *const p2)
G4bool isAntiNucleon() const
Is this an antinucleon?
G4bool isEta() const
Is this an eta?
G4bool isAntiKaon() const
Is this an antiKaon?
G4INCL::ParticleType getType() const
G4bool isKaon() const
Is this a Kaon?
std::string print() const
G4bool isDelta() const
Is it a Delta?
static G4double getBiasFromVector(std::vector< G4int > VectorBias)
G4double dot(const ThreeVector &v) const
G4double NSToNL(Particle const *const p1, Particle const *const p2)
G4double NNToNNKKb(Particle const *const p1, Particle const *const p2)
G4double elastic(Particle const *const p1, Particle const *const p2)
G4double NpiToSK(Particle const *const p1, Particle const *const p2)
G4double piNToOmegaN(Particle const *const p1, Particle const *const p2)
G4double NNbarCEX(Particle const *const p1, Particle const *const p2)
G4double NKbToNKb2pi(Particle const *const p1, Particle const *const p2)
G4double NNToNDeltaOmega(Particle const *const p1, Particle const *const p2)
G4double NDeltaToDeltaLK(Particle const *const p1, Particle const *const p2)
G4double NNToNSKpi(Particle const *const p1, Particle const *const p2)
G4double etaNToPiN(Particle const *const p1, Particle const *const p2)
G4double NDeltaToNNKKb(Particle const *const p1, Particle const *const p2)
G4double NKbToLpi(Particle const *const p1, Particle const *const p2)
G4double NNToNLK2pi(Particle const *const p1, Particle const *const p2)
G4double etaNToPiPiN(Particle const *const p1, Particle const *const p2)
G4double NKbToS2pi(Particle const *const p1, Particle const *const p2)
G4double piNToEtaN(Particle const *const p1, Particle const *const p2)
G4double NNbarToAnnihilation(Particle const *const p1, Particle const *const p2)
Nucleon-AntiNucleon total annihilation cross sections.
G4double omegaNToPiN(Particle const *const p1, Particle const *const p2)
G4double NDeltaToNSK(Particle const *const p1, Particle const *const p2)
G4double NKbToSpi(Particle const *const p1, Particle const *const p2)
G4double NNToNDelta(Particle const *const p1, Particle const *const p2)
G4double NNToNSK(Particle const *const p1, Particle const *const p2)
G4double NDeltaToNLK(Particle const *const p1, Particle const *const p2)
G4double NLToNS(Particle const *const p1, Particle const *const p2)
G4double piNToDelta(Particle const *const p1, Particle const *const p2)
G4double NKbToNKb(Particle const *const p1, Particle const *const p2)
G4double NNToNSK2pi(Particle const *const p1, Particle const *const p2)
G4double NNbarToNNbar3pi(Particle const *const p1, Particle const *const p2)
G4double NNToNLK(Particle const *const p1, Particle const *const p2)
Strange cross sections.
G4double NNToNNEtaExclu(Particle const *const p1, Particle const *const p2)
G4double NNToNDeltaEta(Particle const *const p1, Particle const *const p2)
G4double NNToNNOmegaxPi(const G4int xpi, Particle const *const p1, Particle const *const p2)
G4double NNToNNEtaxPi(const G4int xpi, Particle const *const p1, Particle const *const p2)
G4double NNbarToNNbarpi(Particle const *const p1, Particle const *const p2)
Nucleon-AntiNucleon to Nucleon-AntiNucleon + pions cross sections.
G4double NSToNS(Particle const *const p1, Particle const *const p2)
G4double NpiToNKKb(Particle const *const p1, Particle const *const p2)
G4double NpiToLK2pi(Particle const *const p1, Particle const *const p2)
G4double omegaNToPiPiN(Particle const *const p1, Particle const *const p2)
G4double NDeltaToDeltaSK(Particle const *const p1, Particle const *const p2)
G4double NpiToMissingStrangeness(Particle const *const p1, Particle const *const p2)
G4double NNbarToNNbar2pi(Particle const *const p1, Particle const *const p2)
G4double total(Particle const *const p1, Particle const *const p2)
G4double NDeltaToNN(Particle const *const p1, Particle const *const p2)
G4double NpiToLKpi(Particle const *const p1, Particle const *const p2)
G4double NKbToNKbpi(Particle const *const p1, Particle const *const p2)
G4double NNToNLKpi(Particle const *const p1, Particle const *const p2)
G4double NKbToL2pi(Particle const *const p1, Particle const *const p2)
G4double NNToxPiNN(const G4int xpi, Particle const *const p1, Particle const *const p2)
G4double NKToNK2pi(Particle const *const p1, Particle const *const p2)
G4double NKToNKpi(Particle const *const p1, Particle const *const p2)
G4double NNToNNOmegaExclu(Particle const *const p1, Particle const *const p2)
G4double NpiToSK2pi(Particle const *const p1, Particle const *const p2)
G4double NKToNK(Particle const *const p1, Particle const *const p2)
G4double NNToMissingStrangeness(Particle const *const p1, Particle const *const p2)
G4double piNToxPiN(const G4int xpi, Particle const *const p1, Particle const *const p2)
G4double NNbarToLLbar(Particle const *const p1, Particle const *const p2)
G4double NpiToLK(Particle const *const p1, Particle const *const p2)
G4double NNbarElastic(Particle const *const p1, Particle const *const p2)
antiparticle cross sections
G4double NpiToSKpi(Particle const *const p1, Particle const *const p2)
G4double squareTotalEnergyInCM(Particle const *const p1, Particle const *const p2)