Analysis Software
Documentation for sPHENIX simulation software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
klu.f
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file 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(9000,5),p(9000,5),v(9000,5)
8  SAVE /lujets/
9  common/ludat1/mstu(200),paru(200),mstj(200),parj(200)
10  SAVE /ludat1/
11  common/ludat2/kchg(500,3),pmas(500,4),parf(2000),vckm(4,4)
12  SAVE /ludat2/
13 
14 C...Default value. For I=0 number of entries, number of stable entries
15 C...or 3 times total charge.
16  klu=0
17  IF(i.LT.0.OR.i.GT.mstu(4).OR.j.LE.0) THEN
18  ELSEIF(i.EQ.0.AND.j.EQ.1) THEN
19  klu=n
20  ELSEIF(i.EQ.0.AND.(j.EQ.2.OR.j.EQ.6)) THEN
21  DO 100 i1=1,n
22  IF(j.EQ.2.AND.k(i1,1).GE.1.AND.k(i1,1).LE.10) klu=klu+1
23  IF(j.EQ.6.AND.k(i1,1).GE.1.AND.k(i1,1).LE.10) klu=klu+
24  & luchge(k(i1,2))
25  100 CONTINUE
26  ELSEIF(i.EQ.0) THEN
27 
28 C...For I > 0 direct readout of K matrix or charge.
29  ELSEIF(j.LE.5) THEN
30  klu=k(i,j)
31  ELSEIF(j.EQ.6) THEN
32  klu=luchge(k(i,2))
33 
34 C...Status (existing/fragmented/decayed), parton/hadron separation.
35  ELSEIF(j.LE.8) THEN
36  IF(k(i,1).GE.1.AND.k(i,1).LE.10) klu=1
37  IF(j.EQ.8) klu=klu*k(i,2)
38  ELSEIF(j.LE.12) THEN
39  kfa=iabs(k(i,2))
40  kc=lucomp(kfa)
41  kq=0
42  IF(kc.NE.0) kq=kchg(kc,2)
43  IF(j.EQ.9.AND.kc.NE.0.AND.kq.NE.0) klu=k(i,2)
44  IF(j.EQ.10.AND.kc.NE.0.AND.kq.EQ.0) klu=k(i,2)
45  IF(j.EQ.11) klu=kc
46  IF(j.EQ.12) klu=kq*isign(1,k(i,2))
47 
48 C...Heaviest flavour in hadron/diquark.
49  ELSEIF(j.EQ.13) THEN
50  kfa=iabs(k(i,2))
51  klu=mod(kfa/100,10)*(-1)**mod(kfa/100,10)
52  IF(kfa.LT.10) klu=kfa
53  IF(mod(kfa/1000,10).NE.0) klu=mod(kfa/1000,10)
54  klu=klu*isign(1,k(i,2))
55 
56 C...Particle history: generation, ancestor, rank.
57  ELSEIF(j.LE.16) THEN
58  i2=i
59  i1=i
60  110 klu=klu+1
61  i3=i2
62  i2=i1
63  i1=k(i1,3)
64  IF(i1.GT.0.AND.k(i1,1).GT.0.AND.k(i1,1).LE.20) goto 110
65  IF(j.EQ.15) klu=i2
66  IF(j.EQ.16) THEN
67  klu=0
68  DO 120 i1=i2+1,i3
69  120 IF(k(i1,3).EQ.i2.AND.k(i1,1).GT.0.AND.k(i1,1).LE.20) klu=klu+1
70  ENDIF
71 
72 C...Particle coming from collapsing jet system or not.
73  ELSEIF(j.EQ.17) THEN
74  i1=i
75  130 klu=klu+1
76  i3=i1
77  i1=k(i1,3)
78  i0=max(1,i1)
79  kc=lucomp(k(i0,2))
80  IF(i1.EQ.0.OR.k(i0,1).LE.0.OR.k(i0,1).GT.20.OR.kc.EQ.0) THEN
81  IF(klu.EQ.1) klu=-1
82  IF(klu.GT.1) klu=0
83  RETURN
84  ENDIF
85  IF(kchg(kc,2).EQ.0) goto 130
86  IF(k(i1,1).NE.12) klu=0
87  IF(k(i1,1).NE.12) RETURN
88  i2=i1
89  140 i2=i2+1
90  IF(i2.LT.n.AND.k(i2,1).NE.11) goto 140
91  k3m=k(i3-1,3)
92  IF(k3m.GE.i1.AND.k3m.LE.i2) klu=0
93  k3p=k(i3+1,3)
94  IF(i3.LT.n.AND.k3p.GE.i1.AND.k3p.LE.i2) klu=0
95 
96 C...Number of decay products. Colour flow.
97  ELSEIF(j.EQ.18) THEN
98  IF(k(i,1).EQ.11.OR.k(i,1).EQ.12) klu=max(0,k(i,5)-k(i,4)+1)
99  IF(k(i,4).EQ.0.OR.k(i,5).EQ.0) klu=0
100  ELSEIF(j.LE.22) THEN
101  IF(k(i,1).NE.3.AND.k(i,1).NE.13.AND.k(i,1).NE.14) RETURN
102  IF(j.EQ.19) klu=mod(k(i,4)/mstu(5),mstu(5))
103  IF(j.EQ.20) klu=mod(k(i,5)/mstu(5),mstu(5))
104  IF(j.EQ.21) klu=mod(k(i,4),mstu(5))
105  IF(j.EQ.22) klu=mod(k(i,5),mstu(5))
106  ELSE
107  ENDIF
108 
109  RETURN
110  END