\(\mu\)

class MuonSelector : public xAH::Algorithm

Public Functions

MuonSelector()
~MuonSelector()
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()
bool executeSelection(const xAOD::MuonContainer *inMuons, float mcEvtWeight, bool countPass, ConstDataVector<xAOD::MuonContainer> *selectedMuons)
virtual int passCuts(const xAOD::Muon *muon, const xAOD::Vertex *primaryVertex)

Public Members

bool m_useCutFlow = true
std::string m_inContainerName = ""

input container name

std::string m_outContainerName = ""

output container name

std::string m_outAuxContainerName

output auxiliary container name

std::string m_inputAlgoSystNames = ""
std::string m_outputAlgoSystNames = "MuonSelector_Syst"
bool m_decorateSelectedObjects = true

decorate selected objects - default “passSel”

bool m_createSelectedContainer = false

fill using SG::VIEW_ELEMENTS to be light weight

int m_nToProcess = -1

look at n objects

int m_pass_min = -1

minimum number of objects passing cuts

int m_pass_max = -1

maximum number of objects passing cuts

float m_pT_max = 1e8

require pT < pt_max

float m_pT_min = 1e8

require pT > pt_min

bool m_pT_NaNcheck = false

check if pT is NaN

std::string m_muonQualityStr = "Medium"

require quality

bool m_isRun3Geo = false

Switch on Run3 geometry for muon selector tool.

float m_eta_max = 1e8

require type require |eta| < eta_max

float m_d0_max = 1e8

require d0 < m_d0_max

float m_d0sig_max = 1e8

require d0 significance (at BL) < m_d0sig_max

float m_z0sintheta_max = 1e8

require z0*sin(theta) (at BL - corrected with vertex info) < m_z0sintheta_max

bool m_removeCosmicMuon = false

Remove cosmic muons that fail absolute z0 and d0 selections.

bool m_removeEventBadMuon = true

Remove events with a bad muon, defined by poor q/p.

bool m_doIsolation = true

enable or disable isolation

std::string m_MinIsoWPCut = ""

reject objects which do not pass this isolation cut - default = “” (no cut)

std::string m_IsoWPList = "FCTightTrackOnly_FixedRad,FCLoose_FixedRad,FCTight_FixedRad,FixedCutPflowTight,FixedCutPflowLoose"

decorate objects with ‘isIsolated_*’ flag for each WP in this input list - default = all current ASG WPs

std::string m_CaloIsoEff = "0.1*x+90"

to define a custom WP - make sure “UserDefined” is added in the above input list!

std::string m_TrackIsoEff = "98"

to define a custom WP - make sure “UserDefined” is added in the above input list!

std::string m_CaloBasedIsoType = "topoetcone20"

to define a custom WP - make sure “UserDefined” is added in the above input list!

std::string m_TrackBasedIsoType = "ptvarcone30"

to define a custom WP - make sure “UserDefined” is added in the above input list!

std::string m_singleMuTrigChains = ""

A comma-separated string w/ alll the HLT single muon trigger chains for which you want to perform the matching. If left empty (as it is by default), no trigger matching will be attempted at all

std::string m_diMuTrigChains = ""

A comma-separated string w/ all the HLT dimuon trigger chains for which you want to perform the matching. If left empty (as it is by default), no trigger matching will be attempted at all

double m_minDeltaR = 0.1

Recommended threshold for muon triggers: see https://svnweb.cern.ch/trac/atlasoff/browser/Trigger/TrigAnalysis/TriggerMatchingTool/trunk/src/TestMatchingToolAlg.cxx.

bool m_merged_muons = false

Element links need to be updated if merged muons are used (LRT + std) / false by default.

std::string m_trigInputPrefix = ""

Input prefix of trigger decision tool.

bool m_doLRT = false

add LRT muon information

std::string m_isoDecSuffix = ""

Private Members

int m_muonQuality
int m_numEvent
int m_numObject
int m_numEventPass
int m_weightNumEventPass
int m_numObjectPass
TH1D *m_cutflowHist = nullptr
TH1D *m_cutflowHistW = nullptr
int m_cutflow_bin
bool m_isUsedBefore = false
TH1D *m_mu_cutflowHist_1 = nullptr
TH1D *m_mu_cutflowHist_2 = nullptr
int m_mu_cutflow_all
int m_mu_cutflow_eta_and_quaility_cut
int m_mu_cutflow_ptmax_cut
int m_mu_cutflow_ptmin_cut
int m_mu_cutflow_ptnan_check
int m_mu_cutflow_type_cut
int m_mu_cutflow_z0sintheta_cut
int m_mu_cutflow_d0_cut
int m_mu_cutflow_d0sig_cut
int m_mu_cutflow_iso_cut
int m_mu_cutflow_cosmic_cut
std::vector<std::string> m_IsoKeys
std::vector<std::string> m_singleMuTrigChainsList
std::vector<std::string> m_diMuTrigChainsList

/* contains all the HLT trigger chains tokens extracted from m_singleMuTrigChains */

asg::AnaToolHandle<CP::IIsolationSelectionTool> m_isolationSelectionTool_handle = {"CP::IsolationSelectionTool/IsolationSelectionTool", this}

/* contains all the HLT trigger chains tokens extracted from m_diMuTrigChains */

CP::IsolationSelectionTool *m_isolationSelectionTool = {nullptr}
asg::AnaToolHandle<CP::IMuonSelectionTool> m_muonSelectionTool_handle = {"CP::MuonSelectionTool/MuonSelectionTool", this}
asg::AnaToolHandle<Trig::IMatchingTool> m_trigMuonMatchTool_handle
asg::AnaToolHandle<Trig::TrigDecisionTool> m_trigDecTool_handle = {"Trig::TrigDecisionTool/TrigDecisionTool"}
asg::AnaToolHandle<Trig::IMatchScoringTool> m_scoreTool = {"Trig::DRScoringTool/DRScoringTool"}
bool m_doTrigMatch = true

This internal variable gets set to false if no triggers are defined or if TrigDecisionTool is missing.