]>
Commit | Line | Data |
---|---|---|
fe4da5cc | 1 | * |
2 | * $Id$ | |
3 | * | |
4 | * $Log$ | |
5 | * Revision 1.1.1.1 1995/10/24 10:21:58 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 N2NN3N(D,LD,AWR,KZ,ID,FM,Q,IFLG) | |
13 | C THIS ROUTINE CALCULATES THE DIRECTIONAL COSINES FOR THE | |
14 | C NEUTRON AND RECOIL NUCLEUS FOR AN N2N OR N3N REACTION | |
15 | C USING THE ONE NEUTRON EMMISION MODEL. IT ALSO SETS ALL | |
16 | C EXIT PARAMETRS FOR THE RECOIL NUCLEUS. | |
17 | #include "geant321/minput.inc" | |
18 | #include "geant321/mconst.inc" | |
19 | #include "geant321/mnutrn.inc" | |
20 | #include "geant321/mrecoi.inc" | |
21 | #include "geant321/mapoll.inc" | |
22 | #include "geant321/mmass.inc" | |
23 | #include "geant321/mpstor.inc" | |
24 | DIMENSION D(*),LD(*),FM(*) | |
25 | SAVE | |
26 | MT=0 | |
27 | IF(ID.EQ.8)MT=16 | |
28 | IF(ID.EQ.9)MT=17 | |
29 | IF(ID.EQ.12)MT=24 | |
30 | C IFLG EQUAL TO ONE IMPLIES THE DIRECTION COSINES WERE | |
31 | C SELECTED ISOTROPICALLY IN THE LABORATORY COORDINATE SYSTEM | |
32 | C CALCULATE THE NEUTRON EXIT DIRECTIONAL COSINES | |
33 | POX = 0.0 | |
34 | POY = 0.0 | |
35 | POZ = 0.0 | |
36 | DO 40 KN=1,INEU | |
37 | IF(IFLG.EQ.1) THEN | |
38 | CALL GTISO(UP,VP,WP) | |
39 | ELSE | |
40 | SINPSI=SQRT(1.0-FM(KN)**2) | |
41 | CALL AZIRN(SINETA,COSETA) | |
42 | STHETA=1.0-UOLD**2 | |
43 | IF(STHETA)20,20,10 | |
44 | 10 STHETA=SQRT(STHETA) | |
45 | COSPHI=VOLD/STHETA | |
46 | SINPHI=WOLD/STHETA | |
47 | GO TO 30 | |
48 | 20 COSPHI=1.0 | |
49 | SINPHI=0.0 | |
50 | STHETA=0.0 | |
51 | 30 UP = UOLD*FM(KN)-COSETA*SINPSI*STHETA | |
52 | VP = VOLD*FM(KN)+UOLD*COSPHI*COSETA*SINPSI-SINPHI* SINPSI* | |
53 | + SINETA | |
54 | WP = WOLD*FM(KN)+UOLD*SINPHI*COSETA*SINPSI+COSPHI* SINPSI* | |
55 | + SINETA | |
56 | S=1.0/SQRT(UP*UP+VP*VP+WP*WP) | |
57 | UP=UP*S | |
58 | VP=VP*S | |
59 | WP=WP*S | |
60 | ENDIF | |
61 | EP = ENE(KN) | |
62 | C use ONLY first neutron for recoil calculation in order the ensure | |
63 | C correct energy spectrum of recoil nucleus | |
64 | IF(KN.EQ.1) THEN | |
65 | PP = SQRT(EP**2 + 2.0*EP*ZN) | |
66 | POX = POX + PP*UP | |
67 | POY = POY + PP*VP | |
68 | POZ = POZ + PP*WP | |
69 | ENDIF | |
70 | AGEP = AGE | |
71 | MTP = MT | |
72 | CALL STOPAR(IDNEU,NNEU) | |
73 | 40 CONTINUE | |
74 | C CALCULATE AND SET THE RECOIL NUCLEUS EXIT PARAMETERS | |
75 | 50 XR=X | |
76 | YR=Y | |
77 | ZR=Z | |
78 | WATER=WTBC | |
79 | NZR=KZ | |
80 | ZMP = FLOAT(KZ) | |
81 | AGER=AGE | |
82 | AGEP = AGE | |
83 | NCOLR=NCOL | |
84 | MTNR=MT | |
85 | MTP = MT | |
86 | AR = (AWR*AN) - FLOAT(INEU-1)*AN | |
87 | AMP = AR | |
88 | ENIR=EOLD | |
89 | UNIR=UOLD | |
90 | VNIR=VOLD | |
91 | WNIR=WOLD | |
92 | ENOR=E | |
93 | UNOR=U | |
94 | VNOR=V | |
95 | WNOR=W | |
96 | WTNR=WATE | |
97 | QR=Q | |
98 | C CALCULATE THE NEUTRON MOMENTUM BEFORE AND AFTER COLLISION | |
99 | C NEUTRON MOMENTUM BEFORE COLLISION (PI) EQUALS TOTAL MOMENTUM | |
100 | PI=SQRT(2.0*ZN*EOLD) | |
101 | C CALCULATE THE DIRECTIONAL MOMENTUM OF THE RECOIL NUCLEUS | |
102 | PIX=PI*UOLD | |
103 | PIY=PI*VOLD | |
104 | PIZ=PI*WOLD | |
105 | PRX = PIX - POX | |
106 | PRY = PIY - POY | |
107 | PRZ = PIZ - POZ | |
108 | C CALCULATE THE TOTAL MOMENTUM OF THE RECOIL NUCLEUS | |
109 | PR=SQRT(PRX**2+PRY**2+PRZ**2) | |
110 | C CALCULATE THE RECOIL NUCLEUS DIRECTIONAL COSINES | |
111 | UR=PRX/PR | |
112 | VR=PRY/PR | |
113 | WR=PRZ/PR | |
114 | UP = UR | |
115 | VP = VR | |
116 | WP = WR | |
117 | C CALCULATE THE RECOIL NUCLEUS EXIT ENERGY | |
118 | XM = AR*931.075E6 | |
119 | ER= SQRT(PR**2 + XM**2) - XM | |
120 | EP = ER | |
121 | MTP = MT | |
122 | C IF MT=24, DO NOT STORE THE RECOIL HEAVY ION IN THE BANK | |
123 | IF(MT.EQ.24)RETURN | |
124 | C STORE THE RECOIL HEAVY ION IN THE RECOIL BANK | |
125 | CALL STOPAR(IDHEVY,NHEVY) | |
126 | RETURN | |
127 | END |