* * $Id: hwubst.F,v 1.1.1.1 1996/03/08 17:02:17 mclareni Exp $ * * $Log: hwubst.F,v $ * Revision 1.1.1.1 1996/03/08 17:02:17 mclareni * Herwig58 * * *CMZ : 29/08/94 11.51.48 by Unknown *-- Author : CDECK ID>, HWUBST. *CMZ :- -18/10/93 10.21.56 by Mike Seymour *-- Author : Mike Seymour C----------------------------------------------------------------------- SUBROUTINE HWUBST(IOPT) C BOOST THE ENTIRE EVENT RECORD TO (IOPT=1) OR FROM (IOPT=0) ITS C CENTRE-OF-MASS FRAME, WITH INCOMING HADRONS ON Z-AXIS C----------------------------------------------------------------------- #include "herwig58/herwig58.inc" INTEGER IOPT,IHEP,BOOSTD,IHAD DOUBLE PRECISION PBOOST(5),RBOOST(3,3) SAVE BOOSTD,PBOOST,RBOOST DATA BOOSTD/-1/ IF (IERROR.NE.0) RETURN IF (IOPT.EQ.1) THEN C---FIND FIRST INCOMING HADRON IHAD=1 IF (JDAHEP(1,IHAD).NE.0) IHAD=JDAHEP(1,IHAD) C---IF WE'RE ALREADY IN THE RIGHT FRAME, DON'T DO ANYTHING IF (PHEP(1,3)**2+PHEP(2,3)**2+PHEP(3,3)**2.EQ.0 .AND. & PHEP(1,IHAD)**2+PHEP(2,IHAD)**2.EQ.0) RETURN C---FIND AND APPLY BOOST CALL HWVEQU(5,PHEP(1,3),PBOOST) DO 100 IHEP=1,NHEP CALL HWULOF(PBOOST,PHEP(1,IHEP),PHEP(1,IHEP)) 100 CONTINUE C---FIND AND APPLY ROTATION TO PUT IT ON Z-AXIS CALL HWUROT(PHEP(1,IHAD),ONE,ZERO,RBOOST) DO 110 IHEP=1,NHEP CALL HWUROF(RBOOST,PHEP(1,IHEP),PHEP(1,IHEP)) 110 CONTINUE C---ENSURE THAT WE ONLY EVER UNBOOST THE SAME EVENT THAT WE BOOSTED C (BEARING IN MIND THAT NWGTS IS UPDATED AFTER GENERATING THE WEIGHT) BOOSTD=NWGTS+1 ELSEIF (IOPT.EQ.0) THEN IF (BOOSTD.NE.NWGTS) RETURN C---UNDO ROTATION AND BOOST DO 200 IHEP=1,NHEP CALL HWUROB(RBOOST,PHEP(1,IHEP),PHEP(1,IHEP)) CALL HWULOB(PBOOST,PHEP(1,IHEP),PHEP(1,IHEP)) 200 CONTINUE ENDIF END