]> git.uio.no Git - u/mrichter/AliRoot.git/blob - GEANT321/neutron/cmlabi.F
This commit was generated by cvs2svn to compensate for changes in r2,
[u/mrichter/AliRoot.git] / GEANT321 / neutron / cmlabi.F
1 *
2 * $Id$
3 *
4 * $Log$
5 * Revision 1.1.1.1  1995/10/24 10:21:55  cernlib
6 * Geant
7 *
8 *
9 #include "geant321/pilot.h"
10 *CMZ :  3.21/02 29/03/94  15.41.48  by  S.Giani
11 *-- Author :
12       SUBROUTINE CMLABI(D,LD,AWR,KZ,ID,FM,Q,IFLG,LIFLAG,LRI)
13 C       THIS ROUTINE CONVERTS THE EXIT NEUTRON SCATTERING ANGLE
14 C       FROM THE CENTER OF MASS COORDINATE SYSTEM TO THE LABORATORY
15 C       COORDINATE SYSTEM FOR AN INELASTIC SCATTERING REACTION. IT
16 C       ALSO CALCULATES THE EXIT ENERGIES AND DIRECTIONAL COSINES
17 C       FOR THE NEUTRON AND RECOIL NUCLEUS AS WELL AS SETTING ALL
18 C       EXIT PARAMETERS FOR THE RECOIL NUCLEUS.
19 #include "geant321/minput.inc"
20 #include "geant321/mconst.inc"
21 #include "geant321/mnutrn.inc"
22 #include "geant321/mrecoi.inc"
23 #include "geant321/mapoll.inc"
24 #include "geant321/mmass.inc"
25 #include "geant321/mpstor.inc"
26       DIMENSION D(*),LD(*)
27       SAVE
28       MT=0
29       IF((ID.GE.14).AND.(ID.LE.54))MT=51
30       IF(MT.NE.51)GO TO 10
31       IMT=ID-14
32       MT=MT+IMT
33    10 IF(ID.EQ.11)MT=22
34       IF(ID.EQ.13)MT=28
35 C       IFLG EQUAL TO ONE IMPLIES LABORATORY COORDINATE SYSTEM
36       IF(LIFLAG.EQ.1)GO TO 60
37       IF(IFLG.EQ.1)GO TO 20
38 C       E1 EQUALS THE EXIT ENERGY IN THE COM SYSTEM
39       E1=((AWR/(AWR+1.0))**2)*EOLD+Q*(AWR/(AWR+1.0))
40 C re-sample in COLISN E1<0.0 (Q-value = -EOLD) !!!
41       IF(E1.LT.0.0) THEN
42          IFLG = -1
43          RETURN
44       ENDIF
45 C       E2 EQUALS THE EXIT ENERGY IN THE LAB SYSTEM
46       E2=E1+(EOLD+2.0*FM*(AWR+1.0)*SQRT(EOLD*E1))/((AWR+1.0)**2)
47 C       CALCULATE COSINE OF SCATTERING ANGLE FM IN LAB SYSTEM
48       FM=(SQRT(E1/E2))*FM+(SQRT(EOLD/E2))*(1.0/(AWR+1.0))
49       E=E2
50 C       CALCULATE THE NEUTRON EXIT DIRECTIONAL COSINES
51    20 SINPSI=SQRT(1.0-FM**2)
52       CALL AZIRN(SINETA,COSETA)
53       STHETA=1.0-UOLD**2
54       IF(STHETA)40,40,30
55    30 STHETA=SQRT(STHETA)
56       COSPHI=VOLD/STHETA
57       SINPHI=WOLD/STHETA
58       GO TO 50
59    40 COSPHI=1.0
60       SINPHI=0.0
61       STHETA=0.0
62    50 U=UOLD*FM-COSETA*SINPSI*STHETA
63       V=VOLD*FM+UOLD*COSPHI*COSETA*SINPSI-SINPHI*SINPSI*SINETA
64       W=WOLD*FM+UOLD*SINPHI*COSETA*SINPSI+COSPHI*SINPSI*SINETA
65       S=1.0/SQRT(U**2+V**2+W**2)
66       U=U*S
67       V=V*S
68       W=W*S
69       IF(MT.EQ.91)LIFLAG=1
70       IF(MT.EQ.22)LIFLAG=1
71       IF(MT.EQ.28)LIFLAG=1
72       IF(LIFLAG.EQ.1)GO TO 60
73 C       CALCULATE AND SET THE RECOIL NUCLEUS EXIT PARAMETERS
74       ER=EOLD-E+Q
75    60 XR=X
76       YR=Y
77       ZR=Z
78       WATER=WTBC
79       NZR=KZ
80       AGER=AGE
81       NCOLR=NCOL
82       MTNR=MT
83       AR=AWR*AN
84       ENIR=EOLD
85       UNIR=UOLD
86       VNIR=VOLD
87       WNIR=WOLD
88       ENOR=E
89       UNOR=U
90       VNOR=V
91       WNOR=W
92       WTNR=WATE
93       QR=Q
94 C       CALCULATE THE NEUTRON MOMENTUM BEFORE AND AFTER COLLISION
95 C       NEUTRON MOMENTUM BEFORE COLLISION (PI) EQUALS TOTAL MOMENTUM
96       PI=SQRT(2.0*ZN*EOLD)
97       PO=SQRT(2.0*ZN*E)
98 C       CALCULATE THE DIRECTIONAL MOMENTUM OF THE RECOIL NUCLEUS
99       PRX=PI*UOLD-PO*U
100       PRY=PI*VOLD-PO*V
101       PRZ=PI*WOLD-PO*W
102 C       CALCULATE THE TOTAL MOMENTUM OF THE RECOIL NUCLEUS
103       PR=SQRT(PRX**2+PRY**2+PRZ**2)
104 C       CALCULATE THE RECOIL NUCLEUS DIRECTIONAL COSINES
105       UR=PRX/PR
106       VR=PRY/PR
107       WR=PRZ/PR
108 C       CALCULATE THE RECOIL HEAVY ION ENERGY FOR MT-91
109       IF(LIFLAG.EQ.0)GO TO 70
110       XM = AR*931.075E6
111       ER= SQRT(PR**2 + XM**2) - XM
112    70 CONTINUE
113 C       IF LR-FLAG IS USED, DO NOT STORE RECOIL ION AT THIS TIME
114       IF(LRI.EQ.22)RETURN
115       IF(LRI.EQ.23)RETURN
116       IF(LRI.EQ.28)RETURN
117 C       STORE THE  RECOIL HEAVY ION IN THE RECOIL BANK
118       EP = ER
119       UP = UR
120       VP = VR
121       WP = WR
122       AGEP = AGE
123       MTP = MT
124       AMP = AR
125       ZMP = FLOAT(NZR)
126       CALL STOPAR(IDHEVY,NHEVY)
127       RETURN
128       END