1 #include "isajet/pilot.h"
4 C Calculate an envelope
5 C D(SIGMA)/D(PT**2)D(Y1)D(Y2) < PTFUN1*PT**PTFUN2
6 C used to generate initial PT values.
8 #if defined(CERNLIB_IMPNONE)
11 #include "isajet/itapes.inc"
12 #include "isajet/keys.inc"
13 #include "isajet/const.inc"
14 #include "isajet/jetlim.inc"
15 #include "isajet/ptpar.inc"
16 #include "isajet/jetpar.inc"
17 #include "isajet/jetsig.inc"
20 EQUIVALENCE(P(1),PCPY(1))
21 REAL PTS(51),SIGSAV(51),STOR(24),DPT,DPTMIN,A,B,DEVMAX,DEV
23 INTEGER I,NPT,NDIV1,NDIV2,I1,I2
40 IF(FIXPT(1).OR.FIXPT(2)) GOTO 300
41 DPT=(PTMAX(1)-PTMIN(1))/25.
42 IF(DPT.LT.DPTMIN) DPT=DPTMIN
43 NPT=(PTMAX(1)-PTMIN(1))/DPT+1
47 C Calculate sigma vs PT at Y1=Y2=0
49 PT(1)=PTMIN(1)+DPT*(I-1)
64 IF(SIGMA.EQ.0.) GO TO 9999
69 C Fit to power and shift to get envelope
71 CALL LSTSQ(PTS,SIGSAV,NPT,A,B)
74 DEV=SIGSAV(I)-A-B*PTS(I)
75 IF(DEV.GT.DEVMAX) DEVMAX=DEV
78 C Scan in Y1, Y2 for 3 PT values
81 IF(I.EQ.1) PT(1)=PTMIN(1)
82 IF(I.EQ.2) PT(1)=(PTMIN(1)+PTMAX(1))/2.
83 IF(I.EQ.3) PT(1)=PTMAX(1)
85 NDIV1=YJMAX(1)-YJMIN(1)
86 IF(NDIV1.GT.20) NDIV1=20
87 NDIV2=YJMAX(2)-YJMIN(2)
88 IF(NDIV2.GT.20) NDIV2=20
89 IF(NDIV1.LE.1) NDIV1=2
90 IF(NDIV2.LE.1) NDIV2=2
91 DY1=(YJMAX(1)-YJMIN(1))/(NDIV1-1)
92 DY2=(YJMAX(2)-YJMIN(2))/(NDIV2-1)
97 YJ(1)=YJMIN(1)+(I1-1)*DY1
99 STH(1)=SQRT(1.-CTH(1)**2)
100 IF(STH(1).EQ.0) GOTO 103
105 YJ(2)=YJMIN(2)+(I2-1)*DY2
107 STH(2)=SQRT(1.-CTH(2)**2)
108 IF(STH(2).EQ.0) GOTO 103
119 ELSEIF(KEYS(10)) THEN
122 IF(SIGMA.EQ.0.) GO TO 102
123 DEV=ALOG(SIGMA)-A-B*ALOG(PT(1))
124 IF(DEV.GT.DEVMAX) DEVMAX=DEV
134 C Use envelope to generate initial PT values
137 PTGEN2=PTMAX(1)**B1-PTGEN1
142 C Write envelope parameters on listing
144 WRITE(ITLIS,200) PTFUN1,PTFUN2,PTGEN1,PTGEN2,PTGEN3
145 200 FORMAT(//10X,'FIT AT Y1=Y2=0 IS D(SIGMA)/D(PT**2)D(Y1)D(Y2)='
146 C ,E11.5,'*PT**(',E11.5,')'//
147 C 10X,'PT FIRST GENERATED BY PT=(',E11.5,'+',E11.5,'*RANF)**(',
155 IF(FIXPT(1)) PT(2)=PT(1)
156 IF(FIXPT(2)) PT(1)=PT(2)
167 ELSEIF(KEYS(10)) THEN
176 C Fit fails if SIGMA=0 in specified range
177 9999 WRITE(ITLIS,1010) PT(1)
178 1010 FORMAT(//' ERROR IN PTFUN...SIGMA=0 FOR PT = ',E12.4/
179 1' CHECK YOUR LIMITS.')