]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PYTHIA/jetset/lucomp.F
Coding convention rules obeyed
[u/mrichter/AliRoot.git] / PYTHIA / jetset / lucomp.F
1  
2 C********************************************************************* 
3  
4       FUNCTION LUCOMP(KF) 
5  
6 C...Purpose: to compress the standard KF codes for use in mass and decay 
7 C...arrays; also to check whether a given code actually is defined. 
8       COMMON/LUDAT2/KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) 
9       SAVE /LUDAT2/ 
10       DIMENSION KFTAB(25),KCTAB(25) 
11       DATA KFTAB/211,111,221,311,321,130,310,213,113,223, 
12      &313,323,2112,2212,210,2110,2210,110,220,330,440,30443,30553,0,0/ 
13       DATA KCTAB/101,111,112,102,103,221,222,121,131,132, 
14      &122,123,332,333,281,282,283,284,285,286,287,231,235,0,0/ 
15  
16 C...Starting values. 
17       LUCOMP=0 
18       KFA=IABS(KF) 
19  
20 C...Simple cases: direct translation or table. 
21       IF(KFA.EQ.0.OR.KFA.GE.100000) THEN 
22         RETURN 
23       ELSEIF(KFA.LE.100) THEN 
24         LUCOMP=KFA 
25         IF(KF.LT.0.AND.KCHG(KFA,3).EQ.0) LUCOMP=0 
26         RETURN 
27       ELSE 
28         DO 100 IKF=1,23 
29         IF(KFA.EQ.KFTAB(IKF)) THEN 
30           LUCOMP=KCTAB(IKF) 
31           IF(KF.LT.0.AND.KCHG(LUCOMP,3).EQ.0) LUCOMP=0 
32           RETURN 
33         ENDIF 
34   100   CONTINUE 
35       ENDIF 
36  
37 C...Subdivide KF code into constituent pieces. 
38       KFLA=MOD(KFA/1000,10) 
39       KFLB=MOD(KFA/100,10) 
40       KFLC=MOD(KFA/10,10) 
41       KFLS=MOD(KFA,10) 
42       KFLR=MOD(KFA/10000,10) 
43  
44 C...Mesons. 
45       IF(KFA-10000*KFLR.LT.1000) THEN 
46         IF(KFLB.EQ.0.OR.KFLB.EQ.9.OR.KFLC.EQ.0.OR.KFLC.EQ.9) THEN 
47         ELSEIF(KFLB.LT.KFLC) THEN 
48         ELSEIF(KF.LT.0.AND.KFLB.EQ.KFLC) THEN 
49         ELSEIF(KFLB.EQ.KFLC) THEN 
50           IF(KFLR.EQ.0.AND.KFLS.EQ.1) THEN 
51             LUCOMP=110+KFLB 
52           ELSEIF(KFLR.EQ.0.AND.KFLS.EQ.3) THEN 
53             LUCOMP=130+KFLB 
54           ELSEIF(KFLR.EQ.1.AND.KFLS.EQ.3) THEN 
55             LUCOMP=150+KFLB 
56           ELSEIF(KFLR.EQ.1.AND.KFLS.EQ.1) THEN 
57             LUCOMP=170+KFLB 
58           ELSEIF(KFLR.EQ.2.AND.KFLS.EQ.3) THEN 
59             LUCOMP=190+KFLB 
60           ELSEIF(KFLR.EQ.0.AND.KFLS.EQ.5) THEN 
61             LUCOMP=210+KFLB 
62           ENDIF 
63         ELSEIF(KFLB.LE.5) THEN 
64           IF(KFLR.EQ.0.AND.KFLS.EQ.1) THEN 
65             LUCOMP=100+((KFLB-1)*(KFLB-2))/2+KFLC 
66           ELSEIF(KFLR.EQ.0.AND.KFLS.EQ.3) THEN 
67             LUCOMP=120+((KFLB-1)*(KFLB-2))/2+KFLC 
68           ELSEIF(KFLR.EQ.1.AND.KFLS.EQ.3) THEN 
69             LUCOMP=140+((KFLB-1)*(KFLB-2))/2+KFLC 
70           ELSEIF(KFLR.EQ.1.AND.KFLS.EQ.1) THEN 
71             LUCOMP=160+((KFLB-1)*(KFLB-2))/2+KFLC 
72           ELSEIF(KFLR.EQ.2.AND.KFLS.EQ.3) THEN 
73             LUCOMP=180+((KFLB-1)*(KFLB-2))/2+KFLC 
74           ELSEIF(KFLR.EQ.0.AND.KFLS.EQ.5) THEN 
75             LUCOMP=200+((KFLB-1)*(KFLB-2))/2+KFLC 
76           ENDIF 
77         ELSEIF((KFLS.EQ.1.AND.KFLR.LE.1).OR.(KFLS.EQ.3.AND.KFLR.LE.2) 
78      &  .OR.(KFLS.EQ.5.AND.KFLR.EQ.0)) THEN 
79           LUCOMP=80+KFLB 
80         ENDIF 
81  
82 C...Diquarks. 
83       ELSEIF((KFLR.EQ.0.OR.KFLR.EQ.1).AND.KFLC.EQ.0) THEN 
84         IF(KFLS.NE.1.AND.KFLS.NE.3) THEN 
85         ELSEIF(KFLA.EQ.9.OR.KFLB.EQ.0.OR.KFLB.EQ.9) THEN 
86         ELSEIF(KFLA.LT.KFLB) THEN 
87         ELSEIF(KFLS.EQ.1.AND.KFLA.EQ.KFLB) THEN 
88         ELSE 
89           LUCOMP=90 
90         ENDIF 
91  
92 C...Spin 1/2 baryons. 
93       ELSEIF(KFLR.EQ.0.AND.KFLS.EQ.2) THEN 
94         IF(KFLA.EQ.9.OR.KFLB.EQ.0.OR.KFLB.EQ.9.OR.KFLC.EQ.9) THEN 
95         ELSEIF(KFLA.LE.KFLC.OR.KFLA.LT.KFLB) THEN 
96         ELSEIF(KFLA.GE.6.OR.KFLB.GE.4.OR.KFLC.GE.4) THEN 
97           LUCOMP=80+KFLA 
98         ELSEIF(KFLB.LT.KFLC) THEN 
99           LUCOMP=300+((KFLA+1)*KFLA*(KFLA-1))/6+(KFLC*(KFLC-1))/2+KFLB 
100         ELSE 
101           LUCOMP=330+((KFLA+1)*KFLA*(KFLA-1))/6+(KFLB*(KFLB-1))/2+KFLC 
102         ENDIF 
103  
104 C...Spin 3/2 baryons. 
105       ELSEIF(KFLR.EQ.0.AND.KFLS.EQ.4) THEN 
106         IF(KFLA.EQ.9.OR.KFLB.EQ.0.OR.KFLB.EQ.9.OR.KFLC.EQ.9) THEN 
107         ELSEIF(KFLA.LT.KFLB.OR.KFLB.LT.KFLC) THEN 
108         ELSEIF(KFLA.GE.6.OR.KFLB.GE.4) THEN 
109           LUCOMP=80+KFLA 
110         ELSE 
111           LUCOMP=360+((KFLA+1)*KFLA*(KFLA-1))/6+(KFLB*(KFLB-1))/2+KFLC 
112         ENDIF 
113       ENDIF 
114  
115       RETURN 
116       END