]>
Commit | Line | Data |
---|---|---|
fe4da5cc | 1 | *CMZ : 17/07/98 15.44.31 by Federico Carminati |
2 | *-- Author : | |
3 | C********************************************************************* | |
4 | ||
5 | SUBROUTINE LUPREP(IP) | |
6 | ||
7 | C...Purpose: to rearrange partons along strings, to allow small systems | |
8 | C...to collapse into one or two particles and to check flavours. | |
9 | IMPLICIT DOUBLE PRECISION(D) | |
10 | *KEEP,LUJETS. | |
11 | COMMON /LUJETS/ N,K(200000,5),P(200000,5),V(200000,5) | |
12 | SAVE /LUJETS/ | |
13 | *KEEP,LUDAT1. | |
14 | COMMON /LUDAT1/ MSTU(200),PARU(200),MSTJ(200),PARJ(200) | |
15 | SAVE /LUDAT1/ | |
16 | *KEEP,LUDAT2. | |
17 | COMMON /LUDAT2/ KCHG(500,3),PMAS(500,4),PARF(2000),VCKM(4,4) | |
18 | SAVE /LUDAT2/ | |
19 | *KEEP,LUDAT3. | |
20 | COMMON /LUDAT3/ MDCY(500,3),MDME(2000,2),BRAT(2000),KFDP(2000,5) | |
21 | SAVE /LUDAT3/ | |
22 | *KEND. | |
23 | DIMENSION DPS(5),DPC(5),UE(3) | |
24 | ||
25 | C...Rearrange parton shower product listing along strings: begin loop. | |
26 | I1=N | |
27 | DO 130 MQGST=1,2 | |
28 | DO 120 I=MAX(1,IP),N | |
29 | IF(K(I,1).NE.3) GOTO 120 | |
30 | KC=LUCOMP(K(I,2)) | |
31 | IF(KC.EQ.0) GOTO 120 | |
32 | KQ=KCHG(KC,2) | |
33 | IF(KQ.EQ.0.OR.(MQGST.EQ.1.AND.KQ.EQ.2)) GOTO 120 | |
34 | ||
35 | C...Pick up loose string end. | |
36 | KCS=4 | |
37 | IF(KQ*ISIGN(1,K(I,2)).LT.0) KCS=5 | |
38 | IA=I | |
39 | NSTP=0 | |
40 | 100 NSTP=NSTP+1 | |
41 | IF(NSTP.GT.4*N) THEN | |
42 | CALL LUERRM(14,'(LUPREP:) caught in infinite loop') | |
43 | RETURN | |
44 | ENDIF | |
45 | ||
46 | C...Copy undecayed parton. | |
47 | IF(K(IA,1).EQ.3) THEN | |
48 | IF(I1.GE.MSTU(4)-MSTU(32)-5) THEN | |
49 | CALL LUERRM(11,'(LUPREP:) no more memory left in LUJETS') | |
50 | RETURN | |
51 | ENDIF | |
52 | I1=I1+1 | |
53 | K(I1,1)=2 | |
54 | IF(NSTP.GE.2.AND.IABS(K(IA,2)).NE.21) K(I1,1)=1 | |
55 | K(I1,2)=K(IA,2) | |
56 | K(I1,3)=IA | |
57 | K(I1,4)=0 | |
58 | K(I1,5)=0 | |
59 | DO 110 J=1,5 | |
60 | P(I1,J)=P(IA,J) | |
61 | 110 V(I1,J)=V(IA,J) | |
62 | K(IA,1)=K(IA,1)+10 | |
63 | IF(K(I1,1).EQ.1) GOTO 120 | |
64 | ENDIF | |
65 | ||
66 | C...Go to next parton in colour space. | |
67 | IB=IA | |
68 | IF(MOD(K(IB,KCS)/MSTU(5)**2,2).EQ.0.AND.MOD(K(IB,KCS),MSTU(5)). | |
69 | &NE.0) THEN | |
70 | IA=MOD(K(IB,KCS),MSTU(5)) | |
71 | K(IB,KCS)=K(IB,KCS)+MSTU(5)**2 | |
72 | MREV=0 | |
73 | ELSE | |
74 | IF(K(IB,KCS).GE.2*MSTU(5)**2.OR.MOD(K(IB,KCS)/MSTU(5),MSTU(5)). | |
75 | & EQ.0) KCS=9-KCS | |
76 | IA=MOD(K(IB,KCS)/MSTU(5),MSTU(5)) | |
77 | K(IB,KCS)=K(IB,KCS)+2*MSTU(5)**2 | |
78 | MREV=1 | |
79 | ENDIF | |
80 | IF(IA.LE.0.OR.IA.GT.N) THEN | |
81 | CALL LUERRM(12,'(LUPREP:) colour rearrangement failed') | |
82 | RETURN | |
83 | ENDIF | |
84 | IF(MOD(K(IA,4)/MSTU(5),MSTU(5)).EQ.IB.OR.MOD(K(IA,5)/MSTU(5), | |
85 | &MSTU(5)).EQ.IB) THEN | |
86 | IF(MREV.EQ.1) KCS=9-KCS | |
87 | IF(MOD(K(IA,KCS)/MSTU(5),MSTU(5)).NE.IB) KCS=9-KCS | |
88 | K(IA,KCS)=K(IA,KCS)+2*MSTU(5)**2 | |
89 | ELSE | |
90 | IF(MREV.EQ.0) KCS=9-KCS | |
91 | IF(MOD(K(IA,KCS),MSTU(5)).NE.IB) KCS=9-KCS | |
92 | K(IA,KCS)=K(IA,KCS)+MSTU(5)**2 | |
93 | ENDIF | |
94 | IF(IA.NE.I) GOTO 100 | |
95 | K(I1,1)=1 | |
96 | 120 CONTINUE | |
97 | 130 CONTINUE | |
98 | N=I1 | |
99 | ||
100 | C...Find lowest-mass colour singlet jet system, OK if above threshold. | |
101 | IF(MSTJ(14).LE.0) GOTO 320 | |
102 | NS=N | |
103 | 140 NSIN=N-NS | |
104 | PDM=1.+PARJ(32) | |
105 | IC=0 | |
106 | DO 190 I=MAX(1,IP),NS | |
107 | IF(K(I,1).NE.1.AND.K(I,1).NE.2) THEN | |
108 | ELSEIF(K(I,1).EQ.2.AND.IC.EQ.0) THEN | |
109 | NSIN=NSIN+1 | |
110 | IC=I | |
111 | DO 150 J=1,4 | |
112 | 150 DPS(J)=P(I,J) | |
113 | MSTJ(93)=1 | |
114 | DPS(5)=ULMASS(K(I,2)) | |
115 | ELSEIF(K(I,1).EQ.2) THEN | |
116 | DO 160 J=1,4 | |
117 | 160 DPS(J)=DPS(J)+P(I,J) | |
118 | ELSEIF(IC.NE.0.AND.KCHG(LUCOMP(K(I,2)),2).NE.0) THEN | |
119 | DO 170 J=1,4 | |
120 | 170 DPS(J)=DPS(J)+P(I,J) | |
121 | MSTJ(93)=1 | |
122 | DPS(5)=DPS(5)+ULMASS(K(I,2)) | |
123 | PD=SQRT(MAX(0D0,DPS(4)**2-DPS(1)**2-DPS(2)**2-DPS(3)**2))-DPS(5) | |
124 | IF(PD.LT.PDM) THEN | |
125 | PDM=PD | |
126 | DO 180 J=1,5 | |
127 | 180 DPC(J)=DPS(J) | |
128 | IC1=IC | |
129 | IC2=I | |
130 | ENDIF | |
131 | IC=0 | |
132 | ELSE | |
133 | NSIN=NSIN+1 | |
134 | ENDIF | |
135 | 190 CONTINUE | |
136 | IF(PDM.GE.PARJ(32)) GOTO 320 | |
137 | ||
138 | C...Fill small-mass system as cluster. | |
139 | NSAV=N | |
140 | PECM=SQRT(MAX(0D0,DPC(4)**2-DPC(1)**2-DPC(2)**2-DPC(3)**2)) | |
141 | K(N+1,1)=11 | |
142 | K(N+1,2)=91 | |
143 | K(N+1,3)=IC1 | |
144 | K(N+1,4)=N+2 | |
145 | K(N+1,5)=N+3 | |
146 | P(N+1,1)=DPC(1) | |
147 | P(N+1,2)=DPC(2) | |
148 | P(N+1,3)=DPC(3) | |
149 | P(N+1,4)=DPC(4) | |
150 | P(N+1,5)=PECM | |
151 | ||
152 | C...Form two particles from flavours of lowest-mass system, if feasible. | |
153 | K(N+2,1)=1 | |
154 | K(N+3,1)=1 | |
155 | IF(MSTU(16).NE.2) THEN | |
156 | K(N+2,3)=N+1 | |
157 | K(N+3,3)=N+1 | |
158 | ELSE | |
159 | K(N+2,3)=IC1 | |
160 | K(N+3,3)=IC2 | |
161 | ENDIF | |
162 | K(N+2,4)=0 | |
163 | K(N+3,4)=0 | |
164 | K(N+2,5)=0 | |
165 | K(N+3,5)=0 | |
166 | IF(IABS(K(IC1,2)).NE.21) THEN | |
167 | KC1=LUCOMP(K(IC1,2)) | |
168 | KC2=LUCOMP(K(IC2,2)) | |
169 | IF(KC1.EQ.0.OR.KC2.EQ.0) GOTO 320 | |
170 | KQ1=KCHG(KC1,2)*ISIGN(1,K(IC1,2)) | |
171 | KQ2=KCHG(KC2,2)*ISIGN(1,K(IC2,2)) | |
172 | IF(KQ1+KQ2.NE.0) GOTO 320 | |
173 | 200 CALL LUKFDI(K(IC1,2),0,KFLN,K(N+2,2)) | |
174 | CALL LUKFDI(K(IC2,2),-KFLN,KFLDMP,K(N+3,2)) | |
175 | IF(K(N+2,2).EQ.0.OR.K(N+3,2).EQ.0) GOTO 200 | |
176 | ELSE | |
177 | IF(IABS(K(IC2,2)).NE.21) GOTO 320 | |
178 | 210 CALL LUKFDI(1+INT((2.+PARJ(2))*RLU(0)),0,KFLN,KFDMP) | |
179 | CALL LUKFDI(KFLN,0,KFLM,K(N+2,2)) | |
180 | CALL LUKFDI(-KFLN,-KFLM,KFLDMP,K(N+3,2)) | |
181 | IF(K(N+2,2).EQ.0.OR.K(N+3,2).EQ.0) GOTO 210 | |
182 | ENDIF | |
183 | P(N+2,5)=ULMASS(K(N+2,2)) | |
184 | P(N+3,5)=ULMASS(K(N+3,2)) | |
185 | IF(P(N+2,5)+P(N+3,5)+PARJ(64).GE.PECM.AND.NSIN.EQ.1) GOTO 320 | |
186 | IF(P(N+2,5)+P(N+3,5)+PARJ(64).GE.PECM) GOTO 260 | |
187 | ||
188 | C...Perform two-particle decay of jet system, if possible. | |
189 | IF(PECM.GE.0.02*DPC(4)) THEN | |
190 | PA=SQRT((PECM**2-(P(N+2,5)+P(N+3,5))**2)*(PECM**2- | |
191 | & (P(N+2,5)-P(N+3,5))**2))/(2.*PECM) | |
192 | UE(3)=2.*RLU(0)-1. | |
193 | PHI=PARU(2)*RLU(0) | |
194 | UE(1)=SQRT(1.-UE(3)**2)*COS(PHI) | |
195 | UE(2)=SQRT(1.-UE(3)**2)*SIN(PHI) | |
196 | DO 220 J=1,3 | |
197 | P(N+2,J)=PA*UE(J) | |
198 | 220 P(N+3,J)=-PA*UE(J) | |
199 | P(N+2,4)=SQRT(PA**2+P(N+2,5)**2) | |
200 | P(N+3,4)=SQRT(PA**2+P(N+3,5)**2) | |
201 | MSTU(33)=1 | |
202 | CALL LUDBRB(N+2,N+3,0.,0.,DPC(1)/DPC(4),DPC(2)/DPC(4), | |
203 | & DPC(3)/DPC(4)) | |
204 | ELSE | |
205 | NP=0 | |
206 | DO 230 I=IC1,IC2 | |
207 | 230 IF(K(I,1).EQ.1.OR.K(I,1).EQ.2) NP=NP+1 | |
208 | HA=P(IC1,4)*P(IC2,4)-P(IC1,1)*P(IC2,1)-P(IC1,2)*P(IC2,2)- | |
209 | & P(IC1,3)*P(IC2,3) | |
210 | IF(NP.GE.3.OR.HA.LE.1.25*P(IC1,5)*P(IC2,5)) GOTO 260 | |
211 | HD1=0.5*(P(N+2,5)**2-P(IC1,5)**2) | |
212 | HD2=0.5*(P(N+3,5)**2-P(IC2,5)**2) | |
213 | HR=SQRT(MAX(0.,((HA-HD1-HD2)**2-(P(N+2,5)*P(N+3,5))**2)/ | |
214 | & (HA**2-(P(IC1,5)*P(IC2,5))**2)))-1. | |
215 | HC=P(IC1,5)**2+2.*HA+P(IC2,5)**2 | |
216 | HK1=((P(IC2,5)**2+HA)*HR+HD1-HD2)/HC | |
217 | HK2=((P(IC1,5)**2+HA)*HR+HD2-HD1)/HC | |
218 | DO 240 J=1,4 | |
219 | P(N+2,J)=(1.+HK1)*P(IC1,J)-HK2*P(IC2,J) | |
220 | 240 P(N+3,J)=(1.+HK2)*P(IC2,J)-HK1*P(IC1,J) | |
221 | ENDIF | |
222 | DO 250 J=1,4 | |
223 | V(N+1,J)=V(IC1,J) | |
224 | V(N+2,J)=V(IC1,J) | |
225 | 250 V(N+3,J)=V(IC2,J) | |
226 | V(N+1,5)=0. | |
227 | V(N+2,5)=0. | |
228 | V(N+3,5)=0. | |
229 | N=N+3 | |
230 | GOTO 300 | |
231 | ||
232 | C...Else form one particle from the flavours available, if possible. | |
233 | 260 K(N+1,5)=N+2 | |
234 | IF(IABS(K(IC1,2)).GT.100.AND.IABS(K(IC2,2)).GT.100) THEN | |
235 | GOTO 320 | |
236 | ELSEIF(IABS(K(IC1,2)).NE.21) THEN | |
237 | CALL LUKFDI(K(IC1,2),K(IC2,2),KFLDMP,K(N+2,2)) | |
238 | ELSE | |
239 | KFLN=1+INT((2.+PARJ(2))*RLU(0)) | |
240 | CALL LUKFDI(KFLN,-KFLN,KFLDMP,K(N+2,2)) | |
241 | ENDIF | |
242 | IF(K(N+2,2).EQ.0) GOTO 260 | |
243 | P(N+2,5)=ULMASS(K(N+2,2)) | |
244 | ||
245 | C...Find parton/particle which combines to largest extra mass. | |
246 | IR=0 | |
247 | HA=0. | |
248 | HSM=0. | |
249 | DO 280 MCOMB=1,3 | |
250 | IF(IR.NE.0) GOTO 280 | |
251 | DO 270 I=MAX(1,IP),N | |
252 | IF(K(I,1).LE.0.OR.K(I,1).GT.10.OR.(I.GE.IC1.AND.I.LE.IC2. | |
253 | &AND.K(I,1).GE.1.AND.K(I,1).LE.2)) GOTO 270 | |
254 | IF(MCOMB.EQ.1) KCI=LUCOMP(K(I,2)) | |
255 | IF(MCOMB.EQ.1.AND.KCI.EQ.0) GOTO 270 | |
256 | IF(MCOMB.EQ.1.AND.KCHG(KCI,2).EQ.0.AND.I.LE.NS) GOTO 270 | |
257 | IF(MCOMB.EQ.2.AND.IABS(K(I,2)).GT.10.AND.IABS(K(I,2)).LE.100) | |
258 | &GOTO 270 | |
259 | HCR=DPC(4)*P(I,4)-DPC(1)*P(I,1)-DPC(2)*P(I,2)-DPC(3)*P(I,3) | |
260 | HSR=2.*HCR+PECM**2-P(N+2,5)**2-2.*P(N+2,5)*P(I,5) | |
261 | IF(HSR.GT.HSM) THEN | |
262 | IR=I | |
263 | HA=HCR | |
264 | HSM=HSR | |
265 | ENDIF | |
266 | 270 CONTINUE | |
267 | 280 CONTINUE | |
268 | ||
269 | C...Shuffle energy and momentum to put new particle on mass shell. | |
270 | IF(IR.NE.0) THEN | |
271 | HB=PECM**2+HA | |
272 | HC=P(N+2,5)**2+HA | |
273 | HD=P(IR,5)**2+HA | |
274 | HK2=0.5*(HB*SQRT(MAX(0.,((HB+HC)**2-4.*(HB+HD)*P(N+2,5)**2)/ | |
275 | & (HA**2-(PECM*P(IR,5))**2)))-(HB+HC))/(HB+HD) | |
276 | HK1=(0.5*(P(N+2,5)**2-PECM**2)+HD*HK2)/HB | |
277 | DO 290 J=1,4 | |
278 | P(N+2,J)=(1.+HK1)*DPC(J)-HK2*P(IR,J) | |
279 | P(IR,J)=(1.+HK2)*P(IR,J)-HK1*DPC(J) | |
280 | V(N+1,J)=V(IC1,J) | |
281 | 290 V(N+2,J)=V(IC1,J) | |
282 | V(N+1,5)=0. | |
283 | V(N+2,5)=0. | |
284 | N=N+2 | |
285 | ELSE | |
286 | CALL LUERRM(3,'(LUPREP:) no match for collapsing cluster') | |
287 | RETURN | |
288 | ENDIF | |
289 | ||
290 | C...Mark collapsed system and store daughter pointers. Iterate. | |
291 | 300 DO 310 I=IC1,IC2 | |
292 | IF((K(I,1).EQ.1.OR.K(I,1).EQ.2).AND.KCHG(LUCOMP(K(I,2)),2).NE.0) | |
293 | &THEN | |
294 | K(I,1)=K(I,1)+10 | |
295 | IF(MSTU(16).NE.2) THEN | |
296 | K(I,4)=NSAV+1 | |
297 | K(I,5)=NSAV+1 | |
298 | ELSE | |
299 | K(I,4)=NSAV+2 | |
300 | K(I,5)=N | |
301 | ENDIF | |
302 | ENDIF | |
303 | 310 CONTINUE | |
304 | IF(N.LT.MSTU(4)-MSTU(32)-5) GOTO 140 | |
305 | ||
306 | C...Check flavours and invariant masses in parton systems. | |
307 | 320 NP=0 | |
308 | KFN=0 | |
309 | KQS=0 | |
310 | DO 330 J=1,5 | |
311 | 330 DPS(J)=0. | |
312 | DO 360 I=MAX(1,IP),N | |
313 | IF(K(I,1).LE.0.OR.K(I,1).GT.10) GOTO 360 | |
314 | KC=LUCOMP(K(I,2)) | |
315 | IF(KC.EQ.0) GOTO 360 | |
316 | KQ=KCHG(KC,2)*ISIGN(1,K(I,2)) | |
317 | IF(KQ.EQ.0) GOTO 360 | |
318 | NP=NP+1 | |
319 | IF(KQ.NE.2) THEN | |
320 | KFN=KFN+1 | |
321 | KQS=KQS+KQ | |
322 | MSTJ(93)=1 | |
323 | DPS(5)=DPS(5)+ULMASS(K(I,2)) | |
324 | ENDIF | |
325 | DO 340 J=1,4 | |
326 | 340 DPS(J)=DPS(J)+P(I,J) | |
327 | IF(K(I,1).EQ.1) THEN | |
328 | IF(NP.NE.1.AND.(KFN.EQ.1.OR.KFN.GE.3.OR.KQS.NE.0)) CALL | |
329 | & LUERRM(2,'(LUPREP:) unphysical flavour combination') | |
330 | IF(NP.NE.1.AND.DPS(4)**2-DPS(1)**2-DPS(2)**2-DPS(3)**2.LT. | |
331 | & (0.9*PARJ(32)+DPS(5))**2) CALL LUERRM(3, | |
332 | & '(LUPREP:) too small mass in jet system') | |
333 | NP=0 | |
334 | KFN=0 | |
335 | KQS=0 | |
336 | DO 350 J=1,5 | |
337 | 350 DPS(J)=0. | |
338 | ENDIF | |
339 | 360 CONTINUE | |
340 | ||
341 | RETURN | |
342 | END |