5 * Revision 1.1.1.1 1995/10/24 10:20:58 cernlib
9 #include "geant321/pilot.h"
10 *CMZ : 3.21/02 29/03/94 15.41.38 by S.Giani
12 SUBROUTINE NUCREC(NOPT,IREC)
14 C *** NUCLEAR REACTION KINEMATICS AT LOW ENERGIES ***
15 C *** NVE 18-MAY-1988 CERN GENEVA ***
17 C CALLED BY : GHEISH, GNSLWD
18 C ORIGIN : H.FESEFELDT (12-FEB-1987)
20 C NOPT=1 N M(A,Z) --> G (G) M(A+1,Z ) NEUTRON CAPTURE
21 C NOPT=2 N M(A,Z) --> N (G) M(A ,Z ) INELASTIC NEUTRON SCATT.
22 C NOPT=3 N M(A,Z) --> P (G) M(A ,Z-1)
23 C NOPT=4 N M(A,Z) --> D (G) M(A-1,Z-1)
24 C NOPT=5 N M(A,Z) --> T (G) M(A-2,Z-1)
25 C NOPT=6 N M(A,Z) --> ALP. M(A-3,Z-2)
26 C NOPT=7 N M(A,Z) --> N N M(A-1,Z )
27 C NOPT=8 N M(A,Z) --> N P M(A-1,Z-1)
28 C NOPT=9 N M(A,Z) --> P P M(A-1,Z-2)
29 C NOPT=11 P M(A,Z) --> G (G) M(A+1,Z+1) PROTON CAPTURE
30 C NOPT=12 P M(A,Z) --> N (G) M(A ,Z ) INELASTIC PROTON SCATT.
31 C NOPT=13 P M(A,Z) --> P (G) M(A ,Z+1)
32 C NOPT=14 P M(A,Z) --> D (G) M(A-1,Z )
33 C NOPT=15 P M(A,Z) --> T (G) M(A-2,Z )
34 C NOPT=16 P M(A,Z) --> ALP. M(A-3,Z-1)
35 C NOPT=17 P M(A,Z) --> N N M(A-1,Z+1)
36 C NOPT=18 P M(A,Z) --> N P M(A-1,Z )
37 C NOPT=19 P M(A,Z) --> P P M(A-1,Z-1)
38 C SIMILAR FOR D,T,ALPHA SCATTERING ON NUCLEI
40 C NOTE : DOUBLE PRECISION CALCULATIONS ARE VITAL FOR THESE LOW
42 C THEREFORE THE VARS OF /GENIO/ ARE DECLARED DOUBLE PRECISION
43 C ALSO A DOUBLE PRECISION VERSION OF THE PHASE SPACE PACKAGE
44 C "PHPNUC" HAS BEEN INTRODUCED
45 C *** HMF 29-AUG-1989 RWTH AACHEN ***
47 #include "geant321/s_defcom.inc"
48 #include "geant321/s_nucio.inc"
50 DIMENSION QVAL(10),TCH(10)
53 C** PROGRAM RETURNS WITH NOPT=0, IF INELASTIC SCATTERING ENERGETICALLY
54 C** NOT POSSIBLE, OR IF WRONG PARTICLES ENTER THIS ROUTINE: ONLY FOR
55 C** PROTONS,NEUTRONS, DEUTERIUM, TRITIUM AND ALPHAS.
56 C** IF EK > 100 MEV, THIS ROUTINE IS CERTAINLY NOT ADEQUATE.
59 IF (IREC .EQ. 0) GO TO 9999
61 IF (NPRT(9) .AND. (EK .GT. 0.1)) PRINT 9000,EK,IPART
62 9000 FORMAT(' *NUCREC* ENERGY TOO HIGH EK = ',G12.5,' GEV ',
64 IF (EK .GT. 0.1) GO TO 9999
66 C%%% IF(IPART.EQ.16) GOTO 2
67 C%%% IF(IPART.EQ.14) GOTO 3
68 C%%% IF(IPART.EQ.30) GOTO 4
69 C%%% IF(IPART.EQ.31) GOTO 5
70 C%%% IF(IPART.EQ.32) GOTO 6
72 C%%% 2 AMAS = ATOMAS(1.,0.)
74 C%%% 3 AMAS = ATOMAS(1.,1.)
76 C%%% 4 AMAS = ATOMAS(2.,1.)
78 C%%% 5 AMAS = ATOMAS(3.,1.)
80 C%%% 6 AMAS = ATOMAS(4.,2.)
82 IF (IPART .EQ. 16) GO TO 8
83 IF (IPART .EQ. 14) GO TO 8
84 IF (IPART .EQ. 30) GO TO 8
85 IF (IPART .EQ. 31) GO TO 8
86 IF( IPART .EQ. 32) GO TO 8
88 C** SET BEAM PARTICLE, TAKE EK AS FUNDAMENTAL QUANTITY
89 C** DUE TO THE DIFFICULT KINEMATIC, ALL MASSES HAVE TO BE ASSIGNED
90 C** THE BEST MEASURED VALUES.
94 C --- GET MASS WHICH MATCHES GEANT ---
97 P =SQRT(ABS(EN*EN-AMAS*AMAS))
98 PP=SQRT(PX*PX+PY*PY+PZ*PZ)
99 IF (PP .GT. 1.0E-6) GO TO 8000
103 IF (COST .LE. -1.) COST=-1.
104 IF (COST .GE. 1.) COST= 1.
106 PX=SIN(RTHNVE)*COS(PHINVE)
107 PY=SIN(RTHNVE)*SIN(PHINVE)
114 CALL VZERO(PV,10*MXGKPV)
129 PV(5,2) =ATOMAS(ATNO2,ZNO2)
135 C** CALCULATE Q-VALUE OF REACTIONS
136 IF(IPART.EQ.16) GOTO 20
137 IF(IPART.EQ.14) GOTO 30
138 IF(IPART.EQ.30) GOTO 40
139 IF(IPART.EQ.31) GOTO 50
140 IF(IPART.EQ.32) GOTO 60
141 20 PV(5,11)=ATOMAS(ATNO2+1.,ZNO2 )
159 PV(5,13)=ATOMAS(ATNO2 ,ZNO2-1.)
168 PV(5,14)=ATOMAS(ATNO2-1.,ZNO2-1.)
177 PV(5,15)=ATOMAS(ATNO2-2.,ZNO2-1.)
186 PV(5,16)=ATOMAS(ATNO2-3.,ZNO2-2.)
195 PV(5,17)=ATOMAS(ATNO2-1.,ZNO2 )
213 PV(5,19)=ATOMAS(ATNO2-1.,ZNO2-2.)
223 30 PV(5,11)=ATOMAS(ATNO2+1.,ZNO2+1.)
232 PV(5,12)=ATOMAS(ATNO2 ,ZNO2+1.)
250 PV(5,14)=ATOMAS(ATNO2-1.,ZNO2 )
259 PV(5,15)=ATOMAS(ATNO2-2.,ZNO2 )
268 PV(5,16)=ATOMAS(ATNO2-3.,ZNO2-1.)
277 PV(5,17)=ATOMAS(ATNO2-1.,ZNO2+1.)
295 PV(5,19)=ATOMAS(ATNO2-1.,ZNO2-1.)
306 40 PV(5,11)=ATOMAS(ATNO2+2.,ZNO2+1.)
315 PV(5,12)=ATOMAS(ATNO2+1.,ZNO2+1.)
324 PV(5,13)=ATOMAS(ATNO2+1.,ZNO2 )
342 PV(5,15)=ATOMAS(ATNO2-1.,ZNO2 )
351 PV(5,16)=ATOMAS(ATNO2-2.,ZNO2-1.)
360 PV(5,17)=ATOMAS(ATNO2 ,ZNO2+1.)
378 PV(5,19)=ATOMAS(ATNO2 ,ZNO2-1.)
389 50 PV(5,11)=ATOMAS(ATNO2+3.,ZNO2+1.)
398 PV(5,12)=ATOMAS(ATNO2+2.,ZNO2+1.)
407 PV(5,13)=ATOMAS(ATNO2+2.,ZNO2 )
416 PV(5,14)=ATOMAS(ATNO2+1.,ZNO2 )
434 PV(5,16)=ATOMAS(ATNO2-1.,ZNO2-1.)
443 PV(5,17)=ATOMAS(ATNO2+1.,ZNO2+1.)
461 PV(5,19)=ATOMAS(ATNO2+1.,ZNO2-1.)
472 60 PV(5,11)=ATOMAS(ATNO2+4.,ZNO2+2.)
481 PV(5,12)=ATOMAS(ATNO2+3.,ZNO2+2.)
490 PV(5,13)=ATOMAS(ATNO2+3.,ZNO2+1.)
499 PV(5,14)=ATOMAS(ATNO2+2.,ZNO2+1.)
508 PV(5,15)=ATOMAS(ATNO2+1.,ZNO2+1.)
526 PV(5,17)=ATOMAS(ATNO2+2.,ZNO2+2.)
544 PV(5,19)=ATOMAS(ATNO2+2.,ZNO2 )
554 70 QV =EK+PV(5,2)+PV(5,1)
556 QVAL(1)=QV - PV(5,11)
557 TCH (1)=TC - PV(6,11)
558 QVAL(2)=QV - PV(5,12) - PV(5,22)
559 TCH (2)=TC - PV(6,12) - PV(6,22)
560 QVAL(3)=QV - PV(5,13) - PV(5,23)
561 TCH (3)=TC - PV(6,13) - PV(6,23)
562 QVAL(4)=QV - PV(5,14) - PV(5,24)
563 TCH (4)=TC - PV(6,14) - PV(6,24)
564 QVAL(5)=QV - PV(5,15) - PV(5,25)
565 TCH (5)=TC - PV(6,15) - PV(6,25)
566 QVAL(6)=QV - PV(5,16) - PV(5,26)
567 TCH (6)=TC - PV(6,16) - PV(6,26)
568 QVAL(7)=QV - PV(5,17) - PV(5,27) - PV(5,37)
569 TCH (7)=TC - PV(6,17) - PV(6,27) - PV(6,37)
570 QVAL(8)=QV - PV(5,18) - PV(5,28) - PV(5,38)
571 TCH (8)=TC - PV(6,18) - PV(6,28) - PV(6,38)
572 QVAL(9)=QV - PV(5,19) - PV(5,29) - PV(5,39)
573 TCH (9)=TC - PV(6,19) - PV(6,29) - PV(6,39)
575 IF(IREC.EQ.2) QVAL(1)=0.
576 IF(IPART.NE.16) GOTO 75
578 IF(RNDM(1).GT.((ATNO2-1.)/230.)**2) QVAL(1)=0.
580 IF(RNDM(2).LT.EK/EKA) GOTO 75
587 IF(PV(5,10+I).LT.0.5) QVAL(I)=0.
588 IF(QVAL(I).LT.0. ) QVAL(I)=0.
589 IF(ABS(TCH(I)-0.1).GT.0.5 ) QVAL(I)=0.
596 IF(QVAL(I).EQ.0.) GOTO 72
598 IF(RAN.LE.QV1) GOTO 73
600 C** REACTION KINEMATICALLY NOT POSSIBLE
615 IF(RAN.GT.0.5) RAN=0.5
617 IF(RNDM(1).LT.RAN) NT=3
618 IF(MOD(NOPT,10).GE.7) NT=3
619 C** CALCULATE CMS ENERGY
622 PV(1,MXGKPV)=-PV(1,MXGKPV)
623 PV(2,MXGKPV)=-PV(2,MXGKPV)
624 PV(3,MXGKPV)=-PV(3,MXGKPV)
625 C** SET QUANTITIES FOR PHASE SPACE ROUTINE IN CMS
630 81 AMASS(I)=PV(5,2+I)
631 C --- Invoke double precision version of the phase space package ---
635 82 PV(J,2+I)=PCM(J,I)
636 C** TRANSFORM INTO LAB.SYSTEM
637 CALL LOR(2+I,MXGKPV,2+I)
640 C** SET CHARGES AND PARTICLE INDEX FOR LOW MASS FRAGMENTS
641 IF (ABS(PV(5,3)-RMASS(14)) .LT. 0.0001) GO TO 84
642 IF (ABS(PV(5,3)-RMASS(16)) .LT. 0.0001) GO TO 85
643 IF (ABS(PV(5,3)-RMASS(30)) .LT. 0.0001) GO TO 86
644 IF (ABS(PV(5,3)-RMASS(31)) .LT. 0.0001) GO TO 87
645 IF (ABS(PV(5,3)-RMASS(32)) .LT. 0.0001) GO TO 88
663 IPP=IFIX(PV(8,I)+0.01)
667 IF(IPP.LT.30) GOTO 92
670 92 IF(EK.LT.1.E-6) EK=1.E-6
673 P=SQRT(ABS(PV(4,I)**2-PV(5,I)**2))
674 PP=SQRT(PV(1,I)**2+PV(2,I)**2+PV(3,I)**2)
675 IF(PP.GT.1.E-6) GOTO 91
679 IF (COST .LE. -1.) COST=-1.
680 IF (COST .GE. 1.) COST= 1.
682 PV(1,I)=SIN(RTHNVE)*COS(PHINVE)
683 PV(2,I)=SIN(RTHNVE)*SIN(PHINVE)
686 91 PV(1,I)=PV(1,I)*P/PP
690 IF(.NOT.NPRT(4)) GOTO 100
691 WRITE(NEWBCD,1000) XEND,YEND,ZEND,IND,NOPT
692 1000 FORMAT(1H ,'Nuclear reaction at (X,Y,Z) ',3(G12.5,1X)
693 +,' Material ',I5,' NOPT ',I5)
695 WRITE(NEWBCD,1001) I,(PV(J,I),J=1,10)
697 1001 FORMAT(1H ,I3,1X,10(G10.3,1X))
699 C** SET INTERACTION MODE ACCORDING TO GHEISHA-CONVENTION
701 IF(PV(8,3).GT.0.) GOTO 110
704 IF(NT.EQ.3) CALL SETTRK(5)
710 IF(NT.EQ.3) CALL SETTRK(5)