the flavour of jet after jet clustering

Asked by HuanyuBi

Hi
For example my process is p p> e+ ve b b~ [QCD].
I want to implement my user cut (at least one b jet pass pt(b)>20) in cuts.f.
after call amcatnlo_fastjetppgenkt_etamax_timed, I have njet and pjet. since I want to implement some cuts on b jets. i need to know the flavour of jets. However jet(i) aways return 1 2 3.
so my first question is how can I access the flavour of jet after jet clustering?

I also try to print*,p(0:3,i) before jet clustering. I find some particle with 0d0 4-momenta. dose it mean this event have the born configuration ? after that we also feed this 0d0 particle to amcatnlo_fastjetppgenkt_etamax_timed, just to be sure, this is safe. right?

I notice there is ipdg_reco and p_reco. so what is the difference bewteen ipdg and ipdg_reco, p and p_reco

Thanks
Huanyu

Question information

Language:
English Edit question
Status:
Solved
For:
MadGraph5_aMC@NLO Edit question
Assignee:
No assignee Edit question
Solved by:
HuanyuBi
Solved:
Last query:
Last reply:
Revision history for this message
HuanyuBi (bihuanyu) said :
#1

btw, I want to know how does amcatnlo_fastjetppgenkt_etamax_timed combine particles
is the following scheme applied in Madgraph
for the flavour: b + b~ = b jet, for the 4-momenta: p(b jet) = p(b)+p(b~);
for the flavrou: b + light jet = b jet, for the 4-momenta: p(b jet) = p(b)+p(light jet);
for the flavrou: b~ + light jet = b jet, for the 4-momenta: p(b jet) = p(b~)+p(light jet);

Thanks!
Huanyu

Revision history for this message
Olivier Mattelaer (olivier-mattelaer) said :
#2

Hi,

Sorry, are you working in a four or five flavour scheme model?

From the syntax that you use, it should be a four flavor scheme (since you can not ask for a b flavor in the initial/final state at NLO accuracy if your b is massless)

but in that case, you should have either 0/1 jet in the process
since the code mentions (as I would have expect)

c Put all (light) QCD partons in momentum array for jet clustering.
c From the run_card.dat, maxjetflavor defines if b quark should be
c considered here (via the logical variable 'is_a_jet'). nQCD becomes
c the number of (light) QCD partons at the real-emission level (i.e. one
c more than the Born).
         nQCD=0
         do j=nincoming+1,nexternal
            if (is_a_j(j)) then
               nQCD=nQCD+1
               do i=0,3
                  pQCD(i,nQCD)=p(i,j)
               enddo
            endif
         enddo
      endif

and that maxjetflavour is bound to the model.
So I would expect here that nQCD is either 0 or 1 (for S-event/H-event respectively).
So I'm surprised how you get 3 here...

> I also try to print*,p(0:3,i) before jet clustering. I find some particle with 0d0 4-momenta.

Yes this is normal for S-event contribution (which includes born, virtual and counter-term)

> I notice there is ipdg_reco and p_reco.

Personally, I do not find any ipdg_reco in the generated code.

> [PROCNLO_loop_sm_2]$ grep ipdg_reco . -rin
> [PROCNLO_loop_sm_2]$
even with a less specific expression:
>[PROCNLO_loop_sm_2]$ grep pdg . -rin | grep reco -i
>./MCatNLO/srcHerwig/herwig6521.f:60779: 20 FORMAT(1X,'Particle not recognised, PDG code: ',I8)
>[PROCNLO_loop_sm_2]$
So I cannot comment on that.

Revision history for this message
HuanyuBi (bihuanyu) said :
#3

Dear Olivier,

thanks for your answer.
I work in loop_sm-no_b-mass. in this case maxjetflavour = 5. and nQCD = 3 or 2
I also did loop_sm, in this case maxjetflavour = 4. so I have nQCD = 0 or 1.
actually, I dont care that it's massless b or massive b as long as b is considered as a jet.
so the problem is how can I get the flavour information of jets after the jet clustering.
then I need these information to implement my user cuts,i.e., at least one of the b jets pass the cut. something as follows

