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
37
call mbook(l+1,'total rate '//weights_info(kk)//cc(i),
39
call mbook(l+2,'lep rapidity '//weights_info(kk)//cc(i),
41
call mbook(l+3,'lep pt '//weights_info(kk)//cc(i),
43
call mbook(l+4,'et miss '//weights_info(kk)//cc(i),
45
call mbook(l+5,'trans. mass '//weights_info(kk)//cc(i),
47
call mbook(l+6,'w rapidity '//weights_info(kk)//cc(i),
49
call mbook(l+7,'w pt '//weights_info(kk)//cc(i),
51
call mbook(l+8,'cphi[l,vl] '//weights_info(kk)//cc(i),
58
C----------------------------------------------------------------------
59
SUBROUTINE PYAEND(IEVT)
60
C USER'S ROUTINE FOR TERMINAL CALCULATIONS, HISTOGRAM OUTPUT, ETC
61
C----------------------------------------------------------------------
63
INTEGER I,J,KK,l,nwgt_analysis
66
common/c_analysis/nwgt_analysis
67
OPEN(UNIT=99,FILE='PYTLL.TOP',STATUS='UNKNOWN')
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,'lep rapidity ',' ','LIN')
81
call multitop(NPL+l+3,NPL-1,3,2,'lep pt ',' ','LOG')
82
call multitop(NPL+l+4,NPL-1,3,2,'et miss ',' ','LOG')
83
call multitop(NPL+l+5,NPL-1,3,2,'trans. mass ',' ','LOG')
84
call multitop(NPL+l+6,NPL-1,3,2,'w rapidity ',' ','LIN')
85
call multitop(NPL+l+7,NPL-1,3,2,'w pt ',' ','LOG')
86
call multitop(NPL+l+8,NPL-1,3,2,'cphi[l,vl] ',' ','LOG')
92
C----------------------------------------------------------------------
94
C USER'S ROUTINE TO ANALYSE DATA FROM EVENT
95
C----------------------------------------------------------------------
96
implicit double precision(a-h, o-z)
98
include 'reweight0.inc'
99
DOUBLE PRECISION HWVDOT,PSUM(4),PPV(5),PTW,YW,YE,PPL(5),PPLB(5),
100
& PTE,PLL,PTLB,PLLB,var,mtr,etmiss,cphi
101
INTEGER ICHSUM,ICHINI,IHEP,IV,IFV,IST,ID,IJ,ID1,JPR,IDENT,
104
double precision p1(4),p2(4),pihep(4)
106
common/pyjets/n,npad,k(4000,5),p(4000,5),v(4000,5)
107
common/pydat1/mstu(200),paru(200),mstj(200),parj(200)
108
common/pydat2/kchg(500,4),pmas(500,4),parf(2000),vckm(4,4)
109
common/pydat3/mdcy(500,3),mdme(8000,2),brat(8000),kfdp(8000,5)
110
common/pysubs/msel,mselpd,msub(500),kfin(2,-40:40),ckin(200)
111
common/pypars/mstp(200),parp(200),msti(200),pari(200)
112
LOGICAL DIDSOF,FOUNDL,FOUNDN,ISL,ISN
113
REAL*8 PI,getrapidity
114
PARAMETER (PI=3.14159265358979312D0)
115
REAL*8 WWW0,TINY,SIGNL,SIGNN
118
integer nwgt_analysis,max_weight
119
common/c_analysis/nwgt_analysis
120
parameter (max_weight=maxscales*maxscales+maxpdfs+1)
121
double precision ww(max_weight),www(max_weight)
123
DOUBLE PRECISION EVWEIGHT
124
COMMON/CEVWEIGHT/EVWEIGHT
129
IF (WW(1).EQ.0D0) THEN
130
WRITE(*,*)'WW(1) = 0. Stopping'
133
C CHOOSE IDENT = 11 FOR E - NU_E
134
C IDENT = 13 FOR MU - NU_MU
135
C IDENT = 15 FOR TAU - NU_TAU
137
C INCOMING PARTONS MAY TRAVEL IN THE SAME DIRECTION: IT'S A POWER-SUPPRESSED
138
C EFFECT, SO THROW THE EVENT AWAY
139
IF(SIGN(1.D0,P(3,3)).EQ.SIGN(1.D0,P(4,3)))THEN
140
WRITE(*,*)'WARNING 111 IN PYANAL'
144
WWW(I)=EVWEIGHT*ww(i)/ww(1)
150
CALL VVSUM(4,P1,P2,PSUM)
151
CALL VSCA(4,-1D0,PSUM,PSUM)
155
ICHINI=PYCHGE(KF1)+PYCHGE(KF2)
165
CALL VVSUM(4,PIHEP,PSUM,PSUM)
166
ICHSUM=ICHSUM+PYCHGE(ID1)
168
ISL=ABS(ID1).EQ.IDENT
169
ISN=ABS(ID1).EQ.IDENT+1
170
IF(IORI.LE.10..AND.ISL)THEN
173
SIGNL=SIGN(1D0,DBLE(ID1))
175
IF(IORI.LE.10.AND.ISN)THEN
178
SIGNN=SIGN(1D0,DBLE(ID1))
181
IF(.NOT.FOUNDL.OR..NOT.FOUNDN)THEN
182
WRITE(*,*)'NO LEPTONS FOUND.'
183
WRITE(*,*)'CURRENTLY THIS ANALYSIS LOOKS FOR'
184
IF(IDENT.EQ.11)WRITE(*,*)'E - NU_E'
185
IF(IDENT.EQ.13)WRITE(*,*)'MU - NU_MU'
186
IF(IDENT.EQ.15)WRITE(*,*)'TAU - NU_TAU'
187
WRITE(*,*)'IF THIS IS NOT MEANT,'
188
WRITE(*,*)'PLEASE CHANGE THE VALUE OF IDENT IN THIS FILE.'
191
IF(SIGNN.EQ.SIGNL)THEN
192
WRITE(*,*)'TWO SAME SIGN LEPTONS!'
193
WRITE(*,*)IL,IN,SIGNL,SIGNN
196
C CHECK MOMENTUM AND CHARGE CONSERVATION
197
IF (VDOT(3,PSUM,PSUM).GT.1.E-4*P(1,4)**2) THEN
198
WRITE(*,*)'WARNING 112 IN PYANAL'
201
IF (ICHSUM.NE.ICHINI) THEN
202
WRITE(*,*)'WARNING 113 IN PYANAL'
208
PPV(IJ)=PPL(IJ)+PPLB(IJ)
210
ye = getrapidity(pplb(4), pplb(3))
211
yw = getrapidity(ppv(4), ppv(3))
212
pte = dsqrt(pplb(1)**2 + pplb(2)**2)
213
ptw = dsqrt(ppv(1)**2+ppv(2)**2)
214
etmiss = dsqrt(ppl(1)**2 + ppl(2)**2)
215
mtr = dsqrt(2d0*pte*etmiss-2d0*ppl(1)*pplb(1)-2d0*ppl(2)*pplb(2))
216
cphi = (ppl(1)*pplb(1)+ppl(2)*pplb(2))/pte/etmiss
219
do kk=1,nwgt_analysis
221
call mfill(l+1,var,www(kk))
222
call mfill(l+2,ye,www(kk))
223
call mfill(l+3,pte,www(kk))
224
call mfill(l+4,etmiss,www(kk))
225
call mfill(l+5,mtr,www(kk))
226
call mfill(l+6,yw,www(kk))
227
call mfill(l+7,ptw,www(kk))
228
call mfill(l+8,cphi,www(kk))
234
C-----------------------------------------------------------------------
235
SUBROUTINE VVSUM(N,P,Q,R)
236
C-----------------------------------------------------------------------
238
C-----------------------------------------------------------------------
241
DOUBLE PRECISION P(N),Q(N),R(N)
248
C-----------------------------------------------------------------------
249
SUBROUTINE VSCA(N,C,P,Q)
250
C-----------------------------------------------------------------------
251
C VECTOR TIMES SCALAR
252
C-----------------------------------------------------------------------
255
DOUBLE PRECISION C,P(N),Q(N)
262
C-----------------------------------------------------------------------
264
C-----------------------------------------------------------------------
266
C-----------------------------------------------------------------------
269
DOUBLE PRECISION VDOT,PQ,P(N),Q(N)
276
function getrapidity(en,pl)
278
real*8 getrapidity,en,pl,tiny,xplus,xminus,y
279
parameter (tiny=1.d-8)
282
if(xplus.gt.tiny.and.xminus.gt.tiny)then
283
if( (xplus/xminus).gt.tiny.and.(xminus/xplus).gt.tiny)then
284
y=0.5d0*log( xplus/xminus )