88
93
if (idup(i,1).eq.22) is_a_ph(i)=.true. ! photon
96
c check for pdg specific cut (pt/eta)
98
do i=nincoming+1, nexternal-1 ! never include last particle
101
do j = i, nexternal-1
106
if (pdg_cut(1).ne.0)then
108
do i=nincoming+1, nexternal-1 ! never include last particle
109
if (abs(idup(i,1)).ne.pdg_cut(j)) cycle
110
c fully ensure that only massive particles are allowed at NLO
111
if(pmass(i).eq.0d0) then
112
write(*,*) 'Illegal use of pdg specific cut.'
113
write(*,*) 'For NLO process, '/
114
$ /'only massive particle can be included'
117
c fully ensure that this is not a jet/lepton/photon
118
if(is_a_lp(i) .or. is_a_lm(i) .or. is_a_j(i) .or.
120
write(*,*) 'Illegal use of pdg specific cut.'
121
write(*,*) 'This can not be used for '/
122
$ /'jet/lepton/photon/gluon'
125
etmin(i) = ptmin4pdg(j)
126
etmax(i) = ptmax4pdg(j)
127
! add the invariant mass cut
128
if(mxxmin4pdg(j).ne.0d0)then
129
do k=i+1, nexternal-1
130
if (mxxpart_antipart(j))then
131
if (idup(k, 1).eq.-1*idup(i,1))then
132
mxxmin(i,k) = mxxmin4pdg(j)
135
if (abs(idup(k, 1)).eq.pdg_cut(j))then
136
mxxmin(i,k) = mxxmin4pdg(j)
201
264
c Add the minimal jet pTs to tau
202
265
if(IS_A_J(i) .and. i.ne.nexternal)then
203
266
if (j_fks.gt.nincoming .and. j_fks.lt.nexternal) then
204
taumin(iFKS,ichan)=taumin(iFKS,ichan)+max(ptj,emass(i))
205
taumin_s(iFKS,ichan)=taumin_s(iFKS,ichan)+max(ptj,emass(i))
206
taumin_j(iFKS,ichan)=taumin_j(iFKS,ichan)+max(ptj,emass(i))
267
taumin(iFKS,ichan)=taumin(iFKS,ichan)+dsqrt(ptj**2 +emass(i)**2)
268
taumin_s(iFKS,ichan)=taumin_s(iFKS,ichan)+dsqrt(ptj**2 +emass(i)**2)
269
taumin_j(iFKS,ichan)=taumin_j(iFKS,ichan)+dsqrt(ptj**2 +emass(i)**2)
207
270
elseif (j_fks.ge.1 .and. j_fks.le.nincoming) then
208
271
taumin(iFKS,ichan)=taumin(iFKS,ichan)+emass(i)
209
taumin_s(iFKS,ichan)=taumin_s(iFKS,ichan)+max(ptj,emass(i))
210
taumin_j(iFKS,ichan)=taumin_j(iFKS,ichan)+max(ptj,emass(i))
272
taumin_s(iFKS,ichan)=taumin_s(iFKS,ichan)+dsqrt(ptj**2 +emass(i)**2)
273
taumin_j(iFKS,ichan)=taumin_j(iFKS,ichan)+dsqrt(ptj**2 +emass(i)**2)
211
274
elseif (j_fks.eq.nexternal) then
213
276
& 'ERROR, j_fks cannot be the final parton'
234
297
xm(i)=emass(i)+ptgmin
235
298
elseif (is_a_lp(i)) then
236
299
c Add the postively charged lepton pTs to tau
237
taumin(iFKS,ichan)=taumin(iFKS,ichan)+emass(i)
238
if (j_fks.gt.nincoming)
239
& taumin(iFKS,ichan)=taumin(iFKS,ichan)+ptl
240
taumin_s(iFKS,ichan)=taumin_s(iFKS,ichan)+emass(i)+ptl
241
taumin_j(iFKS,ichan)=taumin_j(iFKS,ichan)+emass(i)+ptl
300
if (j_fks.gt.nincoming) then
301
taumin(iFKS,ichan)=taumin(iFKS,ichan)+dsqrt(ptl**2+emass(i)**2)
303
taumin(iFKS,ichan)=taumin(iFKS,ichan)+emass(i)
305
taumin_s(iFKS,ichan)=taumin_s(iFKS,ichan)+dsqrt(emass(i)**2+ptl**2)
306
taumin_j(iFKS,ichan)=taumin_j(iFKS,ichan)+dsqrt(emass(i)**2+ptl**2)
242
307
xm(i)=emass(i)+ptl
243
308
c Add the lepton invariant mass to tau if there is at least another
244
309
c lepton of opposite charge. (Only add half of it, i.e. 'the part
248
313
if (is_a_lm(j) .and. idup(i,1).eq.-idup(j,1) .and.
249
314
$ (mll_sf.ne.0d0 .or. mll.ne.0d0) ) then
250
315
if (j_fks.gt.nincoming)
251
& taumin(iFKS,ichan) = taumin(iFKS,ichan)-ptl-emass(i) +
252
& max(mll/2d0,mll_sf/2d0,ptl+emass(i))
253
taumin_s(iFKS,ichan) = taumin_s(iFKS,ichan)-ptl-emass(i)
254
$ + max(mll/2d0,mll_sf/2d0,ptl+emass(i))
255
taumin_j(iFKS,ichan) = taumin_j(iFKS,ichan)-ptl-emass(i)
256
$ + max(mll/2d0,mll_sf/2d0,ptl+emass(i))
316
& taumin(iFKS,ichan) = taumin(iFKS,ichan)-dsqrt(ptl**2+emass(i)**2) +
317
& max(mll/2d0,mll_sf/2d0,dsqrt(ptl**2+emass(i)**2))
318
taumin_s(iFKS,ichan) = taumin_s(iFKS,ichan)-dsqrt(ptl**2+emass(i)**2)
319
$ + max(mll/2d0,mll_sf/2d0,dsqrt(ptl**2+emass(i)**2))
320
taumin_j(iFKS,ichan) = taumin_j(iFKS,ichan)-dsqrt(ptl**2+emass(i)**2)
321
$ + max(mll/2d0,mll_sf/2d0,dsqrt(ptl**2+emass(i)**2))
257
322
xm(i)=xm(i)-ptl-emass(i)+max(mll/2d0,mll_sf/2d0
260
325
elseif (is_a_lm(j) .and. mll.ne.0d0) then
261
326
if (j_fks.gt.nincoming)
262
& taumin(iFKS,ichan)= taumin(iFKS,ichan)-ptl-emass(i) +
263
& max(mll/2d0,ptl+emass(i))
264
taumin_s(iFKS,ichan) = taumin_s(iFKS,ichan)-ptl-emass(i)
265
$ + max(mll/2d0,ptl+emass(i))
266
taumin_j(iFKS,ichan) = taumin_j(iFKS,ichan)-ptl-emass(i)
267
$ + max(mll/2d0,ptl+emass(i))
327
& taumin(iFKS,ichan)= taumin(iFKS,ichan)-dsqrt(ptl**2+emass(i)**2) +
328
& max(mll/2d0,dsqrt(ptl**2+emass(i)**2))
329
taumin_s(iFKS,ichan) = taumin_s(iFKS,ichan)-dsqrt(ptl**2+emass(i)**2)
330
$ + max(mll/2d0, dsqrt(ptl**2+emass(i)**2))
331
taumin_j(iFKS,ichan) = taumin_j(iFKS,ichan)-dsqrt(ptl**2+emass(i)**2)
332
$ + max(mll/2d0,dsqrt(ptl**2+emass(i)**2))
268
333
xm(i)=xm(i)-ptl-emass(i)+max(mll/2d0,ptl
273
338
elseif (is_a_lm(i)) then
274
339
c Add the negatively charged lepton pTs to tau
275
taumin(iFKS,ichan)=taumin(iFKS,ichan)+emass(i)
276
if (j_fks.gt.nincoming)
277
& taumin(iFKS,ichan)=taumin(iFKS,ichan)+ptl
278
taumin_s(iFKS,ichan)=taumin_s(iFKS,ichan)+emass(i)+ptl
279
taumin_j(iFKS,ichan)=taumin_j(iFKS,ichan)+emass(i)+ptl
340
if (j_fks.gt.nincoming) then
341
taumin(iFKS,ichan)=taumin(iFKS,ichan)+dsqrt(ptl**2+emass(i)**2)
343
taumin(iFKS,ichan)=taumin(iFKS,ichan)+emass(i)
345
taumin_s(iFKS,ichan)=taumin_s(iFKS,ichan)+dsqrt(ptl**2+emass(i)**2)
346
taumin_j(iFKS,ichan)=taumin_j(iFKS,ichan)+dsqrt(ptl**2+emass(i)**2)
280
347
xm(i)=emass(i)+ptl
281
348
c Add the lepton invariant mass to tau if there is at least another
282
349
c lepton of opposite charge. (Only add half of it, i.e. 'the part
286
353
if (is_a_lp(j) .and. idup(i,1).eq.-idup(j,1) .and.
287
354
$ (mll_sf.ne.0d0 .or. mll.ne.0d0) ) then
288
355
if (j_fks.gt.nincoming)
289
& taumin(iFKS,ichan) = taumin(iFKS,ichan)-ptl-emass(i) +
290
& max(mll/2d0,mll_sf/2d0,ptl+emass(i))
291
taumin_s(iFKS,ichan) = taumin_s(iFKS,ichan)-ptl-emass(i)
292
$ + max(mll/2d0,mll_sf/2d0,ptl+emass(i))
293
taumin_j(iFKS,ichan) = taumin_j(iFKS,ichan)-ptl-emass(i)
294
$ + max(mll/2d0,mll_sf/2d0,ptl+emass(i))
356
& taumin(iFKS,ichan) = taumin(iFKS,ichan)-dsqrt(ptl**2+emass(i)**2) +
357
& max(mll/2d0,mll_sf/2d0,dsqrt(ptl**2+emass(i)**2))
358
taumin_s(iFKS,ichan) = taumin_s(iFKS,ichan)-dsqrt(ptl**2+emass(i)**2)
359
$ + max(mll/2d0,mll_sf/2d0,dsqrt(ptl**2+emass(i)**2))
360
taumin_j(iFKS,ichan) = taumin_j(iFKS,ichan)-dsqrt(ptl**2+emass(i)**2)
361
$ + max(mll/2d0,mll_sf/2d0,dsqrt(ptl**2+emass(i)**2))
295
362
xm(i)=xm(i)-ptl-emass(i)+max(mll/2d0,mll_sf/2d0
298
365
elseif (is_a_lp(j) .and. mll.ne.0d0) then
299
366
if (j_fks.gt.nincoming)
300
& taumin(iFKS,ichan) = taumin(iFKS,ichan)-ptl-emass(i) +
301
& max(mll/2d0,ptl+emass(i))
302
taumin_s(iFKS,ichan) = taumin_s(iFKS,ichan)-ptl-emass(i)
303
$ + max(mll/2d0,ptl+emass(i))
304
taumin_j(iFKS,ichan) = taumin_j(iFKS,ichan)-ptl-emass(i)
305
$ + max(mll/2d0,ptl+emass(i))
367
& taumin(iFKS,ichan) = taumin(iFKS,ichan)-dsqrt(ptl**2+emass(i)**2) +
368
& max(mll/2d0,dsqrt(ptl**2+emass(i)**2))
369
taumin_s(iFKS,ichan) = taumin_s(iFKS,ichan)-dsqrt(ptl**2+emass(i)**2)
370
$ + max(mll/2d0,dsqrt(ptl**2+emass(i)**2))
371
taumin_j(iFKS,ichan) = taumin_j(iFKS,ichan)-dsqrt(ptl**2+emass(i)**2)
372
$ + max(mll/2d0,dsqrt(ptl**2+emass(i)**2))
306
373
xm(i)=xm(i)-ptl-emass(i)+max(mll/2d0,ptl
312
taumin(iFKS,ichan)=taumin(iFKS,ichan)+emass(i)
313
taumin_s(iFKS,ichan)=taumin_s(iFKS,ichan)+emass(i)
314
taumin_j(iFKS,ichan)=taumin_j(iFKS,ichan)+emass(i)
379
if (i.eq.nexternal)then
380
taumin(iFKS,ichan)=taumin(iFKS,ichan) + emass(i)
381
taumin_s(iFKS,ichan)=taumin_s(iFKS,ichan) + emass(i)
382
taumin_j(iFKS,ichan)=taumin_j(iFKS,ichan) + emass(i)
388
c assume smin apply always on the same set of particle
389
do j=nincoming+1,nexternal-1
390
if (mxxmin(i,j).ne.0d0.or.mxxmin(j,i).ne.0d0) then
391
nb_iden_pdg = nb_iden_pdg +1
392
if (mxx.eq.0d0) mxx = max(mxxmin(i,j), mxxmin(j,i))
395
! S >= (2*N-N^2)*M1^2 + (N^2-N)/2 * Mxx^2
396
smin_update = nb_iden_pdg*((2-nb_iden_pdg)*emass(i)**2 + (nb_iden_pdg-1)/2.*mxx**2)
397
! compare with the update from pt cut
398
if (smin_update.lt.nb_iden_pdg**2*(etmin(i)**2 + emass(i)**2))then
399
! the pt is more restrictive
400
smin_update = dsqrt(etmin(i)**2 + emass(i)**2)
402
smin_update = dsqrt(smin_update)/nb_iden_pdg ! share over N particle, and change dimension
404
smin_update = emass(i)
405
! update in sqrt(s) so take the
406
if (j_fks.gt.nincoming) then
407
taumin(iFKS,ichan)=taumin(iFKS,ichan) + smin_update
409
taumin(iFKS,ichan)=taumin(iFKS,ichan) + emass(i)
411
taumin_s(iFKS,ichan)=taumin_s(iFKS,ichan) + smin_update
412
taumin_j(iFKS,ichan)=taumin_j(iFKS,ichan) + smin_update