UNLOPS exclusive events (ickkw = 4)

Asked by Yutaro Iiyama on 2017-08-21

Dear MG5_aMC@NLO authors,

I have a rather technical question regarding UNLOPS exclusive event generation (ickkw = 4).

I am trying to generate a multijet-merged photon + jets sample using UNLOPS implemented in Pythia8. Pythia8 can take LHE outputs of both inclusive (ickkw = 0) and exclusive (ickkw = 4) generation, but the former is known to result in a harder jet pT spectrum (which I confirmed studying Z+jets).

However, generate_events with ickkw = 4 for process "p p > a j [QCD]" aborts after a few events with the following message:
 For ickkw=4, Hevents should be false

Upon investigation, I found out that the sequence that leads to the message is the following (traced backwards, all files under SubProcess/):
   write_event.f, subroutine finalize_event: Hevents is true
<- fks_singular.f, subroutine pick_unweight_contr: H_event(icontr_picked) is true for the selected icontr_picked
<- fks_singular.f, subroutine add_wgt: subroutine called with type = 1, 8, 9, 10, or 13
<- fks_singular.f, subroutine compute_real_emission: add_wgt called with type = 1 because sudakov_damp > 0
<- driver_mintMC.f, function sigintF: calls compute_real_emission

Now, sigintF calls compute_real_emission only when passcuts_n1body is true, and at that point sudakov_damp is 0 if passcuts_nbody is true. So what we have here is an event that fails the n-body (Born) kinematics cut but passes the n+1-body (real) cut. This can happen in photon+jet, if ptgmin is close to or greater than ptj. For example, if ptgmin = 50 and ptj = 30, a Born configuration
  a (pT = 49 GeV) + q (pT = 49 GeV)
won't pass the cuts, but with a little "kick" from the real emission one can get a configuration like
  a (pT = 51 GeV) + q (pT = 35 GeV) + g (pT = 18 GeV)
which passes the cuts.

I am working around the issue by setting ptgmin = 20 and ptj = 30, but this is highly inefficient because I am not interested in low-pT photons and end up throwing away most of the output Les Houches events. On the other hand I cannot raise ptj much higher, because I do need an accurate modeling of jets with pT ~ 40 GeV.

The question I have is whether the behavior above, in particular the combination of passcuts_nbody and passcuts_n1body, is intentional. Does aborting when !passcuts_nbody and passcuts_n1body mean that we shouldn't be trying to generate processes where such configurations can occur, or can we actually skip such events? If it is the latter, we can for example insert something like
  if (.not.passcuts_nbody.and.ickkw.eq.4) then
between lines 950 and 951 in driver_mintMC.f.

Please let me know!

Thank you,

Question information

English Edit question
MadGraph5_aMC@NLO Edit question
Rikkert Frederix Edit question
Solved by:
Rikkert Frederix
Last query:
Last reply:
Best Rikkert Frederix (frederix) said : #1

Dear Yutaro,

Thanks for your inquiry, and in particular, for your detailed report.

Indeed, what you find is to be expected: there are real-emission configurations that pass the generation cuts for which the underlying Born does not pass the cuts. These configurations need to be kept and the only way to do that is to set the generation cuts a lot looser than your analysis cuts. Hence, indeed, this is rather inefficient since most of the events will be generated at small transverse momenta which are then thrown away by the analysis. (Putting an IF-statement setting 'probne=0d0', as you are suggesting, is not correct).


Yutaro Iiyama (yiiyama) said : #2

Thanks Rikkert Frederix, that solved my question.

Yutaro Iiyama (yiiyama) said : #3

Dear Rikkert,

Thank you for a clear and prompt answer!
I'll fire up the grid CPUs then..