]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ISAJET/code/eemax.F
EffC++ warnings corrected.
[u/mrichter/AliRoot.git] / ISAJET / code / eemax.F
1 #include "isajet/pilot.h"
2       SUBROUTINE EEMAX
3 C          FIND UPPER BOUND FOR E+E- CROSS SECTION SUMMED OVER ALLOWED
4 C          TYPES.
5 C          VER 7.17: ENSURE XJMIN < XX < XJMAX
6 C          VER 7.42: ENACT BREMSSTRAHLUNG EFFECT
7 #if defined(CERNLIB_IMPNONE)
8       IMPLICIT NONE
9 #endif
10 #include "isajet/itapes.inc"
11 #include "isajet/jetsig.inc"
12 #include "isajet/eepar.inc"
13 #include "isajet/jetlim.inc"
14 #include "isajet/jetpar.inc"
15 #include "isajet/primar.inc"
16 #include "isajet/xmssm.inc"
17 #include "isajet/sssm.inc"
18 #include "isajet/brembm.inc"
19 C
20       REAL ETEST(3),XDI(3),RSH,XD,XDUMMY,SSFEL,DX,XX
21       INTEGER NET,NXD,NX,NX1,IET,IXD,IX,I
22 C
23       NET=1
24       NXD=1
25       ETEST(1)=ECM
26 C     Initialize beam/brem spectra convolution and fit
27       IF (IBEAM) THEN
28         QSQBM=RSHMAX**2
29         EB=RSHMAX/2.
30         WRITE(ITLIS,*) '   BEGINNING BREM/BEAM CONVOLUTION AND FIT...'
31         XDUMMY=SSFEL(.1,1)
32       END IF
33       IF (IBREM) THEN
34         NET=3
35         NXD=3
36         ETEST(1)=RSHMIN
37         IF (RSHMAX.GT.AMZ.AND.RSHMIN.LT.AMZ) THEN
38           ETEST(2)=AMZ
39         ELSE
40           ETEST(2)=RSHMIN+(RSHMAX-RSHMIN)/2.
41         END IF
42         ETEST(3)=MIN(RSHMAX,.999*ECM)
43       END IF
44       SGMXEE=0.
45       NX=50
46       IF(FIXYJ(1)) NX=1
47       NX1=NX+1
48       DX=(XJMAX(1)-XJMIN(1))/NX
49 C          SCAN IN X=COS(THETA)
50       DO IET=1,NET
51        RSH=ETEST(IET)
52        SHAT=RSH*RSH
53        XDI(1)=-(1.-SHAT/SCM)
54        XDI(2)=0.
55        XDI(3)=-XDI(1)
56        DO IXD=1,NXD
57         XD=XDI(IXD)
58         X1=(XD+SQRT(XD**2+4*SHAT/SCM))/2.
59         X2=X1-XD
60         DO 100 IX=1,NX1
61          XX=XJMIN(1)+DX*(IX-1)
62          IF(XX.LT.XJMIN(1)) XX=XJMIN(1)
63          IF(XX.GT.XJMAX(1)) XX=XJMAX(1)
64          CTH(1)=XX
65          CTH(2)=-XX
66          DO 110 I=1,2
67          XJ(I)=CTH(I)
68          TH(I)=ACOS(CTH(I))
69          STH(I)=SIN(TH(I))
70          PT(I)=HALFE*STH(I)
71          IF(IX.EQ.1) YJ(I)=YJMIN(I)
72          IF(IX.EQ.NX1) YJ(I)=YJMAX(I)
73          IF(IX.GT.1.AND.IX.LT.NX1)
74      1   YJ(I)=.5*ALOG((1.+CTH(I))/(1.-CTH(I)))
75 110      CONTINUE
76 C          COMPUTE CROSS SECTION
77          IF (GOMSSM) THEN
78            CALL SIGSSE
79          ELSE
80            CALL SIGEE
81          END IF
82          IF(SIGMA.GT.SGMXEE) SGMXEE=SIGMA
83 100     CONTINUE
84        END DO
85       END DO
86 C          REQUIRE CROSS SECTION BE POSITIVE
87       WRITE(ITLIS,1000) SGMXEE
88 1000  FORMAT(///' MAXIMUM D(SIGMA)/D(COS THETA) = ',E12.4)
89       IF(SGMXEE.GT.0) RETURN
90       STOP 99
91       END