]> git.uio.no Git - u/mrichter/AliRoot.git/blame - GEANT321/fluka/hadrin.F
updated default version of FMD
[u/mrichter/AliRoot.git] / GEANT321 / fluka / hadrin.F
CommitLineData
fe4da5cc 1*
2* $Id$
3*
4* $Log$
5* Revision 1.1.1.1 1995/10/24 10:20:00 cernlib
6* Geant
7*
8*
9#include "geant321/pilot.h"
10*CMZ : 3.21/02 29/03/94 15.41.44 by S.Giani
11*-- Author :
12*$ CREATE HADRIN.FOR
13*COPY HADRIN
14*
15*=== hadrin ===========================================================*
16*
17*
18*----------------------------------------------------------------------*
19* hadrin89: slight modifications by A. Ferrari
20*----------------------------------------------------------------------*
21*
22 SUBROUTINE HADRIN (N,PLAB,ELAB,CX,CY,CZ,ITTA)
23
24#include "geant321/dblprc.inc"
25#include "geant321/dimpar.inc"
26#include "geant321/iounit.inc"
27#include "geant321/metlsp.inc"
28#include "geant321/finlsp.inc"
29 PARAMETER ( AMPROT = 0.93827231D+00 )
30*
31#include "geant321/reac.inc"
32#include "geant321/redver.inc"
33#include "geant321/split.inc"
34*
35**** INTEGER*2ICH,IBAR,K1,K2,NZK,NRK,IEII,IKII,NURE
36 COMMON / FKGAMR / REDU, AMO, AMM (15)
37C
38 COMMON / FKABLT / AM (110), GA (110), TAU (110), ICH (110),
39 & IBAR (110), K1 (110), K2 (110)
40 COMMON / FKCODS / COD1, COD2, COD3, COF1, COF2, COF3, SIF1, SIF2,
41 & SIF3, ECM1, ECM2, ECM3, PCM1, PCM2, PCM3
42 COMMON / FKRUN / RUNTES, EFTES
43*
44 SAVE UMODA, ITPRF, NNN
45 DIMENSION ITPRF(110)
46 REAL RNDM(1)
47 DATA NNN/0/
48 DATA UMODA/0.D0/
49 DATA ITPRF/-1,-1,5*1,-1,-1,1,1,1,-1,-1,-1,-1,6*1,-1,-1,-1,85*1/
50C
51C-----------------------------
52C*** INPUT VARIABLES LIST:
53C*** SAMPLING OF HADRON NUCLEON INTERACTION FOR (ABOUT) 0.1 LE PLAB LE 6
54C*** GEV/C LABORATORY MOMENTUM REGION
55C*** N - PROJECTILE HADRON INDEX
56C*** PLAB - LABORATORY MOMENTUM OF N (GEV/C)
57C*** ELAB - LABORATORY ENERGY OF N (GEV)
58C*** CX,CY,CZ - DIRECTION COSINES OF N IN THE LABORATORY SYSTEM
59C*** ITTA - TARGET NUCLEON INDEX
60C*** OUTPUT VARIABLES LIST OF PARTICLE CHARACTERISTICS IN /FINLSP/
61C IR COUNTS THE NUMBER OF PRODUCED PARTICLES
62C*** ITR - PARTICLE INDEX, CXR,CYR,CZR - DIRECTION COSINES (LAB. SYST.)
63C*** ELR,PLR LAB. ENERGY AND LAB. MOMENTUM OF THE SAMPLED PARTICLE
64C*** RESPECT., UNITS (GEV/C AND GEV)
65C----------------------------
66 LOWP=0
67 IF (ITPRF( N ).LT.0) GO TO 99999
68 WRITE(LUNOUT,99998) N
69* STOP Commented out A. Fasso' 1989
70 IR=0
71 RETURN
7299998 FORMAT (3(5H ****/),
73 *45H FALSE USE OF THE PARTICLE TYPE INDEX, VALUE ,I4,3(5H ****/))
7499999 CONTINUE
75 IATMPT=0
76 IF (ABS(PLAB-5.D0).GE.4.99999D0) THEN
77 WRITE(LUNOUT,99996) PLAB
78* STOP Commented out A. Fasso' 1989
79 IR=0
80 RETURN
8199996 FORMAT (3(5H ****/),64
82 *H PROJECTILE HADRON MOMENTUM OUTSIDE OF THE ALLOWED REGION, PLAB=,
83 *1E15.5/,3(5H ****/))
84 END IF
85 UMODAT=N*1.11111D0+ITTA*2.19291D0
86 IF (UMODAT.NE.UMODA.OR.(AMPROT-AM(1)).GT.1.D-6)CALL CALUMO(N,ITTA)
87 UMODA=UMODAT
88 1009 CONTINUE
89 IATMPT=0
90 LOWP=LOWP+1
91 1000 CONTINUE
92 IMACH=0
93 REDU=2.D0
94 IW1=0
95 IF (LOWP.GT.20) GO TO 8
96 NNN=N
97 IF (NNN.EQ.N) GO TO 4322
98 RUNTES=0.D0
99 EFTES=0.D0
100 4322 CONTINUE
101 IS=1
102 IR=0
103 IST=1
104 NSTAB=25
105 IF ( ITTA .EQ. 1 ) THEN
106 IRE=NURE(N,1)
107 ELSE
108 IRE=NURE(N,2)
109 END IF
110C
111C-----------------------------
112C*** IE,AMT,ECM,SI DETERMINATION
113C----------------------------
114 CALL FKSIGI(IRE,PLAB,N,IE,AMT,AMN,ECM,SI,ITTA)
115 IF ( AMPROT - AM(1) .GT. 1.D-6 ) THEN
116 IANTH = 1
117 SI = 1.D0
118 ELSE
119 IANTH = -1
120 END IF
121 ECMMH=ECM
122C
123C-----------------------------
124C ENERGY INDEX
125C IRE CHARACTERIZES THE REACTION
126C IE IS THE ENERGY INDEX
127C----------------------------
128 IF (SI.LT.1.D-6) GO TO 8
129 IF (N .LE.NSTAB) GO TO 1
130 RUNTES=RUNTES+1.D0
131 IF (RUNTES.LT.20.D0) WRITE(LUNOUT,602)N
132 602 FORMAT(3H N=,I10,30H THE PROEKTILE IS A RESONANCE )
133 IF(IBAR(N).EQ.1) N=8
134 IF(IBAR(N).EQ.-1) N=9
135 1 CONTINUE
136 IMACH=IMACH+1
137 IF (IMACH.GT.10) GO TO 8
138 ECM =ECMMH
139 AMN2=AMN**2
140 AMT2=AMT**2
141 ECMN=(ECM**2+AMN2-AMT2)/(2.D0*ECM)
142 IF(ECMN.LE.AMN) ECMN=AMN
143 PCMN=SQRT(ECMN**2-AMN2)
144 GAM=(ELAB+AMT)/ECM
145 BGAM=PLAB/ECM
146 IF (IANTH.GE.0) ECM=2.1D0
147C
148C-----------------------------
149C*** RANDOM CHOICE OF REACTION CHANNEL
150C----------------------------
151 IST=0
152 CALL GRNDM(RNDM,1)
153 VV = RNDM (1)
154C
155C-----------------------------
156C*** PLACE REDUCED VERSION
157C----------------------------
158 IIEI=IEII(IRE)
159 IDWK=IEII(IRE+1)-IIEI
160 IIWK=IRII(IRE)
161 IIKI=IKII(IRE)
162C
163C-----------------------------
164C*** SHRINKAGE TO THE CONSIDERED ENERGY REGION FOR THE USE OF WEIGHTS
165C----------------------------
166 HECM=ECM
167* The following cards assure that Ecm =< Umax + DUmax for this reaction
168* where:
169* Umax = max cms energy at which data are tabulated
170* DUmax = width of the last interval for the tabulated data
171 HUMO=2.D0*UMO(IIEI+IDWK)-UMO(IIEI+IDWK-1)
172 IF (HUMO.LT.ECM) ECM=HUMO
173C
174C-----------------------------
175C*** INTERPOLATION PREPARATION
176C----------------------------
177* Cms energy of the upper limit of the considered energy interval
178 ECMO=UMO(IE)
179* Cms energy of the lower limit of the considered energy interval
180 ECM1=UMO(IE-1)
181* Width of the considered interval
182 DECM=ECMO-ECM1
183* Width from actual value to the upper limit (note that if Ecm > Ecmo
184* it can be negative but its | | is always less than decm for the
185* above condition on Humo
186 DEC=ECMO-ECM
187C
188C-----------------------------
189C*** RANDOM LOOP
190C----------------------------
191* Ik : index of the exit channel
192 IK=0
193 VFW=VV
194 WKK=0.D+00
195 WICOR=0.D+00
196 111 CONTINUE
197 IK=IK+1
198* Save the weight accumulated up to now
199 VFWO=WKK
200* Get the index for the weight of ikth channel at ieth energy (upper
201* limit of the interval in energy)
202 IWK=IIWK+(IK-1)*IDWK+IE-IIEI
203* Cumulative Weight of channels 1...ik at energy Ie
204 WOK=WK(IWK)
205* Difference for the cumulative weight of channels 1...ik at Ie and Ie-1
206 WDK=WOK-WK(IWK-1)
207* This card is not clear at all, it should zeroes the weight difference
208* if we are in the first interval (that means take only the weights
209* at the upper boundary of the interval)
210 IF (PLAB.LT.PLABF(IIEI+2)) WDK=0.D+00
211C
212C-----------------------------
213C*** TESTVARIABLE WICO/WICOR: IF CHANNEL IK HAS THE SAME WEIGHTS LIKE IK
214C GO TO NEXT CHANNEL, BECAUSE WKK((IK))-WKK((IK-1))=0, IK CAN NOT
215C CONTRIBUTE
216C----------------------------
217 WICO=WOK*1.23459876D0+WDK*1.735218469D0
218 IF (WICO.EQ.WICOR) GO TO 111
219* This card zeroes the weight difference if we are beyond the last
220* interval
221 IF (UMO(IIEI+IDWK).LT.HECM) WDK=0.D+00
222* Save wico
223 WICOR=WICO
224C
225C-----------------------------
226C*** INTERPOLATION IN CHANNEL WEIGHTS
227C----------------------------
228* Set Eklim to a negative value to flag for Iefun it is a
229* cms energy and not a lab momentum: this is the cms threshold
230* for the exit channel ik
231 EKLIM=-THRESH(IIKI+IK)
232* Iefun returns the energy index of upper limit of the interval
233* containing the threshold
234 IELIM=IEFUN(EKLIM,IRE)
235* Compute the difference between the upper limit and the
236* threshold
237 DELIM=UMO(IELIM)+EKLIM+ANGLSQ
238* Dete is twice the difference between the actual energy value and
239* the average value between Ecmo and the threshold
240 DETE=(ECM-(ECMO-EKLIM)*.5D0)*2.D0
241 IF ( DELIM*DELIM-DETE*DETE .GT. 0.D+00 ) THEN
242 DECC=DELIM
243 ELSE
244 DECC=DECM
245 END IF
246 WKK=WOK-WDK*DEC/(DECC+ANGLSQ)
247C
248C-----------------------------
249C*** RANDOM CHOICE
250C----------------------------
251C
252 IF (VV.GT.WKK) GO TO 111
253C
254C***IK IS THE REACTION CHANNEL
255C----------------------------
256 INRK=IKII(IRE)+IK
257 ECM=HECM
258 I1001 =0
259C
260 1001 CONTINUE
261 IT1=NRK(1,INRK)
262 AM1=AMGA(IT1)
263 IT2=NRK(2,INRK)
264 AM2=AMGA(IT2)
265 AMS=AM1+AM2
266 I1001=I1001+1
267 IF (I1001.GT.50) GO TO 1
268C
269 IF (IT2*AMS.GT.IT2*ECM) GO TO 1001
270 IT11=IT1
271 IT22=IT2
272 IF (IANTH.GE.0) ECM=ELAB+AMT+0.00000001D0
273 AM11=AM1
274 AM22=AM2
275 IF (IT2.GT.0) GO TO 401
276C
277C-----------------------------
278C INCLUSION OF DIRECT RESONANCES
279C RANDOM CHOICE OF DECAY CHANNELS OF THE DIRECT RESONANCE IT1
280C------------------------
281 KZ1=K1(IT1)
282 IST=IST+1
283 IECO=0
284* Here was the mistake in the pseudo-masses treatment!!!!!
285* ECO=ECM
286 ECO=ECMMH
287 GAM=(ELAB+AMT)/ECO
288 BGAM=PLAB/ECO
289 CXS(1)=CX
290 CYS(1)=CY
291 CZS(1)=CZ
292 GO TO 310
293 401 CONTINUE
294 CALL GRNDM(RNDM,1)
295 IF ( RNDM(1) .LT. 0.5D0) GO TO 902
296 IT1=IT22
297 IT2=IT11
298 AM1=AM22
299 AM2=AM11
300 902 CONTINUE
301C
302C-----------------------------
303C THE FIRST PARTICLE IS DEFINED TO BE THE FORWARD GOING ONE AT SMALL T
304 IBN=IBAR(N)
305 IB1=IBAR(IT1)
306 IT11=IT1
307 IT22=IT2
308 AM11=AM1
309 AM22=AM2
310 IF(IB1.EQ.IBN) GO TO 901
311 IT1=IT22
312 IT2=IT11
313 AM1=AM22
314 AM2=AM11
315 901 CONTINUE
316C-----------------------------
317C***IT1,IT2 ARE THE CREATED PARTICLES
318C***MOMENTA AND DIRECTION COSINA IN THE CM - SYSTEM
319C------------------------
320 CALL TWOPAR(ECM1,ECM2,PCM1,PCM2,COD1,COD2,COF1,COF2,SIF1,SIF2,
321 *IT1,IT2,ECM,ECMN,PCMN,N,AM1,AM2)
322 IST=IST+1
323 ITS(IST)=IT1
324 AMM(IST)=AM1
325C
326C-----------------------------
327C***TRANSFORMATION INTO LAB SYSTEM AND ROTATION
328C----------------------------
329 CALL TRAFO(GAM,BGAM,CX,CY,CZ,COD1,COF1,SIF1,PCM1,ECM1,PLS(IST),
330 *CXS(IST),CYS(IST),CZS(IST),ELS(IST))
331 IST=IST+1
332 ITS(IST)=IT2
333 AMM(IST)=AM2
334 CALL TRAFO(GAM,BGAM,CX,CY,CZ,COD2,COF2,SIF2,PCM2,ECM2,PLS(IST),CXS
335 *(IST),CYS(IST),CZS(IST),ELS(IST))
336 200 CONTINUE
337C
338C-----------------------------
339C***TEST STABLE OR UNSTABLE
340C----------------------------
341 IF(ITS(IST).GT.NSTAB) GO TO 300
342 IR=IR+1
343C
344C-----------------------------
345C***IR IS THE NUMBER OF THE FINAL STABLE PARTICLE
346C----------------------------
347 IF (REDU.LT.0.D0) GO TO 1009
348 ITR(IR)=ITS(IST)
349 PLR(IR)=PLS(IST)
350 CXR(IR)=CXS(IST)
351 CYR(IR)=CYS(IST)
352 CZR(IR)=CZS(IST)
353 ELR(IR)=ELS(IST)
354 IST=IST-1
355 IF(IST.GE.1) GO TO 200
356 GO TO 500
357 300 CONTINUE
358C
359C RANDOM CHOICE OF DECAY CHANNELS
360C----------------------------
361C
362 IT=ITS(IST)
363 ECO=AMM(IST)
364 GAM=ELS(IST)/ECO
365 BGAM=PLS(IST)/ECO
366 IECO=0
367 KZ1=K1(IT)
368 310 CONTINUE
369 IECO=IECO+1
370 CALL GRNDM(RNDM,1)
371 VV=RNDM(1)
372 IIK=KZ1-1
373 301 CONTINUE
374 IIK=IIK+1
375 IF (VV.GT.WT(IIK)) GO TO 301
376C
377C IIK IS THE DECAY CHANNEL
378C----------------------------
379 IT1=NZK(IIK,1)
380 I310=0
381 1310 CONTINUE
382 I310=I310+1
383 AM1=AMGA(IT1)
384 IT2=NZK(IIK,2)
385 AM2=AMGA(IT2)
386 IF (IT2-1.LT.0) GO TO 110
387 IT3=NZK(IIK,3)
388 AM3=AMGA(IT3)
389 AMS=AM1+AM2+AM3
390C
391C IF IIK-KIN.LIM.GT.ACTUAL TOTAL CM-ENERGY, DO AGAIN RANDOM IIK-CHOICE
392C----------------------------
393 IF (IECO.LE.10) GO TO 1002
394 IATMPT=IATMPT+1
395* Note: we can go to 8 also for too many iterations
396 IF (IATMPT.GT.3) GO TO 8
397 GO TO 1000
398 1002 CONTINUE
399 IF (I310.GT.50) GO TO 310
400 IF (AMS.GT.ECO) GO TO 1310
401C
402C FOR THE DECAY CHANNEL
403C IT1,IT2, IT3 ARE THE PRODUCED PARTICLES FROM IT
404C----------------------------
405 IF (REDU.LT.0.D0) GO TO 1009
406 ITWTHC=0
407 REDU=2.D0
408 IF(IT3.EQ.0) GO TO 400
409 4001 CONTINUE
410 ITWTH=1
411 CALL THREPD(ECO,ECM1,ECM2,ECM3,PCM1,PCM2,PCM3,COD1,COF1,SIF1,
412 *COD2,COF2,SIF2,COD3,COF3,SIF3,AM1,AM2,AM3)
413 GO TO 411
414 400 CONTINUE
415 CALL TWOPAD(ECO,ECM1,ECM2,PCM1,PCM2,COD1,COF1,SIF1,COD2,COF2,SIF2,
416 *AM1,AM2)
417 ITWTH=-1
418 IT3=0
419 411 CONTINUE
420 ITWTHC=ITWTHC+1
421 IF (REDU.GT.0.D0) GO TO 110
422 REDU=2.D0
423 IF (ITWTHC.GT.100) GO TO 1009
424 IF (ITWTH) 400,400,4001
425 110 CONTINUE
426 ITS(IST )=IT1
427 IF (IT2-1.LT.0) GO TO 305
428 ITS(IST+1) =IT2
429 ITS(IST+2)=IT3
430 RX=CXS(IST)
431 RY=CYS(IST)
432 RZ=CZS(IST)
433 AMM(IST)=AM1
434 CALL TRAFO(GAM,BGAM,RX,RY,RZ,COD1,COF1,SIF1,PCM1,ECM1,
435 *PLS(IST),CXS(IST),CYS(IST),CZS(IST),ELS(IST))
436 IST=IST+1
437 AMM(IST)=AM2
438 CALL TRAFO(GAM,BGAM,RX,RY,RZ,COD2,COF2,SIF2,PCM2,ECM2,
439 *PLS(IST),CXS(IST),CYS(IST),CZS(IST),ELS(IST))
440 IF (IT3.LE.0) GO TO 305
441 IST=IST+1
442 AMM(IST)=AM3
443 CALL TRAFO(GAM,BGAM,RX,RY,RZ,COD3,COF3,SIF3,PCM3,ECM3,
444 *PLS(IST),CXS(IST),CYS(IST),CZS(IST),ELS(IST))
445 305 CONTINUE
446 GO TO 200
447 500 CONTINUE
448 631 CONTINUE
449 RETURN
450 8 CONTINUE
451C
452C----------------------------
453C
454C ZERO CROSS SECTION CASE
455C
456C----------------------------
457C
458 IR=1
459 ITR(1)=N
460 CXR(1)=CX
461 CYR(1)=CY
462 CZR(1)=CZ
463 ELR(1)=ELAB
464 PLR(1)=PLAB
465 RETURN
466 END