wiki:Reweight

Version 37 (modified by Olivier Mattelaer, 9 years ago) ( diff )

--

Description of the method

The method consists in using a sample of events (weighted or unweighted) generated under a certain theoretical hypothesis (a model and its parameters with given values), and in associating with those events an additional weight that corresponds to a new theoretical hypothesis (a different model, and/or different parameter choices); both the original and the additional weights are thus based solely on matrix-element computations. Once computed, the additional weight can be propagated through all of the simulation chain, and saves one from performing eg a full simulation on an additional event sample. The methods works only if both the original and the new hypothesis give non-negligible contributions to the same parts of the phase-space.

We support three types of reweightings, one for Leading Order (LO) samples, and two for the Next-to-Leading Order (NLO) samples (dubbed Kamikaze Reweighting and NLO Reweighting)

Leading Order

At the Leading Order, the new weight is given by $$W_{new} = |M{new}_h|2 /|M{old}_h|2 * W_{old} $$ where h is the helicity associated with the event, and $|M{new/old}_h|2$ is the matrix element for the corresponding helicity. If the event is not associated with a specific helicity, then the sum over the helicity is used instead.

This method is fully LO accurate and does not present any bias. Note that the statistical fluctuations of the original sample can be increased by reweighting. To have an idea of such an increase, one can use the naive formula of propagation of error:

$$\Delta\mathcal{O}_{new} = \bar R\cdot \Delta\mathcal{O}_{old} + \Delta R \cdot \mathcal{O}_{old} $$

where $\bar R$ is the average of the ratio of the matrix-element, $\Delta R$ the associated variance. $\mathcal{O}_{old/new}$ is the value of the observable under consideration for the associated hypothesis and $\Delta\mathcal{O}_{old/new}$ the associated variance.

Kamikaze Reweighting

This corresponds to a LO-type of reweighting. Both soft and hard events are reweighted according to the tree-level matrix element associated with the suitable number of final-state particles i.e.,

$$WS_{new} = |M{new}_{born}|2 /|M{old}_{born}|2 * WS_{old} $$ $$WH_{new} = |M{new}_{real}|2 /|M{old}_{real}|2 * WH_{old} $$

For obvious reason, this method is, in general, not NLO accurate. This method is available since MadGraph5_aMC@NLO v2.3.2

NLO reweighting:

For this computation, we employ the method introduced in http://arxiv.org/pdf/1110.4738v1.pdf to decompose the matrix elements in terms of scale- and PDF-independent coefficients:

$$d\sigma{H} = d\sigmaE - d\sigma{MC} $$ $$ d\sigma{S} = d\sigma{MC} + \sum_{\alpha=S,C,SC} d\sigma\alpha $$

Each of the $d\sigma\alpha$ can be written as

$$ d\sigma\alpha=f_1(x_1,\mu_F)f_2(x_2,\mu_F) \left[\mathcal{W}\alpha_0 + \mathcal{W}\alpha_F log\left(\mu_F/Q\right)2 + \mathcal{W}\alpha_R log\left(\mu_R/Q\right)2 \right] d\chi$$

Additionally, we decompose each of the $\mathcal{W\alpha_\beta}$ in the component proportional to the born ($\mathcal{W}\alpha_{\beta,B}$), the finite piece of virtual ($\mathcal{W}\alpha_{\beta,V}$) and of the real ($\mathcal{W}\alpha_{\beta,R}$).

$\mathcal{W\alpha_\beta} = B*\mathcal{C}\alpha_{\beta,B} + V*\mathcal{C}\alpha_{\beta,V} + R*\mathcal{C}\alpha_{\beta,R} \equiv \mathcal{W}\alpha_{\beta,B} + \mathcal{W}\alpha_{\beta,V} + \mathcal{W}\alpha_{\beta,R}$

In our implementation, the various $\mathcal{W}\alpha_{\beta,\delta}$ are computed by MG5_aMC@NLO at running time and kept in the final events. More details on the decomposition are available in the appendix of http://arxiv.org/pdf/1110.4738v1.pdf (and in a paper in preparation).

