5#ifndef TRIGTAUMONITORING_TRIGTAUMONITORBASEALGORITHM_H
6#define TRIGTAUMONITORING_TRIGTAUMONITORBASEALGORITHM_H
18#include "Gaudi/Parsers/Factory.h"
19#include "GaudiKernel/SystemOfUnits.h"
28 virtual StatusCode
fillHistograms(
const EventContext& ctx)
const override;
38 Gaudi::Property<std::vector<std::string>>
m_triggers{
this,
"TriggerList", {}};
54 std::vector<const xAOD::TauJet*>
getOnlineTausAll(
const std::string& trigger,
bool include_0P=
true)
const;
55 std::tuple<std::vector<const xAOD::TauJet*>, std::vector<const xAOD::TauJet*>, std::vector<const xAOD::TauJet*>>
getOnlineTaus(
const std::string& trigger)
const;
62 std::vector<const xAOD::eFexTauRoI*>
getL1eTAUs(
const EventContext& ctx,
const std::string& l1_item)
const;
63 std::vector<const xAOD::jFexTauRoI*>
getL1jTAUs(
const EventContext& ctx,
const std::string& l1_item)
const;
64 std::vector<std::pair<const xAOD::eFexTauRoI*, const xAOD::jFexTauRoI*>>
getL1cTAUs(
const EventContext& ctx,
const std::string& l1_item)
const;
67 virtual StatusCode
processEvent(
const EventContext& ctx)
const = 0;
70 inline double dR(
const double eta1,
const double phi1,
const double eta2,
const double phi2)
const
72 double deta = std::fabs(eta1 - eta2);
74 return std::sqrt(deta*deta + dphi*dphi);
77 template <
typename T1 = xAOD::IParticle,
typename T2 = xAOD::IParticle>
80 for(
auto tau_2 : tau_vec) {
81 if(tau->p4().DeltaR(tau_2->p4()) <
threshold)
return true;
86 inline bool matchObjects(
const TLorentzVector& tau,
const std::vector<TLorentzVector>& tau_vec,
float threshold)
const
88 for(
auto& tau_2 : tau_vec) {
89 if(tau.DeltaR(tau_2) <
threshold)
return true;
94 template <
typename T1 = xAOD::IParticle,
typename T2 = xAOD::eFexTauRoI>
97 return dR(tau_1->eta(), tau_1->phi(), tau_2->eta(), tau_2->phi()) <
threshold;
100 template <
typename T1 = xAOD::IParticle,
typename T2 = xAOD::IParticle>
107 TLorentzVector true_tau_p4;
108 true_tau_p4.SetPtEtaPhiM(acc_ptvis(*true_tau), acc_etavis(*true_tau), acc_phivis(*true_tau), acc_mvis(*true_tau));
110 for(
auto tau : tau_vec) {
111 if(true_tau_p4.DeltaR(tau->p4()) <
threshold)
return true;
118 std::tuple<std::vector<const xAOD::TauJet*>, std::vector<const xAOD::TauJet*>, std::vector<const xAOD::TauJet*>>
classifyOnlineTaus(
const std::vector<const xAOD::TauJet*>&
taus,
const float threshold = 0.0)
const;
Header file to be included by clients of the Monitored infrastructure.
Property holding a SG store/key/clid/attr name from which a ReadDecorHandle is made.
AthMonitorAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor.
Helper class to provide constant type-safe access to aux data.
Property holding a SG store/key/clid/attr name from which a ReadDecorHandle is made.
Property holding a SG store/key/clid from which a ReadHandle is made.
std::vector< const xAOD::eFexTauRoI * > getL1eTAUs(const EventContext &ctx, const std::string &l1_item) const
const SG::ReadHandleKey< xAOD::TauJetContainer > & getOnlineContainerKey(const std::string &sequence) const
Gaudi::Property< bool > m_do_efficiency_plots
Gaudi::Property< std::map< std::string, float > > m_L1_Phase1_thresholds
SG::ReadHandleKey< xAOD::jFexTauRoIContainer > m_phase1l1jTauRoIKey
SG::ReadDecorHandleKey< xAOD::eFexTauRoIContainer > m_phase1l1cTauRoIDecorKey
virtual StatusCode initialize() override
initialize
SG::ReadHandleKey< xAOD::TauJetContainer > m_hltTauJetKey
std::map< std::string, TrigTauInfo > m_trigInfo
double dR(const double eta1, const double phi1, const double eta2, const double phi2) const
TrigTauMonitorBaseAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
std::vector< const xAOD::TauJet * > getOfflineTausAll(const EventContext &ctx, const float threshold=20.0) const
bool matchTruthObjects(const T1 *true_tau, const std::vector< const T2 * > &tau_vec, float threshold) const
std::pair< std::vector< const xAOD::TauJet * >, std::vector< const xAOD::TauJet * > > getOfflineTaus(const EventContext &ctx, const float threshold=20.0, const TauID tau_id=TauID::None) const
bool matchObjects(const T1 *tau, const std::vector< const T2 * > &tau_vec, float threshold) const
Gaudi::Property< std::vector< std::string > > m_triggers
SG::ReadDecorHandleKey< xAOD::eFexTauRoIContainer > m_phase1l1cTauRoIThresholdPatternsKey
SG::ReadHandleKey< xAOD::eFexTauRoIContainer > m_phase1l1eTauRoIKey
SG::ReadDecorHandleKey< xAOD::jFexTauRoIContainer > m_phase1l1jTauRoIThresholdPatternsKey
SG::ReadHandleKey< xAOD::TauJetContainer > m_hltTauJetLLPKey
bool matchObjects(const T1 *tau_1, const T2 *tau_2, float threshold) const
std::map< std::string, TrigTauInfo > & getTrigInfoMap()
bool matchObjects(const TLorentzVector &tau, const std::vector< TLorentzVector > &tau_vec, float threshold) const
const TrigTauInfo & getTrigInfo(const std::string &trigger) const
virtual StatusCode processEvent(const EventContext &ctx) const =0
SG::ReadHandleKey< xAOD::TauJetContainer > m_hltTauJetCaloMVAOnlyKey
virtual StatusCode fillHistograms(const EventContext &ctx) const override
adds event to the monitoring histograms
SG::ReadDecorHandleKey< xAOD::eFexTauRoIContainer > m_phase1l1eTauRoIThresholdPatternsKey
Gaudi::Property< bool > m_L1_select_by_et_only
SG::ReadDecorHandleKey< xAOD::TauJetContainer > m_offlineGNTauDecorKey
std::vector< const xAOD::jFexTauRoI * > getL1jTAUs(const EventContext &ctx, const std::string &l1_item) const
std::vector< std::pair< const xAOD::eFexTauRoI *, const xAOD::jFexTauRoI * > > getL1cTAUs(const EventContext &ctx, const std::string &l1_item) const
std::vector< const xAOD::TauJet * > classifyTausAll(const std::vector< const xAOD::TauJet * > &taus, const float threshold=0.0, const TauID tau_id=TauID::None) const
SG::ReadHandleKey< xAOD::eFexTauRoIContainer > m_phase1l1cTauRoIKey
SG::ReadHandleKey< xAOD::TauJetContainer > m_hltTauJetLRTKey
std::tuple< std::vector< const xAOD::TauJet * >, std::vector< const xAOD::TauJet * >, std::vector< const xAOD::TauJet * > > getOnlineTaus(const std::string &trigger) const
std::pair< std::vector< const xAOD::TauJet * >, std::vector< const xAOD::TauJet * > > classifyOfflineTaus(const std::vector< const xAOD::TauJet * > &taus, const float threshold=0.0, const TauID tau_id=TauID::None) const
Gaudi::Property< bool > m_do_variable_plots
Gaudi::Property< std::map< std::string, uint64_t > > m_L1_Phase1_threshold_patterns
SG::ReadDecorHandleKey< xAOD::EventInfo > m_eventInfoDecorKey
SG::ReadHandleKey< xAOD::TauJetContainer > m_offlineTauJetKey
std::tuple< std::vector< const xAOD::TauJet * >, std::vector< const xAOD::TauJet * >, std::vector< const xAOD::TauJet * > > classifyOnlineTaus(const std::vector< const xAOD::TauJet * > &taus, const float threshold=0.0) const
std::vector< const xAOD::TauJet * > getOnlineTausAll(const std::string &trigger, bool include_0P=true) const
T wrapToPi(T phi)
Wrap angle in radians to [-pi, pi].
Helper for azimuthal angle calculations.