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