ATLAS Offline Software
Loading...
Searching...
No Matches
TrigTauMonitorBoostedDiTauAlgorithm.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3*/
4
5#if __GNUC__ >= 16
6// Suppress false-positive warning seen with gcc16.
7# pragma GCC diagnostic ignored "-Wmaybe-uninitialized"
8#endif
9
13
14
15TrigTauMonitorBoostedDiTauAlgorithm::TrigTauMonitorBoostedDiTauAlgorithm(const std::string& name, ISvcLocator* pSvcLocator)
16 : TrigTauMonitorBaseAlgorithm(name, pSvcLocator)
17{}
18
21
22 ATH_CHECK( m_hltBoostedDiTauJetKey.initialize() );
23
24 return StatusCode::SUCCESS;
25}
26
27StatusCode TrigTauMonitorBoostedDiTauAlgorithm::processEvent(const EventContext& /*ctx*/) const
28{
29 ATH_MSG_DEBUG("Entry process event boosted");
30 for(const std::string& trigger : m_triggers) {
31 const TrigTauInfo& info = getTrigInfo(trigger);
32 if(!info.isHLTBoostedDiTau()) {
33 ATH_MSG_WARNING("Chain \"" << trigger << "\" is not a boosted di-tau trigger. Skipping...");
34 continue;
35 }
36
37 // Online taus
38 std::vector<const xAOD::DiTauJet*> hlt_boosted_ditaus = getOnlineBoostedDiTausAll(trigger);
39
40 if(m_do_variable_plots && !hlt_boosted_ditaus.empty()) fillBoostedDiTauVars(trigger, hlt_boosted_ditaus);
41 }
42
43 return StatusCode::SUCCESS;
44}
45
46std::vector<const xAOD::DiTauJet*> TrigTauMonitorBoostedDiTauAlgorithm::getOnlineBoostedDiTausAll(const std::string& trigger) const
47{
48 std::vector<const xAOD::DiTauJet*> boosted_ditau_vec;
49
50 std::vector<TrigCompositeUtils::LinkInfo<xAOD::DiTauJetContainer>> features_boosted_ditau =
52
53 for (const auto& fb_ditau : features_boosted_ditau) {
54 if (!fb_ditau.link.isValid()) continue;
55
56 const xAOD::DiTauJet* ditau = *(fb_ditau.link);
57 if (!ditau) continue;
58
59 boosted_ditau_vec.push_back(ditau);
60 }
61 return boosted_ditau_vec;
62}
63
64void TrigTauMonitorBoostedDiTauAlgorithm::fillBoostedDiTauVars(const std::string& trigger, const std::vector<const xAOD::DiTauJet*>& boosted_ditau_vec) const
65{
66 auto monGroup = getGroup(trigger+"_BoostedDiTauVars");
67
68 static const SG::ConstAccessor<float> OmniScore("omni_score");
69 static const SG::ConstAccessor<float> RTracksLead("R_tracks_lead");
70 static const SG::ConstAccessor<float> RTracksSubl("R_tracks_subl");
71 static const SG::ConstAccessor<float> FCoreLead("f_core_lead");
72 static const SG::ConstAccessor<float> FCoreSubl("f_core_subl");
73 static const SG::ConstAccessor<int> NTracks("n_track");
74 static const SG::ConstAccessor<int> NTracksLead("n_tracks_lead");
75 static const SG::ConstAccessor<int> NTracksSubl("n_tracks_subl");
76
77 const auto* ditau = boosted_ditau_vec.at(0);
78
79 auto omni_score = Monitored::Scalar<float>("omni_score", OmniScore(*ditau));
80 auto R_tracks_lead = Monitored::Scalar<float>("R_tracks_lead", RTracksLead(*ditau));
81 auto R_tracks_subl = Monitored::Scalar<float>("R_tracks_subl", RTracksSubl(*ditau));
82 auto f_core_lead = Monitored::Scalar<float>("f_core_lead", FCoreLead(*ditau));
83 auto f_core_subl = Monitored::Scalar<float>("f_core_subl", FCoreSubl(*ditau));
84 auto n_track = Monitored::Scalar<int>("n_track", NTracks(*ditau));
85 auto n_tracks_lead = Monitored::Scalar<int>("n_tracks_lead", NTracksLead(*ditau));
86 auto n_tracks_subl = Monitored::Scalar<int>("n_tracks_subl", NTracksSubl(*ditau));
87 auto Pt = Monitored::Scalar<float>("Pt", 0.0);
88 auto Eta = Monitored::Scalar<float>("Eta", 0.0);
89 auto Phi = Monitored::Scalar<float>("Phi", 0.0);
90 auto M = Monitored::Scalar<float>("M", 0.0);
91
92 TLorentzVector boosted_diTau4V;
93 boosted_diTau4V.SetPtEtaPhiM(0,0,0,0);
94
95 boosted_diTau4V = boosted_ditau_vec.at(0)->p4();
96
97 Pt = boosted_diTau4V.Pt()/Gaudi::Units::GeV;
98 Eta = boosted_diTau4V.Eta();
99 Phi = boosted_diTau4V.Phi();
100 M = boosted_diTau4V.M()/Gaudi::Units::GeV;
101
102 fill(monGroup, omni_score, R_tracks_lead, R_tracks_subl, f_core_lead, f_core_subl, n_track, n_tracks_lead, n_tracks_subl, Pt, Eta, Phi, M);
103}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_WARNING(x)
#define ATH_MSG_DEBUG(x)
const ToolHandle< GenericMonitoringTool > & getGroup(const std::string &name) const
Get a specific monitoring tool from the tool handle array.
PublicToolHandle< Trig::TrigDecisionTool > m_trigDecTool
Tool to tell whether a specific trigger is passed.
Declare a monitored scalar variable.
Helper class to provide constant type-safe access to aux data.
virtual StatusCode initialize() override
initialize
TrigTauMonitorBaseAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Gaudi::Property< std::vector< std::string > > m_triggers
const TrigTauInfo & getTrigInfo(const std::string &trigger) const
Gaudi::Property< bool > m_do_variable_plots
std::vector< const xAOD::DiTauJet * > getOnlineBoostedDiTausAll(const std::string &trigger) const
SG::ReadHandleKey< xAOD::DiTauJetContainer > m_hltBoostedDiTauJetKey
virtual StatusCode initialize() override
initialize
void fillBoostedDiTauVars(const std::string &trigger, const std::vector< const xAOD::DiTauJet * > &tau_vec) const
TrigTauMonitorBoostedDiTauAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
virtual StatusCode processEvent(const EventContext &ctx) const override
void fill(const ToolHandle< GenericMonitoringTool > &groupHandle, std::vector< std::reference_wrapper< Monitored::IMonitoredVariable > > &&variables) const
Fills a vector of variables to a group by reference.
DiTauJetContainer_v1 DiTauJetContainer
Definition of the current DiTauJet container version.
DiTauJet_v1 DiTauJet
Definition of the current version.
Definition DiTauJet.h:17