In principle, the reweighting should be performed on each sub-part of the $\mathcal{W}$ according to the following formula (dropping the $\alpha$ and $\beta$ index for simplicity):

$$\mathcal{W}_B{new} = \frac{B{new}}{B{old}} * \mathcal{W}_B{old} $$ $$\mathcal{W}_V{new} = \frac{V{new}}{V{old}} * \mathcal{W}_V{old} $$ $$\mathcal{W}_R{new} = \frac{R{new}}{R{old}} * \mathcal{W}_R{old} $$

the final weight is then computed by recombining the weight according to the above formula.

However in MadGraph5_aMC@NLO, we use the virt-tricks method which avoid the computation of the virtual for some of the phase-space points. This speed optimisation method forbids the simple above reweighting since the generation will have $\mathcal{W}_V{old}=0$ even if $V_{old} \neq 0$. To avoid this problem, $\mathcal{W}_B$ is splitted in two piece :$\mathcal{W}_{BC}$, $\mathcal{W}_{BB}$. $\mathcal{W}_{BC}$ is the part proportional to the born and related to the one counter-term, while $\mathcal{W}_{BB}$ is for the other contribution (the born itself and the approximate virtual). The reweighting is then done as

$$\mathcal{W}_{BB}{new} = \frac{(B{new}+V{new})}{(B{old}+V{old})} * \mathcal{W}_{BB}{old} $$ $$\mathcal{W}_{BC}{new} = \frac{B{new}}{B{old}} * \mathcal{W}_{BC}{old} $$ $$\mathcal{W}_V{new} = \frac{(B{new}+V{new})}{(B{old}+V{old})} * \mathcal{W}_V{old} $$ $$\mathcal{W}_R{new} = \frac{R{new}}{R{old}} * \mathcal{W}_R{old} $$

Such reweighting is fully NLO accurate. As in the LO case, the statistical uncertainty can be enhanced by the reweighting. Additionally the trick to support the virt-tricks adds an additional contribution to statistical uncertainty.

This method will be released in a future version of MadGraph5_aMC@NLO and can currently be provided on request. Since this reweighting is based on a dedicated decomposition, the NLO sample must be generated in a specific way to have the additional information in the Les Houches event file.

Technical details

Limitation

  1. Changes of PDFs and/or of cuts are not permitted with this method of reweighting.
  2. Likewise, changes are not allowed in the functional forms used to compute the hard scales, and hence alpha_S
  3. In the presence of a decay chain, the order of the particles in the event file is important, and especially so with LHE events not produced by MadGraph5_aMC@NLO.

Installation

This module is built-in in MadGraph5_aMC@NLO.2.3.2. Since MadGraph5_aMC@NLO.2.3.2, this module relies on f2py to be installed. The easiest way to install f2py is to install numpy (if not already done).

Running the code

Running simultaneously with event generation

When running event generation at the LO or NLO (either via ./bin/generate_events from the local directory or by executing "launch" through the MG5_aMC@NLO interface), you will be asked two questions. The phrasing/options of those two questions depend on whether you run at the LO or NLO, but both follow the same strategy. Here we will take the example of an NLO generation. In that case, the first question is:

The following switches determine which operations are executed:
 1 Perturbative order of the calculation:                               order=NLO
 2 Fixed order (no event generation and no MC@[N]LO matching):    fixed_order=OFF
 3 Shower the generated events:                                        shower=ON
 4 Decay particles with the MadSpin module:                           madspin=OFF
 5 Add weights to the events based on changing model parameters:     reweight=OFF
  Either type the switch number (1 to 5) to change its default setting,
  or set any switch explicitly (e.g. type 'order=LO' at the prompt)
  Type '0', 'auto', 'done' or just press enter when you are done.
 [0, 1, 2, 3, 4, 5, auto, done, order=LO, ... ][60s to answer]

As you can see, the question presents a series of switches which can take different value (in the example "NLO", "ON", "OFF"). In order to perform the reweighting, you need to put the reweight switch to "ON". Type

