Browse Source

gen_stop: Keep 1/sqrt(pt) sampling for the virt part, seems to work somewhat better.

master
Tobias Neumann 2 years ago
parent
commit
fc39d4149e
  1. 34
      src/Phase/gen_stop.f

34
src/Phase/gen_stop.f

@ -78,35 +78,13 @@ c--- generate the pt of jet number ijet
c--- rapidity limited by E=pT*coshy
wt=wt/16._dp/pi**3
c ! some other ways to generate in pT
c ! directly in pT
c pt = sqrts*r(ijet)/2._dp
c xjac = r(ijet)*sqrts**2/4._dp
c ! 1/pt
c pt = sqrts*r(ijet)/(sqrts+2*r(ijet)-sqrts*r(ijet))
c xjac = r(ijet)*sqrts**3 / (2*r(ijet) - sqrts*(r(ijet)-1))**3
c ! -log(pT)
c pt = exp(log(sqrts/2._dp) - (1-r(ijet))/r(ijet))
c xjac = exp(2._dp*log(sqrts/2._dp) - 2._dp*(1-r(ijet))/r(ijet))/r(ijet)**2
! for nnlo double real ipsgen=1
!if ((kcase == kbq_tpq_jet) .and. (kpart == kreal) .and. usescet .and. (ipsgen == 1)) then
c if (ijet == 1) then
! in 1/sqrt(pT)
!pt = r(ijet)**2*sqrts/2._dp
!xjac = pt*sqrts/2._dp*2._dp*r(ijet)
c else
c ! 1/pt^2
c pt = 1._dp / sqrt(4._dp/sqrts**2 + (1-r(ijet))/r(ijet))
c xjac = sqrts**4 / 2._dp / (sqrts**2*(r(ijet)-1._dp) - 4*r(ijet))**2
c endif
! for nlo real, ipsgen == 2
!elseif ((kcase == kbq_tpq) .and. (kpart == kreal) .and. (.not. usescet) .and. (ipsgen == 2)) then
!error stop "todo"
!else
!error stop "please explicitly setup gen_stop for this case"
if (kpart == kvirt) then
pt = r(ijet)**2*sqrts/2._dp
xjac = pt*sqrts/2._dp*2._dp*r(ijet)
else
call genpt(r(ijet),5._dp,.false.,pt,xjac)
!endif
endif
wt=wt*xjac
etamax=sqrts/2._dp/pt

Loading…
Cancel
Save