1 *CMZ : 17/07/98 15.44.34 by Federico Carminati
3 C*********************************************************************
5 SUBROUTINE LUCELL(NJET)
7 C...Purpose: to provide a simple way of jet finding in an eta-phi-ET
8 C...coordinate frame, as used for calorimeters at hadron colliders.
10 COMMON /LUJETS/ N,K(200000,5),P(200000,5),V(200000,5)
13 COMMON /LUDAT1/ MSTU(200),PARU(200),MSTJ(200),PARJ(200)
16 COMMON /LUDAT2/ KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4)
20 C...Loop over all particles. Find cell that was hit by given particle.
21 PTLRAT=1./SINH(PARU(51))**2
25 IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 110
26 IF(P(I,1)**2+P(I,2)**2.LE.PTLRAT*P(I,3)**2) GOTO 110
27 IF(MSTU(41).GE.2) THEN
29 IF(KC.EQ.0.OR.KC.EQ.12.OR.KC.EQ.14.OR.KC.EQ.16.OR.
31 IF(MSTU(41).GE.3.AND.KCHG(KC,2).EQ.0.AND.LUCHGE(K(I,2)).EQ.0)
35 PT=SQRT(P(I,1)**2+P(I,2)**2)
36 ETA=SIGN(LOG((SQRT(PT**2+P(I,3)**2)+ABS(P(I,3)))/PT),P(I,3))
37 IETA=MAX(1,MIN(MSTU(51),1+INT(MSTU(51)*0.5*(ETA/PARU(51)+1.))))
38 PHI=ULANGL(P(I,1),P(I,2))
39 IPHI=MAX(1,MIN(MSTU(52),1+INT(MSTU(52)*0.5*(PHI/PARU(1)+1.))))
40 IETPH=MSTU(52)*IETA+IPHI
42 C...Add to cell already hit, or book new cell.
44 IF(IETPH.EQ.K(IC,3)) THEN
50 IF(NC.GE.MSTU(4)-MSTU(32)-5) THEN
51 CALL LUERRM(11,'(LUCELL:) no more memory left in LUJETS')
59 P(NC,1)=(PARU(51)/MSTU(51))*(2*IETA-1-MSTU(51))
60 P(NC,2)=(PARU(1)/MSTU(52))*(2*IPHI-1-MSTU(52))
64 C...Smear true bin content by calorimeter resolution.
65 IF(MSTU(53).GE.1) THEN
68 IF(MSTU(53).EQ.2) PEI=P(IC,5)/COSH(P(IC,1))
69 120 PEF=PEI+PARU(55)*SQRT(-2.*LOG(MAX(1E-10,RLU(0)))*PEI)*
71 IF(PEF.LT.0..OR.PEF.GT.PARU(56)*PEI) GOTO 120
73 130 IF(MSTU(53).EQ.2) P(IC,5)=PEF*COSH(P(IC,1))
76 C...Find initiator cell: the one with highest pT of not yet used ones.
80 IF(K(IC,5).NE.2) GOTO 150
81 IF(P(IC,5).LE.ETMAX) GOTO 150
87 IF(ETMAX.LT.PARU(52)) GOTO 210
88 IF(NJ.GE.MSTU(4)-MSTU(32)-5) THEN
89 CALL LUERRM(11,'(LUCELL:) no more memory left in LUJETS')
103 C...Sum up unused cells within required distance of initiator.
105 IF(K(IC,5).EQ.0) GOTO 160
106 IF(ABS(P(IC,1)-ETA).GT.PARU(54)) GOTO 160
107 DPHIA=ABS(P(IC,2)-PHI)
108 IF(DPHIA.GT.PARU(54).AND.DPHIA.LT.PARU(2)-PARU(54)) GOTO 160
110 IF(DPHIA.GT.PARU(1)) PHIC=PHIC+SIGN(PARU(2),PHI)
111 IF((P(IC,1)-ETA)**2+(PHIC-PHI)**2.GT.PARU(54)**2) GOTO 160
113 K(NJ,4)=K(NJ,4)+K(IC,4)
114 P(NJ,3)=P(NJ,3)+P(IC,5)*P(IC,1)
115 P(NJ,4)=P(NJ,4)+P(IC,5)*PHIC
116 P(NJ,5)=P(NJ,5)+P(IC,5)
119 C...Reject cluster below minimum ET, else accept.
120 IF(P(NJ,5).LT.PARU(53)) THEN
123 170 IF(K(IC,5).LT.0) K(IC,5)=-K(IC,5)
124 ELSEIF(MSTU(54).LE.2) THEN
125 P(NJ,3)=P(NJ,3)/P(NJ,5)
126 P(NJ,4)=P(NJ,4)/P(NJ,5)
127 IF(ABS(P(NJ,4)).GT.PARU(1)) P(NJ,4)=P(NJ,4)-SIGN(PARU(2),
130 180 IF(K(IC,5).LT.0) K(IC,5)=0
135 IF(K(IC,5).GE.0) GOTO 200
136 P(NJ,1)=P(NJ,1)+P(IC,5)*COS(P(IC,2))
137 P(NJ,2)=P(NJ,2)+P(IC,5)*SIN(P(IC,2))
138 P(NJ,3)=P(NJ,3)+P(IC,5)*SINH(P(IC,1))
139 P(NJ,4)=P(NJ,4)+P(IC,5)*COSH(P(IC,1))
145 C...Arrange clusters in falling ET sequence.
149 IF(K(IJ,5).EQ.0) GOTO 220
150 IF(P(IJ,5).LT.ETMAX) GOTO 220
165 C...Convert to massless or massive four-vectors.
166 IF(MSTU(54).EQ.2) THEN
169 P(I,1)=P(I,5)*COS(P(I,4))
170 P(I,2)=P(I,5)*SIN(P(I,4))
171 P(I,3)=P(I,5)*SINH(ETA)
172 P(I,4)=P(I,5)*COSH(ETA)
174 ELSEIF(MSTU(54).GE.3) THEN
176 250 P(I,5)=SQRT(MAX(0.,P(I,4)**2-P(I,1)**2-P(I,2)**2-P(I,3)**2))
179 C...Information about storage.
183 IF(MSTU(43).LE.1) MSTU(3)=NJET
184 IF(MSTU(43).GE.2) N=N+NJET