]> git.uio.no Git - u/mrichter/AliRoot.git/blame - ISAJET/code/decps1.F
Coding conventions (Gustavo)
[u/mrichter/AliRoot.git] / ISAJET / code / decps1.F
CommitLineData
0795afa3 1#include "isajet/pilot.h"
2 SUBROUTINE DECPS1(IP,NADD,PGEN)
3C
4C Generate masses for uniform NADD-body phase space in DECPS2.
5C Auxiliary routine for DECAY.
6C
7#if defined(CERNLIB_IMPNONE)
8 IMPLICIT NONE
9#endif
10C
11#include "isajet/itapes.inc"
12#include "isajet/partcl.inc"
13C
14 INTEGER IP,NADD
15 REAL PGEN(5,5)
16 REAL REDUCE(5),RND(5)
17 REAL RANF,PCM,DBLPCM
18 REAL WTMAX,SUM1,SUM2,SUM,RNEW,WT,A,B,C
19 INTEGER I,NADD1,J,I1,JJ1,JSAVE
20C
21C Function definitions.
22C
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)
25#endif
26#if defined(CERNLIB_DOUBLE)
27 PCM(A,B,C)=DBLPCM(A,B,C)
28#endif
29C
30 DATA REDUCE/1.,1.,2.,5.,15./
31C
32C Calculate maximum phase-space weight.
33C
34 IF(NADD.LE.2) RETURN
35 NADD1=NADD-1
36 WTMAX=1./REDUCE(NADD)
37 SUM=0
38 DO 100 I=1,NADD
39 SUM=SUM+PPTCL(5,NPTCL+I)
40100 CONTINUE
41 SUM1=PGEN(5,1)
42 SUM2=SUM-PPTCL(5,NPTCL+1)
43 DO 110 I=1,NADD1
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)
47110 CONTINUE
48C
49C Generate masses for uniform NADD-body phase space.
50C
51200 CONTINUE
52 RND(1)=1.
53 DO 210 I=2,NADD1
54 RNEW=RANF()
55 I1=I-1
56 DO 220 JJ1=1,I1
57 J=I-JJ1
58 JSAVE=J+1
59 IF(RNEW.LE.RND(J)) GO TO 210
60 RND(JSAVE)=RND(J)
61220 CONTINUE
62210 RND(JSAVE)=RNEW
63 RND(NADD)=0.
64 WT=1.
65 SUM1=SUM
66 DO 230 I=2,NADD
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))
71230 CONTINUE
72 IF(WT.LT.RANF()*WTMAX) GO TO 200
73C
74 RETURN
75 END