]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ISAJET/code/gettot.F
changes for proper protection against failed retrieval of CDB Reco object (moved...
[u/mrichter/AliRoot.git] / ISAJET / code / gettot.F
1 #include "isajet/pilot.h"
2       SUBROUTINE GETTOT(PRFLAG)
3 C
4 C          Calculate total cross section within jet limits.
5 C          If PRFLAG=.TRUE. print summary.
6 C
7 #if defined(CERNLIB_IMPNONE)
8       IMPLICIT NONE
9 #endif
10 #include "isajet/itapes.inc"
11 #include "isajet/final.inc"
12 #include "isajet/times.inc"
13 #include "isajet/totals.inc"
14 #include "isajet/keys.inc"
15 #include "isajet/q1q2.inc"
16 #include "isajet/const.inc"
17 #include "isajet/jetlim.inc"
18 #include "isajet/dylim.inc"
19 #include "isajet/types.inc"
20 #include "isajet/idrun.inc"
21 #include "isajet/seed.inc"
22 #include "isajet/primar.inc"
23 #include "isajet/isloop.inc"
24 #include "isajet/mgsigs.inc"
25 C
26       REAL DELPHI,SIGF2,FRAC,TMEAN,ALUM2,SIGF3
27       LOGICAL PRFLAG
28       INTEGER I,II,KK
29       REAL TMP
30       LOGICAL MGFLAG
31 C
32 C          Calculate jet cross sections
33 C
34       SIGF=0.
35       ALUM=0.
36       ACCEPT=0.
37       NKINF=NKINPT
38 C          For 2-body processes we can use the totals.
39 C          For MadGraph we must sum the partial cross sections.
40       MGFLAG=KEYS(12)
41       IF(NKINPT.GT.0.AND..NOT.MGFLAG) THEN
42         SIGF=SUMWT/NKINPT
43         DELPHI=2.*PI
44         IF(KEYS(1).OR.KEYS(2).OR.KEYS(5).OR.KEYS(6).OR.KEYS(8)
45      $  .OR.KEYS(9)) THEN
46           DELPHI=PHIMAX(1)-PHIMIN(1)
47         ELSEIF(KEYS(3).AND..NOT.STDDY) THEN
48           DELPHI=PHWMAX-PHWMIN
49         ENDIF
50         SIGF=SIGF*DELPHI/(2.*PI)
51       ELSEIF(MGFLAG) THEN
52         DO 10 I=1,NSIG8
53           SIGF=SIGF+WTSUM8(I)/NWT8(I)
54 10      CONTINUE
55       ENDIF
56 C
57 C          Print summary if desired
58 C
59       IF(.NOT.PRFLAG) RETURN
60 C
61 C          Print header and title
62       WRITE(ITLIS,100)
63 100   FORMAT('1',30('*')/' *',28X,'*'/
64      1' *',5X,'ISAJET RUN SUMMARY',5X,'*'/
65      2' *',28X,'*'/1X,30('*')//)
66       WRITE(ITLIS,101) TITLE
67 101   FORMAT(//11X,10A8)
68       IF(NKINPT.EQ.0) GO TO 300
69 C
70 C          Print cross section
71       WRITE(ITLIS,102) NKINPT
72 102   FORMAT(//' NO. KINEMATIC POINTS GENERATED          =',I13)
73       SIGF2=SIGF*NEVOLV*NFRGMN
74       WRITE(ITLIS,103) SIGF2
75 103   FORMAT(//' MONTE CARLO JET CROSS SECTION           =',E13.4,' MB')
76       IF(SIGF.EQ.0.) WRITE(ITLIS,111)
77 111   FORMAT(' CROSS SECTION IS ZERO IF VARIABLES ARE FIXED')
78 C
79 C          Print W decay acceptance
80       IF(KEYS(3)) THEN
81         ACCEPT=FLOAT(NKEEP)/FLOAT(NWGEN)
82         WRITE(ITLIS,105) ACCEPT
83 105     FORMAT(//' ACCEPTANCE FOR W DECAYS                 =',E13.4)
84       ELSEIF(KEYS(7)) THEN
85         ACCEPT=FLOAT(NKEEP)/FLOAT(NWGEN)
86         WRITE(ITLIS,106) ACCEPT
87 106     FORMAT(//' ACCEPTANCE FOR H DECAYS                 =',E13.4)
88       ENDIF
89 C
90 C          Print luminosity
91       IF(SIGF.GT.0.) THEN
92         ALUM=NEVENT/SIGF
93         IF(KEYS(4)) ALUM=NKINPT/SIGF
94         WRITE(ITLIS,104) ALUM
95 104     FORMAT(//' EQUIVALENT INTEGRAL LUMINOSITY          =',E13.4,
96      $  ' /MB')
97       ENDIF
98 C
99 C          Print final multijet cross sections
100       IF(KEYS(12)) THEN
101         WRITE(ITLIS,9001)
102 9001    FORMAT(//6X,'FINAL MULTIJET CROSS SECTIONS'/
103      $  6X,'PROCESS',18X,'SIGMA',10X,'MAX(SIGMA)')
104         DO 992 I=1,NSIG8
105           II=ISORT8(I)
106           TMP=WTSUM8(II)/NWT8(II)
107           WRITE(ITLIS,9002) (IDENT8(KK,II),KK=1,5),TMP,WTMAX8(II)
108 9002      FORMAT(2X,5I5,2E15.5)
109 992     CONTINUE
110         WRITE(ITLIS,*)
111       ENDIF
112 C
113 C          Print statistics for multiple evolution and fragmentation
114       IF(NEVOLV.GT.1.OR.NFRGMN.GT.1) THEN
115         FRAC=FLOAT(IEVGEN)/FLOAT(IEVT)
116         WRITE(ITLIS,201) IEVGEN
117 201     FORMAT(//' NUMBER OF ACCEPTED EVENTS               =',I13)
118         WRITE(ITLIS,202) FRAC
119 202     FORMAT(' FRACTION OF ACCEPTED EVENTS             =',E13.4)
120         SIGF3=SIGF2*FRAC
121         WRITE(ITLIS,203) SIGF3
122 203     FORMAT(' CROSS SECTION FOR ACCEPTED EVENTS       =',E13.4)
123       ENDIF
124 C
125 C          Print mean time per event
126 300   TMEAN=(TIME2-TIME1)/NEVENT
127       WRITE(ITLIS,301) TMEAN
128 301   FORMAT(//' MEAN TIME PER GENERATED EVENT           =',E13.4,
129      $' SEC')
130 C
131 C          Print final seed
132       CALL RANFMT
133       WRITE(ITLIS,302) XSEED
134 302   FORMAT(//' FINAL RANDOM NUMBER SEED                =',A24)
135 C
136 C          Print run identifier
137       WRITE(ITLIS,303) IDG
138 303   FORMAT(//' END OF ISAJET RUN                       =',2I9.6)
139       RETURN
140       END