if(pt(b1)>20.or. pt(b2)>20)then
passcuts_user=.true.
else
passcuts_user=.false.
endif

ipdg_reco is in cuts.f as follows (MG3.1.1)
      do i=1,nexternal
         if (istatus(i).eq.1 .and.
     & (abs(ipdg_reco(i)).le.maxjetflavor .or. ipdg_reco(i).eq.21
     & .or.(ipdg_reco(i).eq.22.and.gamma_is_j))) then
            is_a_j(i)=.true.
         else
            is_a_j(i)=.false.
         endif
      enddo

         nQCD=0
         do j=nincoming+1,nexternal
            if (is_a_j(j)) then
               nQCD=nQCD+1
               do i=0,3
                  pQCD(i,nQCD)=p_reco(i,j)
               enddo
            endif
         enddo

Best regards
Huanyu

Revision history for this message
Olivier Mattelaer (olivier-mattelaer) said :
#4

Hi Huanyu,

The choice of doing a computation within the four or five flavour scheme (b massive or b massless) is likely extremely important.
And will deeply impact the prediction. In general if you are interested to b physics it can make sense to go to four flavour.
But such type of computation will be associated to a large log uncertainty related to bmass.
So in general when the scale is high, it is better to use a five scheme where this is resumed by the parton-shower/pdf.

The main point is that your cut makes only sense in four flavour schemes and not in five flavour schemes.
Neither is your process definition (you can not ask for b-parton in the final state and have NLO accuracy)
For five flavour schemes, everything should be symmetric between d/s/b and therefore it can happen that a "d" in cuts.f will be written as "b" in the final event file.

So my advice for such type of cut is to applied them after the parton-shower/hadronization simulation.

Concerning reco, looks like that part of the code has been removed then, since I do not find trace of it anymore.

Cheers,

Olivier

Revision history for this message
HuanyuBi (bihuanyu) said :
#5

Hi Olivier

I just want to use MG5 to do this test and use the results from MG5 to crosscheck some results from other software. that is why it's not an issue for me to use either use 4 or 5 flavour scheme to do this test.
so no matter it's 4 or 5 flavour scheme. is it possible to access the flavour of jets after jet clustering? i.e., after call amcatnlo_fastjetppgenkt_etamax_timed ?

Best regards
Huanyu

Revision history for this message
HuanyuBi (bihuanyu) said :
#6

I forget to say that this test can be done only at fixed order. since the result from other software can only do fixed order calcualtion. so I don't want parton shower.

Best regards
Huanyu

Revision history for this message
Olivier Mattelaer (olivier-mattelaer) said :
#7

Hi,

So looking at the code pdg_reco seems to be defined via this function

      subroutine recombine_momenta(R, etaph, reco_l, reco_q, p_in,
     $pdg_in, is_nextph_iso, p_out, pdg_out, is_nextph_iso_reco)
      implicit none
      ! recombine photons with the closest fermion if the distance is
      ! less than R and if the rapidity of photons is < etaph (etaph < 0
      ! means no cut). Output a new set of momenta and pdgs corresponding
      ! to the recombined particles. If recombination occurs the photon
      ! disappears from the output particles
      ! If isolated photons exist (is_nextph_iso(i)=True), they are not
      ! used for the recombination
      ! arguments

So those variables have nothing to do with the QCD clustering that you had in mind.
(and explain why you have those variables only within the Electroweak branch)

So I guess that we do not have any feature that match your need and that the correct answer to your question is that you will need to defined yourself what is your (infra-red safe) definition of the b "jet" after clustering.

Cheers,

Olivier

Revision history for this message
HuanyuBi (bihuanyu) said :
#8

Hi Olivier

thanks for your answers.
I have solved my problem.
I have ipdg(i) and P(0:3,i). so I can reconstruct any P_myjet=P(0:3,i)+P(0:3,j)+.... and compare P_myjet to pjet(0:3,i) which is the output of subroutine amcatnlo_fastjetppgenkt_etamax_timed. In this case I am able to assign the flavour to pjet.

Best
Huanyu