]>
Commit | Line | Data |
---|---|---|
3820ca8e | 1 | |
2 | CDECK ID>, HWUBST. | |
3 | ||
4 | *CMZ :- -18/10/93 10.21.56 by Mike Seymour | |
5 | ||
6 | *-- Author : Mike Seymour | |
7 | ||
8 | C----------------------------------------------------------------------- | |
9 | ||
10 | SUBROUTINE HWUBST(IOPT) | |
11 | ||
12 | C----------------------------------------------------------------------- | |
13 | ||
14 | C BOOST THE ENTIRE EVENT RECORD TO (IOPT=1) OR FROM (IOPT=0) ITS | |
15 | ||
16 | C CENTRE-OF-MASS FRAME, WITH INCOMING HADRONS ON Z-AXIS | |
17 | ||
18 | C----------------------------------------------------------------------- | |
19 | ||
20 | INCLUDE 'HERWIG61.INC' | |
21 | ||
22 | DOUBLE PRECISION PBOOST(5),RBOOST(3,3) | |
23 | ||
24 | INTEGER IOPT,IHEP,BOOSTD,IHAD | |
25 | ||
26 | SAVE BOOSTD,PBOOST,RBOOST | |
27 | ||
28 | DATA BOOSTD/-1/ | |
29 | ||
30 | IF (IERROR.NE.0) RETURN | |
31 | ||
32 | IF (IOPT.EQ.1) THEN | |
33 | ||
34 | C---FIND FIRST INCOMING HADRON | |
35 | ||
36 | IHAD=1 | |
37 | ||
38 | IF (JDAHEP(1,IHAD).NE.0) IHAD=JDAHEP(1,IHAD) | |
39 | ||
40 | C---IF WE'RE ALREADY IN THE RIGHT FRAME, DON'T DO ANYTHING | |
41 | ||
42 | IF (PHEP(1,3)**2+PHEP(2,3)**2+PHEP(3,3)**2.EQ.ZERO .AND. | |
43 | ||
44 | & PHEP(1,IHAD)**2+PHEP(2,IHAD)**2.EQ.ZERO) RETURN | |
45 | ||
46 | C---FIND AND APPLY BOOST | |
47 | ||
48 | CALL HWVEQU(5,PHEP(1,3),PBOOST) | |
49 | ||
50 | DO 100 IHEP=1,NHEP | |
51 | ||
52 | CALL HWULOF(PBOOST,PHEP(1,IHEP),PHEP(1,IHEP)) | |
53 | ||
54 | CALL HWULOF(PBOOST,VHEP(1,IHEP),VHEP(1,IHEP)) | |
55 | ||
56 | 100 CONTINUE | |
57 | ||
58 | CALL HWULOF(PBOOST,VTXPIP,VTXPIP) | |
59 | ||
60 | C---FIND AND APPLY ROTATION TO PUT IT ON Z-AXIS | |
61 | ||
62 | CALL HWUROT(PHEP(1,IHAD),ONE,ZERO,RBOOST) | |
63 | ||
64 | DO 110 IHEP=1,NHEP | |
65 | ||
66 | CALL HWUROF(RBOOST,PHEP(1,IHEP),PHEP(1,IHEP)) | |
67 | ||
68 | CALL HWUROF(RBOOST,VHEP(1,IHEP),VHEP(1,IHEP)) | |
69 | ||
70 | 110 CONTINUE | |
71 | ||
72 | CALL HWUROF(RBOOST,VTXPIP,VTXPIP) | |
73 | ||
74 | C---ENSURE THAT WE ONLY EVER UNBOOST THE SAME EVENT THAT WE BOOSTED | |
75 | ||
76 | C (BEARING IN MIND THAT NWGTS IS UPDATED AFTER GENERATING THE WEIGHT) | |
77 | ||
78 | BOOSTD=NWGTS+1 | |
79 | ||
80 | ELSEIF (IOPT.EQ.0) THEN | |
81 | ||
82 | IF (BOOSTD.NE.NWGTS) RETURN | |
83 | ||
84 | C---UNDO ROTATION AND BOOST | |
85 | ||
86 | DO 200 IHEP=1,NHEP | |
87 | ||
88 | CALL HWUROB(RBOOST,PHEP(1,IHEP),PHEP(1,IHEP)) | |
89 | ||
90 | CALL HWULOB(PBOOST,PHEP(1,IHEP),PHEP(1,IHEP)) | |
91 | ||
92 | CALL HWUROB(RBOOST,VHEP(1,IHEP),VHEP(1,IHEP)) | |
93 | ||
94 | CALL HWULB4(PBOOST,VHEP(1,IHEP),VHEP(1,IHEP)) | |
95 | ||
96 | 200 CONTINUE | |
97 | ||
98 | ENDIF | |
99 | ||
100 | END |