ATLAS Offline Software
Loading...
Searching...
No Matches
TileMuIdMonitorAlgorithm.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3*/
4
7
10
11using Athena::Units::GeV;
12using Athena::Units::ns;
13
15
16 ATH_MSG_INFO("in initialize()");
17
18 ATH_CHECK( m_muContainerKey.initialize() );
19
20 using namespace Monitored;
21
22 int nL1Triggers = getNumberOfL1Triggers();
23
24 m_muIdTagsGroups = buildToolMap<int>(m_tools, "TileMuIdTags", nL1Triggers);
25 m_muIdEnergyGroups = buildToolMap<int>(m_tools, "TileMuIdEnergy", nL1Triggers);
26 m_muIdEtaGroups = buildToolMap<int>(m_tools, "TileMuIdEta", nL1Triggers);
27 m_muIdPhiGroups = buildToolMap<int>(m_tools, "TileMuIdPhi", nL1Triggers);
28 m_muIdQualityGroups = buildToolMap<int>(m_tools, "TileMuIdQuality", nL1Triggers);
29 m_muIdEtaPhiGroups = buildToolMap<int>(m_tools, "TileMuIdEtaPhi", nL1Triggers);
30 m_muIdEneEtaGroups = buildToolMap<int>(m_tools, "TileMuIdEneEta", nL1Triggers);
31 m_muIdEnePhiGroups = buildToolMap<int>(m_tools, "TileMuIdEnePhi", nL1Triggers);
32 m_muIdEneQualityGroups = buildToolMap<int>(m_tools, "TileMuIdEneQuality", nL1Triggers);
33
34 m_muId1TagEnergyGroups = buildToolMap<int>(m_tools, "TileMuId1TagEnergy", nL1Triggers);
35 m_muId1TagQualityGroups = buildToolMap<int>(m_tools, "TileMuId1TagQuality", nL1Triggers);
36 m_muId1TagEtaPhiGroups = buildToolMap<int>(m_tools, "TileMuId1TagEtaPhi", nL1Triggers);
37 m_muId1TagEtaGroups = buildToolMap<int>(m_tools, "TileMuId1TagEta", nL1Triggers);
38 m_muId1TagPhiGroups = buildToolMap<int>(m_tools, "TileMuId1TagPhi", nL1Triggers);
39 m_muId1TagEneQualityGroups = buildToolMap<int>(m_tools, "TileMuId1TagEneQuality", nL1Triggers);
40
41 m_muId2TagEnergyGroups = buildToolMap<int>(m_tools, "TileMuId2TagEnergy", nL1Triggers);
42 m_muId2TagQualityGroups = buildToolMap<int>(m_tools, "TileMuId2TagQuality", nL1Triggers);
43 m_muId2TagEtaPhiGroups = buildToolMap<int>(m_tools, "TileMuId2TagEtaPhi", nL1Triggers);
44 m_muId2TagEtaGroups = buildToolMap<int>(m_tools, "TileMuId2TagEta", nL1Triggers);
45 m_muId2TagPhiGroups = buildToolMap<int>(m_tools, "TileMuId2TagPhi", nL1Triggers);
46 m_muId2TagEneQualityGroups = buildToolMap<int>(m_tools, "TileMuId2TagEneQuality", nL1Triggers);
47
49}
50
51
52StatusCode TileMuIdMonitorAlgorithm::fillHistograms( const EventContext& ctx ) const {
53
54
55 // In case you want to measure the execution time
56 auto timer = Monitored::Timer("TIME_execute");
57
58 const xAOD::EventInfo* eventInfo = GetEventInfo(ctx).get();
59
60 // Indices of L1 trigger histograms to be filled in the current event
61 std::vector<int> l1TriggersIndices = getL1TriggerIndices(eventInfo->level1TriggerType());
62
64 ATH_CHECK( muContainer.isValid() );
65
66 int nTags = muContainer->size();
67 ATH_MSG_DEBUG( "Tile MuId nubmer of tags in the event: " << nTags );
68
69 auto monNTags = Monitored::Scalar<int>("nTags", nTags);
70 for (int l1TriggerIdx : l1TriggersIndices) {
71 fill(m_tools[m_muIdTagsGroups[l1TriggerIdx]], monNTags);
72 }
73
74 auto monEta = Monitored::Collection("eta", *muContainer, [] (const TileMu* mu) {return mu->eta();});
75 auto monPhi = Monitored::Collection("phi", *muContainer, [] (const TileMu* mu) {return mu->phi();});
76 auto monQuality = Monitored::Collection("quality", *muContainer, [] (const TileMu* mu) {return mu->quality();});
77 auto monEnergy = Monitored::Collection("energy", *muContainer,
78 [] (const TileMu* mu) {
79 return mu->enedep()[0] + mu->enedep()[1] + mu->enedep()[2];
80 });
81
82 for (int l1TriggerIdx : l1TriggersIndices) {
83 fill(m_tools[m_muIdEnergyGroups[l1TriggerIdx]], monEnergy);
84 fill(m_tools[m_muIdEtaGroups[l1TriggerIdx]], monEta);
85 fill(m_tools[m_muIdPhiGroups[l1TriggerIdx]], monPhi);
86 fill(m_tools[m_muIdQualityGroups[l1TriggerIdx]], monQuality);
87 fill(m_tools[m_muIdEtaPhiGroups[l1TriggerIdx]], monEta, monPhi);
88 fill(m_tools[m_muIdEneEtaGroups[l1TriggerIdx]], monEta, monEnergy);
89 fill(m_tools[m_muIdEnePhiGroups[l1TriggerIdx]], monPhi, monEnergy);
90 fill(m_tools[m_muIdEneQualityGroups[l1TriggerIdx]], monEnergy, monQuality);
91 }
92
93 if (nTags == 1) {
94 for (int l1TriggerIdx : l1TriggersIndices) {
95 fill(m_tools[m_muId1TagEnergyGroups[l1TriggerIdx]], monEnergy);
96 fill(m_tools[m_muId1TagQualityGroups[l1TriggerIdx]], monQuality);
97 fill(m_tools[m_muId1TagEtaPhiGroups[l1TriggerIdx]], monEta, monPhi);
98 fill(m_tools[m_muId1TagEtaGroups[l1TriggerIdx]], monEta, monEnergy);
99 fill(m_tools[m_muId1TagPhiGroups[l1TriggerIdx]], monPhi, monEnergy);
100 fill(m_tools[m_muId1TagEneQualityGroups[l1TriggerIdx]], monEnergy, monQuality);
101 }
102 } else if (nTags == 2) {
103 for (int l1TriggerIdx : l1TriggersIndices) {
104 fill(m_tools[m_muId2TagEnergyGroups[l1TriggerIdx]], monEnergy);
105 fill(m_tools[m_muId2TagQualityGroups[l1TriggerIdx]], monQuality);
106 fill(m_tools[m_muId2TagEtaPhiGroups[l1TriggerIdx]], monEta, monPhi);
107 fill(m_tools[m_muId2TagEtaGroups[l1TriggerIdx]], monEta, monEnergy);
108 fill(m_tools[m_muId2TagPhiGroups[l1TriggerIdx]], monPhi, monEnergy);
109 fill(m_tools[m_muId2TagEneQualityGroups[l1TriggerIdx]], monEnergy, monQuality);
110 }
111 }
112
113 fill("TileMuIdMonExecuteTime", timer);
114
115 return StatusCode::SUCCESS;
116}
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_INFO(x)
#define ATH_MSG_DEBUG(x)
Handle class for reading from StoreGate.
Wrapper to avoid constant divisions when using units.
SG::ReadHandle< xAOD::EventInfo > GetEventInfo(const EventContext &) const
Return a ReadHandle for an EventInfo object (get run/event numbers, etc.)
ToolHandleArray< GenericMonitoringTool > m_tools
Array of Generic Monitoring Tools.
Declare a monitored scalar variable.
A monitored timer.
virtual bool isValid() override final
Can the handle be successfully dereferenced?
int getNumberOfL1Triggers(void) const
Return number of L1 triggers for which histograms should be filled.
virtual StatusCode initialize() override
initialize
std::vector< int > getL1TriggerIndices(uint32_t lvl1TriggerType) const
Return indices of histograms to be filled according fired L1 trigger type.
SG::ReadHandleKey< TileMuContainer > m_muContainerKey
std::vector< int > m_muId2TagQualityGroups
virtual StatusCode fillHistograms(const EventContext &ctx) const override
adds event to the monitoring histograms
virtual StatusCode initialize() override
initialize
std::vector< int > m_muId1TagEnergyGroups
std::vector< int > m_muId2TagEtaPhiGroups
std::vector< int > m_muId2TagEneQualityGroups
std::vector< int > m_muId1TagEneQualityGroups
std::vector< int > m_muId2TagEnergyGroups
std::vector< int > m_muId1TagEtaPhiGroups
std::vector< int > m_muId1TagQualityGroups
std::vector< int > m_muIdEneQualityGroups
Class to store TileMuId quantities.
Definition TileMu.h:25
uint16_t level1TriggerType() const
The Level-1 trigger type.
Generic monitoring tool for athena components.
std::vector< V > buildToolMap(const ToolHandleArray< GenericMonitoringTool > &tools, const std::string &baseName, int nHist)
Builds an array of indices (base case)
ValuesCollection< T > Collection(std::string name, const T &collection)
Declare a monitored (double-convertible) collection.
EventInfo_v1 EventInfo
Definition of the latest event info version.
void fill(H5::Group &out_file, size_t iterations)