1 | SUBROUTINE BOX3
|
---|
2 |
|
---|
3 | C-----------------------------------------------------------------------
|
---|
4 | C
|
---|
5 | C CHECKS PASSAGE THROUGH OBSERVATION LEVEL(S)
|
---|
6 | C IRET1=1 KILLS PARTICLE
|
---|
7 | C IRET2=1 PARTICLE HAS BEEN CUTTED IN UPDATE
|
---|
8 | C THIS SUBROUTINE IS CALLED FROM MAIN
|
---|
9 | C-----------------------------------------------------------------------
|
---|
10 |
|
---|
11 | IMPLICIT NONE
|
---|
12 | *KEEP,GENER.
|
---|
13 | COMMON /GENER/ GEN,ALEVEL
|
---|
14 | DOUBLE PRECISION GEN,ALEVEL
|
---|
15 | *KEEP,IRET.
|
---|
16 | COMMON /IRET/ IRET1,IRET2
|
---|
17 | INTEGER IRET1,IRET2
|
---|
18 | *KEEP,LONGI.
|
---|
19 | COMMON /LONGI/ APLONG,HLONG,PLONG,SPLONG,THSTEP,THSTPI,
|
---|
20 | * NSTEP,LLONGI,FLGFIT
|
---|
21 | DOUBLE PRECISION APLONG(0:1040,9),HLONG(0:1024),PLONG(0:1040,9),
|
---|
22 | * SPLONG(0:1040,9),THSTEP,THSTPI
|
---|
23 | INTEGER NSTEP
|
---|
24 | LOGICAL LLONGI,FLGFIT
|
---|
25 | *KEEP,OBSPAR.
|
---|
26 | COMMON /OBSPAR/ OBSLEV,THCKOB,XOFF,YOFF,THETAP,PHIP,
|
---|
27 | * THETPR,PHIPR,NOBSLV
|
---|
28 | DOUBLE PRECISION OBSLEV(10),THCKOB(10),XOFF(10),YOFF(10),
|
---|
29 | * THETAP,THETPR(2),PHIP,PHIPR(2)
|
---|
30 | INTEGER NOBSLV
|
---|
31 | *KEEP,PAM.
|
---|
32 | COMMON /PAM/ PAMA,SIGNUM
|
---|
33 | DOUBLE PRECISION PAMA(6000),SIGNUM(6000)
|
---|
34 | *KEEP,PARPAR.
|
---|
35 | COMMON /PARPAR/ CURPAR,SECPAR,PRMPAR,OUTPAR,C,
|
---|
36 | * E00,E00PN,PTOT0,PTOT0N,THICKH,ITYPE,LEVL
|
---|
37 | DOUBLE PRECISION CURPAR(14),SECPAR(14),PRMPAR(14),OUTPAR(14),
|
---|
38 | * C(50),E00,E00PN,PTOT0,PTOT0N,THICKH
|
---|
39 | INTEGER ITYPE,LEVL
|
---|
40 | *KEEP,PARPAE.
|
---|
41 | DOUBLE PRECISION GAMMA,COSTHE,PHI,H,T,X,Y,CHI,BETA,GCM,ECM
|
---|
42 | EQUIVALENCE (CURPAR(2),GAMMA), (CURPAR(3),COSTHE),
|
---|
43 | * (CURPAR(4), PHI ), (CURPAR(5), H ),
|
---|
44 | * (CURPAR(6), T ), (CURPAR(7), X ),
|
---|
45 | * (CURPAR(8), Y ), (CURPAR(9), CHI ),
|
---|
46 | * (CURPAR(10),BETA), (CURPAR(11),GCM ),
|
---|
47 | * (CURPAR(12),ECM )
|
---|
48 | *KEEP,RANDPA.
|
---|
49 | COMMON /RANDPA/ FAC,U1,U2,RD,NSEQ,ISEED,KNOR
|
---|
50 | DOUBLE PRECISION FAC,U1,U2
|
---|
51 | REAL RD(3000)
|
---|
52 | INTEGER ISEED(103,10),NSEQ
|
---|
53 | LOGICAL KNOR
|
---|
54 | *KEEP,RUNPAR.
|
---|
55 | COMMON /RUNPAR/ FIXHEI,THICK0,HILOECM,HILOELB,
|
---|
56 | * STEPFC,NRRUN,NSHOW,PATAPE,MONIIN,
|
---|
57 | * MONIOU,MDEBUG,NUCNUC,
|
---|
58 | * CETAPE,
|
---|
59 | * SHOWNO,ISHW,NOPART,NRECS,NBLKS,MAXPRT,NDEBDL,
|
---|
60 | * N1STTR,MDBASE,
|
---|
61 | * DEBDEL,DEBUG,FDECAY,FEGS,FIRSTI,FIXINC,FIXTAR,
|
---|
62 | * FIX1I,FMUADD,FNKG,FPRINT,FDBASE
|
---|
63 | * ,GHEISH,GHESIG
|
---|
64 | COMMON /RUNPAC/ DSN,HOST,USER
|
---|
65 | DOUBLE PRECISION FIXHEI,THICK0,HILOECM,HILOELB
|
---|
66 | REAL STEPFC
|
---|
67 | INTEGER NRRUN,NSHOW,PATAPE,MONIIN,MONIOU,MDEBUG,NUCNUC,
|
---|
68 | * SHOWNO,ISHW,NOPART,NRECS,NBLKS,MAXPRT,NDEBDL,
|
---|
69 | * N1STTR,MDBASE
|
---|
70 | INTEGER CETAPE
|
---|
71 | CHARACTER*79 DSN
|
---|
72 | CHARACTER*20 HOST,USER
|
---|
73 |
|
---|
74 | LOGICAL DEBDEL,DEBUG,FDECAY,FEGS,FIRSTI,FIXINC,FIXTAR,
|
---|
75 | * FIX1I,FMUADD,FNKG,FPRINT,FDBASE
|
---|
76 | * ,GHEISH,GHESIG
|
---|
77 | *KEND.
|
---|
78 |
|
---|
79 | c>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
---|
80 | c Simulate more precisely muons Cherenkov light
|
---|
81 | c------------------------------------------------------------
|
---|
82 | integer k
|
---|
83 | double precision chloop,savpar(8),oldchi,oldthk,oldh
|
---|
84 | c>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
---|
85 |
|
---|
86 | DOUBLE PRECISION HEIGH,HNEW,PROPAR(8),THCKHN
|
---|
87 | INTEGER I,IRET3,J,L,LPCT1,LPCT2
|
---|
88 | EXTERNAL HEIGH
|
---|
89 | C-----------------------------------------------------------------------
|
---|
90 |
|
---|
91 | IF ( DEBUG ) WRITE(MDEBUG,444) (CURPAR(I),I=1,9)
|
---|
92 | 444 FORMAT(' BOX3 : CURPAR=',1P,9E10.3)
|
---|
93 |
|
---|
94 | IF ( ITYPE .EQ. 7 ) THEN
|
---|
95 | C PI 0 DECAYS INTO 2 PHOTONS IN SUBROUTINE PI0DEC
|
---|
96 | CALL TSTINI
|
---|
97 | CALL PI0DEC
|
---|
98 | CALL TSTEND
|
---|
99 | IRET1 = 1
|
---|
100 | RETURN
|
---|
101 |
|
---|
102 | ELSEIF ( ITYPE .EQ. 5 .OR. ITYPE .EQ. 6 ) THEN
|
---|
103 | C MUONS ARE TRACKED WITHIN ROUTINE MUTRAC
|
---|
104 | CALL TSTINI
|
---|
105 | CALL MUTRAC
|
---|
106 | CALL TSTEND
|
---|
107 | IRET1 = 1
|
---|
108 | RETURN
|
---|
109 |
|
---|
110 | ELSEIF ( ITYPE .LE. 3 ) THEN
|
---|
111 | C ELECTRONS OR PHOTONS ARE TREATED IN SUBROUTINE EM
|
---|
112 | CALL EM
|
---|
113 | IRET1 = 1
|
---|
114 | RETURN
|
---|
115 |
|
---|
116 | ELSEIF ( ITYPE .EQ. 17 .OR.
|
---|
117 | * (ITYPE .GE. 71 .AND. ITYPE .LE. 74)) THEN
|
---|
118 | C ETA DECAYS WITHIN ROUTINE ETADEC
|
---|
119 | CALL TSTINI
|
---|
120 | CALL ETADEC
|
---|
121 | CALL TSTEND
|
---|
122 | IRET1 = 1
|
---|
123 | RETURN
|
---|
124 |
|
---|
125 | ELSEIF ( ITYPE .GE. 51 .AND. ITYPE .LE. 65 ) THEN
|
---|
126 | C RESONANCES DECAY WITHIN ROUTINE RESDEC
|
---|
127 | CALL TSTINI
|
---|
128 | CALL RESDEC
|
---|
129 | CALL TSTEND
|
---|
130 | IRET1 = 1
|
---|
131 | RETURN
|
---|
132 |
|
---|
133 | ENDIF
|
---|
134 |
|
---|
135 | C FOR ALL THE OTHER PARTICLES THE PLACE OF NEXT INTERACTION WAS
|
---|
136 | C DETERMINED IN BOX2
|
---|
137 | c>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
---|
138 | c This is just a first approach to the problem
|
---|
139 | c------------------------------------------------------------
|
---|
140 |
|
---|
141 | c goto 5991
|
---|
142 | if ( itype .eq. 5 .or. itype .eq. 6 ) then
|
---|
143 | oldthk = thickh
|
---|
144 | do 5101 i = 1,9
|
---|
145 | savpar(i) = curpar(i)
|
---|
146 | 5101 continue
|
---|
147 | chi = 0.2d0 * chi
|
---|
148 | do 5100 k = 1,5
|
---|
149 | c calculate hight difference in cm from given chi in g/cm**2
|
---|
150 | thckhn = thickh + costhe * chi
|
---|
151 | hnew = heigh(thckhn)
|
---|
152 | c update particle to interaction point (if it reaches so far)
|
---|
153 | c and store coordinates in propar
|
---|
154 | call update( hnew, thckhn, 0 )
|
---|
155 | if ( iret2 .ne. 0 ) goto 5104
|
---|
156 | do 5103 i = 1,8
|
---|
157 | curpar(i) = outpar(i)
|
---|
158 | 5103 continue
|
---|
159 | thickh = thckhn
|
---|
160 | 5100 continue
|
---|
161 | 5104 continue
|
---|
162 | thickh = oldthk
|
---|
163 | do 5102 i = 1,9
|
---|
164 | curpar(i) = savpar(i)
|
---|
165 | 5102 continue
|
---|
166 |
|
---|
167 | else
|
---|
168 | c calculate hight difference in cm from given chi in g/cm**2
|
---|
169 | thckhn = thickh + costhe * chi
|
---|
170 | hnew = heigh(thckhn)
|
---|
171 | c update particle to interaction point (if it reaches so far)
|
---|
172 | c and store coordinates in propar
|
---|
173 | call update( hnew, thckhn, 0 )
|
---|
174 |
|
---|
175 | endif
|
---|
176 |
|
---|
177 | goto 5992
|
---|
178 | c>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
---|
179 | c 5991 continue
|
---|
180 | c
|
---|
181 | cC CALCULATE HIGHT DIFFERENCE IN CM FROM GIVEN CHI IN G/CM**2
|
---|
182 | c THCKHN = THICKH + COSTHE * CHI
|
---|
183 | c HNEW = HEIGH(THCKHN)
|
---|
184 | cC UPDATE PARTICLE TO INTERACTION POINT (IF IT REACHES SO FAR)
|
---|
185 | cC AND STORE COORDINATES IN PROPAR
|
---|
186 | c CALL UPDATE( HNEW, THCKHN, 0 )
|
---|
187 | c>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
---|
188 |
|
---|
189 | 5992 continue
|
---|
190 | c>>> it was : >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
---|
191 | cC CALCULATE HIGHT DIFFERENCE IN CM FROM GIVEN CHI IN G/CM**2
|
---|
192 | c THCKHN = THICKH + COSTHE * CHI
|
---|
193 | c HNEW = HEIGH(THCKHN)
|
---|
194 | c IF (DEBUG) WRITE(MDEBUG,*)'BOX3 : THICKH,THCKHN,HNEW=',
|
---|
195 | c * SNGL(THICKH),SNGL(THCKHN),SNGL(HNEW)
|
---|
196 | cC UPDATE PARTICLE TO INTERACTION POINT (IF IT REACHES SO FAR)
|
---|
197 | cC AND STORE COORDINATES IN PROPAR
|
---|
198 | c CALL UPDATE( HNEW, THCKHN, 0 )
|
---|
199 | c>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
|
---|
200 |
|
---|
201 | IF ( DEBUG ) THEN
|
---|
202 | WRITE(MDEBUG,455) IRET1,IRET2
|
---|
203 | 455 FORMAT(' BOX3 : IRET1..2=',2I5)
|
---|
204 | IF ( IRET2 .EQ. 0 ) WRITE(MDEBUG,454) (OUTPAR(I),I=1,8)
|
---|
205 | 454 FORMAT(' BOX3 : OUTPAR=',1P,8E10.3)
|
---|
206 | ENDIF
|
---|
207 | C STORE PARTICLE FOR FURTHER TREATMENT
|
---|
208 | IF ( IRET2 .EQ. 0 ) THEN
|
---|
209 | DO 3 I = 1,8
|
---|
210 | PROPAR(I) = OUTPAR(I)
|
---|
211 | 3 CONTINUE
|
---|
212 | IRET3 = 0
|
---|
213 | ELSE
|
---|
214 | C PARTICLE CUTTED AT INTERACTION POINT; IT MAY HOWEVER PASS SOME OF THE
|
---|
215 | C OBSERVATION LEVELS
|
---|
216 | IRET3 = 1
|
---|
217 | ENDIF
|
---|
218 |
|
---|
219 | C HERE THE ENDPOINT OF THE CURRENT TRACKING STEP IS WELL DEFINED.
|
---|
220 | C THE PARTICLE IS TRACKED FROM THICKH DOWN TO THCKHN
|
---|
221 | C COUNT THE PARTICLES FOR THE LONGITUDINAL DEVELOPMENT
|
---|
222 | IF ( LLONGI ) THEN
|
---|
223 | LPCT1 = INT(THICKH*THSTPI + 1.D0)
|
---|
224 | LPCT2 = INT(THCKHN*THSTPI)
|
---|
225 | LPCT2 = MIN(NSTEP,LPCT2)
|
---|
226 | C ALL HADRONS
|
---|
227 | IF ( ITYPE .GE. 7 .AND. ITYPE .LE. 41 ) THEN
|
---|
228 | DO 5004 L = LPCT1,LPCT2
|
---|
229 | PLONG(L,6) = PLONG(L,6) + 1.D0
|
---|
230 | 5004 CONTINUE
|
---|
231 | C CHARGED HADRONS
|
---|
232 | IF ( SIGNUM(ITYPE) .NE. 0.D0 ) THEN
|
---|
233 | DO 5005 L = LPCT1,LPCT2
|
---|
234 | PLONG(L,7) = PLONG(L,7) + 1.D0
|
---|
235 | 5005 CONTINUE
|
---|
236 | ENDIF
|
---|
237 | C NUCLEI
|
---|
238 | ELSEIF ( ITYPE .GT. 100 ) THEN
|
---|
239 | DO 5006 L = LPCT1,LPCT2
|
---|
240 | PLONG(L,8) = PLONG(L,8) + 1.D0
|
---|
241 | 5006 CONTINUE
|
---|
242 | ENDIF
|
---|
243 | ENDIF
|
---|
244 |
|
---|
245 | C CHECK OBSERVATION LEVEL PASSAGE AND UPDATE PARTICLE COORDINATES
|
---|
246 | DO 1 J = 1,NOBSLV
|
---|
247 | IF ( HNEW .GT. OBSLEV(J) ) GOTO 2
|
---|
248 | IF ( H .LT. OBSLEV(J) ) GOTO 1
|
---|
249 | C REMEMBER NUMBER OF LEVEL FOR OUTPUT
|
---|
250 | LEVL = J
|
---|
251 | CALL UPDATE( OBSLEV(J), THCKOB(J), J )
|
---|
252 | IF (DEBUG) WRITE(MDEBUG,456) J,IRET1,IRET2
|
---|
253 | 456 FORMAT(' BOX3 : LEVEL ',I5,' IRET1,2=',2I5)
|
---|
254 |
|
---|
255 | C IF PARTICLE IS NOT CUTTED, BRING IT TO OUTPUT
|
---|
256 | IF ( IRET2 .EQ. 0 ) THEN
|
---|
257 | CALL OUTPUT
|
---|
258 | ENDIF
|
---|
259 | 1 CONTINUE
|
---|
260 |
|
---|
261 | C KILL PARTICLE AS IT DECAYS OR INTERACTS BELOW LOWEST OBSLEVEL
|
---|
262 | IRET1 = 1
|
---|
263 | RETURN
|
---|
264 |
|
---|
265 | C PARTICLE INTERACTS OR DECAYS BEFORE PASSING OBSLEVEL
|
---|
266 | 2 CONTINUE
|
---|
267 |
|
---|
268 | C PARTICLE IS NOW UPDATED TO POINT OF INTERACTION
|
---|
269 | IF ( IRET3 .EQ. 0 ) THEN
|
---|
270 | DO 5 J = 1,8
|
---|
271 | CURPAR(J) = PROPAR(J)
|
---|
272 | 5 CONTINUE
|
---|
273 | ALEVEL = H
|
---|
274 | BETA = SQRT( GAMMA**2 - 1.D0 ) / GAMMA
|
---|
275 | ELSE
|
---|
276 | C ELIMINATE PARTICLE IF BELOW CUTS
|
---|
277 | IRET1 = 1
|
---|
278 | ENDIF
|
---|
279 |
|
---|
280 | RETURN
|
---|
281 | END
|
---|