27 "Turn on removal of overlapping calo muons");
29 "Remove electrons in DR cone of muons");
31 "Delta-R cone for flagging overlaps");
33 "Calculate delta-R using rapidity");
43 ATH_MSG_DEBUG(
"Configuring removal of overlapping calo muons");
53 return StatusCode::SUCCESS;
69 return StatusCode::SUCCESS;
91 for(
const auto electron : electrons){
98 for(
const auto muon : muons) {
100 if(muon(acc.m_muonTypeAcc) != xAOD::Muon::MuonType::CaloTagged)
continue;
103 auto muTrk = muon(acc.m_muonTrkAcc);
105 bool removeMu =
false;
106 if (elTrk.has_value() && muTrk.has_value()) removeMu = (elTrk == muTrk);
115 for(
const auto muon : muons){
119 auto muTrk = muon(acc.m_muonTrkAcc);
122 for(
const auto electron : electrons) {
130 bool removeEle =
false;
131 if (elTrk.has_value() && muTrk.has_value()) removeEle = (elTrk == muTrk);
141 return StatusCode::SUCCESS;
148 auto elGsfTrk = electron(acc.m_eleTrackAcc);
149 if (elGsfTrk.size() == 0 || !elGsfTrk[0].has_value())
150 throw std::runtime_error(
"Electron has no associated track");
151 return elGsfTrk[0].value()(acc.m_gsfOriginalTrackAcc);
#define ATH_CHECK
Evaluate an expression and check for errors.
DataVector adapter that acts like it holds const pointers.
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
ObjectId< Particle1Def > Particle1Id
ObjectId< EventContextDef > EventContextId
ObjectRange< Particle2Def > Particle2Range
ObjectRange< Particle1Def > Particle1Range
@ Muon
The object is a muon.
@ Electron
The object is an electron.