7# pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
45 if(
m_trigInfo[trigger].areAnyL1TauIsolated()) {
46 ATH_MSG_FATAL(
"Cannot use isolated L1 tau items if running with SelectL1ByETOnly = True: " << trigger);
47 return StatusCode::FAILURE;
56 const std::string sfx = info.getHLTTauLegContainerSfx();
64 return StatusCode::SUCCESS;
70 std::vector<const xAOD::TauJet*> tau_vec;
74 std::vector<int> leg_indices = {-1};
75 if(filter_legs) leg_indices = info.getHLTTauLegIndices();
76 for(
size_t i = 0; i < leg_indices.size(); ++i) {
77 const int leg = leg_indices[i];
78 const std::string tau_container_name =
getOnlineContainerKey(info.getHLTTauLegContainerSfxs().at(leg == -1 ? 0 : i)).key();
79 ATH_MSG_DEBUG(
"Tau container name is: " << tau_container_name);
82 for(
auto& featLinkInfo :
vec) {
90 if(include_0P && nTracks == 0) tau_vec.push_back(feat);
91 else tau_vec.push_back(feat);
109 std::vector<const xAOD::TauJet*> tau_vec;
112 if(!
taus.isValid()) {
119 if(tau->pt() <
threshold*Gaudi::Units::GeV)
continue;
122 if(std::abs(tau->eta()) > 1.37 && std::abs(tau->eta()) < 1.52)
continue;
126 if(!passThinningAcc.
withDefault(*tau,
true))
continue;
131 if(nTracks == 1 || nTracks == 3) tau_vec.push_back(tau);
146 std::vector<const xAOD::eFexTauRoI*> roi_vec;
161 if(!thresholdPatterns.isValid()) {
162 ATH_MSG_WARNING(
"Failed to create thresholdPatterns property accessor for the L1_eTauRoi container");
178 std::vector<std::pair<const xAOD::eFexTauRoI*, const xAOD::jFexTauRoI*>> roi_vec;
186 if(!jTau_roi_link.isValid()) {
187 ATH_MSG_WARNING(
"Failed to create jTauLink accessor for the L1_cTauRoi container");
192 for(
size_t i = 0; i < rois->size(); i++) {
194 const xAOD::jFexTauRoI* jTau_roi = jTau_roi_link(i).isValid() ? *jTau_roi_link(i) :
nullptr;
201 if(!thresholdPatterns.isValid()) {
202 ATH_MSG_WARNING(
"Failed to create thresholdPatterns property accessor for the L1_cTauRoi container");
206 for(
size_t i = 0; i < rois->size(); i++) {
208 const xAOD::jFexTauRoI* jTau_roi = jTau_roi_link(i).isValid() ? *jTau_roi_link(i) :
nullptr;
225 ATH_MSG_ERROR(
"HLT TauJet container not registered for suffix \"" << container_suffix <<
"\". Returning the default \"" <<
m_hltTauJetKeysMap.at(
"MVA").key() <<
"\"");
228 ATH_MSG_ERROR(
"HLT TauJet container not registered for suffix \"" << container_suffix <<
"\". Returning the first available container \"" <<
m_hltTauJetKeysMap.begin()->second.key() <<
"\"");
241 if(
m_trigDecTool->ExperimentalAndExpertMethods().isHLTTruncated()){
243 return StatusCode::SUCCESS;
253 return StatusCode::SUCCESS;
258 return StatusCode::SUCCESS;
264 std::vector<const xAOD::TauJet*> tau_vec;
267 if(!tauid_medium.isValid()) {
273 if(tau->pt() <
threshold*Gaudi::Units::GeV)
continue;
280 if(!tauid_medium(*tau))
continue;
283 tau_vec.push_back(tau);
292 std::vector<const xAOD::TauJet*> tau_vec_0p, tau_vec_1p, tau_vec_mp;
298 if(nTracks == 0) tau_vec_0p.push_back(tau);
299 else if(nTracks == 1) tau_vec_1p.push_back(tau);
300 else tau_vec_mp.push_back(tau);
303 return {tau_vec_0p, tau_vec_1p, tau_vec_mp};
309 std::vector<const xAOD::TauJet*> tau_vec_1p, tau_vec_3p;
315 if(nTracks == 1) tau_vec_1p.push_back(tau);
316 else if(nTracks == 3) tau_vec_3p.push_back(tau);
319 return {tau_vec_1p, tau_vec_3p};
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_WARNING(x)
std::vector< size_t > vec
Handle class for reading a decoration on an object.
virtual StatusCode initialize() override
initialize
SG::ReadHandle< xAOD::EventInfo > GetEventInfo(const EventContext &) const
Return a ReadHandle for an EventInfo object (get run/event numbers, etc.).
PublicToolHandle< Trig::TrigDecisionTool > m_trigDecTool
Tool to tell whether a specific trigger is passed.
AthMonitorAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor.
Helper class to provide constant type-safe access to aux data.
const_reference_type withDefault(const ELT &e, const T &deflt) const
Fetch the variable for one element, as a const reference, with a default.
Handle class for reading a decoration on an object.
Property holding a SG store/key/clid from which a ReadHandle is made.
virtual bool isValid() override final
Can the handle be successfully dereferenced?
std::vector< const xAOD::eFexTauRoI * > getL1eTAUs(const EventContext &ctx, const std::string &l1_item) const
Gaudi::Property< std::map< std::string, float > > m_L1_Phase1_thresholds
const SG::ReadHandleKey< xAOD::TauJetContainer > & getOnlineContainerKey(const std::string &container_suffix) const
SG::ReadHandleKey< xAOD::jFexTauRoIContainer > m_phase1l1jTauRoIKey
SG::ReadDecorHandleKey< xAOD::eFexTauRoIContainer > m_phase1l1cTauRoIDecorKey
virtual StatusCode initialize() override
initialize
std::map< std::string, TrigTauInfo > m_trigInfo
std::pair< std::vector< const xAOD::TauJet * >, std::vector< const xAOD::TauJet * > > classifyOfflineTaus(const EventContext &ctx, const std::vector< const xAOD::TauJet * > &taus, const float threshold=0.0, const TauID tau_id=TauID::None) const
TrigTauMonitorBaseAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
std::vector< const xAOD::TauJet * > getOfflineTausAll(const EventContext &ctx, const float threshold=20.0) const
std::unordered_map< std::string, SG::ReadHandleKey< xAOD::TauJetContainer > > m_hltTauJetKeysMap
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
Gaudi::Property< std::vector< std::string > > m_triggers
SG::ReadDecorHandleKey< xAOD::eFexTauRoIContainer > m_phase1l1cTauRoIThresholdPatternsKey
SG::ReadHandleKey< xAOD::eFexTauRoIContainer > m_phase1l1eTauRoIKey
std::tuple< std::vector< const xAOD::TauJet * >, std::vector< const xAOD::TauJet * >, std::vector< const xAOD::TauJet * > > classifyOnlineTaus(const EventContext &ctx, const std::vector< const xAOD::TauJet * > &taus, const float threshold=0.0) const
SG::ReadDecorHandleKey< xAOD::jFexTauRoIContainer > m_phase1l1jTauRoIThresholdPatternsKey
std::map< std::string, TrigTauInfo > & getTrigInfoMap()
const TrigTauInfo & getTrigInfo(const std::string &trigger) const
virtual StatusCode processEvent(const EventContext &ctx) const =0
std::vector< const xAOD::TauJet * > classifyTausAll(const EventContext &ctx, const std::vector< const xAOD::TauJet * > &taus, const float threshold=0.0, const TauID tau_id=TauID::None) const
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::tuple< std::vector< const xAOD::TauJet * >, std::vector< const xAOD::TauJet * >, std::vector< const xAOD::TauJet * > > getOnlineTaus(const EventContext &ctx, const std::string &trigger) const
std::vector< const xAOD::TauJet * > getOnlineTausAll(const std::string &trigger, bool include_0P=true, bool filter_legs=false) const
std::vector< std::pair< const xAOD::eFexTauRoI *, const xAOD::jFexTauRoI * > > getL1cTAUs(const EventContext &ctx, const std::string &l1_item) const
SG::ReadHandleKey< xAOD::eFexTauRoIContainer > m_phase1l1cTauRoIKey
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
@ Tile
The Tile calorimeter.
@ Core
Core flags describing the event.
@ LAr
The LAr calorimeter.
@ Error
The sub-detector issued an error.
bool detail(TauJetParameters::Detail detail, int &value) const
Get and set values of common details variables via enum.
float et() const
TOB ET (decoded from TOB, stored for convenience).
const std::string & featureString()
static const unsigned int lastFeatureOfType
Run 3 "enum". Only return the final feature along each route through the navigation.
static const unsigned int Physics
TauJet_v3 TauJet
Definition of the current "tau version".
jFexTauRoI_v1 jFexTauRoI
Define the latest version of the jFexSRJetRoI class.
TauJetContainer_v3 TauJetContainer
Definition of the current "taujet container version".
eFexTauRoI_v1 eFexTauRoI
Define the latest version of the eFexTauRoI class.