Cut Decoration/Plotting algorithm for HHyybb
Cut Decoration/Plotting implementation of the HHyybb channel.
Tagging : @atishelm @losanti @gdigrego @vcairo @smanzoni . Ready for review.
Main points
- Currently runs on
DAOD_PHYS
files andDAOD_PHYSLITE
with ptag p5855. - Configurable Cut List. The user can choose a) any cut from a specific list b) the cut sequence.
- 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
- Jet label/flavour.
- Addition of 2022,2023 diphoton triggers by @gdigrego
Basic Description of the files.
- CutEntry Class :
- Describes the cut by its name
- whether it passed or not the event
- holds a counter for all the events that passed the cut
- holds a counter for all the events that passed the cut with respect to the previous cuts.
- CutManager Class :
- A Vector class of CutEntry class with organization methods.
- 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.
- 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 :
- Uses the CutManager class to parse, calculate and plot the Cut properties that were input.
- Incorporates the algorithm that can execute in the Event loop.
- Holds the current yybbb cuts m_STANDARD_OBJECT_CUTS , m_STANDARD_TRIGGER_CUTS. From which the user can choose to produce cutflow results.
- 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