78{
79
80
82
83 if(Pprojectile.
z() < 0.)
84 {
85 target->SetStatus(2);
86 return false;
87 }
88
90
91 G4int ProjectilePDGcode=projectile->GetDefinition()->GetPDGEncoding();
92 G4int absProjectilePDGcode=std::abs(ProjectilePDGcode);
93
94 G4bool PutOnMassShell(
false);
95
97
98
99 if(M0projectile < projectile->GetDefinition()->GetPDGMass())
100 {
101 PutOnMassShell=true;
102 M0projectile=projectile->GetDefinition()->GetPDGMass();
103 }
104
105 G4double M0projectile2 = M0projectile * M0projectile;
106
110
111
112 G4int TargetPDGcode=target->GetDefinition()->GetPDGEncoding();
113 G4int absTargetPDGcode=std::abs(TargetPDGcode);
114
115
117
118
120
121
122
123 if(M0target < target->GetDefinition()->GetPDGMass())
124 {
125 PutOnMassShell=true;
126 M0target=target->GetDefinition()->GetPDGMass();
127 }
128
129 G4double M0target2 = M0target * M0target;
130
134
137
138
139
140
141
142 G4double SumMasses=M0projectile+M0target+220.*MeV;
143
144
146 Psum=Pprojectile+Ptarget;
148
149
150
151
153
155
156 if ( Ptmp.
pz() <= 0. )
157 {
158 target->SetStatus(2);
159
160 return false;
161 }
162
165
167
168 Pprojectile.transform(toCms);
169 Ptarget.transform(toCms);
170
172
174
175
176
177
178
179
180
181
182
183 if(absProjectilePDGcode > 1000 && (SqrtS < SumMasses))
184 {target->SetStatus(2); return false;}
185
186
187
188
189
190
191
192 if(( absProjectilePDGcode == 211 || ProjectilePDGcode == 111) &&
193 (SqrtS < SumMasses))
194 {target->SetStatus(2); return false;}
195
196
197
198
199 if(( (absProjectilePDGcode == 321) || (ProjectilePDGcode == -311) ||
200 (absProjectilePDGcode == 311) || (absProjectilePDGcode == 130) ||
201 (absProjectilePDGcode == 310)) && (SqrtS < SumMasses))
202
203 {target->SetStatus(2); return false;}
204
205
206
207 PZcms2=(S*S+M0projectile2*M0projectile2+M0target2*M0target2-
208 2*S*M0projectile2 - 2*S*M0target2 - 2*M0projectile2*M0target2)
209 /4./S;
210
211 if(PZcms2 < 0)
212 {target->SetStatus(2); return false;}
213
214
215 PZcms = std::sqrt(PZcms2);
216
217 if(PutOnMassShell)
218 {
219 if(Pprojectile.z() > 0.)
220 {
221 Pprojectile.setPz( PZcms);
222 Ptarget.setPz( -PZcms);
223 }
224 else
225 {
226 Pprojectile.setPz(-PZcms);
227 Ptarget.setPz( PZcms);
228 };
229
230 Pprojectile.setE(std::sqrt(M0projectile2 +
231 Pprojectile.x()*Pprojectile.x()+
232 Pprojectile.y()*Pprojectile.y()+
233 PZcms2));
234 Ptarget.setE(std::sqrt(M0target2 +
235 Ptarget.x()*Ptarget.x()+
236 Ptarget.y()*Ptarget.y()+
237 PZcms2));
238 }
239
240
241
242
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
263
265
266
267
270
271
272
273
274
275
276
277
278
279
281 std::exp(-SlopeQuarkExchange*ProjectileRapidity))
282 {
283
284
285
286 G4int NewProjCode(0), NewTargCode(0);
287
288 G4int ProjQ1(0), ProjQ2(0), ProjQ3(0);
289
290
291 if(absProjectilePDGcode < 1000 )
292 {
293 UnpackMeson(ProjectilePDGcode, ProjQ1, ProjQ2);
294 } else
295 {
296 UnpackBaryon(ProjectilePDGcode, ProjQ1, ProjQ2, ProjQ3);
297 }
298
299
300 G4int TargQ1(0), TargQ2(0), TargQ3(0);
301 UnpackBaryon(TargetPDGcode, TargQ1, TargQ2, TargQ3);
302
303
304
305
306 G4int ProjExchangeQ(0);
307 G4int TargExchangeQ(0);
308
309 if(absProjectilePDGcode < 1000 )
310 {
311
312 if(ProjQ1 > 0 )
313 {
315 ProjExchangeQ = ProjQ1;
316 if(ProjExchangeQ != TargQ1) Navailable++;
317 if(ProjExchangeQ != TargQ2) Navailable++;
318 if(ProjExchangeQ != TargQ3) Navailable++;
319
321
322 Navailable=0;
323 if(ProjExchangeQ != TargQ1)
324 {
325 Navailable++;
326 if(Navailable == Nsampled)
327 {TargExchangeQ = TargQ1; TargQ1=ProjExchangeQ; ProjQ1=TargExchangeQ;}
328 }
329
330 if(ProjExchangeQ != TargQ2)
331 {
332 Navailable++;
333 if(Navailable == Nsampled)
334 {TargExchangeQ = TargQ2; TargQ2=ProjExchangeQ; ProjQ1=TargExchangeQ;}
335 }
336
337 if(ProjExchangeQ != TargQ3)
338 {
339 Navailable++;
340 if(Navailable == Nsampled)
341 {TargExchangeQ = TargQ3; TargQ3=ProjExchangeQ; ProjQ1=TargExchangeQ;}
342 }
343 } else
344 {
346 ProjExchangeQ = ProjQ2;
347 if(ProjExchangeQ != TargQ1) Navailable++;
348 if(ProjExchangeQ != TargQ2) Navailable++;
349 if(ProjExchangeQ != TargQ3) Navailable++;
350
352
353 Navailable=0;
354 if(ProjExchangeQ != TargQ1)
355 {
356 Navailable++;
357 if(Navailable == Nsampled)
358 {TargExchangeQ = TargQ1; TargQ1=ProjExchangeQ; ProjQ2=TargExchangeQ;}
359 }
360
361 if(ProjExchangeQ != TargQ2)
362 {
363 Navailable++;
364 if(Navailable == Nsampled)
365 {TargExchangeQ = TargQ2; TargQ2=ProjExchangeQ; ProjQ2=TargExchangeQ;}
366 }
367
368 if(ProjExchangeQ != TargQ3)
369 {
370 Navailable++;
371 if(Navailable == Nsampled)
372 {TargExchangeQ = TargQ3; TargQ3=ProjExchangeQ; ProjQ2=TargExchangeQ;}
373 }
374 }
375
376
377
378
379
380 G4int aProjQ1=std::abs(ProjQ1);
381 G4int aProjQ2=std::abs(ProjQ2);
382 if(aProjQ1 == aProjQ2) {NewProjCode = 111;}
383 else
384 {
385 if(aProjQ1 > aProjQ2) {NewProjCode = aProjQ1*100+aProjQ2*10+1;}
386 else {NewProjCode = aProjQ2*100+aProjQ1*10+1;}
387
388 }
389
391
393 {
394 NewProjCode +=2;
395 ProjExcited=true;
396 }
397 if(aProjQ1 != aProjQ2) NewProjCode *=(ProjectilePDGcode/absProjectilePDGcode);
398
399
402
403
404if(TestParticle)
405{
408
409
410
411
412
413
414
415 if(MtestPart > M0projectile)
416 {M0projectile = MtestPart;}
417 else
418 {
419 if(std::abs(M0projectile - projectile->GetDefinition()->GetPDGMass()) < 140.*MeV)
420 {M0projectile = MtestPart;}
421 }
422
423 M0projectile2 = M0projectile * M0projectile;
424
425 ProjectileDiffStateMinMass =M0projectile+210.*MeV;
426 ProjectileNonDiffStateMinMass=M0projectile+210.*MeV;
427} else
428{return false;}
429
430
431 NewTargCode = NewNucleonId(TargQ1, TargQ2, TargQ3);
432
433
434
435
436
437
438 if( (TargQ1 == TargQ2) && (TargQ1 == TargQ3) &&
439 (SqrtS > M0projectile+DeltaMass)) {NewTargCode +=2;
440 ProjExcited=true;}
441 else if( target->GetDefinition()->GetPDGiIsospin() == 3 )
442 {
if(
G4UniformRand() > DeltaProbAtQuarkExchange){NewTargCode +=2;
443 ProjExcited=true;}
444 else {}
445 }
446
447
448 else if((!ProjExcited) &&
450 (SqrtS > M0projectile+DeltaMass)) {NewTargCode +=2;}
451
452 else {}
453
454
455
456
458
459if(TestParticle)
460{
463
464 if(MtestPart > M0target)
465 {M0target=MtestPart;}
466 else
467 {
468 if(std::abs(M0target - target->GetDefinition()->GetPDGMass()) < 140.*MeV)
469 {M0target=MtestPart;}
470 }
471
472 TargetDiffStateMinMass =M0target+220.*MeV;
473 TargetNonDiffStateMinMass=M0target+220.*MeV;
474} else
475{return false;}
476 } else
477 {
478
480 G4bool ProjDeltaHasCreated(
false);
481 G4bool TargDeltaHasCreated(
false);
482
485 {
486 if( Ksi < 0.333333 )
487 {ProjExchangeQ = ProjQ1;}
488 else if( (0.333333 <= Ksi) && (Ksi < 0.666667))
489 {ProjExchangeQ = ProjQ2;}
490 else
491 {ProjExchangeQ = ProjQ3;}
492
493
495 {
496 TargExchangeQ = TargQ1; TargQ1=ProjExchangeQ; ProjExchangeQ=TargExchangeQ;
497 } else
499 {
500 TargExchangeQ = TargQ2; TargQ2=ProjExchangeQ; ProjExchangeQ=TargExchangeQ;
501 } else
502 {
503 TargExchangeQ = TargQ3; TargQ3=ProjExchangeQ; ProjExchangeQ=TargExchangeQ;
504 }
505
506
507
508 if( Ksi < 0.333333 )
509 {ProjQ1=ProjExchangeQ;}
510 else if( (0.333333 <= Ksi) && (Ksi < 0.666667))
511 {ProjQ2=ProjExchangeQ;}
512 else
513 {ProjQ3=ProjExchangeQ;}
514
515 } else
516 {
517 if( Ksi < 0.333333 )
518 {TargExchangeQ = TargQ1;}
519 else if( (0.333333 <= Ksi) && (Ksi < 0.666667))
520 {TargExchangeQ = TargQ2;}
521 else
522 {TargExchangeQ = TargQ3;}
523
525 {
526 ProjExchangeQ = ProjQ1; ProjQ1=TargExchangeQ; TargExchangeQ=ProjExchangeQ;
527 } else
529 {
530 ProjExchangeQ = ProjQ2; ProjQ2=TargExchangeQ; TargExchangeQ=ProjExchangeQ;
531 } else
532 {
533 ProjExchangeQ = ProjQ3; ProjQ3=TargExchangeQ; TargExchangeQ=ProjExchangeQ;
534 }
535
536 if( Ksi < 0.333333 )
537 {TargQ1=TargExchangeQ;}
538 else if( (0.333333 <= Ksi) && (Ksi < 0.666667))
539 {TargQ2=TargExchangeQ;}
540 else
541 {TargQ3=TargExchangeQ;}
542
543 }
544
545 NewProjCode = NewNucleonId(ProjQ1, ProjQ2, ProjQ3);
546
547 if((ProjQ1==ProjQ2) && (ProjQ1==ProjQ3)) {NewProjCode +=2; ProjDeltaHasCreated=true;}
548 else if(projectile->GetDefinition()->GetPDGiIsospin() == 3)
550 {NewProjCode +=2; ProjDeltaHasCreated=true;}
551 else {NewProjCode +=0; ProjDeltaHasCreated=false;}
552 }
553 else
554 {
555 if((
G4UniformRand() < DeltaProbAtQuarkExchange) && (SqrtS > DeltaMass+M0target))
556 {NewProjCode +=2; ProjDeltaHasCreated=true;}
557 else {NewProjCode +=0; ProjDeltaHasCreated=false;}
558 }
559
560
561
562
563
564
565
566
567 NewTargCode = NewNucleonId(TargQ1, TargQ2, TargQ3);
568
569
570
571
572
573
574
575
576
577 if((TargQ1==TargQ2) && (TargQ1==TargQ3)) {NewTargCode +=2; TargDeltaHasCreated=true;}
578 else if(target->GetDefinition()->GetPDGiIsospin() == 3)
580 {NewTargCode +=2; TargDeltaHasCreated=true;}
581 else {NewTargCode +=0; TargDeltaHasCreated=false;}
582 }
583 else
584 {
585 if((
G4UniformRand() < DeltaProbAtQuarkExchange) && (SqrtS > M0projectile+DeltaMass))
586 {NewTargCode +=2; TargDeltaHasCreated=true;}
587 else {NewTargCode +=0; TargDeltaHasCreated=false;}
588 }
589
590
591
592
593
594
595
596
597 if((absProjectilePDGcode == NewProjCode) && (absTargetPDGcode == NewTargCode))
598 {
599 }
600
601if(ProjDeltaHasCreated) {ProbProjectileDiffraction=1.; ProbTargetDiffraction=0.;}
602if(TargDeltaHasCreated) {ProbProjectileDiffraction=0.; ProbTargetDiffraction=1.;}
603 if(ProjDeltaHasCreated)
604 {
607
608 if(MtestPart >= M0projectile)
609 {
610 M0projectile = MtestPart;
611 M0projectile2 = M0projectile * M0projectile;
612 }
613
614 ProjectileDiffStateMinMass =M0projectile+210.*MeV;
615 ProjectileNonDiffStateMinMass=M0projectile+210.*MeV;
616 }
617
618
619
620 if(TargDeltaHasCreated)
621 {
624
625 if(MtestPart >=M0target)
626 {
627 M0target=MtestPart;
628 M0target2 = M0target * M0target;
629 }
630
631 TargetDiffStateMinMass =M0target+210.*MeV;
632 TargetNonDiffStateMinMass=M0target+210.*MeV;
633 }
634 }
635
636
637
638
639
640
641
642
643 PZcms2=(S*S+M0projectile2*M0projectile2+M0target2*M0target2-
644 2*S*M0projectile2 - 2*S*M0target2 - 2*M0projectile2*M0target2)
645 /4./S;
646
647 if(PZcms2 < 0) {return false;}
648
649 projectile->SetDefinition(
651
652 target->SetDefinition(
654
655 PZcms = std::sqrt(PZcms2);
656
657 Pprojectile.setPz( PZcms);
658 Pprojectile.setE(std::sqrt(M0projectile2+PZcms2));
659
660 Ptarget.setPz( -PZcms);
661 Ptarget.setE(std::sqrt(M0target2+PZcms2));
662
663
664
665 if(absProjectilePDGcode < 1000)
666 {
667 G4double Wexcit=1.-2.256*std::exp(-0.6*ProjectileRapidity);
668 Wexcit=0.;
670 {
671
672 Pprojectile.transform(toLab);
673 Ptarget.transform(toLab);
674
675 projectile->SetTimeOfCreation(target->GetTimeOfCreation());
676 projectile->SetPosition(target->GetPosition());
677
678 projectile->Set4Momentum(Pprojectile);
679 target->Set4Momentum(Ptarget);
680
682
683 return Result;
684 }
685 } else
686 {
687 G4double Wexcit=1.-2.256*std::exp(-0.6*ProjectileRapidity);
688
690 {
691
692 Pprojectile.transform(toLab);
693 Ptarget.transform(toLab);
694
695 projectile->SetTimeOfCreation(target->GetTimeOfCreation());
696 projectile->SetPosition(target->GetPosition());
697
698 projectile->Set4Momentum(Pprojectile);
699 target->Set4Momentum(Ptarget);
700
702 return Result;
703 }
704 }
705
706 }
707
708
709 G4double ProbOfDiffraction=ProbProjectileDiffraction + ProbTargetDiffraction;
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732 if(ProbOfDiffraction!=0.)
733 {
734 ProbProjectileDiffraction/=ProbOfDiffraction;
735 }
736 else
737 {
738 ProbProjectileDiffraction=0.;
739 }
740
741
742
743 G4double ProjectileDiffStateMinMass2 = ProjectileDiffStateMinMass *
744 ProjectileDiffStateMinMass;
745 G4double ProjectileNonDiffStateMinMass2 = ProjectileNonDiffStateMinMass *
746 ProjectileNonDiffStateMinMass;
747
748 G4double TargetDiffStateMinMass2 = TargetDiffStateMinMass *
749 TargetDiffStateMinMass;
750 G4double TargetNonDiffStateMinMass2 = TargetNonDiffStateMinMass *
751 TargetNonDiffStateMinMass;
752
757
759 G4double PMinusNew, PPlusNew, TPlusNew, TMinusNew;
760
763
765
766
767
768
770 {
772 {
773
774
775 do {
776
777
778
779
780
781
782
783
784
785
786
787
788 if (whilecount > 1000 )
789 {
791 target->SetStatus(2); return false;
792 };
793
794
795 ProjMassT2=ProjectileDiffStateMinMass2;
796 ProjMassT =ProjectileDiffStateMinMass;
797
798 TargMassT2=M0target2;
799 TargMassT =M0target;
800
801 PZcms2=(S*S + ProjMassT2*ProjMassT2 + TargMassT2*TargMassT2-
802 2.*S*ProjMassT2-2.*S*TargMassT2-2.*ProjMassT2*TargMassT2)
803 /4./S;
804
805
806 if(PZcms2 < 0 )
807 {
808 target->SetStatus(2);
809 return false;
810 }
811 maxPtSquare=PZcms2;
812
815
816 ProjMassT2=ProjectileDiffStateMinMass2+Pt2;
817 ProjMassT =std::sqrt(ProjMassT2);
818
819 TargMassT2=M0target2+Pt2;
820 TargMassT =std::sqrt(TargMassT2);
821
822
823
824 PZcms2=(S*S + ProjMassT2*ProjMassT2 + TargMassT2*TargMassT2-
825 2.*S*ProjMassT2-2.*S*TargMassT2-2.*ProjMassT2*TargMassT2)
826 /4./S;
827
828 if(PZcms2 < 0 ) continue;
829 PZcms =std::sqrt(PZcms2);
830
831 PMinusMin=std::sqrt(ProjMassT2+PZcms2)-PZcms;
832 PMinusMax=SqrtS-TargMassT;
833
834 PMinusNew=ChooseP(PMinusMin, PMinusMax);
835
836
837
838 TMinusNew=SqrtS-PMinusNew;
839 Qminus=Ptarget.minus()-TMinusNew;
840 TPlusNew=TargMassT2/TMinusNew;
841 Qplus=Ptarget.plus()-TPlusNew;
842
843 Qmomentum.
setPz( (Qplus-Qminus)/2 );
844 Qmomentum.
setE( (Qplus+Qminus)/2 );
845
846 } while ((Pprojectile+Qmomentum).mag2() < ProjectileDiffStateMinMass2);
847
848
849 projectile->SetStatus(1*projectile->GetStatus());
850 }
851 else
852 {
853
854
855 do {
856
857
858
859
860
861
862
863
864
865
866
867
868 if (whilecount > 1000 )
869 {
871 target->SetStatus(2); return false;
872 };
873
874
875 ProjMassT2=M0projectile2;
876 ProjMassT =M0projectile;
877
878 TargMassT2=TargetDiffStateMinMass2;
879 TargMassT =TargetDiffStateMinMass;
880
881 PZcms2=(S*S + ProjMassT2*ProjMassT2 + TargMassT2*TargMassT2-
882 2.*S*ProjMassT2-2.*S*TargMassT2-2.*ProjMassT2*TargMassT2)
883 /4./S;
884
885
886 if(PZcms2 < 0 )
887 {
888 target->SetStatus(2);
889 return false;
890 }
891 maxPtSquare=PZcms2;
892
894
895
897
898 ProjMassT2=M0projectile2+Pt2;
899 ProjMassT =std::sqrt(ProjMassT2);
900
901 TargMassT2=TargetDiffStateMinMass2+Pt2;
902 TargMassT =std::sqrt(TargMassT2);
903
904 PZcms2=(S*S + ProjMassT2*ProjMassT2 + TargMassT2*TargMassT2-
905 2.*S*ProjMassT2-2.*S*TargMassT2-2.*ProjMassT2*TargMassT2)
906 /4./S;
907
908
909 if(PZcms2 < 0 ) continue;
910 PZcms =std::sqrt(PZcms2);
911
912 TPlusMin=std::sqrt(TargMassT2+PZcms2)-PZcms;
913 TPlusMax=SqrtS-ProjMassT;
914
915 TPlusNew=ChooseP(TPlusMin, TPlusMax);
916
917
918
919
920 PPlusNew=SqrtS-TPlusNew;
921 Qplus=PPlusNew-Pprojectile.plus();
922 PMinusNew=ProjMassT2/PPlusNew;
923 Qminus=PMinusNew-Pprojectile.minus();
924
925 Qmomentum.
setPz( (Qplus-Qminus)/2 );
926 Qmomentum.
setE( (Qplus+Qminus)/2 );
927
928
929
930
931
932
933
934
935
936
937
938 } while ((Ptarget -Qmomentum).mag2() < TargetDiffStateMinMass2);
939
940
941
942
943 target->SetStatus(1*target->GetStatus());
944 }
945 }
946 else
947 {
948
949
950 do {
951
952
953
954
955
956
957
958
959
960
961
962
963 if (whilecount > 1000 )
964 {
966 target->SetStatus(2); return false;
967 };
968
969 ProjMassT2=ProjectileNonDiffStateMinMass2;
970 ProjMassT =ProjectileNonDiffStateMinMass;
971
972 TargMassT2=TargetNonDiffStateMinMass2;
973 TargMassT =TargetNonDiffStateMinMass;
974
975 PZcms2=(S*S + ProjMassT2*ProjMassT2 + TargMassT2*TargMassT2-
976 2.*S*ProjMassT2-2.*S*TargMassT2-2.*ProjMassT2*TargMassT2)
977 /4./S;
978
979 if(PZcms2 < 0 )
980 {
981 target->SetStatus(2);
982 return false;
983 }
984 maxPtSquare=PZcms2;
987
988 ProjMassT2=ProjectileNonDiffStateMinMass2+Pt2;
989 ProjMassT =std::sqrt(ProjMassT2);
990
991 TargMassT2=TargetNonDiffStateMinMass2+Pt2;
992 TargMassT =std::sqrt(TargMassT2);
993
994 PZcms2=(S*S + ProjMassT2*ProjMassT2 + TargMassT2*TargMassT2-
995 2.*S*ProjMassT2-2.*S*TargMassT2-2.*ProjMassT2*TargMassT2)
996 /4./S;
997
998
999 if(PZcms2 < 0 ) continue;
1000 PZcms =std::sqrt(PZcms2);
1001
1002 PMinusMin=std::sqrt(ProjMassT2+PZcms2)-PZcms;
1003 PMinusMax=SqrtS-TargMassT;
1004
1006 { PMinusNew=ChooseP(PMinusMin, PMinusMax);}
1007 else {PMinusNew=(PMinusMax-PMinusMin)*
G4UniformRand() + PMinusMin;}
1008 Qminus=PMinusNew-Pprojectile.minus();
1009
1010 TPlusMin=std::sqrt(TargMassT2+PZcms2)-PZcms;
1011 TPlusMax=SqrtS-PMinusNew;
1012
1013
1015 { TPlusNew=ChooseP(TPlusMin, TPlusMax);}
1016 else {TPlusNew=(TPlusMax-TPlusMin)*
G4UniformRand() +TPlusMin;}
1017
1018 Qplus=-(TPlusNew-Ptarget.plus());
1019
1020 Qmomentum.
setPz( (Qplus-Qminus)/2 );
1021 Qmomentum.
setE( (Qplus+Qminus)/2 );
1022
1023
1024
1025
1026
1027 } while (
1028 ((Pprojectile+Qmomentum).mag2() < ProjectileNonDiffStateMinMass2) ||
1029 ((Ptarget -Qmomentum).mag2() < TargetNonDiffStateMinMass2 ));
1030
1031 projectile->SetStatus(0*projectile->GetStatus());
1032 target->SetStatus(0*target->GetStatus());
1033 }
1034
1035 Pprojectile += Qmomentum;
1036 Ptarget -= Qmomentum;
1037
1038
1039
1040
1043
1044
1045 projectile->SetTimeOfCreation(target->GetTimeOfCreation());
1046 projectile->SetPosition(target->GetPosition());
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066 projectile->Set4Momentum(Pprojectile);
1067 target->Set4Momentum(Ptarget);
1068
1069 projectile->IncrementCollisionCount(1);
1070 target->IncrementCollisionCount(1);
1071
1072 return true;
1073}
CLHEP::HepLorentzVector G4LorentzVector
CLHEP::Hep3Vector G4ThreeVector
HepLorentzVector & rotateZ(double)
HepLorentzVector & rotateY(double)
HepLorentzVector & transform(const HepRotation &)
static long shootInt(long n)
virtual G4bool ElasticScattering(G4VSplitableHadron *aPartner, G4VSplitableHadron *bPartner, G4FTFParameters *theParameters) const
G4double GetProbLogDistr()
G4double GetSlopeQuarkExchange()
G4double GetProjMinNonDiffMass()
G4double GetTarMinNonDiffMass()
G4double GetDeltaProbAtQuarkExchange()
G4double GetProbabilityOfTarDiff()
G4double GetProbabilityOfProjDiff()
G4double GetProbOfSameQuarkExchange()
G4double GetMagQuarkExchange()
G4ParticleDefinition * FindParticle(G4int PDGEncoding)
static G4ParticleTable * GetParticleTable()