4 *CMZ :- -18/10/93 10.21.56 by Mike Seymour
6 *-- Author : Mike Seymour
8 C-----------------------------------------------------------------------
10 SUBROUTINE HWUBST(IOPT)
12 C-----------------------------------------------------------------------
14 C BOOST THE ENTIRE EVENT RECORD TO (IOPT=1) OR FROM (IOPT=0) ITS
16 C CENTRE-OF-MASS FRAME, WITH INCOMING HADRONS ON Z-AXIS
18 C-----------------------------------------------------------------------
20 INCLUDE 'HERWIG61.INC'
22 DOUBLE PRECISION PBOOST(5),RBOOST(3,3)
24 INTEGER IOPT,IHEP,BOOSTD,IHAD
26 SAVE BOOSTD,PBOOST,RBOOST
30 IF (IERROR.NE.0) RETURN
34 C---FIND FIRST INCOMING HADRON
38 IF (JDAHEP(1,IHAD).NE.0) IHAD=JDAHEP(1,IHAD)
40 C---IF WE'RE ALREADY IN THE RIGHT FRAME, DON'T DO ANYTHING
42 IF (PHEP(1,3)**2+PHEP(2,3)**2+PHEP(3,3)**2.EQ.ZERO .AND.
44 & PHEP(1,IHAD)**2+PHEP(2,IHAD)**2.EQ.ZERO) RETURN
46 C---FIND AND APPLY BOOST
48 CALL HWVEQU(5,PHEP(1,3),PBOOST)
52 CALL HWULOF(PBOOST,PHEP(1,IHEP),PHEP(1,IHEP))
54 CALL HWULOF(PBOOST,VHEP(1,IHEP),VHEP(1,IHEP))
58 CALL HWULOF(PBOOST,VTXPIP,VTXPIP)
60 C---FIND AND APPLY ROTATION TO PUT IT ON Z-AXIS
62 CALL HWUROT(PHEP(1,IHAD),ONE,ZERO,RBOOST)
66 CALL HWUROF(RBOOST,PHEP(1,IHEP),PHEP(1,IHEP))
68 CALL HWUROF(RBOOST,VHEP(1,IHEP),VHEP(1,IHEP))
72 CALL HWUROF(RBOOST,VTXPIP,VTXPIP)
74 C---ENSURE THAT WE ONLY EVER UNBOOST THE SAME EVENT THAT WE BOOSTED
76 C (BEARING IN MIND THAT NWGTS IS UPDATED AFTER GENERATING THE WEIGHT)
80 ELSEIF (IOPT.EQ.0) THEN
82 IF (BOOSTD.NE.NWGTS) RETURN
84 C---UNDO ROTATION AND BOOST
88 CALL HWUROB(RBOOST,PHEP(1,IHEP),PHEP(1,IHEP))
90 CALL HWULOB(PBOOST,PHEP(1,IHEP),PHEP(1,IHEP))
92 CALL HWUROB(RBOOST,VHEP(1,IHEP),VHEP(1,IHEP))
94 CALL HWULB4(PBOOST,VHEP(1,IHEP),VHEP(1,IHEP))