reweight=ON

You can also just type "5" but please avoid to use this mode in scripts. After pressing enter the question is reasked and you now should have:

The following switches determine which operations are executed:
 1 Perturbative order of the calculation:                               order=NLO
 2 Fixed order (no event generation and no MC@[N]LO matching):    fixed_order=OFF
 3 Shower the generated events:                                        shower=ON
 4 Decay particles with the MadSpin module:                           madspin=OFF
 5 Add weights to the events based on changing model parameters:     reweight=ON
  Either type the switch number (1 to 5) to change its default setting,
  or set any switch explicitly (e.g. type 'order=LO' at the prompt)
  Type '0', 'auto', 'done' or just press enter when you are done.
 [0, 1, 2, 3, 4, 5, auto, done, order=LO, ... ][60s to answer]

This allows you to change any other switch (note that "fixed_order" needs to stay on OFF). You can type <enter> when you want to pass to the next question:

Do you want to edit a card (press enter to bypass editing)?
  1 / param      : param_card.dat
  2 / run        : run_card.dat
  3 / reweight   : reweight_card.dat
  4 / shower     : shower_card.dat
 you can also
   - enter the path to a valid card or banner.
   - use the 'set' command to modify a parameter directly.
     The set option works only for param_card and run_card.
     Type 'help set' for more information on this command.
   - call an external program (ASperGE/MadWidth/...).
     Type 'help' for the list of available command
 [0, done, 1, param, 2, run, 3, reweight, 4, enter path, ... ][60s to answer]

For an NLO-accurate reweighting (which will be available from version 2.4.0), type

set keep_rwgt_info True

This can also be done via the manual edition of the run_card (by typing 2). With this option set equal to False (the default) the kamikaze reweighting will be performed.

Then type

3

to open an editor (in most system this use vi) where you can edit the content of the reweight_card. The format/options of that file are describe below and at the beginning of the file. It allows you to specify which model/benchmark you want to use. When you are done, exit the file and press <enter>.

The code will then start the event generation and when done will directly run the reweighting.

Running the code after the generation of events has been completed.

In order to run the reweighting on previously-generated samples, you need to go to the relevant process directory and run either the ./bin/madevent or the ./bin/aMC@NLO script for LO or NLO event generation respectively. You can then type reweight RUN_NAME (RUN_NAME is typically run_01) and you will be asked the same questions as above.

Another options is to manually edit the Cards/reweight_card.dat file and then run one of the two following command:

./bin/madevent reweight RUN_NAME -f
./bin/aMC@NLO reweight RUN_NAME -f

The first sample is available in case of LO event generation, while the second is present in the case of NLO event generation.

Content of the reweight_card

This card is composed of two sections:

  1. Options:
    These are options which change the behaviour of the reweighting. Those lines need to be specified before the first 'launch' command in order to be effective.
    1. change model <XXX> performs the reweighting within a new model (you then need to provide a full param_card and not the difference between two cards)
    2. change process <XXX> change the process definition.
    3. change process <XXX> --add add one process definition to the new list.
    4. change output <i>: Three options: 'default'(i.e. lhef version3 format), '2.0' (i.e. lhef version2 format, the main weight is replace), 'unweight' (a new unweighting is applied on the events sample.)
    5. change helicity <True|False>: perform reweighting for the given helicity (True --default--) or carry out the sum over helicity.
    6. change rwgt_dir <PATH>: change directory where the computation is performed. This can be used to avoid to recreate/recompile the fortran executable if pointing to a previously existing directory.
    7. change mode LO: For NLO samples, this flag forces the code to perform the kamikaze reweighting (available in 2.4.0)
  1. benchmark definition:
    Starting one benchmark starts with the line
    launch
    
    then you can have either a series of "set command" to specify how to edit the param_card from the original one. Are a couple of equivalent options:
     set mt 150
     set mass 6 150
    
    instead of using the "set command" you can also specify the path to a (valid) param_card
     PATH
    
    For a scan over parameter:
    1. You can have multiple line "launch" in the file, each of them followed by the associated "set" lines
    2. You can use the scan syntax of MadGraph5_aMC@NLO and use one of the following syntax:
       set mt 6 scan:range(100,200,20)
       set mass 6 scan:[100,120,140,160,180]
      

