18 :
AthAlgTool(
t,
n,
p), m_tdt(
"Trig::TrigDecisionTool/TrigDecisionTool"),
19 m_el_eta(0.), m_ph_eta(0.), m_mu_eta(0.), m_mu_beta(0.),
20 m_el_d0(0.), m_mu_d0(0.),
21 m_siel_pt(0.), m_siph_pt(0.), m_siph_xpt(0.), m_simu_pt(0.),
22 m_diel_pt(0.), m_diph_pt(0.), m_dielph_pt(0.), m_diloelph_pt(0.)
24 declareInterface<IDiLepFilters>(
this);
56 CHECK(m_tdt.retrieve());
58 return StatusCode::SUCCESS;
65 for(
const std::string& tn: m_trig_siph)
67 if(m_tdt->isPassed(tn))
69 passFlags |= PASS_SIPH;
73 for(
const std::string& tn: m_trig_diph)
75 if(m_tdt->isPassed(tn))
77 passFlags |= PASS_DIPH;
81 for(
const std::string& tn: m_trig_simu)
83 if(m_tdt->isPassed(tn))
85 passFlags |= PASS_SIMU;
89 for(
const std::string& tn: m_trig_simuba)
91 if(m_tdt->isPassed(tn))
93 passFlags |= PASS_SIMUBA;
98 return passFlags != 0;
104 if (! (passFlags&PASS_SIPH) )
return false;
106 return PassCuts(
el, m_siel_pt);
113 if (! (passFlags&PASS_SIPH) )
return false;
115 if(SameCluster(ph,
el))
return false;
117 if(!PassCuts(ph, m_siph_pt))
return false;
118 if(!PassCuts(
el, m_siph_xpt))
return false;
127 if (! (passFlags&PASS_SIPH) )
return false;
129 if(SameCluster(ph1, ph2))
return false;
131 if(PassCuts(ph1, m_siph_pt) && PassCuts(ph2, m_siph_xpt))
return true;
132 if(PassCuts(ph2, m_siph_pt) && PassCuts(ph1, m_siph_xpt))
return true;
141 if (! (passFlags&PASS_SIPH) )
return false;
143 if(!PassCuts(ph, m_siph_pt))
return false;
144 if(!PassCuts(
mu, m_siph_xpt, m_mu_eta))
return false;
152 if (! (passFlags&PASS_SIMU) )
return false;
154 return PassCuts(
mu, m_simu_pt, m_mu_eta);
160 if (! (passFlags&PASS_SIMUBA) )
return false;
162 return PassCuts(
mu, m_simuba_pt, m_mu_beta);
169 if (! (passFlags&PASS_DIPH) )
return false;
171 if(SameCluster(el1, el2))
return false;
173 if(!PassCuts(el1, m_diel_pt))
return false;
174 if(!PassCuts(el2, m_diel_pt))
return false;
183 if (! (passFlags&PASS_DIPH) )
return false;
185 if(SameCluster(ph1, ph2))
return false;
187 if(!PassCuts(ph1, m_diph_pt))
return false;
188 if(!PassCuts(ph2, m_diph_pt))
return false;
197 if (! (passFlags&PASS_DIPH) )
return false;
199 if(SameCluster(
el, ph))
return false;
201 if(!PassCuts(
el, m_dielph_pt))
return false;
202 if(!PassCuts(ph, m_dielph_pt))
return false;
211 if (! (passFlags&PASS_DIPH) )
return false;
213 if(SameCluster(
el, ph))
return false;
215 if(!PassCuts(
el, m_diloelph_pt,
true))
return false;
216 if(!PassCuts(ph, m_diloelph_pt))
return false;
223 return std::fabs(
part.eta()) < eta_cut;
235 return std::fabs(el_tr->
d0()) > d0_cut;
247 return std::fabs(mu_tr->
d0()) > d0_cut;
252 bool isLoose =
false;
253 eg.passSelection(isLoose,
"Loose");
261 if(calo1 ==
nullptr || calo2 ==
nullptr)
267 return calo1->
p4().DeltaR(calo2->
p4()) < 0.01;
275 if(!
mu.parameter(
chi2, xAOD::Muon::msInnerMatchChi2))
return false;
278 if(!
mu.parameter(dof, xAOD::Muon::msInnerMatchDOF))
return false;
279 if(dof == 0) dof = 1;
281 return (
chi2 /
static_cast<float>(dof)) < 5.;
286 if(
el.pt() < pt_cut * m_GeVtoMeV)
return false;
287 if(!PassEta(
el, m_el_eta))
return false;
291 if(!IsLoose(
el))
return false;
295 if(!Passd0(
el, m_el_d0))
return false;
303 if(ph.
pt() < pt_cut * m_GeVtoMeV)
return false;
304 if(!PassEta(ph, m_ph_eta))
return false;
305 if(!IsLoose(ph))
return false;
316 if(!Passd0(
mu, m_mu_d0))
return false;
323 if(mu_mstr ==
nullptr)
return false;
328 if(mu_ip->
pt() < pt_cut * m_GeVtoMeV)
return false;
329 if(!PassEta(*mu_ip, eta_cut))
return false;