ATLAS Offline Software
SeedingAlgorithmAnalysisAlg.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 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 
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) {
57  timeMonitors[TimeMonitoringType::StripSeedInitialisation].start();
58  seedingTool->newEvent(ctx, seedEventData, 0);
59  timeMonitors[TimeMonitoringType::StripSeedInitialisation].stop();
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);
77  timeMonitors[TimeMonitoringType::PixelSeedInitialisation].start();
78  seedingTool->newEvent(ctx, seedEventData, 1);
79  timeMonitors[TimeMonitoringType::PixelSeedInitialisation].stop();
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  auto monGroup = getGroup(m_monitoringGroupNames[index]);
98  fill(monGroup,
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 }
SiSpacePointsSeedMakerEventData.h
python.TIDAMonTool.monGroup
def monGroup(analysis_chain)
Definition: TIDAMonTool.py:301
InDet::SiSpacePointsSeedMakerEventData
Definition: SiSpacePointsSeedMakerEventData.h:49
index
Definition: index.py:1
InDet::SiSpacePointsSeedMakerEventData::i_ITkSeeds
ITkSiSpacePointsProSeedPoolList i_ITkSeeds
Definition: SiSpacePointsSeedMakerEventData.h:249
InDet::SiSpacePointsSeedMakerEventData::v_ActsSpacePointForSeed
std::vector< const xAOD::SpacePoint * > v_ActsSpacePointForSeed
Definition: SiSpacePointsSeedMakerEventData.h:237
InDet::SiSpacePointsSeedMakerEventData::l_ITkSpacePointForSeed
ITkSiSpacePointForSeedPoolList l_ITkSpacePointForSeed
Definition: SiSpacePointsSeedMakerEventData.h:234
SeedingAlgorithmAnalysisAlg.h
AthMonitorAlgorithm
Base class for Athena Monitoring Algorithms.
Definition: AthMonitorAlgorithm.h:36
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
ActsTrk::SeedingAlgorithmAnalysisAlg::initialize
virtual StatusCode initialize() override
initialize
Definition: SeedingAlgorithmAnalysisAlg.cxx:15
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
xAOD::eventNumber
eventNumber
Definition: EventInfo_v1.cxx:124
Monitored.h
Header file to be included by clients of the Monitored infrastructure.
InDet::SiSpacePointsSeedMakerEventData::nsazv
int nsazv
Definition: SiSpacePointsSeedMakerEventData.h:81
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
ActsTrk::SeedingAlgorithmAnalysisAlg::fillHistograms
virtual StatusCode fillHistograms(const EventContext &ctx) const override
adds event to the monitoring histograms
Definition: SeedingAlgorithmAnalysisAlg.cxx:28
AthMonitorAlgorithm::initialize
virtual StatusCode initialize() override
initialize
Definition: AthMonitorAlgorithm.cxx:18
DeMoScan.index
string index
Definition: DeMoScan.py:362
ActsTrk::SeedingAlgorithmAnalysisAlg::SeedingAlgorithmAnalysisAlg
SeedingAlgorithmAnalysisAlg(const std::string &name, ISvcLocator *pSvcLocator)
Definition: SeedingAlgorithmAnalysisAlg.cxx:10
lumiFormat.fill
fill
Definition: lumiFormat.py:104
Monitored::Scalar
Declare a monitored scalar variable.
Definition: MonitoredScalar.h:34
Monitored::Timer
A monitored timer.
Definition: MonitoredTimer.h:32
InDet::SiSpacePointsSeedMakerEventData::ns
int ns
total number of SP that we sorted into our r-binned vector
Definition: SiSpacePointsSeedMakerEventData.h:79