Output format

the output format follows the Leshouches agreement version 3 http://arxiv.org/abs/arXiv:1405.1067 As an example the header looks like:

<initrwgt>
<weightgroup type='mg_reweighting'>
<weight id='mg_reweight_1'>set param_card dim6 1 100.0
</weight>
<weight id='mg_reweight_2'>set param_card dim6 2 100.0
</weight>
<weight id='mg_reweight_3'>set param_card dim6 3 100.0
</weight>
</weightgroup>
</initrwgt>

and one associated events:

<event>
 8      0 +7.9887000e-06 1.24664300e+02 7.95774700e-02 1.23856500e-01
        1 -1    0    0  501    0 +0.0000000e+00 +0.0000000e+00 +1.3023196e+03 1.30231957e+03 0.00000000e+00 0.0000e+00 -1.0000e+00
       -2 -1    0    0    0  501 +0.0000000e+00 +0.0000000e+00 -1.4499581e+02 1.44995814e+02 0.00000000e+00 0.0000e+00 1.0000e+00
      -24  2    1    2    0    0 -1.2793809e+01 -8.3954553e+01 -1.1792566e+02 1.65987064e+02 8.02071978e+01 0.0000e+00 0.0000e+00
       23  2    1    2    0    0 +1.2793809e+01 +8.3954553e+01 +1.2752494e+03 1.28132832e+03 9.12640692e+01 0.0000e+00 0.0000e+00
       11  1    3    3    0    0 -1.2462673e+01 +1.3647422e+01 -2.6083861e+01 3.19677669e+01 0.00000000e+00 0.0000e+00 -1.0000e+00
      -12  1    3    3    0    0 -3.3113586e-01 -9.7601975e+01 -9.1841804e+01 1.34019297e+02 0.00000000e+00 0.0000e+00 1.0000e+00
        4  1    4    4  502    0 -1.8321803e+01 +9.0929609e+01 +9.3905973e+02 9.43629724e+02 0.00000000e+00 0.0000e+00 -1.0000e+00
       -4  1    4    4    0  502 +3.1115612e+01 -6.9750557e+00 +3.3618969e+02 3.37698598e+02 0.00000000e+00 0.0000e+00 1.0000e+00
<rwgt>
<wgt id='mg_reweight_1'> 4.55278761371e-06 </wgt>
<wgt id='mg_reweight_2'> 2.65941887458e-06 </wgt>
<wgt id='mg_reweight_3'> 8.68203803896e-06 </wgt>
</rwgt>
</event>

The reweight_card in that case was:

launch
   set Dim6 1 100
   set Dim6 2 0
   set Dim6 3 0
   set Dim6 4 0
   set Dim6 5 0
launch
   set Dim6 1 0
   set Dim6 2 100
   set Dim6 3 0
   set Dim6 4 0
   set Dim6 5 0
launch
   set Dim6 1 0
   set Dim6 2 0
   set Dim6 3 100
   set Dim6 4 0
   set Dim6 5 0

The cross-section of the original file and those associated with the new hyppothesis are printed at the end of the script:

INFO: Original cross-section: 0.80086112072 +- 0.0025669959099 pb 
INFO: Computed cross-section: 
INFO: 119 : 5.0238030968 
INFO: 120 : 4.46724081967 
INFO: 121 : 0.790019392142 

LO Validation

The comparison for the full cross-section are done like this: ./bin/madevent ./Cards/reweight_card.dat

p p > e+ e- cross-section

  1. The reweight_card is the following:
    launch
     set aewm1 100
    launch 
     set aewm1 200
    launch 
     set aewm1 300
    
  2. The associated cross-section are
    1. 1135.25 pb
    2. 1095.28 pb
    3. 1329.52 pb
  3. The cross-section computed with MadEvent are
    1. 1130 +- 2.815 pb
    2. 1098 +- 2.478 pb
    3. 1336 +- 2.777 pb

