]> git.uio.no Git - u/mrichter/AliRoot.git/blame - HERWIG/src/hwbtim.f
Coding rule violations corrected.
[u/mrichter/AliRoot.git] / HERWIG / src / hwbtim.f
CommitLineData
3820ca8e 1
2CDECK ID>, HWBTIM.
3
4*CMZ :- -26/04/91 14.27.17 by Federico Carminati
5
6*-- Author : Ian Knowles
7
8C-----------------------------------------------------------------------
9
10 SUBROUTINE HWBTIM(INITBR,INTERF)
11
12C-----------------------------------------------------------------------
13
14C Constructs full 4-momentum & production vertices in time-like jet
15
16C initiated by INITBR, interference partner INTERF and spin density
17
18C RHOPAR(INITBR). DECPAR(INITBR) returns jet's spin density matrix.
19
20C Includes azimuthal angular correlations between branching planes
21
22C due to spin (if AZSPIN) using the algorithm of Knowles & Collins.
23
24C Ses Nucl. Phys. B304 (1988) 794 & Comp. Phys. Comm. 58 (1990) 271.
25
26C-----------------------------------------------------------------------
27
28 INCLUDE 'HERWIG61.INC'
29
30 DOUBLE PRECISION HWR,DMIN,PT,EIKON,EINUM,EIDEN1,EIDEN2,EISCR,
31
32 & WT,SPIN,Z1,Z2,PRMAX,CAZ,CX,SX,ROHEP(3),RMAT(3,3),ZERO2(2)
33
34 INTEGER INITBR,INTERF,IPAR,JPAR,KPAR,LPAR,MPAR,NTRY,JOLD
35
36 LOGICAL EICOR,SWAP
37
38 EXTERNAL HWR
39
40 DATA ZERO2,DMIN/ZERO,ZERO,1.D-15/
41
42 IF (IERROR.NE.0) RETURN
43
44 JPAR=INITBR
45
46 KPAR=INTERF
47
48 IF ((JDAPAR(1,JPAR).NE.0).OR.(IDPAR(JPAR).EQ.13)) GOTO 30
49
50C No branching, assign decay matrix
51
52 CALL HWVZRO(2,DECPAR(1,JPAR))
53
54 RETURN
55
56C Advance up the leader
57
58C Find the parent and partner of J
59
60 10 IPAR=JMOPAR(1,JPAR)
61
62 KPAR=JPAR+1
63
64C Generate new Rho
65
66 IF (JMOPAR(1,KPAR).EQ.IPAR) THEN
67
68C Generate Rho'
69
70 CALL HWBAZF(IPAR,JPAR,PHIPAR(1,IPAR),RHOPAR(1,IPAR),
71
72 & ZERO2,RHOPAR(1,JPAR))
73
74 ELSE
75
76 KPAR=JPAR-1
77
78 IF (JMOPAR(1,KPAR).NE.IPAR)
79
80 & CALL HWWARN('HWBTIM',100,*999)
81
82C Generate Rho''
83
84 CALL HWBAZF(IPAR,KPAR,RHOPAR(1,IPAR),PHIPAR(1,IPAR),
85
86 & DECPAR(1,KPAR),RHOPAR(1,JPAR))
87
88 ENDIF
89
90C Generate azimuthal angle of J's branching
91
92 30 IF (JDAPAR(1,JPAR).EQ.0) THEN
93
94C Final state gluon
95
96 CALL HWVZRO(2,DECPAR(1,JPAR))
97
98 IF (JPAR.EQ.INITBR) RETURN
99
100 GOTO 70
101
102 ELSE
103
104C Assign an angle to a branching using an M-function
105
106C Find the daughters of J
107
108 LPAR=JDAPAR(1,JPAR)
109
110 MPAR=JDAPAR(2,JPAR)
111
112C Soft correlations
113
114 CALL HWUROT(PPAR(1,JPAR), ONE,ZERO,RMAT)
115
116 CALL HWUROF(RMAT,PPAR(1,KPAR),ROHEP)
117
118 PT=MAX(SQRT(ROHEP(1)*ROHEP(1)+ROHEP(2)*ROHEP(2)),DMIN)
119
120 EIKON=1.
121
122 SWAP=.FALSE.
123
124 EICOR=AZSOFT.AND.((IDPAR(LPAR).EQ.13).OR.(IDPAR(MPAR).EQ.13))
125
126 IF (EICOR) THEN
127
128C Rearrange s.t. LPAR is the (softest) gluon
129
130 IF (IDPAR(MPAR).EQ.13) THEN
131
132 IF (IDPAR(LPAR).NE.13.OR.
133
134 & PPAR(4,MPAR).LT.PPAR(4,LPAR)) THEN
135
136 SWAP=.TRUE.
137
138 LPAR=MPAR
139
140 MPAR=LPAR-1
141
142 ENDIF
143
144 ENDIF
145
146 EINUM=(PPAR(4,KPAR)*PPAR(4,LPAR))
147
148 & *ABS(PPAR(2,LPAR)-PPAR(2,MPAR))
149
150 EIDEN1=(PPAR(4,KPAR)*PPAR(4,LPAR))-ROHEP(3)*PPAR(3,LPAR)
151
152 EIDEN2=PT*ABS(PPAR(1,LPAR))
153
154 EISCR=1.-(PPAR(5,MPAR)/PPAR(4,MPAR))**2
155
156 & /MIN(PPAR(2,LPAR),PPAR(2,MPAR))
157
158 EIKON=EISCR+EINUM/MAX(EIDEN1-EIDEN2,DMIN)
159
160 ENDIF
161
162C Spin correlations
163
164 WT=0.
165
166 SPIN=1.
167
168 IF (AZSPIN) THEN
169
170 Z1=PPAR(4,LPAR)/PPAR(4,JPAR)
171
172 Z2=1.-Z1
173
174 IF (IDPAR(JPAR).EQ.13.AND.IDPAR(LPAR).EQ.13) THEN
175
176 WT=Z1*Z2/(Z1/Z2+Z2/Z1+Z1*Z2)
177
178 ELSEIF (IDPAR(JPAR).EQ.13.AND.IDPAR(LPAR).LT.13) THEN
179
180 WT=-2.*Z1*Z2/(Z1*Z1+Z2*Z2)
181
182 ENDIF
183
184 ENDIF
185
186C Assign the azimuthal angle
187
188 PRMAX=(1.+ABS(WT))*EIKON
189
190 NTRY=0
191
192 50 NTRY=NTRY+1
193
194 IF (NTRY.GT.NBTRY) CALL HWWARN('HWBTIM',101,*999)
195
196 CALL HWRAZM( ONE,CX,SX)
197
198 CALL HWUROT(PPAR(1,JPAR),CX,SX,RMAT)
199
200C Determine the angle between the branching planes
201
202 CALL HWUROF(RMAT,PPAR(1,KPAR),ROHEP)
203
204 CAZ=ROHEP(1)/PT
205
206 PHIPAR(1,JPAR)=2.*CAZ*CAZ-1.
207
208 PHIPAR(2,JPAR)=2.*CAZ*ROHEP(2)/PT
209
210 IF (EICOR) EIKON=EISCR+EINUM/MAX(EIDEN1-EIDEN2*CAZ,DMIN)
211
212 IF (AZSPIN) SPIN=1.+WT*(RHOPAR(1,JPAR)*PHIPAR(1,JPAR)
213
214 & +RHOPAR(2,JPAR)*PHIPAR(2,JPAR))
215
216 IF (SPIN*EIKON.LT.HWR()*PRMAX) GOTO 50
217
218C Construct full 4-momentum of L and M
219
220 JOLD=JPAR
221
222 IF (SWAP) THEN
223
224 PPAR(1,LPAR)=-PPAR(1,LPAR)
225
226 PPAR(1,MPAR)=-PPAR(1,MPAR)
227
228 JPAR=MPAR
229
230 ELSE
231
232 JPAR=LPAR
233
234 ENDIF
235
236 PPAR(2,LPAR)=0.
237
238 CALL HWUROB(RMAT,PPAR(1,LPAR),PPAR(1,LPAR))
239
240 PPAR(2,MPAR)=0.
241
242 CALL HWUROB(RMAT,PPAR(1,MPAR),PPAR(1,MPAR))
243
244C Assign production vertex to L and M
245
246 CALL HWUDKL(IDPAR(JOLD),PPAR(1,JOLD),VPAR(1,LPAR))
247
248 CALL HWVSUM(4,VPAR(1,JOLD),VPAR(1,LPAR),VPAR(1,LPAR))
249
250 CALL HWVEQU(4,VPAR(1,LPAR),VPAR(1,MPAR))
251
252 ENDIF
253
254 60 IF (JDAPAR(1,JPAR).NE.0) GOTO 10
255
256C Assign decay matrix
257
258 CALL HWVZRO(2,DECPAR(1,JPAR))
259
260C Backtrack down the leader
261
262 70 IPAR=JMOPAR(1,JPAR)
263
264 KPAR=JDAPAR(1,IPAR)
265
266 IF (KPAR.EQ.JPAR) THEN
267
268C Develop the side branch
269
270 JPAR=JDAPAR(2,IPAR)
271
272 GOTO 60
273
274 ELSE
275
276C Construct decay matrix
277
278 CALL HWBAZF(IPAR,KPAR,DECPAR(1,JPAR),DECPAR(1,KPAR),
279
280 & PHIPAR(1,IPAR),DECPAR(1,IPAR))
281
282 ENDIF
283
284 IF (IPAR.EQ.INITBR) RETURN
285
286 JPAR=IPAR
287
288 GOTO 70
289
290 999 END
291
292CDECK ID>, HWBTOP.
293
294*CMZ :- -14/10/99 18.04.56 by Mike Seymour
295
296*-- Author : Gennaro Corcella
297
298C-----------------------------------------------------------------------
299
300 SUBROUTINE HWBTOP
301
302C-----------------------------------------------------------------------
303
304 INCLUDE 'HERWIG61.INC'
305
306 DOUBLE PRECISION HWBVMC,HWR,HWUALF,HWUSQR,X(3),W,
307
308 & X3MIN,X3MAX,X1MIN,X1MAX,QSCALE,GLUFAC,R(3,3),M(3),
309
310 & E(3),AW,PTSQ,EM,EPS,MASDEP,A,B,C,GAMDEP,LAMBDA,
311
312 & PW(5),PT(5),PW1(5),CS,SN,EPG,QQ,RR,CC
313
314 INTEGER ID,ID3,IHEP,KHEP,WHEP,ICMF,K
315
316 EXTERNAL HWBVMC,HWUALF,HWUSQR,HWR
317
318 LAMBDA(A,B,C)=(A**2+B**2+C**2-2*A*B-2*B*C-2*C*A)/(4*A)
319
320C---FIND AN UNTREATED CMF
321
322 ICMF=0
323
324 DO 10 IHEP=1,NHEP
325
326C----FIND A DECAYING TOP QUARK
327
328 10 IF (ISTHEP(IHEP).EQ.155.AND.ISTHEP(JDAHEP(1,IHEP)).EQ.113
329
330 & .AND.(IDHW(IHEP).EQ.6.OR.IDHW(IHEP).EQ.12))
331
332 & ICMF=IHEP
333
334 IF (ICMF.EQ.0) RETURN
335
336 EM=PHEP(5,ICMF)
337
338 X3MIN=2*GCUTME/EM
339
340C---GENERATE X(1),X(3) ACCORDING TO 1/((1-X(1))*X(3)**2)
341
342 100 CONTINUE
343
344C-----AW=(MW/MT)**2
345
346 AW=(PHEP(5,JDAHEP(1,ICMF))/EM)**2
347
348C---CHOOSE X3
349
350 X3MAX=1-AW
351
352 X(3)=X3MIN*X3MAX/(X3MIN+(X3MAX-X3MIN)*HWR())
353
354C--CC, QQ AND RR ARE THE VARIABLE DEFINED IN OUR PAPER
355
356C--IN ORDER TO SOLVE THE CUBIC EQUATION
357
358 CC=(1-AW)**2/4
359
360 QQ=(AW**2-4*(1-X(3))*(2-CC-X(3))-2*AW*(3+2*X(3)))/3
361
362 & -((3+2*AW-4*X(3))**2)/9
363
364 RR=((3+2*AW-4*X(3))*(AW**2-4*(1-X(3))*(2-CC-X(3))
365
366 & -2*AW*(3+2*X(3)))-3*(AW*(4-AW)*(2-CC)+(1-CC)
367
368 & *(2*(1-X(3))-AW)**2))/6-(ONE/27)*(3+2*AW-4*X(3))**3
369
370C---CHOOSE X1
371
372 X1MAX=2*(-QQ**3)**(ONE/6)*COS(ACOS(RR/SQRT(-QQ**3))/3)
373
374 & -(3+2*AW-4*X(3))/3
375
376 X1MIN=1-X(3)+(AW*X(3))/(1-X(3))
377
378 IF (X1MAX.GE.1.OR.X1MIN.GE.1.OR.X1MAX.LE.X1MIN) GOTO 100
379
380 X(1)=1-(1-X1MAX)*((1-X1MIN)/(1-X1MAX))**HWR()
381
382C---CALCULATE WEIGHT
383
384 W=((1+1/AW-2*AW)*((1-AW)*X(3)-(1-X(1))*(1-X(3))-X(3)**2)
385
386 & +(1+1/(2*AW))*X(3)*(X(1)+X(3)-1)**2+2*X(3)**2*(1-X(1)))
387
388 & *(1/X3MIN-1/X3MAX)*LOG((1-X1MIN)/(1-X1MAX))
389
390C---QSCALE=DURHAM-LIKE TRANSVERSE MOMENTUM OF THE GLUON
391
392 QSCALE=EM*HWUSQR(X(3)*(1-X(1))/(2-X(1)-X(3)-AW))
393
394C---FACTOR FOR GLUON EMISSION
395
396 ID=IDHW(JDAHEP(2,ICMF))
397
398 GLUFAC=0
399
400 IF (QSCALE.GT.HWBVMC(13)) GLUFAC=CFFAC*HWUALF(1,QSCALE)
401
402 & /(PIFAC*(1-AW)*(1-2*AW+1/AW))
403
404C---IN FRACTION GLUFAC*W OF EVENTS ADD A GLUON
405
406 IF (GLUFAC*W.GT.HWR()) THEN
407
408 ID3=13
409
410 ELSE
411
412 RETURN
413
414 ENDIF
415
416C---CHECK INFRA-RED CUT-OFF FOR GLUON
417
418 M(1)=PHEP(5,JDAHEP(1,ICMF))
419
420 M(2)=HWBVMC(ID)
421
422 M(3)=HWBVMC(ID3)
423
424 E(1)=HALF*EM*(X(1)+AW+(-M(2)**2-M(3)**2)/EM**2)
425
426 E(3)=HALF*EM*X(3)
427
428 E(2)=EM-E(1)-E(3)
429
430 PTSQ=-LAMBDA(E(1)**2-M(1)**2,E(3)**2-M(3)**2,
431
432 & E(2)**2-M(2)**2)
433
434 IF (PTSQ.LE.0.OR.E(1).LE.M(1).OR.E(2).LE.M(2).OR.E(3).LE.M(3))
435
436 $ RETURN
437
438C---CALCULATE MASS-DEPENDENT SUPPRESSION
439
440 EPS=(RMASS(ID)/EM)**2
441
442 EPG=(RMASS(ID3)/EM)**2
443
444 GAMDEP=(1-AW)*(1+1/AW-2*AW)/(SQRT(1+AW**2+EPS**2
445
446 & -2*AW-2*EPS-2*AW*EPS)*(1+EPS+(1-EPS)**2/AW-2*AW))
447
448 MASDEP=GAMDEP/(1-X(1))*((1+EPS+(1-EPS)**2/AW-2*AW)
449
450 & *((1-AW+EPS)*X(3)*(1-X(1))-(1-X(1))**2*(1-X(3))
451
452 & -X(3)**2*(1-X(1)+EPS))+(1+(1+EPS)/(2*AW))*X(3)
453
454 & *(1-X(1))*(X(1)+X(3)-1)**2+2*X(3)**2*(1-X(1))**2)
455
456 IF (MASDEP.LT.HWR()*((1+1/AW-2*AW)*((1-AW)*X(3)
457
458 & -(1-X(1))*(1-X(3))-X(3)**2)+(1+1/(2*AW))*X(3)
459
460 & *(X(1)+X(3)-1)**2+2*X(3)**2*(1-X(1)))) RETURN
461
462C---STORE OLD MOMENTA
463
464c---PT = TOP MOMENTUM, PW= W MOMENTUM
465
466 CALL HWVEQU(5,PHEP(1,ICMF),PT)
467
468 CALL HWVEQU(5,PHEP(1,JDAHEP(1,ICMF)),PW)
469
470C--------GET THE NON-EMITTING PARTON CMF DIRECTION
471
472 CALL HWULOF(PHEP(1,ICMF),PW,PW)
473
474 CALL HWRAZM(ONE,CS,SN)
475
476 CALL HWUROT(PW,CS,SN,R)
477
478 CALL HWUROF(R,PW,PW)
479
480 CALL HWUMAS(PW)
481
482C---REORDER ENTRIES: IHEP=EMITTER, KHEP=EMITTED
483
484 NHEP=NHEP+1
485
486 IHEP=JDAHEP(2,ICMF)
487
488 WHEP=JDAHEP(1,ICMF)
489
490 KHEP=NHEP
491
492C---SET UP MOMENTA IN TOP REST FRAME
493
494 PHEP(1,ICMF)=0
495
496 PHEP(2,ICMF)=0
497
498 PHEP(3,ICMF)=0
499
500 PHEP(4,ICMF)=EM
501
502 PHEP(5,ICMF)=EM
503
504 PHEP(4,IHEP)=HALF*EM*(2-X(1)-X(3)+EPS-AW+EPG)
505
506 PHEP(4,KHEP)=HALF*EM*X(3)
507
508 PHEP(5,IHEP)=RMASS(ID)
509
510 PHEP(5,KHEP)=RMASS(ID3)
511
512 PHEP(3,KHEP)=HALF*EM*((X(1)+AW-EPS-EPG)*X(3)-2*(1+EPS-AW
513
514 $ -EPG-(2+EPS+EPG-AW-X(1)-X(3))))/HWUSQR((X(1)+AW
515
516 $ -EPS-EPG)**2-4*AW)
517
518 PHEP(3,IHEP)=-PHEP(3,KHEP)-HALF*EM
519
520 $ *HWUSQR((X(1)+AW-EPS-EPG)**2-4*AW)
521
522 PHEP(2,IHEP)=0
523
524 PHEP(1,KHEP)=HWUSQR(PHEP(4,KHEP)**2-PHEP(5,KHEP)**2
525
526 $ -PHEP(3,KHEP)**2)
527
528 PHEP(1,IHEP)=-PHEP(1,KHEP)
529
530 PHEP(2,KHEP)=0
531
532 CALL HWVSUM(4,PHEP(1,IHEP),PHEP(1,KHEP),PW1)
533
534 CALL HWVDIF(4,PHEP(1,ICMF),PW1,PW1)
535
536 CALL HWUMAS(PW1)
537
538 DO K=1,5
539
540 PHEP(K,WHEP)=PW1(K)
541
542 ENDDO
543
544C---ORIENT IN CMF, THEN BOOST TO LAB
545
546 CALL HWUROB(R,PHEP(1,ICMF),PHEP(1,ICMF))
547
548 CALL HWUROB(R,PHEP(1,IHEP),PHEP(1,IHEP))
549
550 CALL HWUROB(R,PHEP(1,WHEP),PHEP(1,WHEP))
551
552 CALL HWUROB(R,PHEP(1,KHEP),PHEP(1,KHEP))
553
554 CALL HWULOB(PT,PHEP(1,IHEP),PHEP(1,IHEP))
555
556 CALL HWULOB(PT,PHEP(1,KHEP),PHEP(1,KHEP))
557
558 CALL HWULOB(PT,PHEP(1,ICMF),PHEP(1,ICMF))
559
560 CALL HWULOB(PT,PHEP(1,WHEP),PHEP(1,WHEP))
561
562C---STATUS AND COLOUR CONNECTION
563
564 ISTHEP(KHEP)=114
565
566 IDHW(KHEP)=ID3
567
568 IDHEP(KHEP)=IDPDG(ID3)
569
570 JDAHEP(2,ICMF)=KHEP
571
572 JMOHEP(1,KHEP)=ICMF
573
574 JMOHEP(1,IHEP)=ICMF
575
576 JDAHEP(1,KHEP)=0
577
578 JMOHEP(2,IHEP)=ICMF
579
580 JDAHEP(2,IHEP)=KHEP
581
582 JMOHEP(2,KHEP)=IHEP
583
584 JDAHEP(2,KHEP)=ICMF
585
586 999 END
587
588CDECK ID>, HWBVMC.
589
590*CMZ :- -26/04/91 11.11.54 by Bryan Webber
591
592*-- Author : Bryan Webber
593
594C-----------------------------------------------------------------------
595
596 FUNCTION HWBVMC(ID)
597
598C-----------------------------------------------------------------------
599
600C VIRTUAL MASS CUTOFF FOR PARTON TYPE ID
601
602C-----------------------------------------------------------------------
603
604 INCLUDE 'HERWIG61.INC'
605
606 DOUBLE PRECISION HWBVMC
607
608 INTEGER ID
609
610 IF (ID.EQ.13) THEN
611
612 HWBVMC=RMASS(ID)+VGCUT
613
614 ELSEIF (ID.LT.13) THEN
615
616 HWBVMC=RMASS(ID)+VQCUT
617
618 ELSEIF (ID.EQ.59) THEN
619
620 HWBVMC=RMASS(ID)+VPCUT
621
622 ELSE
623
624 HWBVMC=RMASS(ID)
625
626 ENDIF
627
628 END