5 * Revision 1.1.1.1 1995/10/24 10:21:15 cernlib
9 #include "geant321/pilot.h"
10 *CMZ : 3.21/02 29/03/94 15.41.38 by S.Giani
14 C *** MAIN STEERING FOR HADRON SHOWER DEVELOPMENT ***
15 C *** NVE 15-JUN-1988 CERN GENEVA ***
17 C CALLED BY : GUHADR (USER ROUTINE)
18 C ORIGIN : F.CARMINATI, H.FESEFELDT
19 C ROUTINES : CALIM 16-SEP-1987
23 #include "geant321/gcbank.inc"
24 #include "geant321/gcjloc.inc"
25 #include "geant321/gccuts.inc"
26 #include "geant321/gcflag.inc"
27 #include "geant321/gckine.inc"
28 #include "geant321/gcking.inc"
29 #include "geant321/gcmate.inc"
30 #include "geant321/gcphys.inc"
31 #include "geant321/gctmed.inc"
32 #include "geant321/gctrak.inc"
33 #include "geant321/gsecti.inc"
34 #include "geant321/gcunit.inc"
35 C --- GHEISHA COMMONS ---
36 #include "geant321/mxgkgh.inc"
37 #include "geant321/s_blankp.inc"
38 #include "geant321/s_consts.inc"
39 #include "geant321/s_event.inc"
40 #include "geant321/s_prntfl.inc"
42 C --- "NEVENT" CHANGED TO "KEVENT" IN COMMON /CURPAR/ DUE TO CLASH ---
43 C --- WITH VARIABLE "NEVENT" IN GEANT COMMON ---
45 PARAMETER (MXGKCU=MXGKGH)
46 COMMON /CURPAR /WEIGHT(10),DDELTN,IFILE,IRUN,NEVT,KEVENT,SHFLAG,
47 $ ITHST,ITTOT,ITLST,IFRND,TOFCUT,CMOM(5),CENG(5),
48 $ RS,S,ENP(10),NP,NM,NN,NR,NO,NZ,IPA(MXGKCU),
51 C --- "IPART" CHANGED TO "KPART" IN COMMON /RESULT/ DUE TO CLASH ---
52 C --- WITH VARIABLE "IPART" IN GEANT COMMON ---
54 COMMON /RESULT/ XEND,YEND,ZEND,RCA,RCE,AMAS,NCH,TOF,PX,PY,PZ,
55 $ USERW,INTCT,P,EN,EK,AMASQ,DELTN,ITK,NTK,KPART,IND,
56 $ LCALO,ICEL,SINL,COSL,SINP,COSP,
57 $ XOLD,YOLD,ZOLD,POLD,PXOLD,PYOLD,PZOLD,
58 $ XSCAT,YSCAT,ZSCAT,PSCAT,PXSCAT,PYSCAT,PZSCAT
61 C --- "ABSL(21)" CHANGED TO "ABSLTH(21)" IN COMMON /MAT/ DUE TO CLASH ---
62 C --- WITH VARIABLE "ABSL" IN GEANT COMMON ---
65 $ DEN(21),RADLTH(21),ATNO(21),ZNO(21),ABSLTH(21),
66 $ CDEN(21),MDEN(21),X0DEN(21),X1DEN(21),RION(21),
67 $ MATID(21),MATID1(21,24),PARMAT(21,10),
68 $ IFRAT,IFRAC(21),FRAC1(21,10),DEN1(21,10),
69 $ ATNO1(21,10),ZNO1(21,10)
74 C --- TRANSFER GEANT CUT-OFFS INTO GHEISHA VALUES ---
76 EQUIVALENCE (CUTS(1),CUTGAM)
79 #include "geant321/pcodim.inc"
80 #include "geant321/pcodat.inc"
82 C --- DENOTE STABLE PARTICLES ACCORDING TO GHEISHA CODE ---
83 C --- STABLE : GAMMA, NEUTRINO, ELECTRON, PROTON AND HEAVY FRAGMENTS ---
84 C --- WHEN STOPPING THESE PARTICLES ONLY LOOSE THEIR KINETIC ENERGY ---
86 $ 1, 1, 0, 1, 0, 0, 0, 0,
87 $ 0, 0, 0, 0, 0, 1, 0, 0,
88 $ 0, 0, 0, 0, 0, 0, 0, 0,
89 $ 0, 0, 0, 0, 0, 1, 1, 1,
92 C --- LOWERBOUND OF KINETIC ENERGY BIN IN N CROSS-SECTION TABLES ---
95 C --- KINETIC ENERGY TO SWITCH FROM "CASN" TO "GNSLWD" FOR N CASCADE ---
100 C --- INITIALIZE RELEVANT GHEISHA VARIABLES IN CASE NOT DONE ALREADY ---
101 IF (IFINIT(4) .EQ. 0) CALL GHEINI
103 C --- SET THE INTERACTION MECHANISM TO "HADR" ---
106 C --- SET GHEISHA PRINTING FLAGS ACCORDING TO "DEBUG" STEERING CARD --
107 IF (IDEOL .EQ. IDEBUG) GO TO 9000
109 IF (IDEBUG .NE. 1) GO TO 9001
111 C --- SET SELECTED DEBUGGING FLAGS ---
113 IF ((ISWIT(LL) .LE. 100) .OR. (ISWIT(LL) .GT. 110)) GO TO 9002
119 C --- NO DEBUGGING SELECTED ---
128 C --- SET THE GHEISHA PARTICLE TYPE TO THE ONE OF GEANT ---
130 IF(ISTOP.EQ.0) GOTO 9999
131 JPA = LQ(JPART-IPART)
138 IF ((NETEST .EQ. IPART) .OR. (ISTOP .NE. 0)) GO TO 9004
140 PRINT 8881,IPART,KPART,ISTOP
141 8881 FORMAT(' *GHEISH* IPART,KPART = ',2(I3,1X),' ISTOP = ',I3/
142 $ ' *GHEISH* ======> PARTICLE TYPES DO NOT MATCH <=======')
151 C --- TRANSPORT THE TRACK NUMBER TO GHEISHA AND INITIALISE SOME NUMBERS
158 C --- FILL RESULT COMMON FOR THIS TRACK WITH GEANT VALUES ---
167 C --- SETRES CODE ---
179 IF (ABS(P) .LE. 1.0E-10) GO TO 1
181 COSL=SQRT(ABS(1.0-SINL**2))
186 IF ((PX .EQ. 0.0) .AND. (PY .EQ. 0.0)) GOTO 3
187 IF (ABS(PX) .LT. 1.E-10) GOTO 2
192 IF (PY .GT. 0.0) PHI=PI/2.0
193 IF (PY .LE. 0.0) PHI=3.0*PI/2.0
199 C --- SET GHEISHA INDEX FOR THE CURRENT MEDIUM ALWAYS TO 1 ---
202 C --- TRANSFER GLOBAL MATERIAL CONSTANTS FOR CURRENT MEDIUM ---
203 C --- DETAILED DATA FOR COMPOUNDS IS OBTAINED VIA ROUTINE COMPO ---
210 C --- SETUP PARMAT FOR PHYSICS STEERING ---
212 PARMAT(IND+1,8)=IPFIS
216 IF (JTMN .LE. 0) GO TO 4
217 PARMAT(IND+1,5)=Q(JTMN+26)
220 C --- CHECK WHETHER PARTICLE IS STOPPING OR NOT ---
221 IF (ISTOP .EQ. 0) GO TO 5
223 IF (NPRT(9)) PRINT 1000,KPART
224 1000 FORMAT(' *GHEISH* STOPPING GHEISHA PARTICLE ',I3)
226 C --- IN CASE OF DECAY OF PARTICLE OR USER PARTICLE ==> RETURN ---
227 IF (LMEC(NMEC) .EQ. 5 .OR. KPART .LT. 0) GO TO 9999
228 C --- IN CASE OF HAD. INT. WITH GENERATION OF SEC. ==> GO TO 40 ---
229 IF (IHADR .NE. 2) GO TO 40
230 C --- ALSO DEPOSIT REST MASS ENERGY FOR IN-STABLE PARTICLES ---
231 IF (IPELOS(KPART) .EQ. 0) DESTEP=DESTEP+ABS(RMASS(KPART))
235 C --- INDICATE LIGHT (<= PI) AND HEAVY PARTICLES (HISTORICALLY) ---
239 IF (ABS(AMAS) .LT. TEST) J=1
241 C *** DIVISION INTO VARIOUS INTERACTION CHANNELS DENOTED BY "INT" ***
242 C THE CONVENTION FOR "INT" IS THE FOLLOWING
244 C INT = -1 REACTION CROSS SECTIONS NOT YET TABULATED/PROGRAMMED
246 C = 1 ELEASTIC SCATTERING
247 C = 2 INELASTIC SCATTERING
248 C = 3 NUCLEAR FISSION WITH INELEASTIC SCATTERING
249 C = 4 NEUTRON CAPTURE
251 C --- INTACT CODE ---
261 IF (KK .LE. 0) GO TO 6
263 IF (KK .EQ. 1) GO TO 7
269 C --- TRY FOR ELASTIC SCATTERING ---
273 IF (RAT .LT. ALAM1) GO TO 8
275 C --- TRY FOR INELASTIC SCATTERING ---
279 IF (RAT .LT. ALAM1) GO TO 8
281 C --- TRY FOR NUCLEAR FISSION WITH INELASTIC SCATTERING ---
285 IF (RAT .LT. ALAM1) GO TO 8
287 C --- TRY FOR NEUTRON CAPTURE ---
291 IF (RAT .LT. ALAM1) GO TO 8
294 C --- NO REACTION SELECTED ==> ELASTIC SCATTERING ---
298 C *** TAKE ACTION ACCORDING TO SELECTED REACTION CHANNEL ***
299 C --- FOLLOWING CODE IS A TRANSLATION OF "CALIM" INTO GEANT JARGON ---
302 IF (NPRT(9)) PRINT 1001,INT
303 1001 FORMAT(' *GHEISH* INTERACTION TYPE CHOSEN INT = ',I3)
305 C --- IN CASE OF NO INTERACTION OR UNKNOWN CROSS SECTIONS ==> DONE ---
306 IF (INT .LE. 0) GO TO 40
308 C --- IN CASE OF NON-ELASTIC SCATTERING AND NO GENERATION OF SEC. ---
309 C --- PARTICLES DEPOSIT TOTAL PARTICLE ENERGY AND RETURN ---
310 IF ((INT .EQ. 1) .OR. (IHADR .NE. 2)) GO TO 9
317 IF (INT .NE. 4) GO TO 10
319 C --- NEUTRON CAPTURE ---
320 IF (NPRT(9)) PRINT 2000
321 2000 FORMAT(' *GHEISH* ROUTINE CAPTUR WILL BE CALLED')
327 IF (INT .NE. 3) GO TO 11
328 C --- NUCLEAR FISSION ---
329 IF (NPRT(9)) PRINT 2001
330 2001 FORMAT(' *GHEISH* ROUTINE FISSIO WILL BE CALLED')
337 C --- ELASTIC AND INELASTIC SCATTERING ---
349 C --- ADDITIONAL PARAMETERS TO SIMULATE FERMI MOTION AND EVAPORATION ---
357 IF (INT .NE. 1) GO TO 12
359 C *** ELASTIC SCATTERING PROCESSES ***
361 C --- ONLY NUCLEAR INTERACTIONS FOR HEAVY FRAGMENTS ---
362 IF ((KPART .GE. 30) .AND. (KPART .LE. 32)) GO TO 35
364 C --- NORMAL ELASTIC SCATTERING FOR LIGHT MEDIA ---
365 IF (ATNO2 .LT. 1.5) GO TO 35
367 C --- COHERENT ELASTIC SCATTERING FOR HEAVY MEDIA ---
368 IF (NPRT(9)) PRINT 2002
369 2002 FORMAT(' *GHEISH* ROUTINE COSCAT WILL BE CALLED')
373 C *** NON-ELASTIC SCATTERING PROCESSES ***
376 C --- ONLY NUCLEAR INTERACTIONS FOR HEAVY FRAGMENTS ---
377 IF ((KPART .GE. 30) .AND. (KPART .LE. 32)) GO TO 35
379 C *** USE SOMETIMES NUCLEAR REACTION ROUTINE "NUCREC" FOR LOW ENERGY ***
380 C *** PROTON AND NEUTRON SCATTERING ***
384 IF ((KPART .EQ. 14) .AND. (TEST1 .GT. TEST2)) GO TO 85
385 IF ((KPART .EQ. 16) .AND. (TEST1 .GT. TEST2)) GO TO 86
387 C *** FERMI MOTION AND EVAPORATION ***
391 C --- CHECK FOR LOWERBOUND OF EKIN IN CROSS-SECTION TABLES ---
392 IF (ENP(5) .LE. TEKLOW) ENP(5)=TEKLOW
393 ENP(6)=ENP(5)+ABS(AMAS)
394 ENP(7)=(ENP(6)-AMAS)*(ENP(6)+AMAS)
395 ENP(7)=SQRT(ABS(ENP(7)))
398 C --- CHECK FOR LOWERBOUND OF EKIN IN CROSS-SECTION TABLES ---
399 IF (ENP(5) .LE. TEKLOW) ENP(5)=TEKLOW
400 ENP(6)=ENP(5)+ABS(AMAS)
401 ENP(7)=(ENP(6)-AMAS)*(ENP(6)+AMAS)
402 ENP(7)=SQRT(ABS(ENP(7)))
405 C --- CHECK FOR LOWERBOUND OF EKIN IN CROSS-SECTION TABLES ---
406 IF (ENP(5) .LE. TEKLOW) ENP(5)=TEKLOW
407 ENP(6)=ENP(5)+ABS(AMAS)
408 ENP(7)=(ENP(6)-AMAS)*(ENP(6)+AMAS)
409 ENP(7)=SQRT(ABS(ENP(7)))
411 C *** IN CASE OF ENERGY ABOVE CUT-OFF LET THE PARTICLE CASCADE ***
413 IF ((TEST .GT. 1.0E-10) .AND. (ENP(5) .GT. CUTHAD)) GO TO 35
414 IF ((TEST .LE. 1.0E-10) .AND. (ENP(5) .GT. CUTNEU)) GO TO 35
416 C --- SECOND CHANCE FOR ANTI-BARYONS DUE TO POSSIBLE ANNIHILATION ---
417 IF ((AMAS .GE. 0.0) .OR. (KPART .LE. 14)) GO TO 13
419 IF (ANNI .GT. 0.4) ANNI=0.4
422 IF (TEST .GT. ANNI) GO TO 35
424 C *** PARTICLE WITH ENERGY BELOW CUT-OFF ***
425 C --- ==> ONLY NUCLEAR EVAPORATION AND QUASI-ELASTIC SCATTERING ---
430 IF (NPRT(9)) PRINT 1002,KPART,EK,EN,P,ENP(5),ENP(6),ENP(7)
431 1002 FORMAT(' *GHEISH* ENERGY BELOW CUT-OFF FOR GHEISHA PARTICLE ',I3/
432 $ ' EK,EN,P,ENP(5),ENP(6),ENP(7) = ',6(G12.5,1X))
434 IF ((KPART .NE. 14) .AND. (KPART .NE. 16)) GO TO 14
435 IF (KPART .EQ. 16) GO TO 86
437 C --- SLOW PROTON ---
439 IF (NPRT(9)) PRINT 2003,EK,KPART
440 2003 FORMAT(' *GHEISH* ROUTINE NUCREC WILL BE CALLED',
441 $ ' EK = ',G12.5,' GEV KPART = ',I3)
444 IF (NOPT .NE. 0) GO TO 50
446 IF (NPRT(9)) PRINT 2004,EK,KPART
447 2004 FORMAT(' *GHEISH* ROUTINE COSCAT WILL BE CALLED',
448 $ ' EK = ',G12.5,' GEV KPART = ',I3)
452 C --- SLOW NEUTRON ---
454 IF (NPRT(9)) PRINT 2015
456 CALL GNSLWD(NUCFLG,INT,NFL,TEKLOW)
457 IF (NUCFLG .NE. 0) GO TO 50
460 C --- OTHER SLOW PARTICLES ---
463 C --- DECIDE FOR PROTON OR NEUTRON TARGET ---
468 IF (TEST1 .LT. TEST2) IPA(2)=14
471 IF (IPA(2) .EQ. 16) NFL=2
473 IF (NPRT(9)) PRINT 2005
474 2005 FORMAT(' *GHEISH* ROUTINE TWOB WILL BE CALLED')
475 CALL TWOB(IPPP,NFL,AVERN)
478 C --- INITIALISATION OF CASCADE QUANTITIES ---
481 C *** CASCADE GENERATION ***
482 C --- CALCULATE FINAL STATE MULTIPLICITY AND LONGITUDINAL AND ---
483 C --- TRANSVERSE MOMENTUM DISTRIBUTIONS ---
485 C --- FIXED PARTICLE TYPE TO STEER THE CASCADE ---
488 C --- NO CASCADE FOR LEPTONS ---
489 IF (KKPART .LE. 6) GO TO 9999
491 C *** WHAT TO DO WITH "NEW PARTICLES" FOR GHEISHA ?????? ***
492 C --- RETURN FOR THE TIME BEING ---
493 IF (KKPART .GE. 35) GO TO 9999
495 C --- CASCADE OF HEAVY FRAGMENTS
496 IF ((KKPART .GE. 30) .AND. (KKPART .LE. 32)) GO TO 390
498 C --- INITIALIZE THE IPA ARRAY ---
499 CALL VZERO(IPA(1),MXGKCU)
501 C --- CASCADE OF OMEGA - AND OMEGA - BAR ---
502 IF (KKPART .EQ. 33) GO TO 330
503 IF (KKPART .EQ. 34) GO TO 331
506 IF (NVEPAR .LE. 0) GO TO 15
507 GO TO (318,319,320,321,322,323,324,325,326,327,328,329),NVEPAR
511 GO TO (307,308,309,310,311,312,313,314,315,316,317,318),NVEPAR
513 C --- PI+ CASCADE ---
515 IF (NPRT(9)) PRINT 2006
516 2006 FORMAT(' *GHEISH* ROUTINE CASPIP WILL BE CALLED')
517 CALL CASPIP(J,INT,NFL)
520 C --- PI0 ==> NO CASCADE ---
524 C --- PI- CASCADE ---
526 IF (NPRT(9)) PRINT 2007
527 2007 FORMAT(' *GHEISH* ROUTINE CASPIM WILL BE CALLED')
528 CALL CASPIM(J,INT,NFL)
533 IF (NPRT(9)) PRINT 2008
534 2008 FORMAT(' *GHEISH* ROUTINE CASKP WILL BE CALLED')
535 CALL CASKP(J,INT,NFL)
540 IF (NPRT(9)) PRINT 2009
541 2009 FORMAT(' *GHEISH* ROUTINE CASK0 WILL BE CALLED')
542 CALL CASK0(J,INT,NFL)
545 C --- K0 BAR CASCADE ---
547 IF (NPRT(9)) PRINT 2010
548 2010 FORMAT(' *GHEISH* ROUTINE CASK0B WILL BE CALLED')
549 CALL CASK0B(J,INT,NFL)
554 IF (NPRT(9)) PRINT 2011
555 2011 FORMAT(' *GHEISH* ROUTINE CASKM WILL BE CALLED')
556 CALL CASKM(J,INT,NFL)
559 C --- PROTON CASCADE ---
561 IF (NPRT(9)) PRINT 2012
562 2012 FORMAT(' *GHEISH* ROUTINE CASP WILL BE CALLED')
566 C --- PROTON BAR CASCADE ---
568 IF (NPRT(9)) PRINT 2013
569 2013 FORMAT(' *GHEISH* ROUTINE CASPB WILL BE CALLED')
570 CALL CASPB(J,INT,NFL)
573 C --- NEUTRON CASCADE ---
576 IF (EK .GT. SWTEKN) THEN
578 IF (NPRT(9)) PRINT 2014
579 2014 FORMAT(' *GHEISH* ROUTINE CASN WILL BE CALLED')
581 CALL GNSLWD(NUCFLG,INT,NFL,TEKLOW)
582 IF (NPRT(9)) PRINT 2015
583 2015 FORMAT(' *GHEISH* ROUTINE GNSLWD WILL BE CALLED')
585 IF (NUCFLG .NE. 0) GO TO 50
588 C --- NEUTRON BAR CASCADE ---
590 IF (NPRT(9)) PRINT 2016
591 2016 FORMAT(' *GHEISH* ROUTINE CASNB WILL BE CALLED')
592 CALL CASNB(J,INT,NFL)
595 C --- LAMBDA CASCADE ---
597 IF (NPRT(9)) PRINT 2017
598 2017 FORMAT(' *GHEISH* ROUTINE CASL0 WILL BE CALLED')
599 CALL CASL0(J,INT,NFL)
602 C --- LAMBDA BAR CASCADE ---
604 IF (NPRT(9)) PRINT 2018
605 2018 FORMAT(' *GHEISH* ROUTINE CASAL0 WILL BE CALLED')
606 CALL CASAL0(J,INT,NFL)
609 C --- SIGMA + CASCADE ---
611 IF (NPRT(9)) PRINT 2019
612 2019 FORMAT(' *GHEISH* ROUTINE CASSP WILL BE CALLED')
613 CALL CASSP(J,INT,NFL)
616 C --- SIGMA 0 ==> NO CASCADE ---
620 C --- SIGMA - CASCADE ---
622 IF (NPRT(9)) PRINT 2020
623 2020 FORMAT(' *GHEISH* ROUTINE CASSM WILL BE CALLED')
624 CALL CASSM(J,INT,NFL)
627 C --- SIGMA + BAR CASCADE ---
629 IF (NPRT(9)) PRINT 2021
630 2021 FORMAT(' *GHEISH* ROUTINE CASASP WILL BE CALLED')
631 CALL CASASP(J,INT,NFL)
634 C --- SIGMA 0 BAR ==> NO CASCADE ---
638 C --- SIGMA - BAR CASCADE ---
640 IF (NPRT(9)) PRINT 2022
641 2022 FORMAT(' *GHEISH* ROUTINE CASASM WILL BE CALLED')
642 CALL CASASM(J,INT,NFL)
645 C --- XI 0 CASCADE ---
647 IF (NPRT(9)) PRINT 2023
648 2023 FORMAT(' *GHEISH* ROUTINE CASX0 WILL BE CALLED')
649 CALL CASX0(J,INT,NFL)
652 C --- XI - CASCADE ---
654 IF (NPRT(9)) PRINT 2024
655 2024 FORMAT(' *GHEISH* ROUTINE CASXM WILL BE CALLED')
656 CALL CASXM(J,INT,NFL)
659 C --- XI 0 BAR CASCADE ---
661 IF (NPRT(9)) PRINT 2025
662 2025 FORMAT(' *GHEISH* ROUTINE CASAX0 WILL BE CALLED')
663 CALL CASAX0(J,INT,NFL)
666 C --- XI - BAR CASCADE ---
668 IF (NPRT(9)) PRINT 2026
669 2026 FORMAT(' *GHEISH* ROUTINE CASAXM WILL BE CALLED')
670 CALL CASAXM(J,INT,NFL)
673 C --- OMEGA - CASCADE ---
675 IF (NPRT(9)) PRINT 2027
676 2027 FORMAT(' *GHEISH* ROUTINE CASOM WILL BE CALLED')
677 CALL CASOM(J,INT,NFL)
680 C --- OMEGA - BAR CASCADE ---
682 IF (NPRT(9)) PRINT 2028
683 2028 FORMAT(' *GHEISH* ROUTINE CASAOM WILL BE CALLED')
684 CALL CASAOM(J,INT,NFL)
687 C --- HEAVY FRAGMENT CASCADE ---
689 IF (NPRT(9)) PRINT 2090
690 2090 FORMAT(' *GHEISH* ROUTINE CASFRG WILL BE CALLED')
692 CALL CASFRG(NUCFLG,INT,NFL)
693 IF (NUCFLG .NE. 0) GO TO 50
695 C *** CHECK WHETHER THERE ARE NEW PARTICLES GENERATED ***
697 IF ((NTOT .NE. 0) .OR. (KKPART .NE. KPART)) GO TO 50
699 C --- NO SECONDARIES GENERATED AND PARTICLE IS STILL THE SAME ---
700 C --- ==> COPY EVERYTHING BACK IN THE CURRENT GEANT STACK ---
702 TOFG=TOFG+TOF*0.5E-10
703 C --- In case of crazy momentum value ==> no change to GEANT stack ---
704 IF (P .LT. 0.) GO TO 41
711 C --- CHECK KINETIC ENERGY ---
715 IF (NPRT(9) .AND. (EN .GT. ENOLD))
716 $ PRINT 8888,EDEP,ENOLD,EN,EK,RMASSI
717 8888 FORMAT(' *GHEISH* EDEP,ENOLD,EN,EK,M = ',5(G12.5,1X)/
718 $ ' *GHEISH* =======> EDEP WOULD BE NEGATIVE <========')
719 IF (ISTOP .EQ. 0) DESTEP=DESTEP+EDEP
721 C --- RE-INITIALIZE THE PROBABILITY FOR HADRONIC INTERACTION ---
724 IF ((RNDM(1) .LE. 0.) .OR. (RNDM(1) .GE. 1.)) GO TO 41
730 IF (NPRT(9)) PRINT 1003,NTOT,IPART,KPART,KKPART,NVEDUM
731 1003 FORMAT(' *GHEISH* NO SEC. GEN. NTOT,IPART,KPART,KKPART,KIPART = ',
733 $ ' CURRENT PARTICLE ON THE STACK AGAIN')
736 C *** CURRENT PARTICLE IS NOT THE SAME AS IN THE BEGINNING OR/AND ***
737 C *** ONE OR MORE SECONDARIES HAVE BEEN GENERATED ***
741 IF (NPRT(9)) PRINT 1004,NTOT,IPART,KPART,KKPART,NVEDUM
742 1004 FORMAT(' *GHEISH* SEC. GEN. NTOT,IPART,KPART,KKPART,KIPART = ',
745 C --- INITIAL PARTICLE TYPE HAS BEEN CHANGED ==> PUT NEW TYPE ON ---
746 C --- THE GEANT TEMPORARY STACK ---
748 C --- MAKE CHOICE BETWEEN K0 LONG / K0 SHORT ---
749 IF ((KPART .NE. 11) .AND. (KPART .NE. 12)) GO TO 52
756 IF (LNVE .LE. 0) PRINT 1234,NTOT,ITY,LNVE
757 1234 FORMAT('0*GHEISH* 1234 NTOT,ITY,LNVE = ',3(I10,1X))
758 IF (LNVE .LE. 0) STOP
759 IF (ISTOP .EQ. 0) ISTOP=1
761 C --- IN CASE THE NEW PARTICLE IS A NEUTRINO ==> FORGET IT ---
762 IF (KPART .EQ. 2) GO TO 60
764 C --- PUT PARTICLE ON THE STACK ---
768 GKIN(4,1)=SQRT(P*P+RMASS(KPART)**2)
776 IF (NPRT(9)) PRINT 1005,ITY,NGKINE
777 1005 FORMAT(' *GHEISH* GEANT PART. ',I3,' PUT ONTO STACK AT POS. ',I3)
779 C *** CHECK WHETHER SECONDARIES HAVE BEEN GENERATED AND COPY THEM ***
780 C *** ALSO ON THE GEANT STACK ***
783 C --- ALL QUANTITIES ARE TAKEN FROM THE GHEISHA STACK WHERE THE ---
784 C --- CONVENTION IS THE FOLLOWING ---
789 C EVE(INDEX+ 4)= NCAL
790 C EVE(INDEX+ 5)= NCELL
791 C EVE(INDEX+ 6)= MASS
792 C EVE(INDEX+ 7)= CHARGE
797 C EVE(INDEX+12)= TYPE
799 IF (NTOT .LE. 0) GO TO 9999
801 C --- ONE OR MORE SECONDARIES HAVE BEEN GENERATED ---
806 C --- MAKE CHOICE BETWEEN K0 LONG / K0 SHORT ---
807 IF ((JND .NE. 11) .AND. (JND .NE. 12)) GO TO 63
811 C --- FORGET ABOUT NEUTRINOS ---
813 IF (JND .EQ. 2) GO TO 61
815 C --- SWITH TO GEANT QUANTITIES ---
818 IF (JTY .LE. 0) PRINT 1235,NTOT,ITY,JTY
819 1235 FORMAT('0*GHEISH* 1235 NTOT,ITY,JTY = ',3(I10,1X))
825 ELT=SQRT(PLX*PLX+PLY*PLY+PLZ*PLZ+Q(JTY+7)**2)
827 C --- ADD PARTICLE TO THE STACK IF STACK NOT YET FULL ---
828 IF (NGKINE .GE. MXGKIN) THEN
829 WRITE(CHMAIL,1236) NTOT, L
830 1236 FORMAT(' *** GHEISH: ',I9,' particle produced but only ',
831 + I9,' put on the GEANT stack!')
841 TOFD(NGKINE)=EVE(INDEX+8)*0.5E-10
842 GPOS(1,NGKINE) = VECT(1)
843 GPOS(2,NGKINE) = VECT(2)
844 GPOS(3,NGKINE) = VECT(3)
846 IF (NPRT(9)) PRINT 1006,ITY,NGKINE,L,(EVE(INDEX+J),J=1,12)
847 1006 FORMAT(' *GHEISH* GEANT PART. ',I3,' ALSO PUT ONTO STACK AT',
849 $ ' EVE(',I2,') = '/12(1H ,12X,G12.5/))
854 C --- LIMIT THE VALUE OF NGKINE IN CASE OF OVERFLOW ---
855 NGKINE=MIN(NGKINE,MXGKIN)