Version 2 (modified by trac, 8 years ago) (diff)


TransferFunction in MadWeight

What is a TransferFunction?

The transfer function is the conditional probability to observe a detector-level event, given a certain parton-level configuration. In particular, this function includes the response of the detector. In MadWeight, we will consider that the transfer function can be factorized in a product of resolution functions associated to each external (or initial) particle. Furthermore we will assume that these functions are factorized in the energy, the rapidity and the azimutal angle of each final state particle.

The resolution function associated to a missing particle (i.e. a neutrino) equals one. Otherwise it depends on the capabilities of the detector: for well measured quantities the resolution function looks like a narrow gaussian (for exemples: Energy of muons). Examples of transfer functions are given below.

Standard TransferFunctions


This transfer function is the standard one, this is the transfer functions use by Canneli in her PHd thesis.

  • a delta function is associated to each visible angle,
  • a delta function is associated to the energy of each lepton
  • the resolution function for each jet/bjet energy is parametrized as a double Gaussian distribution depending on five parameters, each of them being a function of the Energy of the jet (for examplt $ \sigma=a+b\sqrt(E)+c*E$ ), resulting in 15 constants to be fitted by MC simulations.


This transfer function is needed in order to test the phase-space volume and the total cross section. It is 1 regardless of the parton-level state.


All transfer function are put on delta

How to create a new one with version before 2.1.2 ?

  • First you need to have the full Madgraph/MadWeight version.
  • copy the transfer function template: $> cp -rf ./Transfer_Fct/new_transfer/ ./Transfer_Fct/MY_TF
  • go into your new directory: $> cd ./Transfer_Fct/MY_TF
  • complete information in the TF_input.dat. (see next section)
  • create your transfer functions: $> ./ (in version 1.3.0 -> need python 2.4, solve in version 1.3.1)

How to create a new one with version after 2.1.2 ?

  • In this version you can define your new tf in local
  • change directory $> cd ./Source/MadWeight_File/Transfer_Fct/data/
  • complete the information of the file TF_user.dat
  • If you want to give a specific name to your new transfer function: $> cp TF_user.dat TF_NewName.dat
  • To apply this new transfer function to the directory see paragraph "How to include a transfer function in a process"

How to fill the TF_input.dat file?

  • Complete ordering part:

The numerical phase-space integration requires to know the scturture of the transfer function, in order to choose the correct phase space parametrization. For this reason the algorithm needs to know which energies are well measured (usually those linked to electrons,muons,or photons) and which are not.

  • Transfer function:

Follow the instruction in the beginning of the file "TF_input.dat". For each part of the transfer functions you have to provide a correct f77 functions, and give its typical broadness. (both in f77)

Fortran 77 restriction

This program is intended to be used, one day, on-line by external users. So for evident reasons of security, some Fortran instructions are forbidden in the expression of the transfer function. By default only the if ... then ... elseif .... else ... endif syntax are allowed. If you run this code in local you can remove this restriction by editing the list "forbidden" in the beginning of the file.

How to include dynamical parameters

you can use dynamical parameters. Those parameters will be defined in the transfer_card.dat just before the madweight call. So it is not mandatory to recompile the code. In order to do that, you have to enter #1, #2 at the position of the dynamical parameters.

How to include a transfer function in a process?

First of all, your process must have been generated after having executed the script ./PassToMadWeight

  • during the creation of the process:you simply have to put the name of the transfer function directory (in the above example: MY_TF) at the end of the proc_card.dat file.

For online generation this method is irrelevant, so you have to use the next method.

  • after the creation of the process: you can simply type the following command : $> ./bin/ NEW_TF

-- Main.OlivierMattelaer - 03 Oct 2008

Attachments (1)

Download all attachments as: .zip