]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HERWIG/src/hwcbct.f
43c7f0a2b42f3763c8241b512f8a376506031027
[u/mrichter/AliRoot.git] / HERWIG / src / hwcbct.f
1
2 CDECK  ID>, HWCBCT.
3
4 *CMZ :-        -20/07/99  10:56:12  by  Peter Richardson
5
6 *-- Author :    Peter Richardson
7
8 C-----------------------------------------------------------------------
9
10       SUBROUTINE HWCBCT(JHEP,KHEP,THEP,PCL,SPLIT)
11
12 C-----------------------------------------------------------------------
13
14 C  Subroutine to split a baryonic cluster containing two heavy quarks
15
16 C  Based on HWCCUT
17
18 C-----------------------------------------------------------------------
19
20       INCLUDE 'HERWIG61.INC'
21
22       DOUBLE PRECISION HWUPCM,HWR,HWVDOT,EMC,QM1,QM2,QM3,QM4,
23
24      &                 PXY,PCX,PCY,RCM,PCL(5),AX(5),PA(5),PB(5),PC(5),
25
26      &                 VCLUS(4),DQM,EMX,EMY,SKAPPA,RKAPPA,VTMP(4),
27
28      &                 DELTM,PDIQUK(5),AY(5)
29
30       INTEGER HWRINT,JHEP,KHEP,LHEP,MHEP,THEP,ID1,ID2,ID3,ID4,NTRY,
31
32      &        NTRYMX,J,IB
33
34       LOGICAL SPLIT
35
36       EXTERNAL HWUPCM,HWR,HWVDOT
37
38       PARAMETER(SKAPPA=1.,NTRYMX=100)
39
40       IF(IERROR.NE.0) RETURN
41
42       EMC=PCL(5)
43
44       ID1=IDHW(JHEP)
45
46       ID2=IDHW(KHEP)
47
48       ID3=IDHW(THEP)
49
50       QM1=RMASS(ID1)
51
52       QM2=RMASS(ID2)
53
54       QM3=RMASS(ID3)
55
56       SPLIT = .FALSE.
57
58       NTRY = 0
59
60 C Decide if cluster contains a b-(anti)quark
61
62       IF (ID1.EQ.5.OR.ID1.EQ.11.OR.ID2.EQ.5.OR.ID2.EQ.11.OR.
63
64      &    ID3.EQ.5.OR.ID3.EQ.11) THEN
65
66         IB=2
67
68       ELSE
69
70         IB=1
71
72       ENDIF
73
74 C-- Set the positon of the cluster to be that of the heavy quark
75
76       CALL HWVEQU(4,VHEP(1,THEP),VCLUS)
77
78 C--SPLIT THE BARYONIC CLUSTER INTO A HEAVY FLAVOUR MESON AND A HEAVY
79
80 C--FLAVOUR BARYON
81
82       PXY=EMC-QM1-QM2-QM3
83
84  20   NTRY=NTRY+1
85
86       IF(NTRY.GT.NTRYMX) RETURN
87
88  30   EMX=QM1+QM2+PXY*HWR()**PSPLT(IB)
89
90       EMY=    QM3+PXY*HWR()**PSPLT(IB)
91
92       IF(EMX+EMY.GE.EMC) GOTO 30
93
94 C--PULL A LIGHT QUARK PAIR OUT OF THE VACUUM
95
96  40   ID4=HWRINT(1,3)
97
98       IF(QWT(ID4).LT.HWR()) GOTO 40
99
100       QM4=RMASS(ID4)
101
102 C--Now combine particles 3 & 4 into a diquark
103
104 C--If three also heavy this diquark doesn't exist in HERWIG
105
106 C--just assume mass is sum of quark masses,as for other diquarks
107
108       DQM=QM3+QM4
109
110 C--Now obtain the masses for the cluster splitting
111
112       PCX=HWUPCM(EMX,QM1,DQM)
113
114       IF(PCX.LT.ZERO) GOTO 20
115
116       PCY=HWUPCM(EMY,QM2,QM4)
117
118       IF(PCY.LT.ZERO) GOTO 20
119
120       SPLIT=.TRUE.
121
122 C--Now we've decided which light quark to pull out of the vacuum
123
124 C--Find the direction of the second heavy quark
125
126       CALL HWULOF(PCL,PHEP(1,THEP),AX)
127
128       RCM=1./SQRT(HWVDOT(3,AX,AX))
129
130       CALL HWVSCA(3,RCM,AX,AX)
131
132 C--Construct the new CoM momenta(collinear)
133
134       PXY=HWUPCM(EMC,EMX,EMY)
135
136       CALL HWVSCA(3,PXY,AX,PC)
137
138 C--pc is momenta of Y cluster along 2nd quark dirn in cluster frame
139
140       PC(4)=SQRT(PXY**2+EMY**2)
141
142       PC(5)=EMY
143
144 C--pa is momenta of 2nd quark in Y frame
145
146       CALL HWVSCA(3,PCY,AX,PA)
147
148       PA(4)=SQRT(PCY**2+QM3**2)
149
150       PA(5)=QM3
151
152 C--pb is momenta of 2nd quark in cluster frame,pa now momenta of antiquark
153
154       CALL HWULOB(PC,PA,PB)
155
156       CALL HWVDIF(4,PC,PB,PA)
157
158       PA(5)=QM4
159
160       LHEP=NHEP+1
161
162       MHEP=NHEP+2
163
164 C--boost these momenta back to lab frame
165
166       CALL HWULOB(PCL,PB,PHEP(1,THEP))
167
168       CALL HWULOB(PCL,PA,PHEP(1,MHEP))
169
170 C--pc now becomes momenta of X cluster in cluster frame
171
172       CALL HWVSCA(3,-ONE,PC,PC)
173
174       PC(4)=EMC-PC(4)
175
176       PC(5)=EMX
177
178 C--find the dirn of the 1st heavy quark in the X frame
179
180 C--transform to cluster frame
181
182       CALL HWULOF(PCL,PHEP(1,JHEP),AY)
183
184 C--transform to X-frame
185
186       CALL HWULOF(PC,AY,AY)
187
188       RCM=1./SQRT(HWVDOT(3,AY,AY))
189
190       CALL HWVSCA(3,RCM,AY,AY)
191
192 C--pa now momenta of 1st havy quark along this dirn
193
194       CALL HWVSCA(3,PCX,AY,PA)
195
196       PA(4)=SQRT(PCX**2+QM1**2)
197
198       PA(5)=QM1
199
200 C--pb now momenta of 1st heavy quark in cluster frame then to lab
201
202       CALL HWULOB(PC,PA,PB)
203
204       CALL HWULOB(PCL,PB,PHEP(1,JHEP))
205
206 C--now find the diquark momenta by momentum conservation
207
208       DO 50 J=1,4
209
210  50   PDIQUK(J)=PCL(J)-PHEP(J,THEP)-PHEP(J,MHEP)-PHEP(J,JHEP)
211
212       PDIQUK(5)=DQM
213
214 C--Now obtain the quark momenta from the diquark
215
216       DO 60 J=1,3
217
218  60   PA(J) = 0
219
220       PA(4) = QM2
221
222       PA(5) = QM2
223
224       CALL HWULOB(PDIQUK,PA,PHEP(1,KHEP))
225
226       CALL HWVDIF(4,PDIQUK,PHEP(1,KHEP),PHEP(1,LHEP))
227
228 C--Construct new vertex positions
229
230       RKAPPA=GEV2MM/SKAPPA
231
232       CALL HWVSCA(3,RKAPPA,AX,AX)
233
234       DELTM=(EMX-EMY)*(EMX+EMY)/(TWO*EMC)
235
236       CALL HWVSCA(3,DELTM,AX,VTMP)
237
238       VTMP(4)=(HALF*EMC-PXY)*RKAPPA
239
240       CALL HWULB4(PCL,VTMP,VTMP)
241
242       CALL HWVSUM(4,VTMP,VCLUS,VHEP(1,LHEP))
243
244       CALL HWVEQU(4,VHEP(1,LHEP),VHEP(1,MHEP))
245
246 C--Relabel the colours of the quarks
247
248       IDHEP(LHEP) = IDPDG(ID4)
249
250       IDHEP(MHEP) = IDPDG(ID4)
251
252       IF(IDHEP(JHEP).GT.0) THEN
253
254         IDHW(LHEP)  = ID4+6
255
256         IDHEP(LHEP) = -IDHEP(LHEP)
257
258         IDHW(MHEP)  = ID4
259
260         JDAHEP(2,LHEP) = JHEP
261
262         JMOHEP(2,LHEP) = MHEP
263
264         JMOHEP(2,MHEP) = JMOHEP(2,JHEP)
265
266         JDAHEP(2,MHEP) = LHEP
267
268         JMOHEP(2,JHEP) = LHEP
269
270       ELSE
271
272         IDHW(LHEP)  = ID4
273
274         IDHW(MHEP)  = ID4+6
275
276         IDHEP(MHEP) = -IDHEP(MHEP)
277
278         JMOHEP(2,LHEP) = JHEP
279
280         JDAHEP(2,MHEP) = JDAHEP(2,JHEP)
281
282         JDAHEP(2,LHEP) = MHEP
283
284         JMOHEP(2,MHEP) = LHEP
285
286         JDAHEP(2,JHEP) = LHEP
287
288       ENDIF
289
290       ISTHEP(LHEP) = 151
291
292       ISTHEP(MHEP) = 151
293
294       JMOHEP(1,LHEP) = JMOHEP(1,KHEP)
295
296       JDAHEP(1,LHEP) = 0
297
298       JMOHEP(1,MHEP) = JMOHEP(1,JHEP)
299
300       JDAHEP(1,MHEP) = 0
301
302       NHEP = NHEP+2
303
304  999  END
305
306 CDECK  ID>, HWCBVI.
307
308 *CMZ :-
309
310 *-- Author :    Mark Gibbs  modified by Peter Richardson
311
312 C-----------------------------------------------------------------------
313
314       SUBROUTINE HWCBVI
315
316 C-----------------------------------------------------------------------
317
318 C FINDS UNPAIRED PARTONS AFTER BARYON-NUMBER VIOLATION
319
320 C  MODIFIED FOR RPARITY VIOLATING SUSY
321
322 C-----------------------------------------------------------------------
323
324       INCLUDE 'HERWIG61.INC'
325
326       COMMON/HWBVIC/NBV,IBV(18)
327
328       DOUBLE PRECISION HWR,PDQ(5)
329
330       INTEGER NBV,IBV,JBV,KBV,LBV,IHEP,IP1,IP2,IP3,JP1,JP2,JP3,
331
332      & HWCBVT,NBR,MBV,IQ1,IQ2,IQ3,ID1,ID2,IDQ,IDIQK(3,3)
333
334       LOGICAL SPLIT,DUNBV(18)
335
336       DATA IDIQK/111,110,113,110,109,112,113,112,114/
337
338 C---Check for errors
339
340       IF (IERROR.NE.0)  RETURN
341
342 C---Correct colour connections are gluon splitting
343
344       CALL HWCCCC
345
346 C---Reset bvi clustering flag
347
348       HVFCEN = .FALSE.
349
350 C---LIST PARTONS WITH WRONG COLOUR PARTNERS-QUARKS ONLY
351
352     5 NBV=0
353
354       DO 10 IHEP=1,NHEP
355
356       IF (ISTHEP(IHEP).GT.149.AND.ISTHEP(IHEP).LT.155) THEN
357
358         IF (QORQQB(IDHW(IHEP))) THEN
359
360           IF (.NOT.QORQQB(IDHW(JMOHEP(2,IHEP))).
361
362      &        AND.JMOHEP(2,IHEP).GT.6) GOTO 10
363
364         ELSE
365
366 C---Extra check for Gamma's
367
368           IF (IDHW(IHEP).EQ.59) GO TO 10
369
370 C---End of bug fix.
371
372           IF (QORQQB(IDHW(JDAHEP(2,IHEP)))) GO TO 10
373
374           GO TO 10
375
376         ENDIF
377
378         IF(JMOHEP(2,IHEP).LT.6.AND.
379
380      &     .NOT.QBORQQ(IDHW(JMOHEP(2,IHEP)))) GOTO 10
381
382 C--new for hard process
383
384         NBV=NBV+1
385
386         IF (NBV.GT.18) CALL HWWARN('HWCBVI',100,*999)
387
388         IBV(NBV)=IHEP
389
390         DUNBV(NBV)=.FALSE.
391
392       ENDIF
393
394    10 CONTINUE
395
396 C--NOW FIND THE ANTIQUARKS WITH WRONG COLOUR CONNECTIONS
397
398       DO 11 IHEP=1,NHEP
399
400       IF(ISTHEP(IHEP).GT.149.AND.ISTHEP(IHEP).LT.155) THEN
401
402         IF(QBORQQ(IDHW(IHEP))) THEN
403
404           IF(.NOT.QBORQQ(IDHW(JDAHEP(2,IHEP))).AND.
405
406      &        JDAHEP(2,IHEP).GT.6) GO TO 11
407
408         ELSE
409
410 C--Extra check for gamma's
411
412           IF(IDHW(IHEP).EQ.59) GO TO 11
413
414           IF(QBORQQ(IDHW(JMOHEP(2,IHEP)))) GO TO 11
415
416           GO TO 11
417
418         ENDIF
419
420         IF(JDAHEP(2,IHEP).LT.6.AND.
421
422      &    .NOT.QORQQB(IDHW(JDAHEP(2,IHEP)))) GOTO 11
423
424         NBV=NBV+1
425
426         IF(NBV.GT.18) CALL HWWARN('HWCBVI',100,*999)
427
428         IBV(NBV)=IHEP
429
430         DUNBV(NBV)=.FALSE.
431
432       ENDIF
433
434  11   CONTINUE
435
436       IF (NBV.EQ.0) RETURN
437
438       IF(MOD(NBV,3).NE.0) CALL HWWARN('HWCBVI',101,*999)
439
440 C---PROCESS FOUND PARTONS, STARTING AT RANDOM POINT IN LIST
441
442       NBR=NBV*HWR()
443
444       DO 100 MBV=1,NBV
445
446       JBV=MBV+NBR
447
448       IF (JBV.GT.NBV) JBV=JBV-NBV
449
450       IF (.NOT.DUNBV(JBV)) THEN
451
452         DUNBV(JBV)=.TRUE.
453
454         IP1=IBV(JBV)
455
456         JP1=HWCBVT(IP1)
457
458 C---FIND ASSOCIATED PARTONS
459
460         DO 20 KBV=1,NBV
461
462         IF (.NOT.DUNBV(KBV)) THEN
463
464           IP2=IBV(KBV)
465
466           JP2=HWCBVT(IP2)
467
468           IF (JP2.EQ.JP1) THEN
469
470             DUNBV(KBV)=.TRUE.
471
472             DO 15 LBV=1,NBV
473
474             IF (.NOT.DUNBV(LBV)) THEN
475
476               IP3=IBV(LBV)
477
478               JP3=HWCBVT(IP3)
479
480               IF (JP3.EQ.JP2) THEN
481
482                 DUNBV(LBV)=.TRUE.
483
484                 GO TO 25
485
486               ENDIF
487
488             ENDIF
489
490    15       CONTINUE
491
492           ENDIF
493
494         ENDIF
495
496    20   CONTINUE
497
498         CALL HWWARN('HWCBVI',102,*999)
499
500    25   IQ1=0
501
502 C---LOOK FOR DIQUARK
503
504         IF (ABS(IDHEP(IP1)).GT.100) THEN
505
506           IQ1=IP1
507
508           IQ2=IP2
509
510           IQ3=IP3
511
512         ELSEIF (ABS(IDHEP(IP2)).GT.100) THEN
513
514           IQ1=IP2
515
516           IQ2=IP3
517
518           IQ3=IP1
519
520         ELSEIF (ABS(IDHEP(IP3)).GT.100) THEN
521
522           IQ1=IP3
523
524           IQ2=IP1
525
526           IQ3=IP2
527
528         ENDIF
529
530         IF (IQ1.EQ.0) THEN
531
532 C---NO DIQUARKS: COMBINE TWO (ANTI)QUARKS
533
534           IF (ABS(IDHEP(IP1)).GT.3) THEN
535
536             IQ1=IP2
537
538             IQ2=IP3
539
540             IQ3=IP1
541
542           ELSEIF (ABS(IDHEP(IP2)).GT.3) THEN
543
544             IQ1=IP3
545
546             IQ2=IP1
547
548             IQ3=IP2
549
550           ELSE
551
552             IQ1=IP1
553
554             IQ2=IP2
555
556             IQ3=IP3
557
558           ENDIF
559
560           ID1=IDHEP(IQ1)
561
562           ID2=IDHEP(IQ2)
563
564 C---CHECK FLAVOURS
565
566           IF (ID1.GT.0.AND.ID1.LT.4.AND.
567
568      &        ID2.GT.0.AND.ID2.LT.4) THEN
569
570             IDQ=IDIQK(ID1,ID2)
571
572           ELSEIF (ID1.LT.0.AND.ID1.GT.-4.AND.
573
574      &            ID1.LT.0.AND.ID2.GT.-4) THEN
575
576             IDQ=IDIQK(-ID1,-ID2)+6
577
578           ELSE
579
580 C---CANT MAKE DIQUARKS WITH HEAVY QUARKS: TRY CLUSTER SPLITTING
581
582             CALL HWVSUM(4,PHEP(1,IQ1),PHEP(1,IQ2),PDQ)
583
584             CALL HWUMAS(PDQ)
585
586 C--Use the original splitting procedure
587
588             CALL HWCCUT(IQ1,IQ2,PDQ,.FALSE.,SPLIT)
589
590             IF(SPLIT) GOTO 5
591
592 C--If it fails try the new procedure
593
594             CALL HWVSUM(4,PDQ,PHEP(1,IQ3),PDQ)
595
596             CALL HWUMAS(PDQ)
597
598             IF(ABS(ID1).GT.3) THEN
599
600               CALL HWCBCT(IQ3,IQ2,IQ1,PDQ,SPLIT)
601
602             ELSEIF(ABS(ID2).GT.3) THEN
603
604               CALL HWCBCT(IQ3,IQ1,IQ2,PDQ,SPLIT)
605
606             ELSE
607
608               CALL HWWARN('HWCBVI',100,*999)
609
610             ENDIF
611
612             IF (SPLIT) GO TO 5
613
614 C---Unable to form cluster; dispose of event
615
616             CALL HWWARN('HWCBVI',-3,*999)
617
618           ENDIF
619
620 C---OVERWRITE FIRST AND CANCEL SECOND
621
622           IDHW(IQ1)=IDQ
623
624           IDHEP(IQ1)=IDPDG(IDQ)
625
626           CALL HWVSUM(4,PHEP(1,IQ1),PHEP(1,IQ2),PHEP(1,IQ1))
627
628           CALL HWUMAS(PHEP(1,IQ1))
629
630           ISTHEP(IQ2)=0
631
632 C---REMAKE COLOUR CONNECTIONS
633
634           IF (QORQQB(IDQ)) THEN
635
636             JMOHEP(2,IQ1)=IQ3
637
638             JDAHEP(2,IQ3)=IQ1
639
640           ELSE
641
642             JDAHEP(2,IQ1)=IQ3
643
644             JMOHEP(2,IQ3)=IQ1
645
646           ENDIF
647
648         ELSE
649
650 C---SPLIT A DIQUARK
651
652           NHEP=NHEP+1
653
654           CALL HWVSCA(5,HALF,PHEP(1,IQ1),PHEP(1,IQ1))
655
656           CALL HWVEQU(5,PHEP(1,IQ1),PHEP(1,NHEP))
657
658           ISTHEP(NHEP)=150
659
660           JMOHEP(1,NHEP)=JMOHEP(1,IQ1)
661
662           JDAHEP(1,NHEP)=0
663
664 C---FIND FLAVOURS
665
666           IDQ=IDHW(IQ1)
667
668           DO 30 ID2=1,3
669
670           DO 30 ID1=1,3
671
672           IF (IDIQK(ID1,ID2).EQ.IDQ) THEN
673
674             IDHW(IQ1)=ID1
675
676             IDHW(NHEP)=ID2
677
678 C---REMAKE COLOUR CONNECTIONS (DIQUARK)
679
680             JMOHEP(2,IQ1)=IQ2
681
682             JMOHEP(2,IQ2)=NHEP
683
684             JMOHEP(2,IQ3)=IQ1
685
686             JMOHEP(2,NHEP)=IQ3
687
688             JDAHEP(2,IQ1)=IQ3
689
690             JDAHEP(2,IQ2)=IQ1
691
692             JDAHEP(2,IQ3)=NHEP
693
694             JDAHEP(2,NHEP)=IQ2
695
696             GO TO 35
697
698           ELSEIF (IDIQK(ID1,ID2).EQ.IDQ-6) THEN
699
700             IDHW(IQ1)=ID1+6
701
702             IDHW(NHEP)=ID2+6
703
704 C---REMAKE COLOUR CONNECTIONS (ANTIDIQUARK)
705
706             JMOHEP(2,IQ1)=IQ3
707
708             JMOHEP(2,IQ2)=IQ1
709
710             JMOHEP(2,IQ3)=NHEP
711
712             JMOHEP(2,NHEP)=IQ2
713
714             JDAHEP(2,IQ1)=IQ2
715
716             JDAHEP(2,IQ2)=NHEP
717
718             JDAHEP(2,IQ3)=IQ1
719
720             JDAHEP(2,NHEP)=IQ3
721
722             GO TO 35
723
724           ENDIF
725
726    30     CONTINUE
727
728           CALL HWWARN('HWCBVI',104,*999)
729
730    35     IDHEP(IQ1)=IDPDG(IDHW(IQ1))
731
732           IDHEP(NHEP)=IDPDG(IDHW(NHEP))
733
734         ENDIF
735
736       ENDIF
737
738   100 CONTINUE
739
740       RETURN
741
742   999 END
743
744 CDECK  ID>, HWCBVT.
745
746 *CMZ :-
747
748 *-- Author :    Peter Richardson
749
750 C-----------------------------------------------------------------------
751
752       FUNCTION HWCBVT(IP)
753
754 C-----------------------------------------------------------------------
755
756 C  Function to find the baryon number violating vertex a parton came from
757
758 C-----------------------------------------------------------------------
759
760       INCLUDE 'HERWIG61.INC'
761
762       INTEGER HWCBVT,IP,JP(2),KP,I,J,ID,TYPE,IDM,IDM2,IDM3,IDM4
763
764       JP(1) = IP
765
766       ID = IDHW(IP)
767
768       IF(ID.LE.6.OR.(ID.GE.115.AND.ID.LE.120)) THEN
769
770         JP(2) = JMOHEP(2,IP)
771
772       ELSE
773
774         JP(2) = JDAHEP(2,IP)
775
776       ENDIF
777
778       DO I=1,2
779
780         IDM = JMOHEP(1,JMOHEP(1,JMOHEP(1,JMOHEP(1,JP(I)))))
781
782         IF(IDHW(IDM).EQ.6.OR.IDHW(IDM).EQ.12) THEN
783
784           JP(I)=IDM
785
786         ENDIF
787
788       ENDDO
789
790       DO J=1,7
791
792         DO I=1,2
793
794           KP = JMOHEP(1,JP(I))
795
796           IDM = IDHW(KP)
797
798           IDM2 = IDHW(JDAHEP(1,KP))
799
800           IDM3 = IDHW(JDAHEP(2,KP))
801
802           IDM4 = IDHW(JDAHEP(1,KP)+1)
803
804           IF((ISTHEP(KP).EQ.155.AND.
805
806      &      ((IDM.GE.449.AND.IDM.LE.457.AND.IDM2.LE.12.AND.
807
808      &       IDM3.LE.12.AND.IDM4.LE.12).OR.
809
810      &      (((IDM.GE.411.AND.IDM.LE.424).OR.IDM.EQ.405.OR.IDM.EQ.406)
811
812      &      .AND.IDM2.LE.12.AND.IDM3.LE.12)))
813
814      &        .OR.(IDM.EQ.15.AND.IDM2.LE.12.AND.
815
816      &       IDHW(JMOHEP(1,KP)).LE.12.AND.
817
818      &       IDHW(JMOHEP(2,KP)).LE.12.AND.IDM3.GE.449.AND.
819
820      &       IDM3.LE.457).OR.
821
822      &         (IDM.EQ.15.AND.IDM2.GE.198.AND.IDM2.LE.200.
823
824      &          AND.ABS(IDPDG(IDM3)).GT.1000000)) THEN
825
826             IF(IDHW(KP).EQ.449.AND.JDAHEP(1,KP).EQ.JP(I)) THEN
827
828               KP = JMOHEP(1,KP)
829
830             ELSEIF(IDHW(KP).EQ.15) THEN
831
832               TYPE=IDHW(JDAHEP(1,KP))
833
834               IF(TYPE.GE.7.AND.TYPE.LE.12.AND.
835
836      &           JMOHEP(2,JDAHEP(2,KP)).EQ.JP(I)) THEN
837
838                 KP=IP
839
840               ELSEIF(TYPE.LE.6.AND.
841
842      &           JDAHEP(2,JDAHEP(2,KP)).EQ.JP(I)) THEN
843
844                 KP=IP
845
846               ELSE
847
848                 HWCBVT = KP
849
850                 RETURN
851
852               ENDIF
853
854             ELSE
855
856               HWCBVT = KP
857
858               RETURN
859
860             ENDIF
861
862           ENDIF
863
864           JP(I) =KP
865
866         ENDDO
867
868       ENDDO
869
870       HWCBVT = 0
871
872  999  END
873
874 CDECK  ID>, HWCCCC.
875
876 *CMZ :-
877
878 *-- Author :    Peter Richardson
879
880 C-----------------------------------------------------------------------
881
882       SUBROUTINE HWCCCC
883
884 C-----------------------------------------------------------------------
885
886 C  Subroutine to correct colour connections after the gluon splitting
887
888 C-----------------------------------------------------------------------
889
890       INCLUDE 'HERWIG61.INC'
891
892       INTEGER IHEP,STFSPT,LHEP,MHEP,RHEP
893
894       IF(IERROR.NE.0) RETURN
895
896 C--Find the first particle in the event record with status 150
897
898       DO IHEP=1,NHEP
899
900         IF(ISTHEP(IHEP).GE.150.AND.ISTHEP(IHEP).LE.154) THEN
901
902           STFSPT = IHEP
903
904           GOTO 10
905
906         ENDIF
907
908       ENDDO
909
910  10   CONTINUE
911
912 C--Now find any that are colour connected to earlier particles
913
914 C--in the event record
915
916       DO IHEP=STFSPT,NHEP
917
918 C--First the quarks and antidiquarks
919
920         IF(IDHW(IHEP).LT.6.OR.
921
922      &     (IDHW(IHEP).GE.115.AND.IDHW(IHEP).LE.120)) THEN
923
924           IF(JMOHEP(2,IHEP).LT.STFSPT) THEN
925
926             LHEP = IHEP
927
928             MHEP = JMOHEP(2,IHEP)
929
930             RHEP = MHEP
931
932             IF(MHEP.GT.6) RHEP = JDAHEP(1,MHEP)
933
934 C--As from Rparity connect to particle not to antiparticle
935
936             IF(IDHW(MHEP).NE.13) THEN
937
938               JMOHEP(2,LHEP) = RHEP
939
940             ELSE
941
942               RHEP = RHEP+1
943
944               JMOHEP(2,LHEP) = RHEP
945
946             ENDIF
947
948           ENDIF
949
950         ENDIF
951
952 C--Now the antiquarks
953
954         IF((IDHW(IHEP).GT.6.AND.IDHW(IHEP).LE.12).OR.
955
956      &     (IDHW(IHEP).GE.109.AND.IDHW(IHEP).LE.114)) THEN
957
958           IF(JDAHEP(2,IHEP).LT.STFSPT) THEN
959
960             LHEP = IHEP
961
962             MHEP = JDAHEP(2,IHEP)
963
964             RHEP = MHEP
965
966             IF(MHEP.GT.6) RHEP = JDAHEP(1,MHEP)
967
968 C--As from Rparity connect to antiparticle not particle
969
970             IF(IDHW(MHEP).NE.13) THEN
971
972               JDAHEP(2,LHEP) = RHEP
973
974             ELSE
975
976               JDAHEP(2,LHEP) = RHEP
977
978             ENDIF
979
980           ENDIF
981
982         ENDIF
983
984       ENDDO
985
986       END