Overlap Removal¶
-
class OverlapRemover : public xAH::Algorithm¶
A wrapper of the overlap removal tool in the ASG AssociationUtils package.
The logic of the OLR belongs to the ASG tool itself, and is described extensively in the Analysis Harmonisation Task Force note.
If you wish to apply a custom OLR scheme, please contact the author marco.milesi@cern.ch for detailed instructions.
The idea behind this algorithm is to consistently thread together the inputs from upstream xAODAnaHelpers algorithms based on user’s configuration, handling also the case where systematics on the input physics objects are taken into account. Here follows a usage example.
Consider the simplified scenario where we care only about jets* and electrons. Assuming the typical xAODAnaHelpers analysis configuration through
xAH_config
, the analysis workflow could look like the following:c = xAH_config() # ... c.algorithm("JetSelector", JetSelectorDict) c.algorithm("ElectronSelector", ElectronSelectorDict) # ... c.algorithm("OverlapRemover", OverlapRemoverDict) # ...
where each algorithm has the following I/O systematics configuration (via python dictionaries):
JetSelectorDict = { # ... "m_inputAlgo" : "JetCalibrator_Syst", "m_outputAlgo" : "JetSelector_Syst", # ... } ElectronSelectorDict = { # ... "m_inputAlgo" : "ElectronCalibrator_Syst", "m_outputAlgo" : "ElectronSelector_Syst", # ... } OverlapRemoverDict = { # ... "m_inputAlgoJets" : "JetSelector_Syst", # leave empty when not considering jet systematics "m_inputAlgoElectrons" : "ElectronSelector_Syst", # leave empty when not considering electron systematics # ... }
In this way the overlap removal algorithm will be able to correctly work out all the combinatorics, generating output
xAOD
containers for jets and electrons for each input systematics combination to be subsequently used downstream according to the user’s needs. The overlap removal algorithm creates an output systematic list that is a combination of systematics from all input containers.Public Functions
-
OverlapRemover()¶
-
virtual EL::StatusCode setupJob(EL::Job &job)¶
-
virtual EL::StatusCode fileExecute()¶
-
virtual EL::StatusCode histInitialize()¶
-
virtual EL::StatusCode changeInput(bool firstFile)¶
-
virtual EL::StatusCode initialize()¶
-
virtual EL::StatusCode execute()¶
-
virtual EL::StatusCode postExecute()¶
-
virtual EL::StatusCode finalize()¶
-
virtual EL::StatusCode histFinalize()¶
-
virtual EL::StatusCode fillObjectCutflow(const xAOD::IParticleContainer *objCont, const std::string &overlapFlag = "passOR", const std::string &selectFlag = "passSel")¶
Fill the cutflow histograms.
- Parameters
objCont – The
xAOD
container to be consideredoverlapFlag – The string identifying objects not overlapping with another object, to be kept (default is
"passOR"
)selectFlag – The string identifying selected objects (default is
"passSel"
)
-
virtual EL::StatusCode executeOR(const xAOD::ElectronContainer *inElectrons, const xAOD::MuonContainer *inMuons, const xAOD::JetContainer *inJets, const xAOD::PhotonContainer *inPhotons, const xAOD::TauJetContainer *inTaus, SystType syst_type = NOMINAL, std::vector<std::string> *sysVec = nullptr, std::vector<std::string> *sysVecOut = nullptr)¶
Function that internally calls the OLR tool for the input containers (and systematics)
- Parameters
inElectrons – Input
xAOD
container for electronsinMuons – Input
xAOD
container for muonsinJets – Input
xAOD
container for jetsinPhotons – Input
xAOD
container for photonsinTaus – Input
xAOD
container for taussyst_type – The type of object for which input systematics should be considered. Default is
NOMINAL
sysVec – The list of the input systematics for a given object. Must match with the choice of
syst_type
. Default isnullptr
-
EL::StatusCode setCutFlowHist()¶
Setup cutflow histograms.
-
EL::StatusCode setCounters()¶
Initialise counters for events/objects.
Public Members
-
bool m_useCutFlow = true¶
Fill the cutflow histogram(s) for object counting.
-
bool m_decorateSelectedObjects¶
Decorate selected objects (the default decoration string is
passOR
)
-
std::string m_decor = "passOR"¶
-
bool m_createSelectedContainers¶
Make a copy of input container(s) with selected objects (using
SG::VIEW_ELEMENTS
to be light weight)
-
bool m_useSelected = false¶
In the OLR, consider only objects passing a (pre)selection.
-
std::string m_bTagWP = ""¶
Use b-tagging decision, set previously with the given decoration name, to remove electrons and muons.
Note
This is automatically set by BJetEfficiencyCorrector
-
bool m_linkOverlapObjects = true¶
Create a link between overlapped objects.
-
bool m_useBoostedLeptons = false¶
Use boosted object working point.
-
bool m_doEleEleOR = false¶
Do overlap removal between electrons (HSG2 prescription)
-
bool m_applyRelPt = false¶
Turn ON ApplyRelPt in MuJetOverlapTool (default is false)
-
bool m_lepFavWP = false¶
Turn ON Lepton favored working point (HSG2 prescription)
-
std::string m_outputAlgoSystNames = "ORAlgo_Syst"¶
Output systematics list container name.
-
std::string m_inContainerName_Electrons = ""¶
Input container name.
-
std::string m_outContainerName_Electrons = ""¶
Output container name.
-
std::string m_inputAlgoElectrons = ""¶
Name of the
std::vector
of systematics coming from the upstream algorithm
-
std::string m_inContainerName_Muons = ""¶
-
std::string m_outContainerName_Muons = ""¶
-
std::string m_inputAlgoMuons = ""¶
-
std::string m_inContainerName_Jets = ""¶
-
std::string m_outContainerName_Jets = ""¶
-
std::string m_inputAlgoJets = ""¶
-
std::string m_inContainerName_Photons = ""¶
-
std::string m_outContainerName_Photons = ""¶
-
std::string m_inputAlgoPhotons = ""¶
-
std::string m_inContainerName_Taus = ""¶
-
std::string m_outContainerName_Taus = ""¶
-
std::string m_inputAlgoTaus = ""¶
Protected Types
Protected Attributes
-
int m_numEvent¶
A counter for the number of processed events.
-
int m_numObject¶
A counter for the number of processed objects.
-
int m_numEventPass¶
A counter for the number of passed events.
-
int m_weightNumEventPass¶
A counter for the number of passed weighted events.
-
int m_numObjectPass¶
A counter for the number of passed objects.
-
bool m_useElectrons = false¶
Consider electrons in the OLR.
This is set to
false
ifm_inContainerName_Electrons
is set as an empty string. Electrons (unlike jets) are considered “optional” objetcs in the OLR.
-
bool m_useMuons = false¶
Consider muons in the OLR.
This is set to
false
ifm_inContainerName_Muons
is set as an empty string. Muons (unlike jets) are considered “optional” objects in the OLR.
-
bool m_usePhotons = false¶
Consider photons in the OLR.
This is set to
false
ifm_inContainerName_Photons
is set as an empty string. Photons (unlike jets) are considered “optional” objects in the OLR.
-
bool m_useTaus = false¶
Consider taus in the OLR.
This is set to
false
ifm_inContainerName_Taus
is set as an empty string. Taus (unlike jets) are considered “optional” objects in the OLR.
-
std::string m_outAuxContainerName_Electrons¶
Output auxiliary container name.
-
std::string m_outAuxContainerName_Muons¶
Output auxiliary container name.
-
std::string m_outAuxContainerName_Jets¶
Output auxiliary container name.
-
std::string m_outAuxContainerName_Photons¶
Output auxiliary container name.
-
std::string m_outAuxContainerName_Taus¶
Output auxiliary container name.
-
ORUtils::ToolBox m_ORToolbox¶
Pointer to the CP Tool which performs the actual OLR.
-
TH1D *m_el_cutflowHist_1 = nullptr¶
Pointer to the histogram for the electron cutflow.
-
TH1D *m_mu_cutflowHist_1 = nullptr¶
Pointer to the histogram for the muon cutflow.
-
TH1D *m_jet_cutflowHist_1 = nullptr¶
Pointer to the histogram for the jet cutflow.
-
TH1D *m_ph_cutflowHist_1 = nullptr¶
Pointer to the histogram for the photon cutflow.
-
TH1D *m_tau_cutflowHist_1 = nullptr¶
Pointer to the histogram for the tau cutflow.
-
int m_el_cutflow_OR_cut¶
-
int m_mu_cutflow_OR_cut¶
-
int m_jet_cutflow_OR_cut¶
-
int m_ph_cutflow_OR_cut¶
-
int m_tau_cutflow_OR_cut¶
-
OverlapRemover()¶