2
c Example analysis for "p p > e+ ve [QCD]" process.
3
c Example analysis for "p p > e- ve~ [QCD]" process.
4
c Example analysis for "p p > mu+ vm [QCD]" process.
5
c Example analysis for "p p > mu- vm~ [QCD]" process.
6
c Example analysis for "p p > ta+ vt [QCD]" process.
7
c Example analysis for "p p > ta- vt~ [QCD]" process.
9
C----------------------------------------------------------------------
11
C DUMMY IF HBOOK IS USED
12
C----------------------------------------------------------------------
16
C----------------------------------------------------------------------
18
C USER'S ROUTINE FOR INITIALIZATION
19
C----------------------------------------------------------------------
21
include 'reweight0.inc'
25
integer nwgt,max_weight,nwgt_analysis
27
common/c_analysis/nwgt_analysis
28
parameter (max_weight=maxscales*maxscales+maxpdfs+1)
29
character*15 weights_info(max_weight)
30
common/cwgtsinfo/weights_info
33
ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
36
weights_info(nwgt)="central value "
37
ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
42
call mbook(l+1,'total rate '//weights_info(kk)//cc(i),
44
call mbook(l+2,'lep rapidity '//weights_info(kk)//cc(i),
46
call mbook(l+3,'lep pt '//weights_info(kk)//cc(i),
48
call mbook(l+4,'et miss '//weights_info(kk)//cc(i),
50
call mbook(l+5,'trans. mass '//weights_info(kk)//cc(i),
52
call mbook(l+6,'w rapidity '//weights_info(kk)//cc(i),
54
call mbook(l+7,'w pt '//weights_info(kk)//cc(i),
56
call mbook(l+8,'cphi[l,vl] '//weights_info(kk)//cc(i),
63
C----------------------------------------------------------------------
65
C USER'S ROUTINE FOR TERMINAL CALCULATIONS, HISTOGRAM OUTPUT, ETC
66
C----------------------------------------------------------------------
69
INTEGER I,J,KK,l,nwgt_analysis
72
common/c_analysis/nwgt_analysis
73
OPEN(UNIT=99,FILE='HERLL.TOP',STATUS='UNKNOWN')
74
C XNORM IS SUCH THAT THE CROSS SECTION PER BIN IS IN PB, SINCE THE HERWIG
75
C WEIGHT IS IN NB, AND CORRESPONDS TO THE AVERAGE CROSS SECTION
76
XNORM=1.D3/DFLOAT(NEVHEP)
80
CALL MOPERA(I+NPL,'F',I+NPL,I+NPL,(XNORM),0.D0)
87
call multitop(NPL+l+1,NPL-1,3,2,'total rate ',' ','LIN')
88
call multitop(NPL+l+2,NPL-1,3,2,'lep rapidity ',' ','LIN')
89
call multitop(NPL+l+3,NPL-1,3,2,'lep pt ',' ','LOG')
90
call multitop(NPL+l+4,NPL-1,3,2,'et miss ',' ','LOG')
91
call multitop(NPL+l+5,NPL-1,3,2,'trans. mass ',' ','LOG')
92
call multitop(NPL+l+6,NPL-1,3,2,'w rapidity ',' ','LIN')
93
call multitop(NPL+l+7,NPL-1,3,2,'w pt ',' ','LOG')
94
call multitop(NPL+l+8,NPL-1,3,2,'cphi[l,vl] ',' ','LOG')
100
C----------------------------------------------------------------------
102
C USER'S ROUTINE TO ANALYSE DATA FROM EVENT
103
C----------------------------------------------------------------------
105
include 'reweight0.inc'
106
DOUBLE PRECISION HWVDOT,PSUM(4),PPV(5),PTW,YW,YE,PPL(5),PPLB(5),
107
& PTE,PLL,PTLB,PLLB,var,mtr,etmiss,cphi
108
INTEGER ICHSUM,ICHINI,IHEP,IV,IFV,IST,ID,IJ,ID1,JPR,IDENT,
109
# ILL,ILLB,IHRD,NL,NN
110
LOGICAL DIDSOF,FOUNDL,FOUNDN,ISL,ISN
111
REAL*8 PI,getrapidity
112
PARAMETER (PI=3.14159265358979312D0)
113
REAL*8 WWW0,TINY,SIGNL,SIGNN
116
integer nwgt_analysis,max_weight
117
common/c_analysis/nwgt_analysis
118
parameter (max_weight=maxscales*maxscales+maxpdfs+1)
119
double precision ww(max_weight),www(max_weight)
122
IF(MOD(NEVHEP,10000).EQ.0)RETURN
123
ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
126
ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
127
IF (WW(1).EQ.0D0) THEN
128
WRITE(*,*)'WW(1) = 0. Stopping'
131
C CHOOSE IDENT = 11 FOR E - NU_E
132
C IDENT = 13 FOR MU - NU_MU
133
C IDENT = 15 FOR TAU - NU_TAU
135
C INCOMING PARTONS MAY TRAVEL IN THE SAME DIRECTION: IT'S A POWER-SUPPRESSED
136
C EFFECT, SO THROW THE EVENT AWAY
137
IF(SIGN(1.D0,PHEP(3,1)).EQ.SIGN(1.D0,PHEP(3,2)))THEN
138
CALL HWWARN('HWANAL',111)
142
WWW(I)=EVWGT*ww(i)/ww(1)
153
ISL=ABS(ID1).EQ.IDENT
154
ISN=ABS(ID1).EQ.IDENT+1
155
IF(IST.EQ.1.AND.NL.EQ.0.AND.ISL)THEN
159
SIGNL=SIGN(1D0,DBLE(ID1))
161
IF(IST.EQ.1.AND.NN.EQ.0.AND.ISN)THEN
165
SIGNN=SIGN(1D0,DBLE(ID1))
168
IF(.NOT.FOUNDL.OR..NOT.FOUNDN)THEN
169
WRITE(*,*)'NO LEPTONS FOUND.'
170
WRITE(*,*)'CURRENTLY THIS ANALYSIS LOOKS FOR'
171
IF(IDENT.EQ.11)WRITE(*,*)'E - NU_E'
172
IF(IDENT.EQ.13)WRITE(*,*)'MU - NU_MU'
173
IF(IDENT.EQ.15)WRITE(*,*)'TAU - NU_TAU'
174
WRITE(*,*)'IF THIS IS NOT MEANT,'
175
WRITE(*,*)'PLEASE CHANGE THE VALUE OF IDENT IN THIS FILE.'
178
IF(SIGNN.EQ.SIGNL)THEN
179
WRITE(*,*)'TWO SAME SIGN LEPTONS!'
180
WRITE(*,*)IL,IN,SIGNL,SIGNN
186
PPV(IJ)=PPL(IJ)+PPLB(IJ)
188
ye = getrapidity(pplb(4), pplb(3))
189
yw = getrapidity(ppv(4), ppv(3))
190
pte = dsqrt(pplb(1)**2 + pplb(2)**2)
191
ptw = dsqrt(ppv(1)**2+ppv(2)**2)
192
etmiss = dsqrt(ppl(1)**2 + ppl(2)**2)
193
mtr = dsqrt(2d0*pte*etmiss-2d0*ppl(1)*pplb(1)-2d0*ppl(2)*pplb(2))
194
cphi = (ppl(1)*pplb(1)+ppl(2)*pplb(2))/pte/etmiss
197
do kk=1,nwgt_analysis
199
call mfill(l+1,var,www(kk))
200
call mfill(l+2,ye,www(kk))
201
call mfill(l+3,pte,www(kk))
202
call mfill(l+4,etmiss,www(kk))
203
call mfill(l+5,mtr,www(kk))
204
call mfill(l+6,yw,www(kk))
205
call mfill(l+7,ptw,www(kk))
206
call mfill(l+8,cphi,www(kk))
212
C-----------------------------------------------------------------------
213
SUBROUTINE HWWARN(SUBRTN,ICODE)
214
C-----------------------------------------------------------------------
215
C DEALS WITH ERRORS DURING EXECUTION
216
C SUBRTN = NAME OF CALLING SUBROUTINE
217
C ICODE = ERROR CODE: - -1 NONFATAL, KILL EVENT & PRINT NOTHING
218
C 0- 49 NONFATAL, PRINT WARNING & CONTINUE
219
C 50- 99 NONFATAL, PRINT WARNING & JUMP
220
C 100-199 NONFATAL, DUMP & KILL EVENT
221
C 200-299 FATAL, TERMINATE RUN
222
C 300-399 FATAL, DUMP EVENT & TERMINATE RUN
223
C 400-499 FATAL, DUMP EVENT & STOP DEAD
224
C 500- FATAL, STOP DEAD WITH NO DUMP
225
C-----------------------------------------------------------------------
227
INTEGER ICODE,NRN,IERROR
229
IF (ICODE.GE.0) WRITE (6,10) SUBRTN,ICODE
230
10 FORMAT(/' HWWARN CALLED FROM SUBPROGRAM ',A6,': CODE =',I4)
234
ELSEIF (ICODE.LT.100) THEN
235
WRITE (6,20) NEVHEP,NRN,EVWGT
236
20 FORMAT(' EVENT',I8,': SEEDS =',I11,' &',I11,
237
&' WEIGHT =',E11.4/' EVENT SURVIVES. EXECUTION CONTINUES')
238
IF (ICODE.GT.49) RETURN
239
ELSEIF (ICODE.LT.200) THEN
240
WRITE (6,30) NEVHEP,NRN,EVWGT
241
30 FORMAT(' EVENT',I8,': SEEDS =',I11,' &',I11,
242
&' WEIGHT =',E11.4/' EVENT KILLED. EXECUTION CONTINUES')
245
ELSEIF (ICODE.LT.300) THEN
247
40 FORMAT(' EVENT SURVIVES. RUN ENDS GRACEFULLY')
251
ELSEIF (ICODE.LT.400) THEN
253
50 FORMAT(' EVENT KILLED: DUMP FOLLOWS. RUN ENDS GRACEFULLY')
260
ELSEIF (ICODE.LT.500) THEN
262
60 FORMAT(' EVENT KILLED: DUMP FOLLOWS. RUN STOPS DEAD')
269
70 FORMAT(' RUN CANNOT CONTINUE')
278
PRINT *,' EVENT ',NEVHEP
280
PRINT '(I4,I8,I4,4I4,1P,5D11.3)',IP,IDHEP(IP),ISTHEP(IP),
281
& JMOHEP(1,IP),JMOHEP(2,IP),JDAHEP(1,IP),JDAHEP(2,IP),
287
function getrapidity(en,pl)
289
real*8 getrapidity,en,pl,tiny,xplus,xminus,y
290
parameter (tiny=1.d-8)
293
if(xplus.gt.tiny.and.xminus.gt.tiny)then
294
if( (xplus/xminus).gt.tiny.and.(xminus/xplus).gt.tiny)then
295
y=0.5d0*log( xplus/xminus )
307
function getpseudorap(en,ptx,pty,pl)
309
real*8 getpseudorap,en,ptx,pty,pl,tiny,pt,eta,th
310
parameter (tiny=1.d-5)
312
pt=sqrt(ptx**2+pty**2)
313
if(pt.lt.tiny.and.abs(pl).lt.tiny)then
314
eta=sign(1.d0,pl)*1.d8
317
eta=-log(tan(th/2.d0))
324
function getinvm(en,ptx,pty,pl)
326
real*8 getinvm,en,ptx,pty,pl,tiny,tmp
327
parameter (tiny=1.d-5)
329
tmp=en**2-ptx**2-pty**2-pl**2
332
elseif(tmp.gt.-tiny)then
335
write(*,*)'Attempt to compute a negative mass'
343
function getdelphi(ptx1,pty1,ptx2,pty2)
345
real*8 getdelphi,ptx1,pty1,ptx2,pty2,tiny,pt1,pt2,tmp
346
parameter (tiny=1.d-5)
348
pt1=sqrt(ptx1**2+pty1**2)
349
pt2=sqrt(ptx2**2+pty2**2)
350
if(pt1.ne.0.d0.and.pt2.ne.0.d0)then
351
tmp=ptx1*ptx2+pty1*pty2
353
if(abs(tmp).gt.1.d0+tiny)then
354
write(*,*)'Cosine larger than 1'
356
elseif(abs(tmp).ge.1.d0)then