ATLAS Offline Software
TrigTauMonitorBoostedDiTauAlgorithm.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
6 
7 
9  : TrigTauMonitorBaseAlgorithm(name, pSvcLocator)
10 {}
11 
14 
15  ATH_CHECK( m_hltBoostedDiTauJetKey.initialize() );
16 
17  return StatusCode::SUCCESS;
18 }
19 
21 {
22  ATH_MSG_DEBUG("Entry process event boosted");
23  for(const std::string& trigger : m_triggers) {
24  const TrigTauInfo& info = getTrigInfo(trigger);
25  if(!info.isHLTBoostedDiTau()) {
26  ATH_MSG_WARNING("Chain \"" << trigger << "\" is not a boosted di-tau trigger. Skipping...");
27  continue;
28  }
29 
30  // Online taus
31  std::vector<const xAOD::DiTauJet*> hlt_boosted_ditaus = getOnlineBoostedDiTausAll(trigger);
32 
33  if(m_do_variable_plots && !hlt_boosted_ditaus.empty()) fillBoostedDiTauVars(trigger, hlt_boosted_ditaus);
34  }
35 
36  return StatusCode::SUCCESS;
37 }
38 
39 std::vector<const xAOD::DiTauJet*> TrigTauMonitorBoostedDiTauAlgorithm::getOnlineBoostedDiTausAll(const std::string& trigger) const
40 {
41  std::vector<const xAOD::DiTauJet*> boosted_ditau_vec;
42 
43  std::vector<TrigCompositeUtils::LinkInfo<xAOD::DiTauJetContainer>> features_boosted_ditau =
44  m_trigDecTool->features<xAOD::DiTauJetContainer>(trigger, TrigDefs::Physics, m_hltBoostedDiTauJetKey.key());
45 
46  for (const auto& fb_ditau : features_boosted_ditau) {
47  if (!fb_ditau.link.isValid()) continue;
48 
49  const xAOD::DiTauJet* ditau = *(fb_ditau.link);
50  if (!ditau) continue;
51 
52  boosted_ditau_vec.push_back(ditau);
53  }
54  return boosted_ditau_vec;
55 }
56 
57 void TrigTauMonitorBoostedDiTauAlgorithm::fillBoostedDiTauVars(const std::string& trigger, const std::vector<const xAOD::DiTauJet*>& boosted_ditau_vec) const
58 {
59  auto monGroup = getGroup(trigger+"_BoostedDiTauVars");
60 
61  static const SG::ConstAccessor<float> OmniScore("omni_score");
62  static const SG::ConstAccessor<float> RTracksLead("R_tracks_lead");
63  static const SG::ConstAccessor<float> RTracksSubl("R_tracks_subl");
64  static const SG::ConstAccessor<float> FCoreLead("f_core_lead");
65  static const SG::ConstAccessor<float> FCoreSubl("f_core_subl");
66  static const SG::ConstAccessor<int> NTracks("n_track");
67  static const SG::ConstAccessor<int> NTracksLead("n_tracks_lead");
68  static const SG::ConstAccessor<int> NTracksSubl("n_tracks_subl");
69 
70  const auto* ditau = boosted_ditau_vec.at(0);
71 
72  auto omni_score = Monitored::Scalar<float>("omni_score", OmniScore(*ditau));
73  auto R_tracks_lead = Monitored::Scalar<float>("R_tracks_lead", RTracksLead(*ditau));
74  auto R_tracks_subl = Monitored::Scalar<float>("R_tracks_subl", RTracksSubl(*ditau));
75  auto f_core_lead = Monitored::Scalar<float>("f_core_lead", FCoreLead(*ditau));
76  auto f_core_subl = Monitored::Scalar<float>("f_core_subl", FCoreSubl(*ditau));
77  auto n_track = Monitored::Scalar<int>("n_track", NTracks(*ditau));
78  auto n_tracks_lead = Monitored::Scalar<int>("n_tracks_lead", NTracksLead(*ditau));
79  auto n_tracks_subl = Monitored::Scalar<int>("n_tracks_subl", NTracksSubl(*ditau));
80  auto Pt = Monitored::Scalar<float>("Pt", 0.0);
81  auto Eta = Monitored::Scalar<float>("Eta", 0.0);
82  auto Phi = Monitored::Scalar<float>("Phi", 0.0);
83  auto M = Monitored::Scalar<float>("M", 0.0);
84 
85  TLorentzVector boosted_diTau4V;
86  boosted_diTau4V.SetPtEtaPhiM(0,0,0,0);
87 
88  boosted_diTau4V = boosted_ditau_vec.at(0)->p4();
89 
90  Pt = boosted_diTau4V.Pt()/Gaudi::Units::GeV;
91  Eta = boosted_diTau4V.Eta();
92  Phi = boosted_diTau4V.Phi();
93  M = boosted_diTau4V.M()/Gaudi::Units::GeV;
94 
95  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);
96 }
python.TIDAMonTool.monGroup
def monGroup(analysis_chain)
Definition: TIDAMonTool.py:301
GeV
#define GeV
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/Root/HelperFunctions.cxx:18
AthMonitorAlgorithm::m_trigDecTool
PublicToolHandle< Trig::TrigDecisionTool > m_trigDecTool
Tool to tell whether a specific trigger is passed.
Definition: AthMonitorAlgorithm.h:340
TrigTauMonitorBaseAlgorithm::initialize
virtual StatusCode initialize() override
initialize
Definition: TrigTauMonitorBaseAlgorithm.cxx:16
Phi
@ Phi
Definition: RPCdef.h:8
TrigTauMonitorBoostedDiTauAlgorithm::m_hltBoostedDiTauJetKey
SG::ReadHandleKey< xAOD::DiTauJetContainer > m_hltBoostedDiTauJetKey
Definition: TrigTauMonitorBoostedDiTauAlgorithm.h:24
SG::ConstAccessor< float >
TrigTauMonitorBoostedDiTauAlgorithm::processEvent
virtual StatusCode processEvent(const EventContext &ctx) const override
Definition: TrigTauMonitorBoostedDiTauAlgorithm.cxx:20
TrigTauMonitorBaseAlgorithm::m_do_variable_plots
Gaudi::Property< bool > m_do_variable_plots
Definition: TrigTauMonitorBaseAlgorithm.h:47
TrigTauMonitorBoostedDiTauAlgorithm.h
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
TrigTauMonitorBoostedDiTauAlgorithm::getOnlineBoostedDiTausAll
std::vector< const xAOD::DiTauJet * > getOnlineBoostedDiTausAll(const std::string &trigger) const
Definition: TrigTauMonitorBoostedDiTauAlgorithm.cxx:39
AthMonitorAlgorithm::fill
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.
DataVector
Derived DataVector<T>.
Definition: DataVector.h:794
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
TrigTauMonitorBaseAlgorithm
Definition: TrigTauMonitorBaseAlgorithm.h:24
TrigTauMonitorBoostedDiTauAlgorithm::initialize
virtual StatusCode initialize() override
initialize
Definition: TrigTauMonitorBoostedDiTauAlgorithm.cxx:12
TrigTauInfo
Definition: TrigTauInfo.h:15
TrigTauMonitorBoostedDiTauAlgorithm::fillBoostedDiTauVars
void fillBoostedDiTauVars(const std::string &trigger, const std::vector< const xAOD::DiTauJet * > &tau_vec) const
Definition: TrigTauMonitorBoostedDiTauAlgorithm.cxx:57
Prompt::Def::Pt
@ Pt
Definition: VarHolder.h:76
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
xAOD::DiTauJet_v1
Definition: DiTauJet_v1.h:31
TrigTauMonitorBaseAlgorithm::m_triggers
Gaudi::Property< std::vector< std::string > > m_triggers
Definition: TrigTauMonitorBaseAlgorithm.h:38
TrigTauMonitorBoostedDiTauAlgorithm::TrigTauMonitorBoostedDiTauAlgorithm
TrigTauMonitorBoostedDiTauAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Definition: TrigTauMonitorBoostedDiTauAlgorithm.cxx:8
TrigTauMonitorBaseAlgorithm::getTrigInfo
const TrigTauInfo & getTrigInfo(const std::string &trigger) const
Definition: TrigTauMonitorBaseAlgorithm.h:51
Monitored::Scalar
Declare a monitored scalar variable.
Definition: MonitoredScalar.h:34
python.ParticleTypeUtil.info
def info
Definition: ParticleTypeUtil.py:87
AthMonitorAlgorithm::getGroup
const ToolHandle< GenericMonitoringTool > & getGroup(const std::string &name) const
Get a specific monitoring tool from the tool handle array.
Definition: AthMonitorAlgorithm.cxx:164
Eta
@ Eta
Definition: RPCdef.h:8