Question on weight mismatch between LHE and HepMC file

Asked by Sung Hak Lim on 2017-08-07

Dear MG5 team,

I noticed that weights in LHE and HepMC files are different even though they're from same MC generated event.

MG5 version: 2.5.4

For LO: p p > t t~

  run_card.dat, nevents = 10000
  run_card.dat, event_norm = average
  cross section: 446 pb
    weight in LHE file : 4.4613100e+02
    weight in HepMC file : 4.4613100000000003e-02

  run_card.dat, nevents = 1000
  run_card.dat, event_norm = average
  cross section: 445.4 pb
    weight in LHE file : 4.4555300e+02
    weight in HepMC file : 4.4555300000000003e-01

Line 525 of [MG5]/HEPTools/MG5aMC_PY8_interface
      if ( abs(pythia.info.lhaStrategy()) == 4)
        norm_event_wgt = 1 / double(1e9*nEvent);

Line 738 of [MG5]/HEPTools/MG5aMC_PY8_interface
        // Set event weight
        double w = central_weight*norm_event_wgt*vetoWeights[iCut];
        w *=hepmcWeightRescaling;
        hepmcevt->weights().push_back(w);

It looks like that MG5 stores cross section as weight in LHE file and cross section / nevent in HepMC file.

For NLO: p p > t t~ [QCD]

  run_card.dat, nevents = 10000
  shower_card.at, nsplit_jobs = 1
  run_card.dat, event_norm = average
  cross section: 657.9 pb <-
    abs(weight) in LHE file : 0.12867121E+04 <- factor 2 difference?
    abs(weight) in HepMC file : 1.2867121000000001e-01

  run_card.dat, nevents = 1000
  shower_card.at, nsplit_jobs = 1
  run_card.dat, event_norm = average
  cross section: 659.0 pb
    abs(weight) in LHE file : 0.12950543E+04
    abs(weight) in HepMC file : 1.2950543000000003e+00

  run_card.dat, nevents = 1000
  shower_card.at, nsplit_jobs = 10
  run_card.dat, event_norm = average
  cross section: 652.2 pb
    abs(weight) in LHE file : 0.12813198E+04
    abs(weight) in HepMC file : 1.2813198000000002e+01

line 79 in [MG5]/Template/NLO/MCatNLO/srcPythia82_hep.cc

    // ALWAYS NORMALISE HEPMC WEIGHTS TO SUM TO THE CROSS SECTION <- this already explains quite much but for nsplit != 1, this is tricky..
    if (evt_norm == "average") {
      normhepmc = 1. / double(iEventshower);
    } else {
      normhepmc = double(iEventtot) / double(iEventshower);
    }
    sigmaTotal += evtweight*normhepmc;
    hepmcevt->weights().push_back(evtweight*normhepmc);
    ToHepMC.fill_next_event( pythia, hepmcevt );

Since iEventshower is Main:spareMode1 = nevents / nsplit_jobs, it looks like this number explains the weight differences in NLO.

I'm not using these weight number itself seriously due to my vague understanding on these weight handling part in MG5.

Could you give me some explanation of this weight mismatch?

I'm only using ratios in reweighing for PDF systematics and other scale uncertainties calculations. For overall normalization, I'm just rescaling histogram according to (cross section in crossx.html) * (efficiency = sum_{i \in bin} w_i / sum_i w_i) at this moment.

Best wishes,
Sung Hak

Question information

Language:
English Edit question
Status:
Answered
For:
MadGraph5_aMC@NLO Edit question
Assignee:
No assignee Edit question
Last query:
2017-08-07
Last reply:
2017-08-07

Hi,

Not sure to see which mismatch you refer to.

Did you refer to this:
For NLO: p p > t t~ [QCD]

 run_card.dat, nevents = 10000
 shower_card.at, nsplit_jobs = 1
 run_card.dat, event_norm = average
 cross section: 657.9 pb <-
   abs(weight) in LHE file : 0.12867121E+04 <- factor 2 difference?

And the factor of 2 here?
This are two different number which are different by nature (even if they can be the same)
One is the cross-section and the other-one is the absolute cross-section where all negative contribution to the cross-section are taken positive.
By construction, the second number is always bigger than the first one, and is important since this is the one on which we use standard integration method.
However all physical quantity does not rely on that number.

Is that answer your question?

Cheers,

Olivier

Sung Hak Lim (sunghak-lim) said : #2

Hi Olivier,

Oh I see.. the weight in NLO is absolute sum of cross-section. Then the factor 2 is just a coincidence and the weight does not have physical meaning other than showing some scale difference between positive and negative integrals.

Actually, the main question was about relation between following two weight.

  run_card.dat, nevents = 1000
  shower_card.at, nsplit_jobs = 10
  run_card.dat, event_norm = average
  cross section: 652.2 pb
    abs(weight) in LHE file : 0.12813198E+04 <-
    abs(weight) in HepMC file : 1.2813198000000002e+01 <-

I just want to make sure my understanding on the relation between those two weights.

Best wishes,
Sung Hak

Hi,

This sounds a normalisation difference between the two file.
I do not know which convention use hempc file but in LHE file, those numbers are in pb.

Cheers,

Olivier

> On 7 Aug 2017, at 12:08, Sung Hak Lim <email address hidden> wrote:
>
> Question #655409 on MadGraph5_aMC@NLO changed:
> https://answers.launchpad.net/mg5amcnlo/+question/655409
>
> Sung Hak Lim posted a new comment:
> Hi Olivier,
>
> Oh I see.. the weight in NLO is absolute sum of cross-section. Then the
> factor 2 is just a coincidence and the weight does not have physical
> meaning other than showing some scale difference between positive and
> negative integrals.
>
> Actually, the main question was about relation between following two
> weight.
>
> run_card.dat, nevents = 1000
> shower_card.at, nsplit_jobs = 10
> run_card.dat, event_norm = average
> cross section: 652.2 pb
> abs(weight) in LHE file : 0.12813198E+04 <-
> abs(weight) in HepMC file : 1.2813198000000002e+01 <-
>
> I just want to make sure my understanding on the relation between those
> two weights.
>
> Best wishes,
> Sung Hak
>
> --
> You received this question notification because you are an answer
> contact for MadGraph5_aMC@NLO.

Can you help with this problem?

Provide an answer of your own, or ask Sung Hak Lim for more information if necessary.

To post a message you must log in.