ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
lucomp.f
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file 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 
11 C...Subdivide KF code into constituent pieces.
12  lucomp=0
13  kfa=iabs(kf)
14  kfla=mod(kfa/1000,10)
15  kflb=mod(kfa/100,10)
16  kflc=mod(kfa/10,10)
17  kfls=mod(kfa,10)
18  kflr=mod(kfa/10000,10)
19 
20 C...Simple cases: direct translation or special codes.
21  IF(kfa.EQ.0.OR.kfa.GE.100000) THEN
22  ELSEIF(kfa.LE.100) THEN
23  lucomp=kfa
24  IF(kf.LT.0.AND.kchg(kfa,3).EQ.0) lucomp=0
25  ELSEIF(kfls.EQ.0) THEN
26  IF(kf.EQ.130) lucomp=221
27  IF(kf.EQ.310) lucomp=222
28  IF(kfa.EQ.210) lucomp=281
29  IF(kfa.EQ.2110) lucomp=282
30  IF(kfa.EQ.2210) lucomp=283
31 
32 C...Mesons.
33  ELSEIF(kfa-10000*kflr.LT.1000) THEN
34  IF(kflb.EQ.0.OR.kflb.EQ.9.OR.kflc.EQ.0.OR.kflc.EQ.9) THEN
35  ELSEIF(kflb.LT.kflc) THEN
36  ELSEIF(kf.LT.0.AND.kflb.EQ.kflc) THEN
37  ELSEIF(kflb.EQ.kflc) THEN
38  IF(kflr.EQ.0.AND.kfls.EQ.1) THEN
39  lucomp=110+kflb
40  ELSEIF(kflr.EQ.0.AND.kfls.EQ.3) THEN
41  lucomp=130+kflb
42  ELSEIF(kflr.EQ.1.AND.kfls.EQ.3) THEN
43  lucomp=150+kflb
44  ELSEIF(kflr.EQ.1.AND.kfls.EQ.1) THEN
45  lucomp=170+kflb
46  ELSEIF(kflr.EQ.2.AND.kfls.EQ.3) THEN
47  lucomp=190+kflb
48  ELSEIF(kflr.EQ.0.AND.kfls.EQ.5) THEN
49  lucomp=210+kflb
50  ENDIF
51  ELSEIF(kflb.LE.5.AND.kflc.LE.3) THEN
52  IF(kflr.EQ.0.AND.kfls.EQ.1) THEN
53  lucomp=100+((kflb-1)*(kflb-2))/2+kflc
54  ELSEIF(kflr.EQ.0.AND.kfls.EQ.3) THEN
55  lucomp=120+((kflb-1)*(kflb-2))/2+kflc
56  ELSEIF(kflr.EQ.1.AND.kfls.EQ.3) THEN
57  lucomp=140+((kflb-1)*(kflb-2))/2+kflc
58  ELSEIF(kflr.EQ.1.AND.kfls.EQ.1) THEN
59  lucomp=160+((kflb-1)*(kflb-2))/2+kflc
60  ELSEIF(kflr.EQ.2.AND.kfls.EQ.3) THEN
61  lucomp=180+((kflb-1)*(kflb-2))/2+kflc
62  ELSEIF(kflr.EQ.0.AND.kfls.EQ.5) THEN
63  lucomp=200+((kflb-1)*(kflb-2))/2+kflc
64  ENDIF
65  ELSEIF((kfls.EQ.1.AND.kflr.LE.1).OR.(kfls.EQ.3.AND.kflr.LE.2).
66  & or.(kfls.EQ.5.AND.kflr.EQ.0)) THEN
67  lucomp=80+kflb
68  ENDIF
69 
70 C...Diquarks.
71  ELSEIF((kflr.EQ.0.OR.kflr.EQ.1).AND.kflc.EQ.0) THEN
72  IF(kfls.NE.1.AND.kfls.NE.3) THEN
73  ELSEIF(kfla.EQ.9.OR.kflb.EQ.0.OR.kflb.EQ.9) THEN
74  ELSEIF(kfla.LT.kflb) THEN
75  ELSEIF(kfls.EQ.1.AND.kfla.EQ.kflb) THEN
76  ELSE
77  lucomp=90
78  ENDIF
79 
80 C...Spin 1/2 baryons.
81  ELSEIF(kflr.EQ.0.AND.kfls.EQ.2) THEN
82  IF(kfla.EQ.9.OR.kflb.EQ.0.OR.kflb.EQ.9.OR.kflc.EQ.9) THEN
83  ELSEIF(kfla.LE.kflc.OR.kfla.LT.kflb) THEN
84  ELSEIF(kfla.GE.6.OR.kflb.GE.4.OR.kflc.GE.4) THEN
85  lucomp=80+kfla
86  ELSEIF(kflb.LT.kflc) THEN
87  lucomp=300+((kfla+1)*kfla*(kfla-1))/6+(kflc*(kflc-1))/2+kflb
88  ELSE
89  lucomp=330+((kfla+1)*kfla*(kfla-1))/6+(kflb*(kflb-1))/2+kflc
90  ENDIF
91 
92 C...Spin 3/2 baryons.
93  ELSEIF(kflr.EQ.0.AND.kfls.EQ.4) THEN
94  IF(kfla.EQ.9.OR.kflb.EQ.0.OR.kflb.EQ.9.OR.kflc.EQ.9) THEN
95  ELSEIF(kfla.LT.kflb.OR.kflb.LT.kflc) THEN
96  ELSEIF(kfla.GE.6.OR.kflb.GE.4) THEN
97  lucomp=80+kfla
98  ELSE
99  lucomp=360+((kfla+1)*kfla*(kfla-1))/6+(kflb*(kflb-1))/2+kflc
100  ENDIF
101  ENDIF
102 
103  RETURN
104  END