]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PYTHIA/jetset/klu.F
Put headers before libraries in the make.
[u/mrichter/AliRoot.git] / PYTHIA / jetset / klu.F
1  
2 C********************************************************************* 
3  
4       FUNCTION KLU(I,J) 
5  
6 C...Purpose: to provide various integer-valued event related data. 
7       COMMON/LUJETS/N,K(4000,5),P(4000,5),V(4000,5) 
8       COMMON/LUDAT1/MSTU(200),PARU(200),MSTJ(200),PARJ(200) 
9       COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
10       SAVE /LUJETS/,/LUDAT1/,/LUDAT2/ 
11  
12 C...Default value. For I=0 number of entries, number of stable entries 
13 C...or 3 times total charge. 
14       KLU=0 
15       IF(I.LT.0.OR.I.GT.MSTU(4).OR.J.LE.0) THEN 
16       ELSEIF(I.EQ.0.AND.J.EQ.1) THEN 
17         KLU=N 
18       ELSEIF(I.EQ.0.AND.(J.EQ.2.OR.J.EQ.6)) THEN 
19         DO 100 I1=1,N 
20         IF(J.EQ.2.AND.K(I1,1).GE.1.AND.K(I1,1).LE.10) KLU=KLU+1 
21         IF(J.EQ.6.AND.K(I1,1).GE.1.AND.K(I1,1).LE.10) KLU=KLU+ 
22      &  LUCHGE(K(I1,2)) 
23   100   CONTINUE 
24       ELSEIF(I.EQ.0) THEN 
25  
26 C...For I > 0 direct readout of K matrix or charge. 
27       ELSEIF(J.LE.5) THEN 
28         KLU=K(I,J) 
29       ELSEIF(J.EQ.6) THEN 
30         KLU=LUCHGE(K(I,2)) 
31  
32 C...Status (existing/fragmented/decayed), parton/hadron separation. 
33       ELSEIF(J.LE.8) THEN 
34         IF(K(I,1).GE.1.AND.K(I,1).LE.10) KLU=1 
35         IF(J.EQ.8) KLU=KLU*K(I,2) 
36       ELSEIF(J.LE.12) THEN 
37         KFA=IABS(K(I,2)) 
38         KC=LUCOMP(KFA) 
39         KQ=0 
40         IF(KC.NE.0) KQ=KCHG(KC,2) 
41         IF(J.EQ.9.AND.KC.NE.0.AND.KQ.NE.0) KLU=K(I,2) 
42         IF(J.EQ.10.AND.KC.NE.0.AND.KQ.EQ.0) KLU=K(I,2) 
43         IF(J.EQ.11) KLU=KC 
44         IF(J.EQ.12) KLU=KQ*ISIGN(1,K(I,2)) 
45  
46 C...Heaviest flavour in hadron/diquark. 
47       ELSEIF(J.EQ.13) THEN 
48         KFA=IABS(K(I,2)) 
49         KLU=MOD(KFA/100,10)*(-1)**MOD(KFA/100,10) 
50         IF(KFA.LT.10) KLU=KFA 
51         IF(MOD(KFA/1000,10).NE.0) KLU=MOD(KFA/1000,10) 
52         KLU=KLU*ISIGN(1,K(I,2)) 
53  
54 C...Particle history: generation, ancestor, rank. 
55       ELSEIF(J.LE.15) THEN 
56         I2=I 
57         I1=I 
58   110   KLU=KLU+1 
59         I2=I1 
60         I1=K(I1,3) 
61         IF(I1.GT.0.AND.K(I1,1).GT.0.AND.K(I1,1).LE.20) GOTO 110 
62         IF(J.EQ.15) KLU=I2 
63       ELSEIF(J.EQ.16) THEN 
64         KFA=IABS(K(I,2))
65         IF(K(I,1).LE.20.AND.((KFA.GE.11.AND.KFA.LE.20).OR.KFA.EQ.22.OR.        
66      &  (KFA.GT.100.AND.MOD(KFA/10,10).NE.0))) THEN  
67           I1=I
68   120     I2=I1 
69           I1=K(I1,3)
70           IF(I1.GT.0) THEN
71             KFAM=IABS(K(I1,2))
72             ILP=1
73             IF(KFAM.NE.0.AND.KFAM.LE.10) ILP=0
74             IF(KFAM.EQ.21.OR.KFAM.EQ.91.OR.KFAM.EQ.92.OR.KFAM.EQ.93) 
75      &      ILP=0
76             IF(KFAM.GT.100.AND.MOD(KFAM/10,10).EQ.0) ILP=0
77             IF(ILP.EQ.1) GOTO 120
78           ENDIF
79           IF(K(I1,1).EQ.12) THEN
80             DO 130 I3=I1+1,I2 
81             IF(K(I3,3).EQ.K(I2,3).AND.K(I3,2).NE.91.AND.K(I3,2).NE.92
82      &      .AND.K(I3,2).NE.93) KLU=KLU+1
83   130       CONTINUE
84           ELSE
85             I3=I2
86   140       KLU=KLU+1
87             I3=I3+1
88             IF(I3.LT.N.AND.K(I3,3).EQ.K(I2,3)) GOTO 140           
89           ENDIF 
90         ENDIF 
91  
92 C...Particle coming from collapsing jet system or not. 
93       ELSEIF(J.EQ.17) THEN 
94         I1=I 
95   150   KLU=KLU+1 
96         I3=I1 
97         I1=K(I1,3) 
98         I0=MAX(1,I1) 
99         KC=LUCOMP(K(I0,2)) 
100         IF(I1.EQ.0.OR.K(I0,1).LE.0.OR.K(I0,1).GT.20.OR.KC.EQ.0) THEN 
101           IF(KLU.EQ.1) KLU=-1 
102           IF(KLU.GT.1) KLU=0 
103           RETURN 
104         ENDIF 
105         IF(KCHG(KC,2).EQ.0) GOTO 150 
106         IF(K(I1,1).NE.12) KLU=0 
107         IF(K(I1,1).NE.12) RETURN 
108         I2=I1 
109   160   I2=I2+1 
110         IF(I2.LT.N.AND.K(I2,1).NE.11) GOTO 160 
111         K3M=K(I3-1,3) 
112         IF(K3M.GE.I1.AND.K3M.LE.I2) KLU=0 
113         K3P=K(I3+1,3) 
114         IF(I3.LT.N.AND.K3P.GE.I1.AND.K3P.LE.I2) KLU=0 
115  
116 C...Number of decay products. Colour flow. 
117       ELSEIF(J.EQ.18) THEN 
118         IF(K(I,1).EQ.11.OR.K(I,1).EQ.12) KLU=MAX(0,K(I,5)-K(I,4)+1) 
119         IF(K(I,4).EQ.0.OR.K(I,5).EQ.0) KLU=0 
120       ELSEIF(J.LE.22) THEN 
121         IF(K(I,1).NE.3.AND.K(I,1).NE.13.AND.K(I,1).NE.14) RETURN 
122         IF(J.EQ.19) KLU=MOD(K(I,4)/MSTU(5),MSTU(5)) 
123         IF(J.EQ.20) KLU=MOD(K(I,5)/MSTU(5),MSTU(5)) 
124         IF(J.EQ.21) KLU=MOD(K(I,4),MSTU(5)) 
125         IF(J.EQ.22) KLU=MOD(K(I,5),MSTU(5)) 
126       ELSE 
127       ENDIF 
128  
129       RETURN 
130       END