ATLAS Offline Software
Loading...
Searching...
No Matches
SeedingAlgorithmAnalysisAlg.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
4
7
9
11 ISvcLocator *pSvcLocator)
12: AthMonitorAlgorithm(name, pSvcLocator)
13{}
14
16 ATH_MSG_DEBUG( "Initializing SeedingAlgorithmAnalysisAlg" );
17
18 ATH_CHECK(m_seedingTools.retrieve());
19
20 if (m_monitoringGroupNames.size() != m_seedingTools.size()) {
21 ATH_MSG_ERROR("Number of monitoring tools not equal to number of seeding tools! Please check!");
22 return StatusCode::FAILURE;
23 }
24
26}
27
28StatusCode ActsTrk::SeedingAlgorithmAnalysisAlg::fillHistograms(const EventContext& ctx) const {
29 ATH_MSG_DEBUG(" In SeedingAlgorithmAnalysisAlg::fillHistograms()" );
30
31 for (unsigned int index(0); index < m_seedingTools.size() ; ++index) {
32 const auto& seedingTool = m_seedingTools[index];
33
34 std::array<Monitored::Timer<std::chrono::milliseconds>, TimeMonitoringType::AllTypes> timeMonitors = {
35 Monitored::Timer<std::chrono::milliseconds>("TIME_initTimeFirstIter"),
36 Monitored::Timer<std::chrono::milliseconds>("TIME_initTimeSecondIter"),
39 };
40
41 auto eventNumber = Monitored::Scalar<int>("eventNumber", ctx.eventID().event_number());
42
44
45 auto stripSeedInitialisationTime = Monitored::Scalar<float>("stripSeedInitialisationTime", 0.);
46 auto numberStripSpacePoints = Monitored::Scalar<int>("numberStripSpacePoints", 0);
47 auto numberStripSeeds = Monitored::Scalar<int>("numberStripSeeds", 0);
48 auto stripSeedProductionTime = Monitored::Scalar<float>("stripSeedProductionTime", 0.);
49
50 auto pixelSeedInitialisationTime = Monitored::Scalar<float>("pixelSeedInitialisationTime", 0.);
51 auto numberPixelSpacePoints = Monitored::Scalar<int>("numberPixelSpacePoints", 0);
52 auto numberPixelSeeds = Monitored::Scalar<int>("numberPixelSeeds", 0);
53 auto pixelSeedProductionTime = Monitored::Scalar<float>("pixelSeedProductionTime", 0.);
54
55
56 if (m_doStrip) {
58 seedingTool->newEvent(ctx, seedEventData, 0);
60 stripSeedInitialisationTime = static_cast<float>(timeMonitors[TimeMonitoringType::StripSeedInitialisation]);
61
62 numberStripSpacePoints = seedEventData.ns;
63
64 timeMonitors[TimeMonitoringType::StripSeedProduction].start();
65 seedingTool->find3Sp(ctx, seedEventData, {});
66 timeMonitors[TimeMonitoringType::StripSeedProduction].stop();
67 stripSeedProductionTime = static_cast<float>(timeMonitors[TimeMonitoringType::StripSeedProduction]);
68
69 if (not seedEventData.l_ITkSpacePointForSeed.empty())
70 numberStripSeeds = seedEventData.i_ITkSeeds.size();
71 else if (not seedEventData.v_ActsSpacePointForSeed.empty())
72 numberStripSeeds = seedEventData.nsazv;
73 }
74
75 if (m_doPixel) {
76 seedingTool->newEvent(ctx, seedEventData, 0);
78 seedingTool->newEvent(ctx, seedEventData, 1);
80 pixelSeedInitialisationTime = static_cast<float>(timeMonitors[TimeMonitoringType::PixelSeedInitialisation]);
81
82 numberPixelSpacePoints = seedEventData.ns;
83
84 timeMonitors[TimeMonitoringType::PixelSeedProduction].start();
85 seedingTool->find3Sp(ctx, seedEventData, {});
86 timeMonitors[TimeMonitoringType::PixelSeedProduction].stop();
87 pixelSeedProductionTime = static_cast<float>(timeMonitors[TimeMonitoringType::PixelSeedProduction]);
88
89 if (not seedEventData.l_ITkSpacePointForSeed.empty())
90 numberPixelSeeds = seedEventData.i_ITkSeeds.size();
91 else if (not seedEventData.v_ActsSpacePointForSeed.empty())
92 numberPixelSeeds = seedEventData.nsazv;
93 }
94
95
96
97 const auto & monGroup = getGroup(m_monitoringGroupNames[index]);
98 fill(monGroup,
99 eventNumber,
100 stripSeedInitialisationTime,
101 stripSeedProductionTime,
102 pixelSeedInitialisationTime,
103 pixelSeedProductionTime,
104 numberPixelSpacePoints,
105 numberStripSpacePoints,
106 numberPixelSeeds,
107 numberStripSeeds);
108
109
110
111
112 }
113
114 return StatusCode::SUCCESS;
115}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_ERROR(x)
#define ATH_MSG_DEBUG(x)
Header file to be included by clients of the Monitored infrastructure.
SeedingAlgorithmAnalysisAlg(const std::string &name, ISvcLocator *pSvcLocator)
virtual StatusCode fillHistograms(const EventContext &ctx) const override
adds event to the monitoring histograms
virtual StatusCode initialize() override
initialize
ToolHandleArray< InDet::ISiSpacePointsSeedMaker > m_seedingTools
const ToolHandle< GenericMonitoringTool > & getGroup(const std::string &name) const
Get a specific monitoring tool from the tool handle array.
virtual StatusCode initialize() override
initialize
AthMonitorAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Constructor.
InDet::SiSpacePointsSeedMakerEventData holds event dependent data used by ISiSpacePointsSeedMaker.
std::vector< const xAOD::SpacePoint * > v_ActsSpacePointForSeed
int ns
total number of SP that we sorted into our r-binned vector
Declare a monitored scalar variable.
A monitored timer.
Definition index.py:1
void fill(H5::Group &out_file, size_t iterations)