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