HT-sliced samples when using FxFx

Asked by Francesco Giuli on 2020-03-23

Dear experts,
I am using MG5_aMC@NLO v2.6.5 and I am studying the possibility of slicing a FxFx Z+jets sample (up to 2 additional patrons in the final state) using the HT variable.
Below you can find the lines I added to the SubProcesses/cuts.f file in order to compute the HT variable and make different HT slices:

right after these lines:

c Apply the jet cuts
         if (njet .ne. nQCD .and. njet .ne. nQCD-1) then
            passcuts_user=.false.
            return
         endif
      endif
 122 continue

I added:

c
c HT cuts > 1 TeV
c
      htj=0d0
      do i=1,nexternal
         if (istatus(i).eq.1 .and. is_a_j(i)) then ! massless quark/gluon
            htj = htj + pt_04(p(0,i))
         endif
      enddo

      if (htj.lt.800d0.and.htj.gt.1500d0)then
         passcuts_user=.false.
         return
      endif

(this is the example to create the slice 800 < HT < 1500 GeV).
Unfortunately, the cross section I got is identical to the one for the inclusive sample Z+2jets FxFx.
Could you please tell me if what I am trying to do is possible and, if so, could you please advice me on how to do it properly?

Thanks a lot for your time and help.

Best,
Fra

Question information

Language:
English Edit question
Status:
Answered
For:
MadGraph5_aMC@NLO Edit question
Assignee:
No assignee Edit question
Last query:
2020-03-23
Last reply:
2020-03-25

Hi,

I'm not 100% sure that your implementation of your cut is infra-red safe.
I would apply such cut on the jet comming out of fastjet and not directly on the parton-momenta
(which are not infra-red safe).

In any case this condition
> if (htj.lt.800d0.and.htj.gt.1500d0)then

can never be True...

Cheers,

Olivier

> On 23 Mar 2020, at 16:17, Francesco Giuli <email address hidden> wrote:
>
> New question #689459 on MadGraph5_aMC@NLO:
> https://answers.launchpad.net/mg5amcnlo/+question/689459
>
> Dear experts,
> I am using MG5_aMC@NLO v2.6.5 and I am studying the possibility of slicing a FxFx Z+jets sample (up to 2 additional patrons in the final state) using the HT variable.
> Below you can find the lines I added to the SubProcesses/cuts.f file in order to compute the HT variable and make different HT slices:
>
> right after these lines:
>
> c Apply the jet cuts
> if (njet .ne. nQCD .and. njet .ne. nQCD-1) then
> passcuts_user=.false.
> return
> endif
> endif
> 122 continue
>
> I added:
>
> c
> c HT cuts > 1 TeV
> c
> htj=0d0
> do i=1,nexternal
> if (istatus(i).eq.1 .and. is_a_j(i)) then ! massless quark/gluon
> htj = htj + pt_04(p(0,i))
> endif
> enddo
>
> if (htj.lt.800d0.and.htj.gt.1500d0)then
> passcuts_user=.false.
> return
> endif
>
> (this is the example to create the slice 800 < HT < 1500 GeV).
> Unfortunately, the cross section I got is identical to the one for the inclusive sample Z+2jets FxFx.
> Could you please tell me if what I am trying to do is possible and, if so, could you please advice me on how to do it properly?
>
> Thanks a lot for your time and help.
>
> Best,
> Fra
>
> --
> You received this question notification because you are an answer
> contact for MadGraph5_aMC@NLO.

Dear Olivier,
you're definitively right I should change my condition in

if (htj.lt.800d0.or.htj.gt.1500d0)then

'I would apply such cut on the jet comming out of fastjet and not directly on the parton-momenta'
so, what should I do? where should I put such a cut? Or how should I modify the HT computation?

Best,
Fra

Dear Oliver,
are you suggesting me to change

htj = htj + pt_04(p(0,i))

with

 htj = htj + ptj ?

Cheers,
Fra

Dear Olivier,
I also tried the following configuration:

      htj=0d0
      do i=1,nexternal
         if (istatus(i).eq.1 .and. is_a_j(i)) then ! massless quark/gluon
            htj = htj + pt(pjet(0,i))
         endif
      enddo

but it doesn't work either. Could you please advice me on how to access the jet comming out of fastjet?

Cheers,
Fra

Dear Olivier,
sorry for posting another comment on this tread.
 I took inspiration from the ‘bias_weight_function’ subroutine at the end of the cuts.f file and I modified the above-mentioned line as follows:

do i=3,nexternal
         H_T=H_T+sqrt(max(0d0,(p(0,i)+p(3,i))*(p(0,i)-p(3,i))))
      enddo

Is this correct? Could you please advice me on the correct procedure to follow?
Thanks a lot for your time and help.

Regards,
Fra

Hi,

around line 239, you should have the lines:
c******************************************************************************
c call FASTJET to get all the jets
c
c INPUT:
c input momenta: pQCD(0:3,nexternal), energy is 0th component
c number of input momenta: nQCD
c radius parameter: rfj
c minumum jet pt: sycut
c jet algorithm: palg, 1.0=kt, 0.0=C/A, -1.0 = anti-kt
c
c OUTPUT:
c jet momenta: pjet(0:3,nexternal), E is 0th cmpnt
c the number of jets (with pt > SYCUT): njet
c the jet for a given particle 'i': jet(i), note that this is the
c particle in pQCD, which doesn't
c necessarily correspond to the particle
c label in the process
c
         call amcatnlo_fastjetppgenkt_etamax_timed(
     $ pQCD,nQCD,rfj,sycut,etaj,palg,pjet,njet,jet)
c
c******************************************************************************

After that you can use the jet vector to calculate your quantity and apply the cut that you want.
(Note that depending of your cut in the run_card, you might not pass trough those lines (in that case, you have to edit the if statement before or copy-paste the equivalent lines.

Cheers,

Olivier

Can you help with this problem?

Provide an answer of your own, or ask Francesco Giuli for more information if necessary.

To post a message you must log in.