1 #include "isajet/pilot.h"
2 SUBROUTINE DECPS2(IP,NADD,PGEN,PREST,BETA,GAMMA)
4 C Carry out decays using masses from DECPS1 or special matrix
6 C Auxiliary routine for DECAY.
8 #if defined(CERNLIB_IMPNONE)
12 #include "isajet/itapes.inc"
13 #include "isajet/partcl.inc"
14 #include "isajet/const.inc"
17 REAL PGEN(5,5),PREST(4,6)
20 REAL QCM,PHI,A,B,C,GAMMA,BP
21 INTEGER I,J,NADD1,II,K,K1
23 C Function definitions.
25 #if defined(CERNLIB_SINGLE)
26 PCM(A,B,C)=SQRT((A-B-C)*(A+B+C)*(A-B+C)*(A+B-C))/(2.*A)
28 #if defined(CERNLIB_DOUBLE)
29 PCM(A,B,C)=DBLPCM(A,B,C)
32 C Carry out two-body decays in PGEN frames.
37 QCM=PCM(PGEN(5,I),PGEN(5,I+1),PPTCL(5,NPTCL+I))
40 U(1)=SQRT(1.-U(3)**2)*COS(PHI)
41 U(2)=SQRT(1.-U(3)**2)*SIN(PHI)
43 PPTCL(J,NPTCL+I)=QCM*U(J)
44 PGEN(J,I+1)=-PPTCL(J,NPTCL+I)
46 PPTCL(4,NPTCL+I)=SQRT(QCM**2+PPTCL(5,NPTCL+I)**2)
47 PGEN(4,I+1)=SQRT(QCM**2+PGEN(5,I+1)**2)
51 PPTCL(J,NPTCL+NADD)=PGEN(J,NADD)
54 C Boost PGEN frames to lab frame, saving momenta in rest frame.
59 BETA(J)=PGEN(J,I)/PGEN(4,I)
61 GAMMA=PGEN(4,I)/PGEN(5,I)
64 BP=BETA(1)*PPTCL(1,K1)+BETA(2)*PPTCL(2,K1)+BETA(3)*PPTCL(3,K1)
66 PREST(J,K)=PPTCL(J,K1)
67 PPTCL(J,K1)=PPTCL(J,K1)+GAMMA*BETA(J)*(PPTCL(4,K1)
68 $ +BP*GAMMA/(GAMMA+1.))
70 PREST(4,K)=PPTCL(4,K1)
71 PPTCL(4,K1)=GAMMA*(PPTCL(4,K1)+BP)