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