C----------------------------------------------------------------------- C The block contains simple lortenz boost code (taken from HERWIG) C BSTLOB transforms PI in rest frame of PS to the lab C BSTLOF transforms PI in lab to rest frame of PS C BSTLB4 performs the same task as BSTLOB but PI and PF are 4 not 5 vectors C BSTLF4 performs the same task as BSTLOF but PI and PF are 4 not 5 vectors C----------------------------------------------------------------------- CDECK ID>, BSTLOB. *CMZ :- -05/11/95 19.33.42 by Mike Seymour *-- Author : Adapted by Bryan Webber C----------------------------------------------------------------------- SUBROUTINE BSTLOB(PS,PI,PF) C----------------------------------------------------------------------- C TRANSFORMS PI (GIVEN IN REST FRAME OF PS) INTO PF (IN LAB) C N.B. P(1,2,3,4,5) = (PX,PY,PZ,E,M) C----------------------------------------------------------------------- DOUBLE PRECISION PS(5),PI(5),PF(5) CALL BSTLB4(PS,PI,PF) PF(5)= PI(5) END CDECK ID>, BSTLB4. *CMZ :- -05/11/95 19.33.42 by Mike Seymour *-- Author : Adapted by Bryan Webber C----------------------------------------------------------------------- SUBROUTINE BSTLB4(PS,PI,PF) C----------------------------------------------------------------------- C TRANSFORMS PI (GIVEN IN REST FRAME OF PS) INTO PF (IN LAB) C N.B. P(1,2,3,4) = (PX,PY,PZ,E); PS(5)=M C----------------------------------------------------------------------- DOUBLE PRECISION PF4,FN,PS(5),PI(4),PF(4) IF (PS(4).EQ.PS(5)) THEN PF(1)= PI(1) PF(2)= PI(2) PF(3)= PI(3) PF(4)= PI(4) ELSE PF4 = (PI(1)*PS(1)+PI(2)*PS(2) & +PI(3)*PS(3)+PI(4)*PS(4))/PS(5) FN = (PF4+PI(4)) / (PS(4)+PS(5)) PF(1)= PI(1) + FN*PS(1) PF(2)= PI(2) + FN*PS(2) PF(3)= PI(3) + FN*PS(3) PF(4)= PF4 END IF END CDECK ID>, BSTLOF. *CMZ :- -05/11/95 19.33.42 by Mike Seymour *-- Author : Adapted by Bryan Webber C----------------------------------------------------------------------- SUBROUTINE BSTLOF(PS,PI,PF) C----------------------------------------------------------------------- C TRANSFORMS PI (GIVEN IN LAB) INTO PF (IN REST FRAME OF PS) C N.B. P(1,2,3,4,5) = (PX,PY,PZ,E,M) C----------------------------------------------------------------------- DOUBLE PRECISION PS(5),PI(5),PF(5) CALL BSTLF4(PS,PI,PF) PF(5)= PI(5) END CDECK ID>, BSTLF4. *CMZ :- -05/11/95 19.33.42 by Mike Seymour *-- Author : Adapted by Bryan Webber C----------------------------------------------------------------------- SUBROUTINE BSTLF4(PS,PI,PF) C----------------------------------------------------------------------- C TRANSFORMS PI (GIVEN IN LAB) INTO PF (IN REST FRAME OF PS) C N.B. P(1,2,3,4) = (PX,PY,PZ,E); PS(5)=M C----------------------------------------------------------------------- DOUBLE PRECISION PF4,FN,PS(5),PI(4),PF(4) IF (PS(4).EQ.PS(5)) THEN PF(1)= PI(1) PF(2)= PI(2) PF(3)= PI(3) PF(4)= PI(4) ELSE PF4 = (PI(4)*PS(4)-PI(3)*PS(3) & -PI(2)*PS(2)-PI(1)*PS(1))/PS(5) FN = (PF4+PI(4)) / (PS(4)+PS(5)) PF(1)= PI(1) - FN*PS(1) PF(2)= PI(2) - FN*PS(2) PF(3)= PI(3) - FN*PS(3) PF(4)= PF4 END IF END