From fc39d4149e1b677a6ad80f6e3b2eb562d915d595 Mon Sep 17 00:00:00 2001 From: Tobias Neumann Date: Thu, 28 Mar 2024 12:21:23 -0700 Subject: [PATCH] gen_stop: Keep 1/sqrt(pt) sampling for the virt part, seems to work somewhat better. --- src/Phase/gen_stop.f | 34 ++++++---------------------------- 1 file changed, 6 insertions(+), 28 deletions(-) diff --git a/src/Phase/gen_stop.f b/src/Phase/gen_stop.f index 8f4b1e9..29f5465 100644 --- a/src/Phase/gen_stop.f +++ b/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