EWDIM6 Validation

input

  1. The model use for this validation is the EWDIM6 (See: http://arxiv.org/abs/arXiv:1205.4231). 10k events where generated with the standard model (cross-section: 0.8008 ± 0.0026 pb)
  2. The reweight_card was:
    launch
       set Dim6 1 100
       set Dim6 2 0
       set Dim6 3 0
       set Dim6 4 0
       set Dim6 5 0
    launch
       set Dim6 1 10
       set Dim6 2 0
       set Dim6 3 0
       set Dim6 4 0
       set Dim6 5 0
    launch
       set Dim6 1 1
       set Dim6 2 0
       set Dim6 3 0
       set Dim6 4 0
       set Dim6 5 0
    launch
       set Dim6 1 0.1
       set Dim6 2 0
       set Dim6 3 0
       set Dim6 4 0
       set Dim6 5 0
    launch
       set Dim6 1 0.01
       set Dim6 2 0
       set Dim6 3 0
       set Dim6 4 0
       set Dim6 5 0
    

The same scan was done for the three first coupling (CWWW, CW, CB)

result:

  1. For CWWW
Coupling value ($TeV{-2}$) Reweight cross-section (pb) MG5_aMC cross-section (pb) Status
0.01 0.800810008029 0.7973 ± 0.0023 OK
0.1 0.800903791291 0.799 ± 0.0026 OK
1 0.802209013071 0.7987 ± 0.0025 OK
10 0.85200014698 0.8584 ± 0.00092 OK
100 5.0238030968 6.09 ± 0.0082 FAIL (as expected): Require too much stats
100 5.04763 6.09 ± 0.0082 FAIL (as expected): Require too much stats (done with a sample of 100k events)

The last entry fails since the expected distribution for such value of the coupling is too different from the distribution of the Standard Model. Such discrepancy are expected in this case. One hint is that the cross-section is an order of magnitude higher than the original one (Looking at the distribution confirm this). The inversed reweight (i.e. starting from the CWW=100 sample of events and reweight to find back the SM) is working properly. It returned: 0.803341120226

The various distribution for those generation are in attachment of this web page. The dashed blue curve is the one produced by reweighting. While the solid black is the curve generated by MadEvent. All sample are done with 100k events for the comparison of distributions.

  1. For CW
Coupling value ($TeV{-2}$) Reweight cross-section (pb) MG5_aMC cross-section (pb) Status
0.01 0.800798262059 0.7953 +- 0.002497 OK
0.1 0.801379445746 0.7988 ± 0.0023 OK
1 0.806872565125 0.8065 ± 0.0023 OK
10 0.889336417677 0.8832 ± 0.003 OK
100 4.46724081967 4.519 ± 0.015 FAIL (as expected)
100 4.44273 4.519 ± 0.015 FAIL (as expected) (done with a sample of 100k events)

Same comment as for the previous coupling.

  1. For CB
Coupling value ($TeV{-2}$) Reweight cross-section (pb) MG5_aMC cross-section (pb) Status
0.01 0.800798262059 0.7977 ± 0.0027 OK
0.1 0.800782626532 0.7985 ± 0.0024 OK
1 0.800626859275 0.7981 +- 0.002365 OK
10 0.799127987884 0.7971 ± 0.0024 OK
100 0.790019392142 0.7852 ± 0.0026 OK
100 0.786698206995 0.7852 ± 0.0026 OK (done with a sample of 100k events)

This operator has less impact on the cross-section/distributions, and therefore even a large value of the coupling is still working fine.

Note:

  1. The cross-section obtained for 100k events sample is 0.7989 ± 0.00087
  2. The statistical fluctuation of the original sample is reflected on the reweighing cross-section (as expected)

=NLO Validation

All validation plots are in this presentation:

https://indico.cern.ch/event/458670/contribution/4/attachments/1203988/1753929/EW_reweighting_mattelaer.pdf

Attachments (6)

Note: See TracWiki for help on using the wiki.