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.
138 {
139
140
141
146
147 if(energyCM2 < cutNNSquared) {
148 INCL_DEBUG(
"CM energy = sqrt(" << energyCM2 <<
") MeV < std::sqrt(" << cutNNSquared
149 << ") MeV = cutNN" << "; returning a NULL channel" << '\n');
151 return NULL;
152 }
153 }
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
178 if(minDist > theCrossSection) {
179 INCL_DEBUG(
"CM distance of approach is too small: " << minDist <<
">" <<
180 theCrossSection <<"; returning a NULL channel" << '\n');
182 return NULL;
183 }
184
185
186
187
188
191
192
194
203
210 const G4double StrangenessProdCX = (NLKProductionCX + NSKProductionCX + NLKpiProductionCX + NSKpiProductionCX + NLK2piProductionCX + NSK2piProductionCX + NNKKbProductionCX + NNMissingCX)/bias_apply;
211
212 G4double counterweight = (1. - bias_apply * StrangenessProdCX / (StrangenessProdCX + UnStrangeProdCX))/(1. - StrangenessProdCX / (StrangenessProdCX + UnStrangeProdCX));
213
214 if(counterweight < 0.5) {
215 counterweight = 0.5;
216 bias_apply = 0.5*UnStrangeProdCX/StrangenessProdCX+1;
225 }
226
227
234
247
249
250
251
253
254 if(elasticCX > rChannel) {
255
256 isElastic = true;
257 INCL_DEBUG(
"NN interaction: elastic channel chosen" <<
'\n');
260 } else if((elasticCX + deltaProductionCX) > rChannel) {
261 isElastic = false;
262
263 INCL_DEBUG(
"NN interaction: Delta channel chosen" <<
'\n');
266 } else if(elasticCX + deltaProductionCX + onePiProductionCX > rChannel) {
267 isElastic = false;
268
269 INCL_DEBUG(
"NN interaction: one Pion channel chosen" <<
'\n');
272 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX > rChannel) {
273 isElastic = false;
274
275 INCL_DEBUG(
"NN interaction: two Pions channel chosen" <<
'\n');
278 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX > rChannel) {
279 isElastic = false;
280
281 INCL_DEBUG(
"NN interaction: three Pions channel chosen" <<
'\n');
284 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + fourPiProductionCX > rChannel) {
285 isElastic = false;
286
287 INCL_DEBUG(
"NN interaction: four Pions channel chosen" <<
'\n');
290 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + fourPiProductionCX
291 + etaProductionCX > rChannel) {
292 isElastic = false;
293
294 INCL_DEBUG(
"NN interaction: Eta channel chosen" <<
'\n');
297 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + fourPiProductionCX
298 + etaProductionCX + etadeltaProductionCX > rChannel) {
299 isElastic = false;
300
301 INCL_DEBUG(
"NN interaction: Delta Eta channel chosen" <<
'\n');
304 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + fourPiProductionCX
305 + etaProductionCX + etadeltaProductionCX + etaonePiProductionCX > rChannel) {
306 isElastic = false;
307
308 INCL_DEBUG(
"NN interaction: Eta + one Pion channel chosen" <<
'\n');
311 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + fourPiProductionCX
312 + etaProductionCX + etadeltaProductionCX + etaonePiProductionCX + etatwoPiProductionCX > rChannel) {
313 isElastic = false;
314
315 INCL_DEBUG(
"NN interaction: Eta + two Pions channel chosen" <<
'\n');
318 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + fourPiProductionCX
319 + etaProductionCX + etadeltaProductionCX + etaonePiProductionCX + etatwoPiProductionCX + etathreePiProductionCX > rChannel) {
320 isElastic = false;
321
322 INCL_DEBUG(
"NN interaction: Eta + three Pions channel chosen" <<
'\n');
325 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + fourPiProductionCX
326 + etaProductionCX + etadeltaProductionCX + etaonePiProductionCX + etatwoPiProductionCX + etathreePiProductionCX + etafourPiProductionCX > rChannel) {
327 isElastic = false;
328
329 INCL_DEBUG(
"NN interaction: Eta + four Pions channel chosen" <<
'\n');
332 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + fourPiProductionCX
333 + etaProductionCX + etadeltaProductionCX + etaonePiProductionCX + etatwoPiProductionCX + etathreePiProductionCX + etafourPiProductionCX
334 + omegaProductionCX > rChannel) {
335 isElastic = false;
336
337 INCL_DEBUG(
"NN interaction: Omega channel chosen" <<
'\n');
340 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + fourPiProductionCX
341 + etaProductionCX + etadeltaProductionCX + etaonePiProductionCX + etatwoPiProductionCX + etathreePiProductionCX + etafourPiProductionCX
342 + omegaProductionCX + omegadeltaProductionCX > rChannel) {
343 isElastic = false;
344
345 INCL_DEBUG(
"NN interaction: Delta Omega channel chosen" <<
'\n');
348 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + fourPiProductionCX
349 + etaProductionCX + etadeltaProductionCX + etaonePiProductionCX + etatwoPiProductionCX + etathreePiProductionCX + etafourPiProductionCX
350 + omegaProductionCX + omegadeltaProductionCX + omegaonePiProductionCX > rChannel) {
351 isElastic = false;
352
353 INCL_DEBUG(
"NN interaction: Omega + one Pion channel chosen" <<
'\n');
356 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + fourPiProductionCX
357 + etaProductionCX + etadeltaProductionCX + etaonePiProductionCX + etatwoPiProductionCX + etathreePiProductionCX + etafourPiProductionCX
358 + omegaProductionCX + omegadeltaProductionCX + omegaonePiProductionCX + omegatwoPiProductionCX > rChannel) {
359 isElastic = false;
360
361 INCL_DEBUG(
"NN interaction: Omega + two 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 > rChannel) {
367 isElastic = false;
368
369 INCL_DEBUG(
"NN interaction: Omega + three 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 > rChannel) {
375 isElastic = false;
376
377 INCL_DEBUG(
"NN interaction: Omega + four Pions channel chosen" <<
'\n');
380 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + fourPiProductionCX
381 + etaProductionCX + etadeltaProductionCX + etaonePiProductionCX + etatwoPiProductionCX + etathreePiProductionCX + etafourPiProductionCX
382 + omegaProductionCX + omegadeltaProductionCX + omegaonePiProductionCX + omegatwoPiProductionCX + omegathreePiProductionCX + omegafourPiProductionCX
383 + NLKProductionCX > rChannel) {
384 isElastic = false;
385 isStrangeProduction = true;
386
387 INCL_DEBUG(
"NN interaction: NLK 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 > rChannel) {
394 isElastic = false;
395 isStrangeProduction = true;
396
397 INCL_DEBUG(
"NN interaction: NLKpi channel chosen" <<
'\n');
400 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + fourPiProductionCX
401 + etaProductionCX + etadeltaProductionCX + etaonePiProductionCX + etatwoPiProductionCX + etathreePiProductionCX + etafourPiProductionCX
402 + omegaProductionCX + omegadeltaProductionCX + omegaonePiProductionCX + omegatwoPiProductionCX + omegathreePiProductionCX + omegafourPiProductionCX
403 + NLKProductionCX + NLKpiProductionCX + NLK2piProductionCX > rChannel) {
404 isElastic = false;
405 isStrangeProduction = true;
406
407 INCL_DEBUG(
"NN interaction: NLK2pi channel chosen" <<
'\n');
410 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + fourPiProductionCX
411 + etaProductionCX + etadeltaProductionCX + etaonePiProductionCX + etatwoPiProductionCX + etathreePiProductionCX + etafourPiProductionCX
412 + omegaProductionCX + omegadeltaProductionCX + omegaonePiProductionCX + omegatwoPiProductionCX + omegathreePiProductionCX + omegafourPiProductionCX
413 + NLKProductionCX + NLKpiProductionCX + NLK2piProductionCX + NSKProductionCX > rChannel) {
414 isElastic = false;
415 isStrangeProduction = true;
416
417 INCL_DEBUG(
"NN interaction: NSK channel chosen" <<
'\n');
420 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + fourPiProductionCX
421 + etaProductionCX + etadeltaProductionCX + etaonePiProductionCX + etatwoPiProductionCX + etathreePiProductionCX + etafourPiProductionCX
422 + omegaProductionCX + omegadeltaProductionCX + omegaonePiProductionCX + omegatwoPiProductionCX + omegathreePiProductionCX + omegafourPiProductionCX
423 + NLKProductionCX + NLKpiProductionCX + NLK2piProductionCX + NSKProductionCX + NSKpiProductionCX > rChannel) {
424 isElastic = false;
425 isStrangeProduction = true;
426
427 INCL_DEBUG(
"NN interaction: NSKpi channel chosen" <<
'\n');
430 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + fourPiProductionCX
431 + etaProductionCX + etadeltaProductionCX + etaonePiProductionCX + etatwoPiProductionCX + etathreePiProductionCX + etafourPiProductionCX
432 + omegaProductionCX + omegadeltaProductionCX + omegaonePiProductionCX + omegatwoPiProductionCX + omegathreePiProductionCX + omegafourPiProductionCX
433 + NLKProductionCX + NLKpiProductionCX + NLK2piProductionCX + NSKProductionCX + NSKpiProductionCX + NSK2piProductionCX > rChannel) {
434 isElastic = false;
435 isStrangeProduction = true;
436
437 INCL_DEBUG(
"NN interaction: NSK2pi channel chosen" <<
'\n');
440 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + fourPiProductionCX
441 + etaProductionCX + etadeltaProductionCX + etaonePiProductionCX + etatwoPiProductionCX + etathreePiProductionCX + etafourPiProductionCX
442 + omegaProductionCX + omegadeltaProductionCX + omegaonePiProductionCX + omegatwoPiProductionCX + omegathreePiProductionCX + omegafourPiProductionCX
443 + NLKProductionCX + NLKpiProductionCX + NLK2piProductionCX + NSKProductionCX + NSKpiProductionCX + NSK2piProductionCX + NNKKbProductionCX > rChannel) {
444 isElastic = false;
445 isStrangeProduction = true;
446
447 INCL_DEBUG(
"NN interaction: NNKKb channel chosen" <<
'\n');
450 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + fourPiProductionCX
451 + etaProductionCX + etadeltaProductionCX + etaonePiProductionCX + etatwoPiProductionCX + etathreePiProductionCX + etafourPiProductionCX
452 + omegaProductionCX + omegadeltaProductionCX + omegaonePiProductionCX + omegatwoPiProductionCX + omegathreePiProductionCX + omegafourPiProductionCX
453 + NLKProductionCX + NLKpiProductionCX + NLK2piProductionCX + NSKProductionCX + NSKpiProductionCX + NSK2piProductionCX + NNKKbProductionCX + NNMissingCX> rChannel) {
454 isElastic = false;
455 isStrangeProduction = true;
456
457 INCL_DEBUG(
"NN interaction: Missing Strangeness channel chosen" <<
'\n');
460 } else {
461 INCL_WARN(
"inconsistency within the NN Cross Sections (sum!=inelastic)" <<
'\n');
462 if(NNMissingCX>0.) {
463 INCL_WARN(
"Returning an Missing Strangeness channel" <<
'\n');
465 isElastic = false;
466 isStrangeProduction = true;
468 } else if(NNKKbProductionCX>0.) {
469 INCL_WARN(
"Returning an NNKKb channel" <<
'\n');
471 isElastic = false;
472 isStrangeProduction = true;
474 } else if(NSK2piProductionCX>0.) {
475 INCL_WARN(
"Returning an NSK2pi channel" <<
'\n');
477 isElastic = false;
478 isStrangeProduction = true;
480 } else if(NSKpiProductionCX>0.) {
481 INCL_WARN(
"Returning an NSKpi channel" <<
'\n');
483 isElastic = false;
484 isStrangeProduction = true;
486 } else if(NSKProductionCX>0.) {
487 INCL_WARN(
"Returning an NSK channel" <<
'\n');
489 isElastic = false;
490 isStrangeProduction = true;
492 } else if(NLK2piProductionCX>0.) {
493 INCL_WARN(
"Returning an NLK2pi channel" <<
'\n');
495 isElastic = false;
496 isStrangeProduction = true;
498 } else if(NLKpiProductionCX>0.) {
499 INCL_WARN(
"Returning an NLKpi channel" <<
'\n');
501 isElastic = false;
502 isStrangeProduction = true;
504 } else if(NLKProductionCX>0.) {
505 INCL_WARN(
"Returning an NLK channel" <<
'\n');
507 isElastic = false;
508 isStrangeProduction = true;
510 } else if(omegafourPiProductionCX>0.) {
511 INCL_WARN(
"Returning an Omega + four Pions channel" <<
'\n');
513 isElastic = false;
515 } else if(omegathreePiProductionCX>0.) {
516 INCL_WARN(
"Returning an Omega + three Pions channel" <<
'\n');
518 isElastic = false;
520 } else if(omegatwoPiProductionCX>0.) {
521 INCL_WARN(
"Returning an Omega + two Pions channel" <<
'\n');
523 isElastic = false;
525 } else if(omegaonePiProductionCX>0.) {
526 INCL_WARN(
"Returning an Omega + one Pion channel" <<
'\n');
528 isElastic = false;
530 } else if(omegadeltaProductionCX>0.) {
531 INCL_WARN(
"Returning an Omega + Delta channel" <<
'\n');
533 isElastic = false;
535 } else if(omegaProductionCX>0.) {
536 INCL_WARN(
"Returning an Omega channel" <<
'\n');
538 isElastic = false;
540 } else if(etafourPiProductionCX>0.) {
541 INCL_WARN(
"Returning an Eta + four Pions channel" <<
'\n');
543 isElastic = false;
545 } else if(etathreePiProductionCX>0.) {
546 INCL_WARN(
"Returning an Eta + threev channel" <<
'\n');
548 isElastic = false;
550 } else if(etatwoPiProductionCX>0.) {
551 INCL_WARN(
"Returning an Eta + two Pions channel" <<
'\n');
553 isElastic = false;
555 } else if(etaonePiProductionCX>0.) {
556 INCL_WARN(
"Returning an Eta + one Pion channel" <<
'\n');
558 isElastic = false;
560 } else if(etadeltaProductionCX>0.) {
561 INCL_WARN(
"Returning an Eta + Delta channel" <<
'\n');
563 isElastic = false;
565 } else if(etaProductionCX>0.) {
566 INCL_WARN(
"Returning an Eta channel" <<
'\n');
568 isElastic = false;
570 } else if(fourPiProductionCX>0.) {
571 INCL_WARN(
"Returning a 4pi channel" <<
'\n');
573 isElastic = false;
575 } else if(threePiProductionCX>0.) {
576 INCL_WARN(
"Returning a 3pi channel" <<
'\n');
578 isElastic = false;
580 } else if(twoPiProductionCX>0.) {
581 INCL_WARN(
"Returning a 2pi channel" <<
'\n');
583 isElastic = false;
585 } else if(onePiProductionCX>0.) {
586 INCL_WARN(
"Returning a 1pi channel" <<
'\n');
588 isElastic = false;
590 } else if(deltaProductionCX>0.) {
591 INCL_WARN(
"Returning a delta-production channel" <<
'\n');
593 isElastic = false;
595 } else {
596 INCL_WARN(
"Returning an elastic channel" <<
'\n');
598 isElastic = true;
600 }
601 }
602
603
604 }
607
613
615 const G4double StrangenessProdCX = (NLKProductionCX + NSKProductionCX + DeltaLKProductionCX + DeltaSKProductionCX + NNKKbProductionCX)/bias_apply;
616
617 G4double counterweight = (1. - bias_apply * StrangenessProdCX / (StrangenessProdCX + UnStrangeProdCX))/(1. - StrangenessProdCX / (StrangenessProdCX + UnStrangeProdCX));
618
619 if(counterweight < 0.5){
620 counterweight = 0.5;
621 bias_apply = 0.5*UnStrangeProdCX/StrangenessProdCX+1;
622
628 }
629
632
634
635 if(elasticCX > rChannel) {
636 isElastic = true;
637
638 INCL_DEBUG(
"NDelta interaction: elastic channel chosen" <<
'\n');
641 } else if (elasticCX + recombinationCX > rChannel){
642 isElastic = false;
643
644
645 INCL_DEBUG(
"NDelta interaction: recombination channel chosen" <<
'\n');
648 } else if (elasticCX + recombinationCX + NLKProductionCX > rChannel){
649 isElastic = false;
650 isStrangeProduction = true;
651
652 INCL_DEBUG(
"NDelta interaction: NLK channel chosen" <<
'\n');
655 } else if (elasticCX + recombinationCX + NLKProductionCX + NSKProductionCX > rChannel){
656 isElastic = false;
657 isStrangeProduction = true;
658
659 INCL_DEBUG(
"NDelta interaction: NSK channel chosen" <<
'\n');
662 } else if (elasticCX + recombinationCX + NLKProductionCX + NSKProductionCX + DeltaLKProductionCX > rChannel){
663 isElastic = false;
664 isStrangeProduction = true;
665
666 INCL_DEBUG(
"NDelta interaction: DeltaLK channel chosen" <<
'\n');
669 } else if (elasticCX + recombinationCX + NLKProductionCX + NSKProductionCX + DeltaLKProductionCX + DeltaSKProductionCX > rChannel){
670 isElastic = false;
671 isStrangeProduction = true;
672
673 INCL_DEBUG(
"NDelta interaction: DeltaSK channel chosen" <<
'\n');
676 } else if (elasticCX + recombinationCX + NLKProductionCX + NSKProductionCX + DeltaLKProductionCX + DeltaSKProductionCX + NNKKbProductionCX > rChannel){
677 isElastic = false;
678 isStrangeProduction = true;
679
680 INCL_DEBUG(
"NDelta interaction: NNKKb channel chosen" <<
'\n');
683 }
684 else{
685 INCL_ERROR(
"rChannel > (StrangenessProdCX + UnStrangeProdCX) in NDelta interaction: return an elastic channel" <<
'\n');
687 isElastic = true;
689 }
690
691
693 isElastic = true;
694 INCL_DEBUG(
"DeltaDelta interaction: elastic channel chosen" <<
'\n');
696
697
699
708
712 const G4double StrangenessProdCX = (LKProdCX + SKProdCX + LKpiProdCX + SKpiProdCX + LK2piProdCX + SK2piProdCX + NKKbProdCX + MissingCX)/bias_apply;
713
714 G4double counterweight = (1. - bias_apply * StrangenessProdCX / (StrangenessProdCX + UnStrangeProdCX))/(1. - StrangenessProdCX / (StrangenessProdCX + UnStrangeProdCX));
715
716 if(counterweight < 0.5) {
717 counterweight = 0.5;
718 bias_apply = 0.5*UnStrangeProdCX/StrangenessProdCX+1;
727 }
728
729
737
739
740
741
743
744 if(elasticCX > rChannel) {
745 isElastic = true;
746
747 INCL_DEBUG(
"PiN interaction: elastic channel chosen" <<
'\n');
750 } else if(elasticCX + deltaProductionCX > rChannel) {
751 isElastic = false;
752
753 INCL_DEBUG(
"PiN interaction: Delta channel chosen" <<
'\n');
756 } else if(elasticCX + deltaProductionCX + onePiProductionCX > rChannel) {
757 isElastic = false;
758
759 INCL_DEBUG(
"PiN interaction: one Pion channel chosen" <<
'\n');
762 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX > rChannel) {
763 isElastic = false;
764
765 INCL_DEBUG(
"PiN interaction: two Pions channel chosen" <<
'\n');
768 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX > rChannel) {
769 isElastic = false;
770
771 INCL_DEBUG(
"PiN interaction: three Pions channel chosen" <<
'\n');
774 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + etaProductionCX > rChannel) {
775 isElastic = false;
776
777 INCL_DEBUG(
"PiN interaction: Eta channel chosen" <<
'\n');
780 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + etaProductionCX+ omegaProductionCX > rChannel) {
781 isElastic = false;
782
783 INCL_DEBUG(
"PiN interaction: Omega channel chosen" <<
'\n');
786 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + etaProductionCX+ omegaProductionCX
787 + LKProdCX > rChannel) {
788 isElastic = false;
789 isStrangeProduction = true;
790
791 INCL_DEBUG(
"PiN interaction: LK channel chosen" <<
'\n');
794 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + etaProductionCX+ omegaProductionCX
795 + LKProdCX + SKProdCX > rChannel) {
796 isElastic = false;
797 isStrangeProduction = true;
798
799 INCL_DEBUG(
"PiN interaction: SK channel chosen" <<
'\n');
802 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + etaProductionCX+ omegaProductionCX
803 + LKProdCX + SKProdCX + LKpiProdCX > rChannel) {
804 isElastic = false;
805 isStrangeProduction = true;
806
807 INCL_DEBUG(
"PiN interaction: LKpi channel chosen" <<
'\n');
810 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + etaProductionCX+ omegaProductionCX
811 + LKProdCX + SKProdCX + LKpiProdCX + SKpiProdCX > rChannel) {
812 isElastic = false;
813 isStrangeProduction = true;
814
815 INCL_DEBUG(
"PiN interaction: SKpi channel chosen" <<
'\n');
818 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + etaProductionCX+ omegaProductionCX
819 + LKProdCX + SKProdCX + LKpiProdCX + SKpiProdCX + LK2piProdCX > rChannel) {
820 isElastic = false;
821 isStrangeProduction = true;
822
823 INCL_DEBUG(
"PiN interaction: LK2pi channel chosen" <<
'\n');
826 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + etaProductionCX+ omegaProductionCX
827 + LKProdCX + SKProdCX + LKpiProdCX + SKpiProdCX + LK2piProdCX + SK2piProdCX > rChannel) {
828 isElastic = false;
829 isStrangeProduction = true;
830
831 INCL_DEBUG(
"PiN interaction: SK2pi channel chosen" <<
'\n');
834 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + etaProductionCX+ omegaProductionCX
835 + LKProdCX + SKProdCX + LKpiProdCX + SKpiProdCX + LK2piProdCX + SK2piProdCX + NKKbProdCX > rChannel) {
836 isElastic = false;
837 isStrangeProduction = true;
838
839 INCL_DEBUG(
"PiN interaction: NKKb channel chosen" <<
'\n');
842 } else if(elasticCX + deltaProductionCX + onePiProductionCX + twoPiProductionCX + threePiProductionCX + etaProductionCX+ omegaProductionCX
843 + LKProdCX + SKProdCX + LKpiProdCX + SKpiProdCX + LK2piProdCX + SK2piProdCX + NKKbProdCX + MissingCX> rChannel) {
844 isElastic = false;
845 isStrangeProduction = true;
846
847 INCL_DEBUG(
"PiN interaction: Missinge Strangeness channel chosen" <<
'\n');
850 }
851 else {
852 INCL_WARN(
"inconsistency within the PiN Cross Sections (sum!=inelastic)" <<
'\n');
853 if(MissingCX>0.) {
854 INCL_WARN(
"Returning a Missinge Strangeness channel" <<
'\n');
856 isElastic = false;
857 isStrangeProduction = true;
859 } else if(NKKbProdCX>0.) {
860 INCL_WARN(
"Returning a NKKb channel" <<
'\n');
862 isElastic = false;
863 isStrangeProduction = true;
865 } else if(SK2piProdCX>0.) {
866 INCL_WARN(
"Returning a SK2pi channel" <<
'\n');
868 isElastic = false;
869 isStrangeProduction = true;
871 } else if(LK2piProdCX>0.) {
872 INCL_WARN(
"Returning a LK2pi channel" <<
'\n');
874 isElastic = false;
875 isStrangeProduction = true;
877 } else if(SKpiProdCX>0.) {
878 INCL_WARN(
"Returning a SKpi channel" <<
'\n');
880 isElastic = false;
881 isStrangeProduction = true;
883 } else if(LKpiProdCX>0.) {
884 INCL_WARN(
"Returning a LKpi channel" <<
'\n');
886 isElastic = false;
887 isStrangeProduction = true;
889 } else if(SKProdCX>0.) {
890 INCL_WARN(
"Returning a SK channel" <<
'\n');
892 isElastic = false;
893 isStrangeProduction = true;
895 } else if(LKProdCX>0.) {
896 INCL_WARN(
"Returning a LK channel" <<
'\n');
898 isElastic = false;
899 isStrangeProduction = true;
901 } else if(omegaProductionCX>0.) {
902 INCL_WARN(
"Returning a Omega channel" <<
'\n');
904 isElastic = false;
906 } else if(etaProductionCX>0.) {
907 INCL_WARN(
"Returning a Eta channel" <<
'\n');
909 isElastic = false;
911 } else if(threePiProductionCX>0.) {
912 INCL_WARN(
"Returning a 3pi channel" <<
'\n');
914 isElastic = false;
916 } else if(twoPiProductionCX>0.) {
917 INCL_WARN(
"Returning a 2pi channel" <<
'\n');
919 isElastic = false;
921 } else if(onePiProductionCX>0.) {
922 INCL_WARN(
"Returning a 1pi channel" <<
'\n');
924 isElastic = false;
926 } else if(deltaProductionCX>0.) {
927 INCL_WARN(
"Returning a delta-production channel" <<
'\n');
929 isElastic = false;
931 } else {
932 INCL_WARN(
"Returning an elastic channel" <<
'\n');
934 isElastic = true;
936 }
937 }
939
940
945
946
948
949 if(elasticCX > rChannel) {
950
951 isElastic = true;
952 INCL_DEBUG(
"EtaN interaction: elastic channel chosen" <<
'\n');
954 } else if(elasticCX + onePiProductionCX > rChannel) {
955 isElastic = false;
956
957 INCL_DEBUG(
"EtaN interaction: PiN channel chosen" <<
'\n');
959 } else if(elasticCX + onePiProductionCX + twoPiProductionCX > rChannel) {
960 isElastic = false;
961
962 INCL_DEBUG(
"EtaN interaction: PiPiN channel chosen" <<
'\n');
964 }
965
966 else {
967 INCL_WARN(
"inconsistency within the EtaN Cross Sections (sum!=inelastic)" <<
'\n');
968 if(twoPiProductionCX>0.) {
969 INCL_WARN(
"Returning a PiPiN channel" <<
'\n');
970 isElastic = false;
972 } else if(onePiProductionCX>0.) {
973 INCL_WARN(
"Returning a PiN channel" <<
'\n');
974 isElastic = false;
976 } else {
977 INCL_WARN(
"Returning an elastic channel" <<
'\n');
978 isElastic = true;
980 }
981 }
982
984
985
990
991
993
994 if(elasticCX > rChannel) {
995
996 isElastic = true;
997 INCL_DEBUG(
"OmegaN interaction: elastic channel chosen" <<
'\n');
999 } else if(elasticCX + onePiProductionCX > rChannel) {
1000 isElastic = false;
1001
1002 INCL_DEBUG(
"OmegaN interaction: PiN channel chosen" <<
'\n');
1004 } else if(elasticCX + onePiProductionCX + twoPiProductionCX > rChannel) {
1005 isElastic = false;
1006
1007 INCL_DEBUG(
"OmegaN interaction: PiPiN channel chosen" <<
'\n');
1009 }
1010 else {
1011 INCL_WARN(
"inconsistency within the OmegaN Cross Sections (sum!=inelastic)" <<
'\n');
1012 if(twoPiProductionCX>0.) {
1013 INCL_WARN(
"Returning a PiPiN channel" <<
'\n');
1014 isElastic = false;
1016 } else if(onePiProductionCX>0.) {
1017 INCL_WARN(
"Returning a PiN channel" <<
'\n');
1018 isElastic = false;
1020 } else {
1021 INCL_WARN(
"Returning an elastic channel" <<
'\n');
1022 isElastic = true;
1024 }
1025 }
1027
1033
1034
1036 if(elasticCX > rChannel){
1037
1038 isElastic = true;
1039 INCL_DEBUG(
"KN interaction: elastic channel chosen" <<
'\n');
1041 } else if(elasticCX + quasielasticCX > rChannel){
1042
1043 isElastic = false;
1044 INCL_DEBUG(
"KN interaction: quasi-elastic channel chosen" <<
'\n');
1046 } else if(elasticCX + quasielasticCX + NKToNKpiCX > rChannel){
1047
1048 isElastic = false;
1049 INCL_DEBUG(
"KN interaction: NKpi channel chosen" <<
'\n');
1051 } else if(elasticCX + quasielasticCX + NKToNKpiCX + NKToNK2piCX > rChannel){
1052
1053 isElastic = false;
1054 INCL_DEBUG(
"KN interaction: NK2pi channel chosen" <<
'\n');
1056 } else {
1057 INCL_WARN(
"inconsistency within the KN Cross Sections (sum!=inelastic)" <<
'\n');
1058 if(NKToNK2piCX>0.) {
1059 INCL_WARN(
"Returning a NKToNK2pi channel" <<
'\n');
1060 isElastic = false;
1062 } else if(NKToNKpiCX>0.) {
1063 INCL_WARN(
"Returning a NKToNKpi channel" <<
'\n');
1064 isElastic = false;
1066 } else if(quasielasticCX>0.) {
1067 INCL_WARN(
"Returning a quasi-elastic channel" <<
'\n');
1068 isElastic = false;
1070 } else {
1071 INCL_WARN(
"Returning an elastic channel" <<
'\n');
1072 isElastic = true;
1074 }
1075 }
1077
1087
1088
1090 if(elasticCX > rChannel){
1091
1092 isElastic = true;
1093 INCL_DEBUG(
"KbN interaction: elastic channel chosen" <<
'\n');
1095 } else if(elasticCX + quasielasticCX > rChannel){
1096
1097 isElastic = false;
1098 INCL_DEBUG(
"KbN interaction: quasi-elastic channel chosen" <<
'\n');
1100 } else if(elasticCX + quasielasticCX + NKbToNKbpiCX > rChannel){
1101
1102 isElastic = false;
1103 INCL_DEBUG(
"KbN interaction: NKbpi channel chosen" <<
'\n');
1105 } else if(elasticCX + quasielasticCX + NKbToNKbpiCX + NKbToNKb2piCX > rChannel){
1106
1107 isElastic = false;
1108 INCL_DEBUG(
"KbN interaction: NKb2pi channel chosen" <<
'\n');
1110 } else if(elasticCX + quasielasticCX + NKbToNKbpiCX + NKbToNKb2piCX + NKbToLpiCX > rChannel){
1111
1112 isElastic = false;
1113 INCL_DEBUG(
"KbN interaction: Lpi channel chosen" <<
'\n');
1115 } else if(elasticCX + quasielasticCX + NKbToNKbpiCX + NKbToNKb2piCX + NKbToLpiCX + NKbToL2piCX > rChannel){
1116
1117 isElastic = false;
1118 INCL_DEBUG(
"KbN interaction: L2pi channel chosen" <<
'\n');
1120 } else if(elasticCX + quasielasticCX + NKbToNKbpiCX + NKbToNKb2piCX + NKbToLpiCX + NKbToL2piCX + NKbToSpiCX > rChannel){
1121
1122 isElastic = false;
1123 INCL_DEBUG(
"KbN interaction: Spi channel chosen" <<
'\n');
1125 } else if(elasticCX + quasielasticCX + NKbToNKbpiCX + NKbToNKb2piCX + NKbToLpiCX + NKbToL2piCX + NKbToSpiCX + NKbToS2piCX > rChannel){
1126
1127 isElastic = false;
1128 INCL_DEBUG(
"KbN interaction: S2pi channel chosen" <<
'\n');
1130 } else {
1131 INCL_WARN(
"inconsistency within the KbN Cross Sections (sum!=inelastic)" <<
'\n');
1132 if(NKbToS2piCX>0.) {
1133 INCL_WARN(
"Returning a NKbToS2pi channel" <<
'\n');
1134 isElastic = false;
1136 } else if(NKbToSpiCX>0.) {
1137 INCL_WARN(
"Returning a NKbToSpi channel" <<
'\n');
1138 isElastic = false;
1140 } else if(NKbToL2piCX>0.) {
1141 INCL_WARN(
"Returning a NKbToL2pi channel" <<
'\n');
1142 isElastic = false;
1144 } else if(NKbToLpiCX>0.) {
1145 INCL_WARN(
"Returning a NKbToLpi channel" <<
'\n');
1146 isElastic = false;
1148 } else if(NKbToNKb2piCX>0.) {
1149 INCL_WARN(
"Returning a NKbToNKb2pi channel" <<
'\n');
1150 isElastic = false;
1152 } else if(NKbToNKbpiCX>0.) {
1153 INCL_WARN(
"Returning a NKbToNKbpi channel" <<
'\n');
1154 isElastic = false;
1156 } else if(quasielasticCX>0.) {
1157 INCL_WARN(
"Returning a quasi-elastic channel" <<
'\n');
1158 isElastic = false;
1160 } else {
1161 INCL_WARN(
"Returning an elastic channel" <<
'\n');
1162 isElastic = true;
1164 }
1165 }
1167
1171
1172
1174 if(elasticCX > rChannel){
1175
1176 isElastic = true;
1177 INCL_DEBUG(
"NLambda interaction: elastic channel chosen" <<
'\n');
1179 } else if(elasticCX + NLToNSCX > rChannel){
1180
1181 isElastic = false;
1182 INCL_DEBUG(
"NLambda interaction: quasi-elastic channel chosen" <<
'\n');
1184 } else {
1185 INCL_WARN(
"inconsistency within the NLambda Cross Sections (sum!=inelastic)" <<
'\n');
1186 if(NLToNSCX>0.) {
1187 INCL_WARN(
"Returning a quasi-elastic channel" <<
'\n');
1188 isElastic = false;
1190 } else {
1191 INCL_WARN(
"Returning an elastic channel" <<
'\n');
1192 isElastic = true;
1194 }
1195 }
1197
1202
1203
1205 if(elasticCX > rChannel){
1206
1207 isElastic = true;
1208 INCL_DEBUG(
"NSigma interaction: elastic channel chosen" <<
'\n');
1210 } else if(elasticCX + NSToNLCX > rChannel){
1211
1212 isElastic = false;
1213 INCL_DEBUG(
"NSigma interaction: NLambda channel chosen" <<
'\n');
1215 } else if(elasticCX + NSToNLCX + NSToNSCX > rChannel){
1216
1217 isElastic = false;
1218 INCL_DEBUG(
"NSigma interaction: NSigma quasi-elastic channel chosen" <<
'\n');
1220 } else {
1221 INCL_WARN(
"inconsistency within the NSigma Cross Sections (sum!=inelastic)" <<
'\n');
1222 if(NSToNSCX>0.) {
1223 INCL_WARN(
"Returning a quasi-elastic channel" <<
'\n');
1224 isElastic = false;
1226 } else if(NSToNLCX>0.) {
1227 INCL_WARN(
"Returning a NLambda channel" <<
'\n');
1228 isElastic = false;
1230 } else {
1231 INCL_WARN(
"Returning an elastic channel" <<
'\n');
1232 isElastic = true;
1234 }
1235 }
1236 }
1237
1238 else {
1239 INCL_DEBUG(
"BinaryCollisionAvatar can only handle nucleons (for the moment)."
1240 << '\n'
1242 << '\n'
1244 << '\n');
1246 return NULL;
1247 }
1248 }
G4int getAcceptedCollisions() const
void restoreParticles() const
Restore the state of both particles.
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 isEta() const
Is this an eta?
G4bool isAntiKaon() const
Is this an antiKaon?
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 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 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 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 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 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 NpiToLK(Particle const *const p1, Particle const *const p2)
G4double NpiToSKpi(Particle const *const p1, Particle const *const p2)
G4double squareTotalEnergyInCM(Particle const *const p1, Particle const *const p2)