ATLAS Offline Software
Loading...
Searching...
No Matches
MuonTree.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3*/
4
6
8#include "TROOT.h"
9#include "TVector3.h"
11
12namespace Muon {
13
14MuonTree::MuonTree(PlotBase* pParent, const std::string& sDir, bool mcFlag)
15 : PlotBase(pParent, sDir),
16 m_isMC(mcFlag),
17 m_runNumber(-999),
18 m_lumiBlock(-999),
19 m_eventNumber(-999),
21 m_mcBeamSpotWeight(1.0) {}
22
23MuonTree::MuonTree(PlotBase* pParent, const std::string& sDir)
24 : PlotBase(pParent, sDir),
25 m_isMC(true),
26 m_runNumber(-999),
27 m_lumiBlock(-999),
28 m_eventNumber(-999),
30 m_mcBeamSpotWeight(1.0) {}
31
33
35 m_tree.reset(BookTree("MuonTree"));
36
37 // EventInfo
38 m_tree->Branch("runNumber", &m_runNumber, "runNumber/i");
39 m_tree->Branch("lumiBlock", &m_lumiBlock, "lumiBlock/i");
40 m_tree->Branch("eventNumber", &m_eventNumber, "eventNumber/l");
41 m_tree->Branch("mcChannelNumber", &m_mcChannelNumber, "mcChannelNumber/i");
42 m_tree->Branch("mcBeamSpotWeight", &m_mcBeamSpotWeight,
43 "mcBeamSpotWeight/f");
44
45 //
46 // Reco
47 //
48 // General properties
49 m_tree->Branch("pt", &m_pt);
50 m_tree->Branch("eta", &m_eta);
51 m_tree->Branch("phi", &m_phi);
52 m_tree->Branch("e", &m_e);
53 m_tree->Branch("rapidity", &m_rapidity);
54
55 // authors and types
56 m_tree->Branch("allAuthors", &m_allAuthors);
57 m_tree->Branch("muonType", &m_muonType);
58
59 // summary values
60 m_tree->Branch("innerSmallHits", &m_innerSmallHits);
61 m_tree->Branch("innerLargeHits", &m_innerLargeHits);
62 m_tree->Branch("innerSmallHoles", &m_innerSmallHoles);
63 m_tree->Branch("innerLargeHoles", &m_innerLargeHoles);
64
65 // parameters
66 m_tree->Branch("msInnerMatchChi2", &m_msInnerMatchChi2);
67 m_tree->Branch("msInnerMatchDOF", &m_msInnerMatchDOF);
68 m_tree->Branch("msOuterMatchChi2", &m_msOuterMatchChi2);
69 m_tree->Branch("msOuterMatchDOF", &m_msOuterMatchDOF);
70 m_tree->Branch("CaloLRLikelihood", &m_CaloLRLikelihood);
71 m_tree->Branch("CaloMuonIDTag", &m_CaloMuonIDTag);
72 m_tree->Branch("EnergyLoss", &m_EnergyLoss);
73
74 // quality
75 m_tree->Branch("Quality", &m_Quality);
76
77 // isolation
78 m_tree->Branch("iso_ptcone20", &m_iso_ptcone20);
79 m_tree->Branch("iso_topoetcon20", &m_iso_topoetcon20);
80 m_tree->Branch("iso_ptvarcon20", &m_iso_ptvarcon20);
81 m_tree->Branch("iso_neflowisol20", &m_iso_neflowisol20);
82
83 // associated TrackParticle
84 m_tree->Branch("trkp_d0", &m_trkp_d0);
85 m_tree->Branch("trkp_z0", &m_trkp_z0);
86 m_tree->Branch("trkp_qOverP", &m_trkp_qOverP);
87 m_tree->Branch("trkp_chiSquared", &m_trkp_chiSquared);
88 m_tree->Branch("trkp_numberDoF", &m_trkp_numberDoF);
89
90 // used MuonSegment
91 m_tree->Branch("nMuonSegments", &m_nMuonSegments);
92 m_tree->Branch("museg_x", &m_museg_x);
93 m_tree->Branch("museg_y", &m_museg_y);
94 m_tree->Branch("museg_z", &m_museg_z);
95 m_tree->Branch("museg_sector", &m_museg_sector);
96 m_tree->Branch("museg_chamberIndex", &m_museg_chamberIndex);
97 m_tree->Branch("museg_technology", &m_museg_technology);
98 m_tree->Branch("museg_nPrecisionHits", &m_museg_nPrecisionHits);
99 m_tree->Branch("museg_nPhiLayers", &m_museg_nPhiLayers);
100 m_tree->Branch("museg_nTrigEtaLayers", &m_museg_nTrigEtaLayers);
101
102 if (!m_isMC) {
103 return;
104 }
105
106 //
107 // Truth
108 //
109 // Trk::Param
110 // all TruthTrack
111 m_tree->Branch("th_isGoodTruthTrack", &m_th_isGoodTruthTrack);
112
113 m_tree->Branch("th_pt", &m_th_pt);
114 m_tree->Branch("th_eta", &m_th_eta);
115 m_tree->Branch("th_phi", &m_th_phi);
116
117 // Trk::TruthInfo
118 // all TruthTrack
119 m_tree->Branch("th_truthType", &m_th_truthType);
120 m_tree->Branch("th_truthOrigin", &m_th_truthOrigin);
121
122 // Trk::TruthTrkExtrapolation
123 // all TruthTrack
124 m_tree->Branch("th_CaloEntryLayer_p", &m_th_CaloEntry_p);
125 m_tree->Branch("th_MuonEntryLayer_p", &m_th_MuonEntry_p);
126 m_tree->Branch("th_MuonExitLayer_p", &m_th_MuonExit_p);
127
128 // Trk::MSHit
129 // all TruthTrack
130 m_tree->Branch("th_nprecLayers", &m_th_nprecLayers);
131 m_tree->Branch("th_nphiLayers", &m_th_nphiLayers);
132 m_tree->Branch("th_ntrigEtaLayers", &m_th_ntrigEtaLayers);
133}
134
136 bool isData) {
137 m_runNumber = eventInfo->runNumber();
138 if (isData) {
139 m_lumiBlock = eventInfo->lumiBlock();
140 m_eventNumber = eventInfo->eventNumber();
142 m_mcBeamSpotWeight = 1.0;
143 } else {
144 m_lumiBlock = 0;
145 m_eventNumber = eventInfo->mcEventNumber();
146 m_mcChannelNumber = eventInfo->mcChannelNumber();
147 m_mcBeamSpotWeight = eventInfo->beamSpotWeight();
148 }
149}
150
152 // general properties
153 m_pt.push_back(mu.pt());
154 m_eta.push_back(mu.eta());
155 m_phi.push_back(mu.phi());
156 m_e.push_back(mu.e());
157 m_rapidity.push_back(mu.rapidity());
158
159 // authors and types
160 m_allAuthors.push_back(mu.allAuthors());
161 m_muonType.push_back(mu.muonType());
162
163 int8_t hitVal = 0;
164 if (!mu.summaryValue((uint8_t&)hitVal,
166 hitVal = -1;
167 }
168 m_innerSmallHits.push_back(hitVal);
169 if (!mu.summaryValue((uint8_t&)hitVal,
171 hitVal = -1;
172 }
173 m_innerLargeHits.push_back(hitVal);
174 if (!mu.summaryValue((uint8_t&)hitVal,
176 hitVal = -1;
177 }
178 m_innerSmallHoles.push_back(hitVal);
179 if (!mu.summaryValue((uint8_t&)hitVal,
181 hitVal = -1;
182 }
183 m_innerLargeHoles.push_back(hitVal);
184
185 // parameters
186 float value;
187 int ivalue;
188 if (!(mu.parameter(value, xAOD::Muon::ParamDef::msInnerMatchChi2))) {
189 value = -999.;
190 }
191 m_msInnerMatchChi2.push_back(value);
192 if (!(mu.parameter(ivalue, xAOD::Muon::ParamDef::msInnerMatchDOF))) {
193 ivalue = -999;
194 }
195 m_msInnerMatchDOF.push_back(ivalue);
196 if (!(mu.parameter(value, xAOD::Muon::ParamDef::msOuterMatchChi2))) {
197 value = -999.;
198 }
199 m_msOuterMatchChi2.push_back(value);
200 if (!(mu.parameter(ivalue, xAOD::Muon::ParamDef::msOuterMatchDOF))) {
201 ivalue = -999;
202 }
203 m_msOuterMatchDOF.push_back(ivalue);
204 if (!(mu.parameter(value, xAOD::Muon::ParamDef::CaloLRLikelihood))) {
205 value = -999.;
206 }
207 m_CaloLRLikelihood.push_back(value);
208 if (!(mu.parameter(ivalue, xAOD::Muon::ParamDef::CaloMuonIDTag))) {
209 ivalue = -999;
210 }
211 m_CaloMuonIDTag.push_back(ivalue);
212 if (!(mu.parameter(value, xAOD::Muon::ParamDef::EnergyLoss))) {
213 value = -999.;
214 }
215 m_EnergyLoss.push_back(value);
216
217 // quality
218 m_Quality.push_back(mu.quality());
219
220 // isolation
221 if (!(mu.isolation(value, xAOD::Iso::IsolationType::ptcone20))) {
222 value = -999.;
223 }
224 m_iso_ptcone20.push_back(value);
225 if (!(mu.isolation(value, xAOD::Iso::IsolationType::topoetcone20))) {
226 value = -999.;
227 }
228 m_iso_topoetcon20.push_back(value);
229 if (!(mu.isolation(value, xAOD::Iso::IsolationType::ptvarcone20))) {
230 value = -999.;
231 }
232 m_iso_ptvarcon20.push_back(value);
233 if (!(mu.isolation(value, xAOD::Iso::IsolationType::neflowisol20))) {
234 value = -999.;
235 }
236 m_iso_neflowisol20.push_back(value);
237
238 // associated TrackParticle
239 m_trkp_d0.push_back(mu.primaryTrackParticle()->d0());
240 m_trkp_z0.push_back(mu.primaryTrackParticle()->z0());
241 m_trkp_qOverP.push_back(mu.primaryTrackParticle()->qOverP());
242 m_trkp_chiSquared.push_back(mu.primaryTrackParticle()->chiSquared());
243 m_trkp_numberDoF.push_back(mu.primaryTrackParticle()->numberDoF());
244
245 // used MuonSegments
246 size_t nMuonSegments = mu.nMuonSegments();
247 m_nMuonSegments.push_back(nMuonSegments);
248 size_t muonIndx = m_nMuonSegments.size() - 1;
249
250 m_museg_x.push_back(std::vector<float>());
251 m_museg_y.push_back(std::vector<float>());
252 m_museg_z.push_back(std::vector<float>());
253 m_museg_sector.push_back(std::vector<int>());
254 m_museg_chamberIndex.push_back(std::vector<unsigned int>());
255 m_museg_technology.push_back(std::vector<unsigned int>());
256 m_museg_nPrecisionHits.push_back(std::vector<int>());
257 m_museg_nPhiLayers.push_back(std::vector<int>());
258 m_museg_nTrigEtaLayers.push_back(std::vector<int>());
259
260 for (int i = 0; (size_t)i < nMuonSegments; i++) {
261 const xAOD::MuonSegment* muonSegment = mu.muonSegment(i);
262 m_museg_x[muonIndx].push_back(muonSegment->x());
263 m_museg_y[muonIndx].push_back(muonSegment->y());
264 m_museg_z[muonIndx].push_back(muonSegment->z());
265 m_museg_sector[muonIndx].push_back(muonSegment->sector());
266 m_museg_chamberIndex[muonIndx].push_back(
267 (int)muonSegment->chamberIndex());
268 m_museg_technology[muonIndx].push_back((int)muonSegment->technology());
269 m_museg_nPrecisionHits[muonIndx].push_back(
270 muonSegment->nPrecisionHits());
271 m_museg_nPhiLayers[muonIndx].push_back(muonSegment->nPhiLayers());
272 m_museg_nTrigEtaLayers[muonIndx].push_back(
273 muonSegment->nTrigEtaLayers());
274 }
275}
276
278 bool isGoodTruthTrack) {
279
280 //
281 // Trk::Param
282 //
283 if (isGoodTruthTrack) {
284 m_th_isGoodTruthTrack.push_back(true);
285 } else {
286 m_th_isGoodTruthTrack.push_back(false);
287 }
288
289 m_th_pt.push_back(truthMu.pt());
290 m_th_eta.push_back(truthMu.eta());
291 m_th_phi.push_back(truthMu.phi());
292
293 //
294 // Trk::TruthInfo
295 //
296 static const SG::ConstAccessor<int> truthTypeAcc("truthType");
297 static const SG::ConstAccessor<int> truthOriginAcc("truthOrigin");
298 if (truthTypeAcc.isAvailable(truthMu)) {
299 m_th_truthType.push_back(truthTypeAcc(truthMu));
300 } else {
301 m_th_truthType.push_back(-999);
302 }
303
304 if (truthOriginAcc.isAvailable(truthMu)) {
305 m_th_truthOrigin.push_back(truthOriginAcc(truthMu));
306 } else {
307 m_th_truthOrigin.push_back(-999);
308 }
309
310 //
311 // Trk::TruthTrkExtrapolation
312 //
313 static const SG::ConstAccessor<float> caloEnt_pxAcc("CaloEntryLayer_px");
314 static const SG::ConstAccessor<float> caloEnt_pyAcc("CaloEntryLayer_py");
315 static const SG::ConstAccessor<float> caloEnt_pzAcc("CaloEntryLayer_pz");
316 if (caloEnt_pxAcc.isAvailable(truthMu) &&
317 caloEnt_pyAcc.isAvailable(truthMu) &&
318 caloEnt_pzAcc.isAvailable(truthMu)) {
319 TVector3 v(caloEnt_pxAcc(truthMu), caloEnt_pyAcc(truthMu),
320 caloEnt_pzAcc(truthMu));
321 m_th_CaloEntry_p.push_back(v.Mag() * 0.001);
322 } else {
323 m_th_CaloEntry_p.push_back(-999.);
324 }
325
326 static const SG::ConstAccessor<float> muonEnt_pxAcc("MuonEntryLayer_px");
327 static const SG::ConstAccessor<float> muonEnt_pyAcc("MuonEntryLayer_py");
328 static const SG::ConstAccessor<float> muonEnt_pzAcc("MuonEntryLayer_pz");
329 if (muonEnt_pxAcc.isAvailable(truthMu) &&
330 muonEnt_pyAcc.isAvailable(truthMu) &&
331 muonEnt_pzAcc.isAvailable(truthMu)) {
332
333 TVector3 v(muonEnt_pxAcc(truthMu), muonEnt_pyAcc(truthMu),
334 muonEnt_pzAcc(truthMu));
335 m_th_MuonEntry_p.push_back(v.Mag() * 0.001);
336 } else {
337 m_th_MuonEntry_p.push_back(-999.);
338 }
339
340 static const SG::ConstAccessor<float> muonExit_pxAcc("MuonExitLayer_px");
341 static const SG::ConstAccessor<float> muonExit_pyAcc("MuonExitLayer_py");
342 static const SG::ConstAccessor<float> muonExit_pzAcc("MuonExitLayer_pz");
343 if (muonExit_pxAcc.isAvailable(truthMu) &&
344 muonExit_pyAcc.isAvailable(truthMu) &&
345 muonExit_pzAcc.isAvailable(truthMu)) {
346
347 TVector3 v(muonExit_pxAcc(truthMu), muonExit_pyAcc(truthMu),
348 muonExit_pzAcc(truthMu));
349 m_th_MuonExit_p.push_back(v.Mag() * 0.001);
350 } else {
351 m_th_MuonExit_p.push_back(-999.);
352 }
353
354 //
355 // Trk::MSHit
356 //
357 static const SG::ConstAccessor<uint8_t> nprecAcc("nprecLayers");
358 if (nprecAcc.isAvailable(truthMu)) {
359 m_th_nprecLayers.push_back(nprecAcc(truthMu));
360 } else {
361 m_th_nprecLayers.push_back(-99);
362 }
363
364 static const SG::ConstAccessor<uint8_t> nphiAcc("nphiLayers");
365 if (nphiAcc.isAvailable(truthMu)) {
366 m_th_nphiLayers.push_back(nphiAcc(truthMu));
367 } else {
368 m_th_nphiLayers.push_back(-99);
369 }
370
371 static const SG::ConstAccessor<uint8_t> ntrigEtaAcc("ntrigEtaLayers");
372 if (ntrigEtaAcc.isAvailable(truthMu)) {
373 m_th_ntrigEtaLayers.push_back(ntrigEtaAcc(truthMu));
374 } else {
375 m_th_ntrigEtaLayers.push_back(-99);
376 }
377}
378
380 const xAOD::TruthParticle& truthMu, const xAOD::Muon& mu,
381 const xAOD::TrackParticleContainer* MSTracks, bool isGoodTruthTrack) {
382 // If there is an interest to have an additional observable, which is
383 // derived from both reco and truth muon objects, stored in the validation
384 // tree, then this observable can be calculated/retrieved like, e.g., it is
385 // done here:
386 //
387 // line:0175
388 // athena/MuonSpectrometer/MuonValidation/MuonDQA/MuonPhysValMonitoring/src/MuonValidationPlots.cxx
389 // athena/MuonSpectrometer/MuonValidation/MuonHistogramming/MuonHistUtils/MuonHistUtils/TruthRelatedMuonPlotOrganizer.h
390 // line: 0090
391 // athena/MuonSpectrometer/MuonValidation/MuonHistogramming/MuonHistUtils/Root/TruthRelatedMuonPlotOrganizer.cxx
392 //
393 //
394 // Meanwhile, use these useless statements to void compilation warnings
395 if (MSTracks) {
396 return;
397 }
398 if (isGoodTruthTrack) {
399 return;
400 }
401 if (mu.m()) {
402 return;
403 }
404 if (truthMu.status()) {
405 return;
406 }
407}
408
410
411 //
412 // Event Info
413 //
414 m_runNumber = -999;
415 m_lumiBlock = -999;
416 m_eventNumber = -999;
417 m_mcChannelNumber = -999;
418
419 //
420 // Reco
421 //
422 m_pt.clear();
423 m_eta.clear();
424 m_phi.clear();
425 m_e.clear();
426 m_rapidity.clear();
427
428 // authors and types
429 m_allAuthors.clear();
430 m_muonType.clear();
431
432 // summary values
433 m_innerSmallHits.clear();
434 m_innerLargeHits.clear();
435 m_innerSmallHoles.clear();
436 m_innerLargeHoles.clear();
437
438 // parameters
439 m_msInnerMatchChi2.clear();
440 m_msInnerMatchDOF.clear();
441 m_msOuterMatchChi2.clear();
442 m_msOuterMatchDOF.clear();
443 m_CaloLRLikelihood.clear();
444 m_CaloMuonIDTag.clear();
445 m_EnergyLoss.clear();
446
447 // quality
448 m_Quality.clear();
449
450 // isolation
451 m_iso_ptcone20.clear();
452 m_iso_topoetcon20.clear();
453 m_iso_ptvarcon20.clear();
454 m_iso_neflowisol20.clear();
455
456 // associated TrackParticle
457 m_trkp_d0.clear();
458 m_trkp_z0.clear();
459 m_trkp_qOverP.clear();
460 m_trkp_chiSquared.clear();
461 m_trkp_numberDoF.clear();
462
463 // used MuonSegments
464 m_nMuonSegments.clear();
465 m_museg_x.clear();
466 m_museg_y.clear();
467 m_museg_z.clear();
468 m_museg_sector.clear();
469 m_museg_chamberIndex.clear();
470 m_museg_technology.clear();
472 m_museg_nPhiLayers.clear();
474
475 //
476 // Truth
477 //
478 // Trk::Param
479 m_th_isGoodTruthTrack.clear();
480 m_th_pt.clear();
481 m_th_eta.clear();
482 m_th_phi.clear();
483
484 // Trk::TruthInfo
485 m_th_truthType.clear();
486 m_th_truthOrigin.clear();
487
488 // Trk::TruthTrkExtrapolation
489 m_th_CaloEntry_p.clear();
490 m_th_MuonEntry_p.clear();
491 m_th_MuonExit_p.clear();
492
493 // Trk::MSHit
494 m_th_nprecLayers.clear();
495 m_th_nphiLayers.clear();
496 m_th_ntrigEtaLayers.clear();
497}
498
500 return m_tree.get();
501}
502
503} // namespace Muon
Helper class to provide constant type-safe access to aux data.
std::vector< std::vector< float > > m_museg_z
Definition MuonTree.h:100
std::unique_ptr< TTree > m_tree
Definition MuonTree.h:38
void postFillTreeActions()
Definition MuonTree.cxx:409
std::vector< float > m_iso_neflowisol20
Definition MuonTree.h:87
std::vector< int > m_th_truthOrigin
Definition MuonTree.h:123
unsigned long long m_eventNumber
Definition MuonTree.h:46
std::vector< float > m_trkp_chiSquared
Definition MuonTree.h:93
std::vector< std::vector< unsigned int > > m_museg_technology
Definition MuonTree.h:103
void initializePlots()
Definition MuonTree.cxx:34
std::vector< size_t > m_nMuonSegments
Definition MuonTree.h:97
std::vector< int > m_msOuterMatchDOF
Definition MuonTree.h:74
void fillEventBranches(const xAOD::EventInfo *eventInfo, bool isData)
Definition MuonTree.cxx:135
std::vector< int8_t > m_innerLargeHits
Definition MuonTree.h:66
std::vector< double > m_th_eta
Definition MuonTree.h:117
std::vector< int8_t > m_innerLargeHoles
Definition MuonTree.h:68
std::vector< int8_t > m_th_ntrigEtaLayers
Definition MuonTree.h:135
std::vector< float > m_trkp_d0
Definition MuonTree.h:90
std::vector< float > m_iso_ptvarcon20
Definition MuonTree.h:86
std::vector< std::vector< int > > m_museg_nPhiLayers
Definition MuonTree.h:105
std::vector< float > m_trkp_qOverP
Definition MuonTree.h:92
std::vector< int > m_muonType
Definition MuonTree.h:62
std::vector< int8_t > m_innerSmallHits
Definition MuonTree.h:65
std::vector< float > m_eta
Definition MuonTree.h:55
std::vector< std::vector< int > > m_museg_sector
Definition MuonTree.h:101
std::vector< float > m_th_MuonExit_p
Definition MuonTree.h:129
uint32_t m_lumiBlock
Definition MuonTree.h:45
std::vector< std::vector< int > > m_museg_nTrigEtaLayers
Definition MuonTree.h:106
std::vector< float > m_CaloLRLikelihood
Definition MuonTree.h:75
std::vector< std::vector< float > > m_museg_x
Definition MuonTree.h:98
void fillTruthMuonBranches(const xAOD::TruthParticle &truthMu, bool isGoodTruthTrack)
Definition MuonTree.cxx:277
std::vector< int > m_Quality
Definition MuonTree.h:80
std::vector< int8_t > m_th_nprecLayers
Definition MuonTree.h:133
std::vector< int > m_msInnerMatchDOF
Definition MuonTree.h:72
std::vector< int8_t > m_th_nphiLayers
Definition MuonTree.h:134
std::vector< float > m_trkp_numberDoF
Definition MuonTree.h:94
std::vector< int > m_CaloMuonIDTag
Definition MuonTree.h:76
uint32_t m_mcChannelNumber
Definition MuonTree.h:47
MuonTree(PlotBase *pParent, const std::string &sDir, bool mcFlag)
Definition MuonTree.cxx:14
std::vector< double > m_th_phi
Definition MuonTree.h:118
uint32_t m_runNumber
Definition MuonTree.h:44
std::vector< bool > m_th_isGoodTruthTrack
Definition MuonTree.h:114
std::vector< float > m_iso_topoetcon20
Definition MuonTree.h:85
std::vector< float > m_msOuterMatchChi2
Definition MuonTree.h:73
std::vector< float > m_e
Definition MuonTree.h:57
std::vector< float > m_th_MuonEntry_p
Definition MuonTree.h:128
std::vector< int > m_th_truthType
Definition MuonTree.h:122
Float_t m_mcBeamSpotWeight
Definition MuonTree.h:48
std::vector< std::vector< int > > m_museg_nPrecisionHits
Definition MuonTree.h:104
void fillRecoMuonBranches(const xAOD::Muon &mu)
Definition MuonTree.cxx:151
std::vector< float > m_iso_ptcone20
Definition MuonTree.h:84
std::vector< uint16_t > m_allAuthors
Definition MuonTree.h:61
std::vector< double > m_th_pt
Definition MuonTree.h:116
std::vector< float > m_trkp_z0
Definition MuonTree.h:91
std::vector< float > m_pt
Definition MuonTree.h:54
std::vector< std::vector< float > > m_museg_y
Definition MuonTree.h:99
std::vector< int8_t > m_innerSmallHoles
Definition MuonTree.h:67
std::vector< float > m_msInnerMatchChi2
Definition MuonTree.h:71
std::vector< float > m_rapidity
Definition MuonTree.h:58
std::vector< float > m_th_CaloEntry_p
Definition MuonTree.h:127
TTree * getTree()
Definition MuonTree.cxx:499
std::vector< float > m_phi
Definition MuonTree.h:56
std::vector< float > m_EnergyLoss
Definition MuonTree.h:77
std::vector< std::vector< unsigned int > > m_museg_chamberIndex
Definition MuonTree.h:102
PlotBase(PlotBase *parent, std::string_view sDir)
Definition PlotBase.cxx:29
TTree * BookTree(std::string_view name, bool prependDir=true)
Book a TTree.
Definition PlotBase.cxx:277
Helper class to provide constant type-safe access to aux data.
bool isAvailable(const ELT &e) const
Test to see if this variable exists in the store.
uint64_t mcEventNumber() const
The MC generator's event number.
uint32_t lumiBlock() const
The current event's luminosity block number.
float beamSpotWeight() const
Weight for beam spot size reweighting.
uint32_t runNumber() const
The current event's run number.
uint32_t mcChannelNumber() const
The MC generator's channel number.
uint64_t eventNumber() const
The current event's event number.
float y() const
Returns the x position.
int nTrigEtaLayers() const
Returns the number of trigger eta layers.
int nPrecisionHits() const
::Muon::MuonStationIndex::TechnologyIndex technology() const
Returns the main technology of the segment.
::Muon::MuonStationIndex::ChIndex chamberIndex() const
Returns the chamber index.
int nPhiLayers() const
Returns the number of phi layers.
float z() const
Returns the y position.
int status() const
Status code.
virtual double pt() const override final
The transverse momentum ( ) of the particle.
virtual double eta() const override final
The pseudorapidity ( ) of the particle.
virtual double phi() const override final
The azimuthal angle ( ) of the particle.
NRpcCablingAlg reads raw condition data and writes derived condition data to the condition store.
@ neflowisol20
Neutral eflow isolation.
@ topoetcone20
Topo-cluster ET-sum.
@ ptcone20
Track isolation.
@ ptvarcone20
Mini-Isolation http://arxiv.org/abs/1007.2221.
EventInfo_v1 EventInfo
Definition of the latest event info version.
TruthParticle_v1 TruthParticle
Typedef to implementation.
TrackParticleContainer_v1 TrackParticleContainer
Definition of the current "TrackParticle container version".
Muon_v1 Muon
Reference the current persistent version:
MuonSegment_v1 MuonSegment
Reference the current persistent version:
@ innerLargeHits
number of precision hits in the inner large layer
@ innerLargeHoles
number of precision holes in the inner large layer
@ innerSmallHoles
number of precision holes in the inner small layer
@ innerSmallHits
number of precision hits in the inner small layer