ATLAS Offline Software
EFMuonMon.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #include "EFMuonMon.h"
6 
8 #include "MuonMatchingTool.h"
11 
12 EFMuonMon :: EFMuonMon(const std::string& name, ISvcLocator* pSvcLocator )
13  : TrigMuonMonitorAlgorithm(name, pSvcLocator)
14 {}
15 
16 
23  ATH_CHECK( m_muonIso30Key.initialize() );
24 
25  for( const std::string& chain : m_monitored_chains ){
26  m_doEFSA[chain] = true;
27 
28  if( chain.find("msonly") != std::string::npos ) m_doEFCB[chain] = false;
29  else m_doEFCB[chain] = true;
30 
31  if( chain.find("ivar") != std::string::npos ) m_doEFIso[chain] = true;
32  else m_doEFIso[chain] = false;
33  }
34 
35  return sc;
36 }
37 
38 
39 StatusCode EFMuonMon :: fillVariablesPerChain(const EventContext &ctx, const std::string &chain) const {
40 
41  ATH_MSG_DEBUG ("Filling histograms for " << name() << "...");
42 
43  const float ZERO_LIMIT = 0.00001;
44 
45  // EFSA
46  if( m_doEFSA.at(chain) ){
47  std::vector< TrigCompositeUtils::LinkInfo<xAOD::MuonContainer> > featureContSA = getTrigDecisionTool()->features<xAOD::MuonContainer>( chain, TrigDefs::includeFailedDecisions, "HLT_Muons_.*");
48 
49  for (const TrigCompositeUtils::LinkInfo<xAOD::MuonContainer>& muSALinkInfo : featureContSA) {
50  ATH_CHECK( muSALinkInfo.isValid() );
51  const ElementLink<xAOD::MuonContainer> muSAEL = muSALinkInfo.link;
52  if ( (*muSAEL)->muonType() != xAOD::Muon::MuonType::MuonStandAlone ) continue;
53 
54  auto EFSAPt = Monitored::Scalar<float>(chain+"_EFSA_Pt", -999.);
55  auto EFSAEta = Monitored::Scalar<float>(chain+"_EFSA_Eta", -999.);
56  auto EFSAPhi = Monitored::Scalar<float>(chain+"_EFSA_Phi", -999.);
57 
58  EFSAPt = (*muSAEL)->pt()/1e3 * (*muSAEL)->charge();
59  EFSAEta = (*muSAEL)->eta();
60  EFSAPhi = (*muSAEL)->phi();
61 
62  fill(m_group+"_"+chain, EFSAPt, EFSAEta, EFSAPhi);
63  }
64  }
65 
66 
67  // EFCB
68  if( m_doEFCB.at(chain) ){
69  std::vector< TrigCompositeUtils::LinkInfo<xAOD::MuonContainer> > featureContCB = getTrigDecisionTool()->features<xAOD::MuonContainer>( chain, TrigDefs::includeFailedDecisions, "HLT_MuonsCB.*");
70 
71  for (const TrigCompositeUtils::LinkInfo<xAOD::MuonContainer>& muCBLinkInfo : featureContCB) {
72  ATH_CHECK( muCBLinkInfo.isValid() );
73  const ElementLink<xAOD::MuonContainer> muCBEL = muCBLinkInfo.link;
74  if ( (*muCBEL)->muonType() != xAOD::Muon::MuonType::Combined ) continue;
75 
76  auto EFCBPt = Monitored::Scalar<float>(chain+"_EFCB_Pt", -999.);
77  auto EFCBEta = Monitored::Scalar<float>(chain+"_EFCB_Eta", -999.);
78  auto EFCBPhi = Monitored::Scalar<float>(chain+"_EFCB_Phi", -999.);
79 
80  EFCBPt = (*muCBEL)->pt()/1e3 * (*muCBEL)->charge();
81  EFCBEta = (*muCBEL)->eta();
82  EFCBPhi = (*muCBEL)->phi();
83 
84  fill(m_group+"_"+chain, EFCBPt, EFCBEta, EFCBPhi);
85  }
86  }
87 
88 
89  // EFIso
90  if( m_doEFIso.at(chain) ){
91  std::vector< TrigCompositeUtils::LinkInfo<xAOD::MuonContainer> > featureContIso = getTrigDecisionTool()->features<xAOD::MuonContainer>( chain, TrigDefs::includeFailedDecisions, "HLT_MuonsIso");
92  for (const TrigCompositeUtils::LinkInfo<xAOD::MuonContainer>& muIsoLinkInfo : featureContIso) {
93  ATH_CHECK( muIsoLinkInfo.isValid() );
94  const ElementLink<xAOD::MuonContainer> muIsoEL = muIsoLinkInfo.link;
95  if ( (*muIsoEL)->muonType() != xAOD::Muon::MuonType::Combined ) continue;
96 
97  // basic variables used decision
98  auto PtCone03 = Monitored::Scalar<float>(chain+"_PtCone03",-999.);
99  auto PtCone03overMuonPt = Monitored::Scalar<float>(chain+"_PtCone03overMuonPt",-999.);
100 
102  float ptcone30 = muonIso30(*(*muIsoEL));
103 
104  if (ptcone30 > ZERO_LIMIT ){
105  PtCone03 = ptcone30/1e3;
106  PtCone03overMuonPt = ptcone30 / (*muIsoEL)->pt();
107  }
108 
109  fill(m_group+"_"+chain, PtCone03, PtCone03overMuonPt);
110  }
111  }
112 
113  return StatusCode::SUCCESS;
114 }
115 
116 
117 StatusCode EFMuonMon :: fillVariablesPerOfflineMuonPerChain(const EventContext &ctx, const xAOD::Muon* mu, const std::string &chain) const {
118 
119  ATH_MSG_DEBUG ("Filling histograms for " << name() << "...");
120 
121  const float ZERO_LIMIT = 0.00001;
122 
123  const xAOD::TrackParticle* OfflineSATrack = mu->trackParticle(xAOD::Muon::TrackParticleType::ExtrapolatedMuonSpectrometerTrackParticle);
124  const xAOD::TrackParticle* OfflineCBTrack = mu->trackParticle(xAOD::Muon::TrackParticleType::CombinedTrackParticle);
125 
126 
127  // OfflineSA
128  if( m_doEFSA.at(chain) && OfflineSATrack ){
129  auto OfflineSAPt = Monitored::Scalar<float>(chain+"_OfflineSA_Pt",-999.);
130  auto OfflineSAEta = Monitored::Scalar<float>(chain+"_OfflineSA_Eta",-999.);
131  auto OfflineSAPhi = Monitored::Scalar<float>(chain+"_OfflineSA_Phi",-999.);
132 
133  auto matchedEFSA = Monitored::Scalar<bool>(chain+"_matchedEFSA",false);
134  auto matchedL2SA = Monitored::Scalar<bool>(chain+"_matchedL2SA",false);
135 
136  auto OfflineSAmatchedL2SAPt = Monitored::Scalar<float>(chain+"_OfflineSAmatchedL2SA_Pt",-999.);
137  auto OfflineSAmatchedL2SAEta = Monitored::Scalar<float>(chain+"_OfflineSAmatchedL2SA_Eta",-999.);
138  auto OfflineSAmatchedL2SAPhi = Monitored::Scalar<float>(chain+"_OfflineSAmatchedL2SA_Phi",-999.);
139 
140  auto MatchedEFSAPt = Monitored::Scalar<float>(chain+"_MatchedEFSA_Pt",-999.);
141  auto MatchedEFSAEta = Monitored::Scalar<float>(chain+"_MatchedEFSA_Eta",-999.);
142  auto MatchedEFSAPhi = Monitored::Scalar<float>(chain+"_MatchedEFSA_Phi",-999.);
143 
144  auto SAdR = Monitored::Scalar<float>(chain+"_SAdR",1000.);
145  auto SAdPt = Monitored::Scalar<float>(chain+"_SAdPt",-999.);
146  auto SAdEta = Monitored::Scalar<float>(chain+"_SAdEta",-999.);
147  auto SAdPhi = Monitored::Scalar<float>(chain+"_SAdPhi",-999.);
148 
149  // basic EDM variables
150  OfflineSAPt = OfflineSATrack->pt()/1e3 * OfflineSATrack->charge(); // convert to GeV
151  OfflineSAEta = OfflineSATrack->eta();
152  OfflineSAPhi = OfflineSATrack->phi();
153 
154  // correlation histograms EFSA vs. OfflineSA
155  // get the EFSA muon matched to offlineSA muon
156  const TrigCompositeUtils::LinkInfo<xAOD::MuonContainer> EFSAMuonLinkInfo = m_matchTool->matchEFSALinkInfo(mu, chain);
157  if( EFSAMuonLinkInfo.isValid() ){
158  const xAOD::TrackParticle* EFSATrack = m_matchTool->SearchEFTrack(ctx, EFSAMuonLinkInfo, m_MStrackContainerKey);
159  if ( EFSATrack ){
160  matchedEFSA = true;
161 
162  MatchedEFSAPt = EFSATrack->pt()/1e3 * EFSATrack->charge(); // convert to GeV
163  MatchedEFSAEta = EFSATrack->eta();
164  MatchedEFSAPhi = EFSATrack->phi();
165 
166  SAdR = xAOD::P4Helpers::deltaR(OfflineSATrack, EFSATrack, false);
167  SAdPt = std::abs(OfflineSAPt) - std::abs(MatchedEFSAPt);
168  SAdEta = OfflineSAEta - MatchedEFSAEta;
169  SAdPhi = OfflineSAPhi - MatchedEFSAPhi;
170 
171 
172  // correlation histograms offlineSA (matched to EFSA) vs. offlineSA (matched to L2SA)
173  // get L2SA feature
174  const TrigCompositeUtils::Decision* EFSAMuonDecision = EFSAMuonLinkInfo.source;
175  const std::vector<TrigCompositeUtils::LinkInfo<xAOD::L2StandAloneMuonContainer>> L2SALinkInfo = TrigCompositeUtils::findLinks<xAOD::L2StandAloneMuonContainer>(EFSAMuonDecision, "feature");
176  if(L2SALinkInfo.size() > 1) {
177  ATH_MSG_DEBUG("More than one L2SA candidate associated to the EFSA");
178  }
179  ATH_CHECK( L2SALinkInfo.at(0).isValid());
180  const ElementLink<xAOD::L2StandAloneMuonContainer> L2SAEL = L2SALinkInfo.at(0).link;
181 
182  // get offline muon matched to L2SA
183  const xAOD::Muon *OfflineSAmatchedL2SA = m_matchTool->matchL2SAtoOff(ctx, (*L2SAEL));
184  if (OfflineSAmatchedL2SA){
185  const xAOD::TrackParticle* OfflineSATrackmatchedL2SA = OfflineSAmatchedL2SA->trackParticle(xAOD::Muon::TrackParticleType::ExtrapolatedMuonSpectrometerTrackParticle);
186  if ( OfflineSATrackmatchedL2SA ){
187  matchedL2SA = true;
188  OfflineSAmatchedL2SAPt = OfflineSATrackmatchedL2SA->pt()/1e3 * OfflineSATrackmatchedL2SA->charge(); // convert to GeV
189  OfflineSAmatchedL2SAEta = OfflineSATrackmatchedL2SA->eta();
190  OfflineSAmatchedL2SAPhi = OfflineSATrackmatchedL2SA->phi();
191  }
192  }
193  }
194  }
195  fill(m_group+"_"+chain, OfflineSAPt, OfflineSAEta, OfflineSAPhi, OfflineSAmatchedL2SAPt, OfflineSAmatchedL2SAEta, OfflineSAmatchedL2SAPhi,
196  MatchedEFSAPt, MatchedEFSAEta, MatchedEFSAPhi, SAdPt, SAdEta, SAdPhi, SAdR, matchedEFSA, matchedL2SA);
197  }
198 
199 
200  // OfflineCB
201  if( m_doEFCB.at(chain) && OfflineCBTrack ){
202  auto OfflineCBPt = Monitored::Scalar<float>(chain+"_OfflineCB_Pt",-999.);
203  auto OfflineCBEta = Monitored::Scalar<float>(chain+"_OfflineCB_Eta",-999.);
204  auto OfflineCBPhi = Monitored::Scalar<float>(chain+"_OfflineCB_Phi",-999.);
205 
206  auto matchedEFCB = Monitored::Scalar<bool>(chain+"_matchedEFCB",false);
207  auto matchedL2CB = Monitored::Scalar<bool>(chain+"_matchedL2CB",false);
208 
209  auto OfflineCBmatchedL2CBPt = Monitored::Scalar<float>(chain+"_OfflineCBmatchedL2CB_Pt",-999.);
210  auto OfflineCBmatchedL2CBEta = Monitored::Scalar<float>(chain+"_OfflineCBmatchedL2CB_Eta",-999.);
211  auto OfflineCBmatchedL2CBPhi = Monitored::Scalar<float>(chain+"_OfflineCBmatchedL2CB_Phi",-999.);
212 
213  auto MatchedEFCBPt = Monitored::Scalar<float>(chain+"_MatchedEFCB_Pt",-999.);
214  auto MatchedEFCBEta = Monitored::Scalar<float>(chain+"_MatchedEFCB_Eta",-999.);
215  auto MatchedEFCBPhi = Monitored::Scalar<float>(chain+"_MatchedEFCB_Phi",-999.);
216 
217  auto CBdR = Monitored::Scalar<float>(chain+"_CBdR",1000.);
218  auto CBdPt = Monitored::Scalar<float>(chain+"_CBdPt",-999.);
219  auto CBdEta = Monitored::Scalar<float>(chain+"_CBdEta",-999.);
220  auto CBdPhi = Monitored::Scalar<float>(chain+"_CBdPhi",-999.);
221 
222  // basic EDM variables
223  OfflineCBPt = OfflineCBTrack->pt()/1e3 * OfflineCBTrack->charge(); // convert to GeV
224  OfflineCBEta = OfflineCBTrack->eta();
225  OfflineCBPhi = OfflineCBTrack->phi();
226 
227  // correlation histograms EFCB vs. OfflineCB
228  // get the closest EFCB muon
229  const TrigCompositeUtils::LinkInfo<xAOD::MuonContainer> EFCBMuonLinkInfo = m_matchTool->matchEFCBLinkInfo(mu, chain);
230  if( EFCBMuonLinkInfo.isValid() ){
231  const xAOD::TrackParticle* EFCBTrack = m_matchTool->SearchEFTrack(ctx, EFCBMuonLinkInfo, m_CBtrackContainerKey);
232  if ( EFCBTrack ){
233  matchedEFCB = true;
234 
235  MatchedEFCBPt = EFCBTrack->pt()/1e3 * EFCBTrack->charge(); // convert to GeV
236  MatchedEFCBEta = EFCBTrack->eta();
237  MatchedEFCBPhi = EFCBTrack->phi();
238 
239  CBdR = xAOD::P4Helpers::deltaR(OfflineCBTrack, EFCBTrack, false);
240  CBdPt = std::abs(OfflineCBPt) - std::abs(MatchedEFCBPt);
241  CBdEta = OfflineCBEta - MatchedEFCBEta;
242  CBdPhi = OfflineCBPhi - MatchedEFCBPhi;
243 
244 
245  // correlation histograms offlineCB (matched to EFCB) vs. offlineCB (matched to L2CB)
246  // get L2CB feature
247  const TrigCompositeUtils::Decision* EFCBMuonDecision = EFCBMuonLinkInfo.source;
248  const std::vector<TrigCompositeUtils::LinkInfo<xAOD::L2CombinedMuonContainer>>L2CBLinkInfo = TrigCompositeUtils::findLinks<xAOD::L2CombinedMuonContainer>(EFCBMuonDecision, "feature");
249  if(L2CBLinkInfo.size() >1) {
250  ATH_MSG_DEBUG("More than one L2CB muon associated to EFCBMuon");
251  }
252  ATH_CHECK( L2CBLinkInfo.at(0).isValid() );
253  const ElementLink<xAOD::L2CombinedMuonContainer> L2CBEL = L2CBLinkInfo.at(0).link;
254 
255  // get offline muon matched to L2CB
256  const xAOD::Muon *OfflineCBmatchedL2CB = m_matchTool->matchL2CBtoOff(ctx, (*L2CBEL));
257  if (OfflineCBmatchedL2CB){
258  const xAOD::TrackParticle* OfflineCBTrackmatchedL2CB = OfflineCBmatchedL2CB->trackParticle(xAOD::Muon::TrackParticleType::CombinedTrackParticle);
259  if ( OfflineCBTrackmatchedL2CB ){
260  matchedL2CB = true;
261  OfflineCBmatchedL2CBPt = OfflineCBTrackmatchedL2CB->pt()/1e3 * OfflineCBTrackmatchedL2CB->charge(); // convert to GeV
262  OfflineCBmatchedL2CBEta = OfflineCBTrackmatchedL2CB->eta();
263  OfflineCBmatchedL2CBPhi = OfflineCBTrackmatchedL2CB->phi();
264  }
265  }
266  }
267  }
268  fill(m_group+"_"+chain, OfflineCBPt, OfflineCBEta, OfflineCBPhi, OfflineCBmatchedL2CBPt, OfflineCBmatchedL2CBEta, OfflineCBmatchedL2CBPhi,
269  MatchedEFCBPt, MatchedEFCBEta, MatchedEFCBPhi, CBdPt, CBdEta, CBdPhi, CBdR, matchedEFCB, matchedL2CB);
270  }
271 
272 
273  // offoine isolation variable
274  float OfflineIsoptcone30=-1.;
275  mu->isolation(OfflineIsoptcone30, xAOD::Iso::IsolationType::ptvarcone30);
276  if ( m_doEFIso.at(chain) && OfflineIsoptcone30 > ZERO_LIMIT ){
277 
278  auto OfflineIsoPtCone03 = Monitored::Scalar<float>(chain+"_OfflineIsoPtCone03",-999.);
279  auto OfflineIsoPtCone03overMuonPt = Monitored::Scalar<float>(chain+"_OfflineIsoPtCone03overMuonPt",-999.);
280  auto MatchedEFIsoPtCone03 = Monitored::Scalar<float>(chain+"_MatchedEFPIsotCone03",-999.);
281  auto MatchedEFIsoPtCone03overMuonPt = Monitored::Scalar<float>(chain+"_MatchedEFIsoPtCone03overMuonPt",-999.);
282 
283  OfflineIsoPtCone03 = OfflineIsoptcone30/1e3;
284  OfflineIsoPtCone03overMuonPt = OfflineIsoptcone30 / mu->pt();
285 
286  // get the closest EFIso muon
287  const TrigCompositeUtils::LinkInfo<xAOD::MuonContainer> EFIsoMuonLinkInfo = m_matchTool->matchEFIsoLinkInfo(mu, chain);
288  if( EFIsoMuonLinkInfo.isValid() ){
289  const ElementLink<xAOD::MuonContainer> EFIsoMuon = EFIsoMuonLinkInfo.link;
290 
292  float EFIsoptcone30 = muonIso30(*(*EFIsoMuon));
293 
294  if ( EFIsoptcone30 > ZERO_LIMIT ){
295  MatchedEFIsoPtCone03 = EFIsoptcone30/1e3;
296  MatchedEFIsoPtCone03overMuonPt = EFIsoptcone30 / (*EFIsoMuon)->pt();
297  }
298  }
299  fill(m_group+"_"+chain, OfflineIsoPtCone03, OfflineIsoPtCone03overMuonPt, MatchedEFIsoPtCone03, MatchedEFIsoPtCone03overMuonPt);
300  }
301 
302  return StatusCode::SUCCESS;
303 }
304 
305 
306 StatusCode EFMuonMon :: fillVariables(const EventContext &ctx) const {
307 
308  ATH_MSG_DEBUG ("Filling histograms for " << name() << "...");
309 
310  ATH_CHECK( fillVariableEtaPhi<xAOD::Muon>(ctx, m_EFSAMuonContainerKey, "EFSA", &MuonMatchingTool::trigPosForMatchSATrack));
311  ATH_CHECK( fillVariableEtaPhi<xAOD::Muon>(ctx, m_EFCBMuonContainerKey, "EFCB", &MuonMatchingTool::trigPosForMatchCBTrack));
312 
313  return StatusCode::SUCCESS;
314 
315 }
316 
317 
318 StatusCode EFMuonMon :: fillVariablesPerOfflineMuon(const EventContext &ctx, const xAOD::Muon* mu) const {
319 
320  ATH_CHECK( fillVariablesRatioPlots<xAOD::Muon>(ctx, mu, "EFSA", xAOD::Muon::TrackParticleType::ExtrapolatedMuonSpectrometerTrackParticle,
321  [this](const EventContext &ctx, const xAOD::Muon *mu){ return m_matchTool->matchEFSAReadHandle(ctx,mu); }
322  ));
323 
324  ATH_CHECK( fillVariablesRatioPlots<xAOD::Muon>(ctx, mu, "EFCB", xAOD::Muon::TrackParticleType::CombinedTrackParticle,
325  [this](const EventContext &ctx, const xAOD::Muon *mu){ return m_matchTool->matchEFCBReadHandle(ctx,mu); }
326  ));
327 
328  return StatusCode::SUCCESS;
329 
330 }
xAOD::TrackParticle_v1::pt
virtual double pt() const override final
The transverse momentum ( ) of the particle.
Definition: TrackParticle_v1.cxx:74
xAOD::Iso::ptvarcone30
@ ptvarcone30
Definition: IsolationType.h:56
TrigCompositeUtils::LinkInfo::source
const Decision * source
The node in the NavGraph for this feature.
Definition: LinkInfo.h:57
TrigMuonMonitorAlgorithm::m_group
Gaudi::Property< std::string > m_group
Name of monitored group.
Definition: TrigMuonMonitorAlgorithm.h:141
runLayerRecalibration.chain
chain
Definition: runLayerRecalibration.py:175
TrigCompositeUtils::LinkInfo::link
ElementLink< T > link
Link to the feature.
Definition: LinkInfo.h:59
EFMuonMon::m_doEFIso
std::map< std::string, bool > m_doEFIso
Definition: EFMuonMon.h:36
TrigMuonMonitorAlgorithm::m_matchTool
ToolHandle< MuonMatchingTool > m_matchTool
Definition: TrigMuonMonitorAlgorithm.h:129
xAOD::Muon_v1::trackParticle
const TrackParticle * trackParticle(TrackParticleType type) const
Returns a pointer (which can be NULL) to the TrackParticle used in identification of this muon.
Definition: Muon_v1.cxx:487
TrigCompositeUtils::LinkInfo::isValid
bool isValid() const
Definition: LinkInfo.h:41
xAOD::TrackParticle_v1::charge
float charge() const
Returns the charge.
Definition: TrackParticle_v1.cxx:151
xAOD::TrackParticle_v1::eta
virtual double eta() const override final
The pseudorapidity ( ) of the particle.
Definition: TrackParticle_v1.cxx:78
EFMuonMon::m_doEFSA
std::map< std::string, bool > m_doEFSA
Definition: EFMuonMon.h:34
EFMuonMon::initialize
virtual StatusCode initialize() override
initialize
Definition: EFMuonMon.cxx:17
AthMonitorAlgorithm::getTrigDecisionTool
const ToolHandle< Trig::TrigDecisionTool > & getTrigDecisionTool() const
Get the trigger decision tool member.
Definition: AthMonitorAlgorithm.cxx:194
xAOD::Iso::ptcone30
@ ptcone30
Definition: IsolationType.h:41
MuonMatchingTool::trigPosForMatchSATrack
static std::tuple< bool, double, double > trigPosForMatchSATrack(const xAOD::Muon *mu)
Definition: MuonMatchingTool.cxx:51
EFMuonMon::m_EFSAMuonContainerKey
SG::ReadHandleKey< xAOD::MuonContainer > m_EFSAMuonContainerKey
Definition: EFMuonMon.h:28
xAOD::Muon_v1
Class describing a Muon.
Definition: Muon_v1.h:38
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
TrigCompositeUtils.h
EFMuonMon::fillVariablesPerOfflineMuon
virtual StatusCode fillVariablesPerOfflineMuon(const EventContext &ctx, const xAOD::Muon *mu) const override
Function that fills variables that are compared to offline muons but the trigger chains are not speci...
Definition: EFMuonMon.cxx:318
CheckAppliedSFs.e3
e3
Definition: CheckAppliedSFs.py:264
SG::ReadDecorHandle
Handle class for reading a decoration on an object.
Definition: StoreGate/StoreGate/ReadDecorHandle.h:94
MuonMatchingTool.h
EFMuonMon::fillVariablesPerOfflineMuonPerChain
virtual StatusCode fillVariablesPerOfflineMuonPerChain(const EventContext &ctx, const xAOD::Muon *mu, const std::string &chain) const override
Function that fills variables of trigger objects associated to specified trigger chains comparing off...
Definition: EFMuonMon.cxx:117
xAOD::P4Helpers::deltaR
double deltaR(double rapidity1, double phi1, double rapidity2, double phi2)
from bare bare rapidity,phi
Definition: xAODP4Helpers.h:150
EFMuonMon::m_EFCBMuonContainerKey
SG::ReadHandleKey< xAOD::MuonContainer > m_EFCBMuonContainerKey
Definition: EFMuonMon.h:29
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
EFMuonMon::m_CBtrackContainerKey
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_CBtrackContainerKey
Definition: EFMuonMon.h:31
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
EFMuonMon::fillVariablesPerChain
virtual StatusCode fillVariablesPerChain(const EventContext &ctx, const std::string &chain) const override
Function that fills variables of trigger objects associated to specified trigger chains.
Definition: EFMuonMon.cxx:39
TrigMuonMonitorAlgorithm
Base class from which analyzers can define a derived class to do specific analysis.
Definition: TrigMuonMonitorAlgorithm.h:22
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.
SG::VarHandleKey::initialize
StatusCode initialize(bool used=true)
If this object is used as a property, then this should be called during the initialize phase.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:103
EFMuonMon::m_doEFCB
std::map< std::string, bool > m_doEFCB
Definition: EFMuonMon.h:35
xAOD::TrigComposite_v1
Class used to describe composite objects in the HLT.
Definition: TrigComposite_v1.h:49
DataVector
Derived DataVector<T>.
Definition: DataVector.h:794
TrigMuonMonitorAlgorithm::m_monitored_chains
Gaudi::Property< std::vector< std::string > > m_monitored_chains
List of trigger chains that are monitored in fillVariablesPerChain and fillVariablesPerOfflineMuonPer...
Definition: TrigMuonMonitorAlgorithm.h:137
ZERO_LIMIT
const float ZERO_LIMIT
Definition: VP1TriggerHandleL2.cxx:37
Trk::Combined
@ Combined
Definition: TrackSummaryTool.h:32
EFMuonMon::fillVariables
virtual StatusCode fillVariables(const EventContext &ctx) const override
Function that fills variables by just retrieving containers of trigger objects.
Definition: EFMuonMon.cxx:306
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
EFMuonMon::m_MStrackContainerKey
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_MStrackContainerKey
Definition: EFMuonMon.h:30
EFMuonMon::EFMuonMon
EFMuonMon(const std::string &name, ISvcLocator *pSvcLocator)
Definition: EFMuonMon.cxx:12
EFMuonMon::m_muonIso30Key
SG::ReadDecorHandleKey< xAOD::MuonContainer > m_muonIso30Key
Definition: EFMuonMon.h:32
TrigMuonDefs.h
TrigCompositeUtils::LinkInfo
Helper to keep a Decision object, ElementLink and ActiveState (with respect to some requested ChainGr...
Definition: LinkInfo.h:29
MuonMatchingTool::trigPosForMatchCBTrack
static std::tuple< bool, double, double > trigPosForMatchCBTrack(const xAOD::Muon *mu)
Definition: MuonMatchingTool.cxx:55
TrigMuonMonitorAlgorithm::initialize
virtual StatusCode initialize() override
initialize
Definition: TrigMuonMonitorAlgorithm.cxx:13
ReadDecorHandle.h
Handle class for reading a decoration on an object.
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
Monitored::Scalar
Declare a monitored scalar variable.
Definition: MonitoredScalar.h:34
CaloNoise_fillDB.mu
mu
Definition: CaloNoise_fillDB.py:51
EFMuonMon.h
xAOD::TrackParticle_v1::phi
virtual double phi() const override final
The azimuthal angle ( ) of the particle (has range to .)