Extract parton-level information from hepmc files?

Asked by Jona Ackerschott

I generated di-leptonic ttbar events with MadGraph_aMC@NLO 3.5.3 and the following config:

```
import model sm

# define process
define l+ = e+ mu+
define nu = vl vl~
generate p p > t t~, t > l+ vl b, t~ > l- vl~ b~
output output
launch

# simulation after hard process
shower=Pythia8
detector=off
done

# set run parameters
set run_card run_tag main
set run_card nevents 1000
set run_card iseed 0
set run_card lpp1 1 # proton beam
set run_card lpp2 1 # proton beam
set run_card ebeam1 6500
set run_card ebeam2 6500

# set pythia parameters
set pythia8_card PartonLevel:MPI off
set pythia8_card PartonLevel:ISR on
set pythia8_card PartonLevel:FSR off
set pythia8_card HadronLevel:all on
```

I want to extract parton-level information for these events and I want to do this preferably from the hepmc file (aided by particle status codes). Or actually from the particle branch of a Delphes root file, which does however have the same structure and contents. There are two reasons for this:

1. There seems to be no official way of reading lhe files (except for maybe pylhe, but I would like to do everything in my existing c++ script if possible).
2. I am using standalone pythia for event generation as well and I would like to have a common workflow after the parton-level generation step.

For standalone pythia the parton-level extraction works fine, however for MadGraph there are some events where I have a top with three direct children (bottom, lepton, neutrino) without an intermediate W. This makes parton-level extraction difficult, since the hepmc structure is hard to predict like this.

My question is: Is this expected (e.g. because this is an event with a very short W lifetime) or should the vertices in the HepMC file always be "physical"? Is there a recommended and robust way for extracting parton-level information?

Question information

Language:
English Edit question
Status:
Solved
For:
MadGraph5_aMC@NLO Edit question
Assignee:
No assignee Edit question
Solved by:
Jona Ackerschott
Solved:
Last query:
Last reply:
Revision history for this message
Olivier Mattelaer (olivier-mattelaer) said :
#1

Hi,

You can use the syntax
generate p p > t t~, ( t > w+ b, w+ > l+ vl) ,( t~ > b~ w-, w- > l- vl~ b~)
to forbid the "W" to be offshell and since it will be onshell, it will be printed within the lhef file.

Obviously the constraint to be onshell means that your cross-section will be smaller.
Basically, with that symtax, you veto any event which should be written without the W within the file.

Cheers,

Olivier

> On 25 Mar 2024, at 10:45, Jona Ackerschott <email address hidden> wrote:
>
> New question #709654 on MadGraph5_aMC@NLO:
> https://answers.launchpad.net/mg5amcnlo/+question/709654
>
> I generated di-leptonic ttbar events with MadGraph_aMC@NLO 3.5.3 and the following config:
>
> ```
> import model sm
>
> # define process
> define l+ = e+ mu+
> define nu = vl vl~
> generate p p > t t~, t > l+ vl b, t~ > l- vl~ b~
> output output
> launch
>
> # simulation after hard process
> shower=Pythia8
> detector=off
> done
>
> # set run parameters
> set run_card run_tag main
> set run_card nevents 1000
> set run_card iseed 0
> set run_card lpp1 1 # proton beam
> set run_card lpp2 1 # proton beam
> set run_card ebeam1 6500
> set run_card ebeam2 6500
>
> # set pythia parameters
> set pythia8_card PartonLevel:MPI off
> set pythia8_card PartonLevel:ISR on
> set pythia8_card PartonLevel:FSR off
> set pythia8_card HadronLevel:all on
> ```
>
> I want to extract parton-level information for these events and I want to do this preferably from the hepmc file (aided by particle status codes). Or actually from the particle branch of a Delphes root file, which does however have the same structure and contents. There are two reasons for this:
>
> 1. There seems to be no official way of reading lhe files (except for maybe pylhe, but I would like to do everything in my existing c++ script if possible).
> 2. I am using standalone pythia for event generation as well and I would like to have a common workflow after the parton-level generation step.
>
> For standalone pythia the parton-level extraction works fine, however for MadGraph there are some events where I have a top with three direct children (bottom, lepton, neutrino) without an intermediate W. This makes parton-level extraction difficult, since the hepmc structure is hard to predict like this.
>
> My question is: Is this expected (e.g. because this is an event with a very short W lifetime) or should the vertices in the HepMC file always be "physical"? Is there a recommended and robust way for extracting parton-level information?
>
> --
> You received this question notification because you are an answer
> contact for MadGraph5_aMC@NLO.

Revision history for this message
Jona Ackerschott (jackerschott) said :
#2

Ok, this might just be my lacking physics knowledge, but what exactly is madgraphs definition of on-shell here? If I understand correctly, madgraph will only include the W boson in the lhe file if it is on-shell, but this will never be exactly true right? So is this defined by some cut-off in the W-mass distribution?

If this is true I am assuming that this behaviour would technically not be necessary for a top decay since we will always have an (on-shell or off-shell) W boson here, but has to be there to be general for processes where there are multiple decay channels?

Revision history for this message
Jona Ackerschott (jackerschott) said :
#3

Seems to me like this comment in the run_card confirms this theory

```
#*********************************************************************
# BW cutoff (M+/-bwcutoff*Gamma) ! Define on/off-shell for "$" and decay
#*********************************************************************
  15.0 = bwcutoff ! (M+/-bwcutoff*Gamma)
```

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

Hi Jona,

So yes, the definition of onshell/offshell is a cut-off on the mass distribution.
As long as the width is smaller than 10% of the mass, the allow window to be written is 15 times the width of the particle. You can technically change the value of 15 via the run_card (parameter bwcutoff). But we strongly discourage to increase such parameter too much since we can not guarantee that the decay-chain syntax will work correctly for large value of the bwcutoff.

Concerning your remark for the top quark, I agree that you will always have a W within the Standard Model.
Now the statement about including (or not) a particle within the lhef file is not about the fact that you have a unique history but rather to indicate to the parton-shower information about the event that impacts the parton-shower.
If you write the W, you indicate to the parton-shower that the mass of the W particle can not be impacted by the parton-shower of the constituant, while it can be change if you do not provide it.

So changing the value of bwcutoff can also change the radiation pattern generated by pythia8 (even if they tried to be as much as possible insensitive to it, especially for the standard model processes). Personally, I have never tried to compare the exact impact in Pythia8 of writting or not the particle in the record. But I can report that such impact is sometimes visible for BSM particles that user detects our 10% threshold on the width where they see a clear shift in the behavior of the parton-shower due to our change of policy in the way the events are written.

Cheers,

Olivier