1 #include "isajet/pilot.h"
2 SUBROUTINE DECPS1(IP,NADD,PGEN)
4 C Generate masses for uniform NADD-body phase space in DECPS2.
5 C Auxiliary routine for DECAY.
7 #if defined(CERNLIB_IMPNONE)
11 #include "isajet/itapes.inc"
12 #include "isajet/partcl.inc"
18 REAL WTMAX,SUM1,SUM2,SUM,RNEW,WT,A,B,C
19 INTEGER I,NADD1,J,I1,JJ1,JSAVE
21 C Function definitions.
23 #if defined(CERNLIB_SINGLE)
24 PCM(A,B,C)=SQRT((A-B-C)*(A+B+C)*(A-B+C)*(A+B-C))/(2.*A)
26 #if defined(CERNLIB_DOUBLE)
27 PCM(A,B,C)=DBLPCM(A,B,C)
30 DATA REDUCE/1.,1.,2.,5.,15./
32 C Calculate maximum phase-space weight.
39 SUM=SUM+PPTCL(5,NPTCL+I)
42 SUM2=SUM-PPTCL(5,NPTCL+1)
44 WTMAX=WTMAX*PCM(SUM1,SUM2,PPTCL(5,NPTCL+I))
45 SUM1=SUM1-PPTCL(5,NPTCL+I)
46 SUM2=SUM2-PPTCL(5,NPTCL+I+1)
49 C Generate masses for uniform NADD-body phase space.
59 IF(RNEW.LE.RND(J)) GO TO 210
67 SUM1=SUM1-PPTCL(5,NPTCL+I-1)
68 PGEN(5,I)=SUM1+RND(I)*(PGEN(5,1)-SUM)
69 IF(PGEN(5,I-1).LE.PGEN(5,I)+PPTCL(5,NPTCL+I-1)) GO TO 200
70 WT=WT*PCM(PGEN(5,I-1),PGEN(5,I),PPTCL(5,NPTCL+I-1))
72 IF(WT.LT.RANF()*WTMAX) GO TO 200