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 considered

  • overlapFlag – 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 electrons

  • inMuons – Input xAOD container for muons

  • inJets – Input xAOD container for jets

  • inPhotons – Input xAOD container for photons

  • inTaus – Input xAOD container for taus

  • syst_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 is nullptr

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

enum SystType

An enum encoding systematics according to the various objects.

Values:

enumerator NOMINAL
enumerator ELSYST
enumerator MUSYST
enumerator JETSYST
enumerator PHSYST
enumerator TAUSYST

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 if m_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 if m_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 if m_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 if m_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