Skip to content

Cut Decoration/Plotting algorithm for HHyybb

Spyridon Merianos requested to merge atishelm/easyjet:yybb_Cutflow_Dev into master

Cut Decoration/Plotting implementation of the HHyybb channel.

Tagging : @atishelm @losanti @gdigrego @vcairo @smanzoni . Ready for review.

Main points

  1. Currently runs on DAOD_PHYS files and DAOD_PHYSLITE with ptag p5855.
  2. Configurable Cut List. The user can choose a) any cut from a specific list b) the cut sequence.
  3. Products : A branch for each cut indicating whether it passed each event or not. Absolute/Relative Cut efficiency and Standard Cutflow plots in terms of % .

Unrelated small additions

  1. Jet label/flavour.
  2. Addition of 2022,2023 diphoton triggers by @gdigrego

Basic Description of the files.

  • CutEntry Class :
  1. Describes the cut by its name
  2. whether it passed or not the event
  3. holds a counter for all the events that passed the cut
  4. holds a counter for all the events that passed the cut with respect to the previous cuts.
  • CutManager Class :
  1. A Vector class of CutEntry class with organization methods.
  2. Includes the method CheckInputCutList --> Protects the user from adding in the yaml-config file an "incorrect" cut. Meaning a cut that cannot be found in m_STANDARD_TRIGGER_CUTS and in m_STANDARD_OBJECT_CUTS of the HHbbyyCutFlow class that will be described on the following lines.
  3. Includes the methods : DoAbsoluteEfficiency, DoRelativeEfficiency, DoStandardCutFlow that take as input the total num of events, and a TH1* histos and fill them up.
  • SelectionFlagsyybbAlg Class :
  1. Uses the CutManager class to parse, calculate and plot the Cut properties that were input.
  2. Incorporates the algorithm that can execute in the Event loop.
  3. Holds the current yybbb cuts m_STANDARD_OBJECT_CUTS , m_STANDARD_TRIGGER_CUTS. From which the user can choose to produce cutflow results.
  4. Includes the applyTriggerCuts, applyPhotonCuts methods , ... etc. These input the respective containers/accessors/and mini loops and calculates the cut properties.

Available cuts :

        const std::vector<std::string> m_STANDARD_TRIGGER_CUTS{
            "HLT_g35_loose_g25_loose",
            "HLT_g35_medium_g25_medium_L12EM20VH",
            "HLT_g120_loose",
            "HLT_g140_loose",
        };

        const std::vector<std::string> m_STANDARD_OBJECT_CUTS{
            "TWO_LOOSE_PHOTONS",
            "TWO_TIGHTID_PHOTONS",
            "TWO_ISO_PHOTONS",
            "PASS_RELPT",
            "DIPHOTON_MASS",
            "N_LEPTONS",
            "N_JETS",
            "LESS_THAN_SIX_CENTRAL_JETS",
            "AT_LEAST_ONE_B_JET",
            "AT_LEAST_TWO_B_JETS",
            "EXACTLY_ONE_B_JET",
            "EXACTLY_TWO_B_JETS",
        };
Edited by Spyridon Merianos

Merge request reports