2
c Example analysis for "p p > t t~ [QCD]" process.
4
C----------------------------------------------------------------------
6
C DUMMY IF HBOOK IS USED
7
C----------------------------------------------------------------------
11
C----------------------------------------------------------------------
13
C USER'S ROUTINE FOR INITIALIZATION
14
C----------------------------------------------------------------------
15
INCLUDE 'HERWIG65.INC'
16
include 'reweight0.inc'
19
PARAMETER (PI=3.14159265358979312D0)
22
integer nwgt,max_weight,nwgt_analysis
24
common/c_analysis/nwgt_analysis
25
parameter (max_weight=maxscales*maxscales+maxpdfs+1)
26
character*15 weights_info(max_weight)
27
common/cwgtsinfo/weights_info
34
call mbook(l+ 1,'total rate '//weights_info(kk)//cc(i),
36
call mbook(l+ 2,'t rap '//weights_info(kk)//cc(i),
38
call mbook(l+ 3,'tx rap '//weights_info(kk)//cc(i),
40
call mbook(l+ 4,'t-tx pair rap '//weights_info(kk)//cc(i),
42
call mbook(l+ 5,'m t-tx '//weights_info(kk)//cc(i),
44
call mbook(l+ 6,'pt t '//weights_info(kk)//cc(i),
46
call mbook(l+ 7,'pt tx '//weights_info(kk)//cc(i),
48
call mbook(l+ 8,'pt t-tx '//weights_info(kk)//cc(i),
55
C----------------------------------------------------------------------
57
C USER'S ROUTINE FOR TERMINAL CALCULATIONS, HISTOGRAM OUTPUT, ETC
58
C----------------------------------------------------------------------
59
INCLUDE 'HERWIG65.INC'
61
INTEGER I,J,KK,l,nwgt_analysis
64
common/c_analysis/nwgt_analysis
65
OPEN(UNIT=99,FILE='HERQQ.TOP',STATUS='UNKNOWN')
66
C XNORM IS SUCH THAT THE CROSS SECTION PER BIN IS IN PB, SINCE THE HERWIG
67
C WEIGHT IS IN NB, AND CORRESPONDS TO THE AVERAGE CROSS SECTION
68
XNORM=1.D3/DFLOAT(NEVHEP)
72
CALL MOPERA(I+NPL,'F',I+NPL,I+NPL,(XNORM),0.D0)
79
call multitop(NPL+l+ 1,NPL-1,3,2,'total rate ',' ','LIN')
80
call multitop(NPL+l+ 2,NPL-1,3,2,'t rap ',' ','LOG')
81
call multitop(NPL+l+ 3,NPL-1,3,2,'tx rap ',' ','LOG')
82
call multitop(NPL+l+ 4,NPL-1,3,2,'t-tx pair rap',' ','LOG')
83
call multitop(NPL+l+ 5,NPL-1,3,2,'m t-tx ',' ','LOG')
84
call multitop(NPL+l+ 6,NPL-1,3,2,'pt t ',' ','LOG')
85
call multitop(NPL+l+ 7,NPL-1,3,2,'pt tx ',' ','LOG')
86
call multitop(NPL+l+ 8,NPL-1,3,2,'pt t-tx ',' ','LOG')
93
C----------------------------------------------------------------------
95
C USER'S ROUTINE TO ANALYSE DATA FROM EVENT
96
C----------------------------------------------------------------------
97
INCLUDE 'HERWIG65.INC'
98
include 'reweight0.inc'
99
DOUBLE PRECISION HWVDOT,PSUM(4)
100
INTEGER ICHSUM,ICHINI,IHEP
101
LOGICAL DIDSOF,flcuts,siq1flag,siq2flag,ddflag
102
INTEGER ID,ID1,IST,IQ1,IQ2,IT1,IT2,ILP,INU,IBQ,ILM,INB,IBB,IJ
103
DOUBLE PRECISION YCUT,PTCUT,ptlp,ylp,getrapidity,ptnu,ynu,
104
# ptbq,ybq,ptlm,ylm,ptnb,ynb,ptbb,ybb,ptbqbb,dphibqbb,
105
# getdelphi,xmbqbb,getinvm,ptlplm,dphilplm,xmlplm,ptbqlm,
106
# dphibqlm,xmbqlm,ptbblp,dphibblp,xmbblp,ptbqnb,dphibqnb,
107
# xmbqnb,ptbbnu,dphibbnu,xmbbnu,ptq1,ptq2,ptg,yq1,yq2,
108
# etaq1,getpseudorap,etaq2,azi,azinorm,qqm,dr,yqq
109
DOUBLE PRECISION XPTQ(5),XPTB(5),XPLP(5),XPNU(5),XPBQ(5),XPLM(5),
110
# XPNB(5),XPBB(5),p_t(0:3),p_tx(0:3),pttx(0:3),
111
# mtt,pt_t,pt_tx,pt_ttx,yt,ytx,yttx,var
112
DOUBLE PRECISION YPBQBB(4),YPLPLM(4),YPBQLM(4),YPBBLP(4),
113
# YPBQNB(4),YPBBNU(4),YPTQTB(4)
115
PARAMETER (PI=3.14159265358979312D0)
117
INTEGER KK,IVLEP1,IVLEP2,i,l
118
COMMON/VVLIN/IVLEP1,IVLEP2
119
integer nwgt_analysis,max_weight
120
common/c_analysis/nwgt_analysis
121
parameter (max_weight=maxscales*maxscales+maxpdfs+1)
122
double precision ww(max_weight),www(max_weight)
125
IF (IERROR.NE.0) RETURN
126
IF (WW(1).EQ.0D0) THEN
127
WRITE(*,*)'WW(1) = 0. Stopping'
130
C INCOMING PARTONS MAY TRAVEL IN THE SAME DIRECTION: IT'S A POWER-SUPPRESSED
131
C EFFECT, SO THROW THE EVENT AWAY
133
IF(SIGN(1.D0,PHEP(3,4)).EQ.SIGN(1.D0,PHEP(3,5)))THEN
134
CALL HWWARN('HWANAL',111)
138
WWW(I)=EVWGT*ww(i)/ww(1)
140
CALL HWVSUM(4,PHEP(1,1),PHEP(1,2),PSUM)
141
CALL HWVSCA(4,-1D0,PSUM,PSUM)
143
ICHINI=ICHRG(IDHW(1))+ICHRG(IDHW(2))
148
C UNCOMMENT THE FOLLOWING WHEN REMOVING THE CHECK ON MOMENTUM
149
C IF(IQ1*IQ2.EQ.1) GOTO 11
150
IF (IDHW(IHEP).EQ.16) DIDSOF=.TRUE.
151
IF (ISTHEP(IHEP).EQ.1) THEN
152
CALL HWVSUM(4,PHEP(1,IHEP),PSUM,PSUM)
153
ICHSUM=ICHSUM+ICHRG(IDHW(IHEP))
158
IF(IST.EQ.155.AND.ID1.EQ.6)THEN
159
C FOUND A TOP; KEEP ONLY THE FIRST ON RECORD
162
ELSEIF(IST.EQ.155.AND.ID1.EQ.-6)THEN
163
C FOUND AN ANTITOP; KEEP ONLY THE FIRST ON RECORD
168
IF(IQ1*IQ2.EQ.0.AND.IERROR.EQ.0)CALL HWWARN('HWANAL',501)
169
C CHECK MOMENTUM AND CHARGE CONSERVATION
170
IF (HWVDOT(3,PSUM,PSUM).GT.1.E-4*PHEP(4,1)**2) THEN
172
CALL HWWARN('HWANAL',112)
175
IF (ICHSUM.NE.ICHINI) THEN
177
CALL HWWARN('HWANAL',113)
180
C FILL THE FOUR-MOMENTA
182
XPTQ(IJ)=PHEP(IJ,IT1)
183
XPTB(IJ)=PHEP(IJ,IT2)
186
p_t(MOD(IJ,4))=XPTQ(IJ)
187
p_tx(MOD(IJ,4))=XPTB(IJ)
188
pttx(MOD(IJ,4))=XPTQ(IJ)+XPTB(IJ)
190
mtt = getinvm(pttx(0),pttx(1),pttx(2),pttx(3))
191
pt_t = dsqrt(p_t(1)**2 + p_t(2)**2)
192
pt_tx = dsqrt(p_tx(1)**2 + p_tx(2)**2)
193
pt_ttx = dsqrt(pttx(1)**2 + pttx(2)**2)
194
yt = getrapidity(p_t(0), p_t(3))
195
ytx = getrapidity(p_tx(0), p_tx(3))
196
yttx= getrapidity(pttx(0), pttx(3))
199
do kk=1,nwgt_analysis
201
call mfill(l+1,var,www(kk))
202
call mfill(l+2,yt,www(kk))
203
call mfill(l+3,ytx,www(kk))
204
call mfill(l+4,yttx,www(kk))
205
call mfill(l+5,mtt,www(kk))
206
call mfill(l+6,pt_t,www(kk))
207
call mfill(l+7,pt_tx,www(kk))
208
call mfill(l+8,pt_ttx,www(kk))
216
function getrapidity(en,pl)
218
real*8 getrapidity,en,pl,tiny,xplus,xminus,y
219
parameter (tiny=1.d-8)
223
if(xplus.gt.tiny.and.xminus.gt.tiny)then
224
if( (xplus/xminus).gt.tiny )then
225
y=0.5d0*log( xplus/xminus )
237
function getpseudorap(en,ptx,pty,pl)
239
real*8 getpseudorap,en,ptx,pty,pl,tiny,pt,eta,th
240
parameter (tiny=1.d-5)
242
pt=sqrt(ptx**2+pty**2)
243
if(pt.lt.tiny.and.abs(pl).lt.tiny)then
244
eta=sign(1.d0,pl)*1.d8
247
eta=-log(tan(th/2.d0))
254
function getinvm(en,ptx,pty,pl)
256
real*8 getinvm,en,ptx,pty,pl,tiny,tmp
257
parameter (tiny=1.d-5)
259
tmp=en**2-ptx**2-pty**2-pl**2
262
elseif(tmp.gt.-tiny)then
265
write(*,*)'Attempt to compute a negative mass'
273
function getdelphi(ptx1,pty1,ptx2,pty2)
275
real*8 getdelphi,ptx1,pty1,ptx2,pty2,tiny,pt1,pt2,tmp
276
parameter (tiny=1.d-5)
278
pt1=sqrt(ptx1**2+pty1**2)
279
pt2=sqrt(ptx2**2+pty2**2)
280
if(pt1.ne.0.d0.and.pt2.ne.0.d0)then
281
tmp=ptx1*ptx2+pty1*pty2
283
if(abs(tmp).gt.1.d0+tiny)then
284
write(*,*)'Cosine larger than 1'
286
elseif(abs(tmp).ge.1.d0)then