Implementation of new cuts

New cuts can be implemented easily in VBFNLO by modifying the file utilities/cuts.F (called cuts.F for short) and related files as follows.

  1. In the subroutine InitCuts in cuts.F read the value of the cut from the input file cuts.dat using

    call read_real("CUTNAME",CutValue,DefaultValue)

    where CUTNAME is the name of the cut (e.g. MTW_MIN), as written in the input file cuts.dat; CutValue is the internal variable storing the value of the cut (e.g. MtwMin); DefaultValue is the default value of the cut, in case the input value is not specified in the cuts.dat (e.g. 50d0). The new variable CutValue must be declared in the file utilities/cuts.inc and added to the common block basiccuts there. If the value of the cut is not a real number, the call to read_real should be replaced by read_logical (for logical value) or read_int (for integer value) etc. Note that this step is not strictly necessary, but it will make setting and changing the value of the cut much simpler. It is possible to skip this step and use a hardwired cut value in the BASIC_CUTS function as instructed in the next steps.

  2. In the function BASIC_CUTS in the file cuts.F calculate the value of the quantity, named ObsValue, on which to cut (e.g. Mtw). The new variable ObsValue must be declared locally. One then adds the cut condition to the logical value pass_cuts as follows

    pass_cuts = pass_cuts .and. (ObsValue .gt. CutValue)

    Of course, if the cut specifies the maximum value of a quantity, .gt. should be replaced by .lt. etc. The CutValue is read in from the cuts.dat as explained in the above step. It can be replaced by a hardwired value here.

  3. The utilities directory must be cleaned by using the make clean command before VBFNLO is remade and installed using the make and make install commands from the program directory.

Information about the final state particles is stored in the arrays jets, leptons, invisible (neutrinos) and photons. The entries are as follows

  • jets(i, j): information about the jets is stored here, entries are \(p_T\)-ordered
    • j = jet number
    • i = 0-3 = 4-momentum
    • i = 4 = mass
    • i = 5 = transverse momentum \(p_T\)
    • i = 6 = rapidity \(y\)
    • i = 7 = azimuthal angle \(\phi\)
  • leptons(i, j): information about the charged leptons is stored here
    • j = lepton number
    • i = 0-3 = 4-momentum
    • i = 4 = mass
    • i = 5 = transverse momentum \(p_T\)
    • i = 6 = rapidity \(y\)
    • i = 7 = azimuthal angle \(\phi\)
    • i = 8 = lepton ID (i.e. PDG particle number)
  • invisible(i, j): information about the invisible particles (i.e. neutrinos) is stored here
    • j = neutrino number
    • i = 0-3 = 4-momentum
    • i = 4 = mass (all neutrinos are treated as massless, i.e. this entry is always equal to zero)
    • i = 5 = transverse momentum \(p_T\)
    • i = 6 = rapidity \(y\)
    • i = 7 = azimuthal angle \(\phi\)
    • i = 8 = neutrino ID (i.e. PDG particle number)
  • photons(i, j): information about the photons is stored here
    • j = photon number
    • i = 0-3 = 4-momentum
    • i = 4 = mass (all photons are treated as massless, i.e. this entry is always equal to zero)
    • i = 5 = transverse momentum \(p_T\)
    • i = 6 = rapidity \(y\)
    • i = 7 = azimuthal angle \(\phi\)