ATLAS Offline Software
TrigAFPSidHypoMonitoringAlg.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 
8 #include "xAODForward/AFPTrack.h"
10 #include <cmath>
11 
12 TrigAFPSidHypoMonitoringAlg::TrigAFPSidHypoMonitoringAlg(const std::string& name, ISvcLocator* pSvcLocator) :
13  AthMonitorAlgorithm (name, pSvcLocator)
14 {
15 }
16 
18 {
19 }
20 
22 {
24 
25  ATH_CHECK(m_AFPtrackKey.initialize());
26  ATH_CHECK(m_AFPtrackOffKey.initialize());
27  return StatusCode::SUCCESS;
28 }
29 
31 {
32  return StatusCode::SUCCESS;
33 }
34 
35 StatusCode TrigAFPSidHypoMonitoringAlg::fillHistograms(const EventContext& context) const
36 {
37 
39 
41 
42  ATH_MSG_DEBUG("AFP track size online/offline:"<<tracksAFP.get()->size()<<"/"<<tracksAFPoff.get()->size());
43 
44  auto xDiff = Monitored::Scalar("xDiff",-999.);
45  auto yDiff = Monitored::Scalar("yDiff",-999.);
46 
47  float dR = -999.;
48  float dRmin = 9e9;
49 
50  // Match online track to offline
51  for(const auto track: *tracksAFP){
52  for(const auto off_track: *tracksAFPoff){
53 
54  xDiff = track->xLocal()-off_track->xLocal();
55  yDiff = track->yLocal()-off_track->yLocal();
56 
57  dR = std::hypot(xDiff, yDiff);
58 
59  if(dR<dRmin){
60  dRmin = dR;
61  }
62  } // End of loop over offline tracks
63 
64  fill("AFPCoarse", xDiff, yDiff);
65 
66  }// End of loop over online tracks
67 
68  // in future should be split into many smaller methods called from here
69  std::vector<std::string> passedAFPChains = {"all"}; // also includes ALL events counter
70  for (auto chainName: m_chains) {
71  if ( getTrigDecisionTool()->isPassed(chainName) ){
72  passedAFPChains.emplace_back(chainName);
73  }
74 
75  }
76  if ( passedAFPChains.size() > 1) passedAFPChains.emplace_back("AFP");
77  auto whichTrigger = Monitored::Collection("TrigCounts", passedAFPChains);
78  fill("AFPCoarse", whichTrigger);
79 
80  return StatusCode::SUCCESS;
81 }
82 
AFPTrackContainer.h
TrigAFPSidHypoMonitoringAlg::~TrigAFPSidHypoMonitoringAlg
virtual ~TrigAFPSidHypoMonitoringAlg() override
Definition: TrigAFPSidHypoMonitoringAlg.cxx:17
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:67
AthMonitorAlgorithm::getTrigDecisionTool
const ToolHandle< Trig::TrigDecisionTool > & getTrigDecisionTool() const
Get the trigger decision tool member.
Definition: AthMonitorAlgorithm.cxx:194
TrigDecisionTool.h
TrigAFPSidHypoMonitoringAlg::finalize
virtual StatusCode finalize() override
Definition: TrigAFPSidHypoMonitoringAlg.cxx:30
Monitored::Collection
ValuesCollection< T > Collection(std::string name, const T &collection)
Declare a monitored (double-convertible) collection.
Definition: MonitoredCollection.h:38
TrigAFPSidHypoMonitoringAlg::fillHistograms
virtual StatusCode fillHistograms(const EventContext &context) const override
adds event to the monitoring histograms
Definition: TrigAFPSidHypoMonitoringAlg.cxx:35
AthMonitorAlgorithm
Base class for Athena Monitoring Algorithms.
Definition: AthMonitorAlgorithm.h:36
TrigAFPSidHypoMonitoringAlg::TrigAFPSidHypoMonitoringAlg
TrigAFPSidHypoMonitoringAlg(const std::string &name, ISvcLocator *pSvcLocator)
Definition: TrigAFPSidHypoMonitoringAlg.cxx:12
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
SG::ReadHandle::get
const_pointer_type get() const
Dereference the pointer, but don't cache anything.
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
TrigAFPSidHypoMonitoringAlg.h
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.
TrigAFPSidHypoMonitoringAlg::m_AFPtrackKey
SG::ReadHandleKey< xAOD::AFPTrackContainer > m_AFPtrackKey
Definition: TrigAFPSidHypoMonitoringAlg.h:33
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
AFPTrack.h
AthMonitorAlgorithm::initialize
virtual StatusCode initialize() override
initialize
Definition: AthMonitorAlgorithm.cxx:18
TrigAFPSidHypoMonitoringAlg::m_AFPtrackOffKey
SG::ReadHandleKey< xAOD::AFPTrackContainer > m_AFPtrackOffKey
Definition: TrigAFPSidHypoMonitoringAlg.h:34
python.TriggerAPI.TriggerAPISession.chainName
chainName
Definition: TriggerAPISession.py:426
TrigAFPSidHypoMonitoringAlg::initialize
virtual StatusCode initialize() override
initialize
Definition: TrigAFPSidHypoMonitoringAlg.cxx:21
TrigAFPSidHypoMonitoringAlg::m_chains
Gaudi::Property< std::vector< std::string > > m_chains
Definition: TrigAFPSidHypoMonitoringAlg.h:31
xAOD::track
@ track
Definition: TrackingPrimitives.h:513
Monitored::Scalar
Declare a monitored scalar variable.
Definition: MonitoredScalar.h:34
DataVector::size
size_type size() const noexcept
Returns the number of elements in the collection.