ATLAS Offline Software
Loading...
Searching...
No Matches
InDetPerfNtuple_TruthToReco.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
4
8
9InDetPerfNtuple_TruthToReco::InDetPerfNtuple_TruthToReco(InDetPlotBase* pParent, const std::string & dirName, const std::string & treeName):
10 InDetPerfNtuple(pParent, dirName, treeName),
11 m_truth_selectedByPileupSwitch("truth_selectedByPileupSwitch",0,*this),
12 m_truth_pdgId("truth_pdgId",m_undefinedValue,*this),
13 m_truth_uniqueID("truth_barcode",m_undefinedValue,*this), // TODO rename variable to be consistent?
14 m_truth_charge("truth_charge",m_undefinedValue,*this),
15 m_truth_eta("truth_eta",m_undefinedValue,*this),
16 m_truth_pt("truth_pt",m_undefinedValue,*this),
17 m_truth_d0("truth_d0",m_undefinedValue,*this),
18 m_truth_z0("truth_z0",m_undefinedValue,*this),
19 m_truth_phi("truth_phi",m_undefinedValue,*this),
20 m_truth_theta("truth_theta",m_undefinedValue,*this),
21 m_truth_qOverP("truth_qOverP",m_undefinedValue,*this),
22 m_truth_qOverPt("truth_qOverPt",m_undefinedValue,*this),
23 m_truth_z0sin("truth_z0sin",m_undefinedValue,*this),
24 m_track_patternInfo("track_patternInfo",-1,*this),
25 m_track_truthMatchRanking("track_truthMatchRanking",-1,*this),
26 m_track_truthMatchProb("track_truthMatchProb",m_undefinedValue,*this),
27 m_track_charge("track_charge",m_undefinedValue,*this),
28 m_track_eta("track_eta",m_undefinedValue,*this),
29 m_track_pt("track_pt",m_undefinedValue,*this),
30 m_track_d0("track_d0",m_undefinedValue,*this),
31 m_track_z0("track_z0",m_undefinedValue,*this),
32 m_track_phi("track_phi",m_undefinedValue,*this),
33 m_track_theta("track_theta",m_undefinedValue,*this),
34 m_track_qOverP("track_qOverP",m_undefinedValue,*this),
35 m_track_qOverPt("track_qOverPt",m_undefinedValue,*this),
36 m_track_z0sin("track_z0sin",m_undefinedValue,*this),
37 m_track_z0sin_wrt_primvtx("track_z0sin_wrt_primvtx",m_undefinedValue,*this),
38 m_trackErr_pt("trackErr_pt",m_undefinedValue,*this),
39 m_trackErr_d0("trackErr_d0",m_undefinedValue,*this),
40 m_trackErr_z0("trackErr_z0",m_undefinedValue,*this),
41 m_trackErr_phi("trackErr_phi",m_undefinedValue,*this),
42 m_trackErr_theta("trackErr_theta",m_undefinedValue,*this),
43 m_trackErr_qOverP("trackErr_qOverP",m_undefinedValue,*this),
44 m_trackErr_qOverPt("trackErr_qOverPt",m_undefinedValue,*this),
45 m_trackErr_z0sin("trackErr_z0sin",m_undefinedValue,*this),
46 m_track_chiSquared("track_chiSquared",m_undefinedValue,*this),
47 m_track_nDoF("track_nDoF",m_undefinedValue,*this),
48 m_numberOfContribPixelLayers("numberOfContribPixelLayers",m_undefinedValue,*this),
49 m_numberOfBLayerHits("numberOfBLayerHits",m_undefinedValue,*this),
50 m_numberOfBLayerOutliers("numberOfBLayerOutliers",m_undefinedValue,*this),
51 m_numberOfBLayerSharedHits("numberOfBLayerSharedHits",m_undefinedValue,*this),
52 m_numberOfBLayerSplitHits("numberOfBLayerSplitHits",m_undefinedValue,*this),
53 m_expectBLayerHit("expectBLayerHit",m_undefinedValue,*this),
54 m_expectInnermostPixelLayerHit("expectInnermostPixelLayerHit",m_undefinedValue,*this),
55 m_numberOfInnermostPixelLayerHits("numberOfInnermostPixelLayerHits",m_undefinedValue,*this),
56 m_numberOfInnermostPixelLayerOutliers("numberOfInnermostPixelLayerOutliers",m_undefinedValue,*this),
57 m_numberOfInnermostPixelLayerSharedHits("numberOfInnermostPixelLayerSharedHits",m_undefinedValue,*this),
58 m_numberOfInnermostPixelLayerSplitHits("numberOfInnermostPixelLayerSplitHits",m_undefinedValue,*this),
59 m_expectNextToInnermostPixelLayerHit("expectNextToInnermostPixelLayerHit",m_undefinedValue,*this),
60 m_numberOfNextToInnermostPixelLayerHits("numberOfNextToInnermostPixelLayerHits",m_undefinedValue,*this),
61 m_numberOfNextToInnermostPixelLayerOutliers("numberOfNextToInnermostPixelLayerOutliers",m_undefinedValue,*this),
62 m_numberOfNextToInnermostPixelLayerSharedHits("numberOfNextToInnermostPixelLayerSharedHits",m_undefinedValue,*this),
63 m_numberOfNextToInnermostPixelLayerSplitHits("numberOfNextToInnermostPixelLayerSplitHits",m_undefinedValue,*this),
64 m_numberOfPixelHits("numberOfPixelHits",m_undefinedValue,*this),
65 m_numberOfPixelOutliers("numberOfPixelOutliers",m_undefinedValue,*this),
66 m_numberOfPixelHoles("numberOfPixelHoles",m_undefinedValue,*this),
67 m_numberOfPixelSharedHits("numberOfPixelSharedHits",m_undefinedValue,*this),
68 m_numberOfPixelSplitHits("numberOfPixelSplitHits",m_undefinedValue,*this),
69 m_numberOfGangedPixels("numberOfGangedPixels",m_undefinedValue,*this),
70 m_numberOfGangedFlaggedFakes("numberOfGangedFlaggedFakes",m_undefinedValue,*this),
71 m_numberOfPixelDeadSensors("numberOfPixelDeadSensors",m_undefinedValue,*this),
72 m_numberOfPixelSpoiltHits("numberOfPixelSpoiltHits",m_undefinedValue,*this),
73 m_numberOfSCTHits("numberOfSCTHits",m_undefinedValue,*this),
74 m_numberOfSCTOutliers("numberOfSCTOutliers",m_undefinedValue,*this),
75 m_numberOfSCTHoles("numberOfSCTHoles",m_undefinedValue,*this),
76 m_numberOfSCTDoubleHoles("numberOfSCTDoubleHoles",m_undefinedValue,*this),
77 m_numberOfSCTSharedHits("numberOfSCTSharedHits",m_undefinedValue,*this),
78 m_numberOfSCTDeadSensors("numberOfSCTDeadSensors",m_undefinedValue,*this),
79 m_numberOfSCTSpoiltHits("numberOfSCTSpoiltHits",m_undefinedValue,*this),
80 m_numberOfTRTHits("numberOfTRTHits",m_undefinedValue,*this),
81 m_numberOfTRTOutliers("numberOfTRTOutliers",m_undefinedValue,*this),
82 m_numberOfTRTHoles("numberOfTRTHoles",m_undefinedValue,*this),
83 m_numberOfTRTHighThresholdHits("numberOfTRTHighThresholdHits",m_undefinedValue,*this),
84 m_numberOfTRTHighThresholdHitsTotal("numberOfTRTHighThresholdHitsTotal",m_undefinedValue,*this),
85 m_numberOfTRTHighThresholdOutliers("numberOfTRTHighThresholdOutliers",m_undefinedValue,*this),
86 m_numberOfTRTDeadStraws("numberOfTRTDeadStraws",m_undefinedValue,*this),
87 m_numberOfTRTTubeHits("numberOfTRTTubeHits",m_undefinedValue,*this),
88 m_numberOfTRTXenonHits("numberOfTRTXenonHits",m_undefinedValue,*this),
89 m_numberOfTRTSharedHits("numberOfTRTSharedHits",m_undefinedValue,*this),
90 m_pixeldEdx("pixeldEdx",m_undefinedValue,*this),
91 m_hasTruth("hasTruth",0,*this),
92 m_hasTrack("hasTrack",0,*this),
93 m_passedTruthSelection("passedTruthSelection",0,*this),
94 m_passedTrackSelection("passedTrackSelection",0,*this) {
95}
96
98 m_hasTruth = (int)true;
101
102 m_truth_pdgId = truth.pdgId();
104 m_truth_charge = truth.charge();
105 m_truth_eta = truth.eta();
106 m_truth_pt = truth.pt();
107 m_truth_phi = truth.phi();
108
109 static const SG::ConstAccessor<float> d0Acc("d0");
110 static const SG::ConstAccessor<float> z0Acc("z0");
111 static const SG::ConstAccessor<float> thetaAcc("theta");
112 static const SG::ConstAccessor<float> qOverPAcc("qOverP");
113 m_truth_d0 = d0Acc.isAvailable(truth) ? d0Acc(truth) : m_undefinedValue;
114 m_truth_z0 = z0Acc.isAvailable(truth) ? z0Acc(truth) : m_undefinedValue;
115 m_truth_theta = thetaAcc.isAvailable(truth) ? thetaAcc(truth) : m_undefinedValue;
116 m_truth_qOverP = qOverPAcc.isAvailable(truth) ? qOverPAcc(truth) : m_undefinedValue;
117
120}
121
122void InDetPerfNtuple_TruthToReco::fillTrack(const xAOD::TrackParticle& track, const xAOD::Vertex* vtx, const int truthMatchRanking ) {
123 m_hasTrack = (int)true;
125
126 // Record truth match ranking to handle cases in which multiple tracks share the same truth association
127 // Integer value to be interpreted as:
128 // n = -1 : No associated truth available (i.e. track-only entry)
129 // n = 0 : Associated truth available and this is the 'best matched' (highest probability) associated track
130 // This is the most likely case when there is a linked truth because most associations are one-to-one
131 // n = 1, 2, ... : Assoicated truth available and this is the second, third, ... 'best matched' associated track
132 // This handles rare cases where there are multiple tracks associated to the same truth
133 try{
134 m_track_patternInfo = track.patternRecoInfo().to_ulong();
135 }
136 // to_ulong may throw if the bitset can not be represented by an unsigned long
137 catch (std::overflow_error & err){
138 // we print a warning and reset the pattern info to the value that would be written in case of no
139 // reco track.
140 // Not deserving of an ERROR since it is a single branch of a validation ntuple not written in production use
141 ATH_MSG_WARNING("Track pattern info can not be represented by an unsigned long on your system - branch in IDPVM ntuple will be invalid.");
143 }
144 m_track_truthMatchRanking = truthMatchRanking;
145
146 static const SG::ConstAccessor<float> truthMatchProbabilityAcc("truthMatchProbability");
147 float prob = (truthMatchProbabilityAcc.isAvailable(track) ? truthMatchProbabilityAcc(track) : m_undefinedValue);
148 m_track_truthMatchProb = (!std::isnan(prob) ? prob : m_undefinedValue);
149
150 m_track_charge = track.charge();
151 m_track_eta = track.eta();
152 m_track_pt = track.pt();
153 m_track_d0 = track.d0();
154 m_track_z0 = track.z0();
155 m_track_phi = track.phi();
156 m_track_theta = track.theta();
157 m_track_qOverP = track.qOverP();
158 m_track_qOverPt = track.qOverP() * (1 / std::sin(track.theta()));
159 m_track_z0sin = track.z0() * std::sin(track.theta());
160 if (vtx) m_track_z0sin_wrt_primvtx = ( track.z0() - vtx->z() ) *std::sin(track.theta());
162
163 if (track.qOverP() == 0) m_trackErr_pt = m_undefinedValue;
164 else {
165 float dqOverP = -1 * track.pt() / std::abs(track.qOverP());
166 float dtheta = track.pt() / std::tan(track.theta());
167 const std::vector<float> & cov = track.definingParametersCovMatrixVec();
168 m_trackErr_pt = std::sqrt(dqOverP * (dqOverP * cov[14] + dtheta * cov[13]) + dtheta * dtheta * cov[9]);
169 }
170
171 m_trackErr_d0 = std::sqrt(track.definingParametersCovMatrix()(0, 0));
172 m_trackErr_z0 = std::sqrt(track.definingParametersCovMatrix()(1, 1));
173 m_trackErr_phi = std::sqrt(track.definingParametersCovMatrix()(2, 2));
174 m_trackErr_theta = std::sqrt(track.definingParametersCovMatrix()(3, 3));
175 m_trackErr_qOverP = std::sqrt(track.definingParametersCovMatrix()(4, 4));
176 m_trackErr_qOverPt = m_trackErr_qOverP() * (1 / std::sin(track.theta()));
177 m_trackErr_z0sin = std::sqrt(std::pow(m_trackErr_z0() * std::sin(track.theta()), 2) +
178 std::pow(track.z0() * m_trackErr_theta() * std::cos(track.theta()), 2));
179
180 m_track_chiSquared = track.chiSquared();
181 m_track_nDoF = track.numberDoF();
182
183 // Fill track summary info (e.g. hits/holes/outliers on track)
185}
186
188 uint8_t value = 0;
189 float fvalue = 0.;
190 if (track.summaryValue(value, xAOD::numberOfContribPixelLayers)) {
192 }
193 if (track.summaryValue(value, xAOD::numberOfBLayerHits)) {
194 m_numberOfBLayerHits = value;
195 }
196 if (track.summaryValue(value, xAOD::numberOfBLayerOutliers)) {
198 }
199 if (track.summaryValue(value, xAOD::numberOfBLayerSharedHits)) {
201 }
202 if (track.summaryValue(value, xAOD::numberOfBLayerSplitHits)) {
204 }
205 if (track.summaryValue(value, xAOD::expectBLayerHit)) {
206 m_expectBLayerHit = value;
207 }
208 if (track.summaryValue(value, xAOD::expectInnermostPixelLayerHit)) {
210 }
211 if (track.summaryValue(value, xAOD::numberOfInnermostPixelLayerHits)) {
213 }
214 if (track.summaryValue(value, xAOD::numberOfInnermostPixelLayerOutliers)) {
216 }
217 if (track.summaryValue(value, xAOD::numberOfInnermostPixelLayerSharedHits)) {
219 }
220 if (track.summaryValue(value, xAOD::numberOfInnermostPixelLayerSplitHits)) {
222 }
223 if (track.summaryValue(value, xAOD::expectNextToInnermostPixelLayerHit)) {
225 }
226 if (track.summaryValue(value, xAOD::numberOfNextToInnermostPixelLayerHits)) {
228 }
229 if (track.summaryValue(value, xAOD::numberOfNextToInnermostPixelLayerOutliers)) {
231 }
232 if (track.summaryValue(value, xAOD::numberOfNextToInnermostPixelLayerSharedHits)) {
234 }
235 if (track.summaryValue(value, xAOD::numberOfNextToInnermostPixelLayerSplitHits)) {
237 }
238 if (track.summaryValue(value, xAOD::numberOfPixelHits)) {
239 m_numberOfPixelHits = value;
240 }
241 if (track.summaryValue(value, xAOD::numberOfPixelOutliers)) {
243 }
244 if (track.summaryValue(value, xAOD::numberOfPixelHoles)) {
245 m_numberOfPixelHoles = value;
246 }
247 if (track.summaryValue(value, xAOD::numberOfPixelSharedHits)) {
249 }
250 if (track.summaryValue(value, xAOD::numberOfPixelSplitHits)) {
252 }
253 if (track.summaryValue(value, xAOD::numberOfGangedPixels)) {
255 }
256 if (track.summaryValue(value, xAOD::numberOfGangedFlaggedFakes)) {
258 }
259 if (track.summaryValue(value, xAOD::numberOfPixelDeadSensors)) {
261 }
262 if (track.summaryValue(value, xAOD::numberOfPixelSpoiltHits)) {
264 }
265 if (track.summaryValue(value, xAOD::numberOfSCTHits)) {
266 m_numberOfSCTHits = value;
267 }
268 if (track.summaryValue(value, xAOD::numberOfSCTOutliers)) {
269 m_numberOfSCTOutliers = value;
270 }
271 if (track.summaryValue(value, xAOD::numberOfSCTHoles)) {
272 m_numberOfSCTHoles = value;
273 }
274 if (track.summaryValue(value, xAOD::numberOfSCTDoubleHoles)) {
276 }
277 if (track.summaryValue(value, xAOD::numberOfSCTSharedHits)) {
279 }
280 if (track.summaryValue(value, xAOD::numberOfSCTDeadSensors)) {
282 }
283 if (track.summaryValue(value, xAOD::numberOfSCTSpoiltHits)) {
285 }
286 if (track.summaryValue(value, xAOD::numberOfTRTHits)) {
287 m_numberOfTRTHits = value;
288 }
289 if (track.summaryValue(value, xAOD::numberOfTRTOutliers)) {
290 m_numberOfTRTOutliers = value;
291 }
292 if (track.summaryValue(value, xAOD::numberOfTRTHoles)) {
293 m_numberOfTRTHoles = value;
294 }
295 if (track.summaryValue(value, xAOD::numberOfTRTHighThresholdHits)) {
297 }
298 if (track.summaryValue(value, xAOD::numberOfTRTHighThresholdHitsTotal)) {
300 }
301 if (track.summaryValue(value, xAOD::numberOfTRTHighThresholdOutliers)) {
303 }
304 if (track.summaryValue(value, xAOD::numberOfTRTDeadStraws)) {
306 }
307 if (track.summaryValue(value, xAOD::numberOfTRTTubeHits)) {
308 m_numberOfTRTTubeHits = value;
309 }
310 if (track.summaryValue(value, xAOD::numberOfTRTXenonHits)) {
312 }
313 if (track.summaryValue(value, xAOD::numberOfTRTSharedHits)) {
315 }
316
317 if (track.summaryValue(fvalue, xAOD::pixeldEdx)) {
318 m_pixeldEdx = fvalue;
319 }
320}
321
#define ATH_MSG_WARNING(x)
Helper class to provide constant type-safe access to aux data.
InDetPerfNtupleBranch< int > m_numberOfTRTHighThresholdHitsTotal
SG::AuxElement::Accessor< bool > m_acc_passedTruthSelection
InDetPerfNtupleBranch< float > m_truth_eta
void fillTrackSummaryInfo(const xAOD::TrackParticle &track)
InDetPerfNtupleBranch< float > m_track_z0
InDetPerfNtupleBranch< unsigned long > m_track_patternInfo
InDetPerfNtupleBranch< int > m_numberOfPixelDeadSensors
InDetPerfNtupleBranch< float > m_track_d0
InDetPerfNtupleBranch< float > m_truth_phi
InDetPerfNtupleBranch< int > m_numberOfBLayerOutliers
InDetPerfNtupleBranch< int > m_expectInnermostPixelLayerHit
InDetPerfNtupleBranch< float > m_truth_qOverP
InDetPerfNtupleBranch< float > m_trackErr_qOverPt
InDetPerfNtupleBranch< int > m_numberOfGangedFlaggedFakes
InDetPerfNtupleBranch< int > m_truth_selectedByPileupSwitch
InDetPerfNtupleBranch< int > m_numberOfInnermostPixelLayerHits
InDetPerfNtupleBranch< int > m_expectBLayerHit
InDetPerfNtupleBranch< float > m_trackErr_qOverP
InDetPerfNtupleBranch< float > m_track_phi
InDetPerfNtupleBranch< int > m_hasTrack
InDetPerfNtupleBranch< int > m_numberOfSCTSpoiltHits
InDetPerfNtupleBranch< float > m_pixeldEdx
void fillTrack(const xAOD::TrackParticle &track, const xAOD::Vertex *vtx, const int truthMatchRanking=-1)
InDetPerfNtupleBranch< int > m_hasTruth
InDetPerfNtupleBranch< int > m_numberOfSCTOutliers
InDetPerfNtupleBranch< float > m_truth_z0
InDetPerfNtuple_TruthToReco(InDetPlotBase *pParent, const std::string &dirName, const std::string &treeName)
InDetPerfNtupleBranch< float > m_truth_qOverPt
InDetPerfNtupleBranch< int > m_numberOfTRTDeadStraws
InDetPerfNtupleBranch< int > m_numberOfPixelOutliers
InDetPerfNtupleBranch< float > m_truth_d0
InDetPerfNtupleBranch< int > m_numberOfNextToInnermostPixelLayerOutliers
InDetPerfNtupleBranch< int > m_numberOfInnermostPixelLayerOutliers
InDetPerfNtupleBranch< float > m_truth_z0sin
InDetPerfNtupleBranch< float > m_track_chiSquared
InDetPerfNtupleBranch< float > m_trackErr_z0
InDetPerfNtupleBranch< float > m_track_charge
InDetPerfNtupleBranch< float > m_truth_charge
InDetPerfNtupleBranch< int > m_numberOfPixelHoles
InDetPerfNtupleBranch< int > m_passedTruthSelection
InDetPerfNtupleBranch< int > m_numberOfPixelSplitHits
InDetPerfNtupleBranch< float > m_track_eta
SG::AuxElement::Accessor< bool > m_acc_passedTrackSelection
InDetPerfNtupleBranch< float > m_trackErr_d0
InDetPerfNtupleBranch< int > m_numberOfSCTSharedHits
InDetPerfNtupleBranch< int > m_numberOfSCTDoubleHoles
InDetPerfNtupleBranch< float > m_trackErr_theta
InDetPerfNtupleBranch< int > m_numberOfNextToInnermostPixelLayerSharedHits
InDetPerfNtupleBranch< float > m_trackErr_pt
InDetPerfNtupleBranch< int > m_numberOfPixelSharedHits
InDetPerfNtupleBranch< int > m_expectNextToInnermostPixelLayerHit
InDetPerfNtupleBranch< int > m_numberOfTRTHoles
InDetPerfNtupleBranch< int > m_truth_pdgId
InDetPerfNtupleBranch< float > m_track_truthMatchProb
InDetPerfNtupleBranch< float > m_track_qOverP
InDetPerfNtupleBranch< int > m_numberOfTRTHighThresholdOutliers
InDetPerfNtupleBranch< int > m_numberOfTRTHits
InDetPerfNtupleBranch< int > m_numberOfInnermostPixelLayerSplitHits
InDetPerfNtupleBranch< int > m_numberOfNextToInnermostPixelLayerHits
InDetPerfNtupleBranch< int > m_numberOfTRTOutliers
InDetPerfNtupleBranch< float > m_truth_pt
InDetPerfNtupleBranch< int > m_numberOfTRTXenonHits
InDetPerfNtupleBranch< int > m_numberOfSCTHoles
InDetPerfNtupleBranch< int > m_numberOfContribPixelLayers
InDetPerfNtupleBranch< int > m_numberOfGangedPixels
InDetPerfNtupleBranch< int > m_numberOfPixelHits
InDetPerfNtupleBranch< int > m_passedTrackSelection
void fillTruth(const xAOD::TruthParticle &truth)
InDetPerfNtupleBranch< int > m_track_truthMatchRanking
InDetPerfNtupleBranch< int > m_numberOfBLayerHits
InDetPerfNtupleBranch< int > m_numberOfBLayerSplitHits
InDetPerfNtupleBranch< int > m_numberOfPixelSpoiltHits
InDetPerfNtupleBranch< int > m_numberOfSCTDeadSensors
InDetPerfNtupleBranch< float > m_track_qOverPt
InDetPerfNtupleBranch< int > m_truth_uniqueID
InDetPerfNtupleBranch< float > m_track_z0sin
InDetPerfNtupleBranch< float > m_truth_theta
InDetPerfNtupleBranch< int > m_numberOfInnermostPixelLayerSharedHits
InDetPerfNtupleBranch< float > m_track_nDoF
InDetPerfNtupleBranch< int > m_numberOfTRTHighThresholdHits
InDetPerfNtupleBranch< float > m_trackErr_z0sin
InDetPerfNtupleBranch< float > m_track_z0sin_wrt_primvtx
InDetPerfNtupleBranch< int > m_numberOfNextToInnermostPixelLayerSplitHits
InDetPerfNtupleBranch< float > m_track_pt
SG::AuxElement::Accessor< bool > m_acc_selectedByPileupSwitch
InDetPerfNtupleBranch< int > m_numberOfBLayerSharedHits
InDetPerfNtupleBranch< float > m_trackErr_phi
InDetPerfNtupleBranch< int > m_numberOfTRTSharedHits
InDetPerfNtupleBranch< int > m_numberOfTRTTubeHits
InDetPerfNtupleBranch< int > m_numberOfSCTHits
InDetPerfNtupleBranch< float > m_track_theta
InDetPerfNtuple(InDetPlotBase *pParent, const std::string &dirName, const std::string &treeName)
InDetPlotBase(InDetPlotBase *pParent, const std::string &dirName)
Constructor taking parent node and directory name for plots.
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.
int pdgId() const
PDG ID code.
virtual double pt() const override final
The transverse momentum ( ) of the particle.
double charge() const
Physical charge.
virtual double eta() const override final
The pseudorapidity ( ) of the particle.
virtual double phi() const override final
The azimuthal angle ( ) of the particle.
float z() const
Returns the z position.
int uniqueID(const T &p)
TrackParticle_v1 TrackParticle
Reference the current persistent version:
Vertex_v1 Vertex
Define the latest version of the vertex class.
TruthParticle_v1 TruthParticle
Typedef to implementation.
@ numberOfGangedPixels
number of pixels which have a ganged ambiguity [unit8_t].
@ expectInnermostPixelLayerHit
Do we expect a 0th-layer barrel hit for this track?
@ numberOfTRTDeadStraws
number of dead TRT straws crossed [unit8_t].
@ numberOfBLayerOutliers
number of blayer outliers [unit8_t].
@ numberOfPixelHoles
number of pixel layers on track with absence of hits [unit8_t].
@ numberOfNextToInnermostPixelLayerSharedHits
number of Pixel 1st layer barrel hits shared by several tracks.
@ numberOfContribPixelLayers
number of contributing layers of the pixel detector [unit8_t].
@ pixeldEdx
the dE/dx estimate, calculated using the pixel clusters [?
@ numberOfNextToInnermostPixelLayerSplitHits
number of Pixel 1st layer barrel hits split by cluster splitting
@ numberOfTRTHighThresholdOutliers
number of TRT high threshold outliers (only xenon counted) [unit8_t].
@ numberOfPixelSplitHits
number of Pixel all-layer hits split by cluster splitting [unit8_t].
@ numberOfInnermostPixelLayerSharedHits
number of Pixel 0th layer barrel hits shared by several tracks.
@ numberOfPixelOutliers
these are the pixel outliers, including the b-layer [unit8_t].
@ numberOfPixelSpoiltHits
number of pixel hits with broad errors (width/sqrt(12)) [unit8_t].
@ numberOfTRTXenonHits
number of TRT hits on track in straws with xenon [unit8_t].
@ numberOfTRTHits
number of TRT hits [unit8_t].
@ numberOfTRTHoles
number of TRT holes [unit8_t].
@ numberOfNextToInnermostPixelLayerHits
these are the hits in the 1st pixel barrel layer
@ numberOfBLayerHits
these are the hits in the first pixel layer, i.e.
@ numberOfSCTDeadSensors
number of dead SCT sensors crossed [unit8_t].
@ numberOfBLayerSharedHits
number of Pixel b-layer hits shared by several tracks [unit8_t].
@ numberOfInnermostPixelLayerSplitHits
number of Pixel 0th layer barrel hits split by cluster splitting
@ numberOfTRTTubeHits
number of TRT tube hits [unit8_t].
@ numberOfGangedFlaggedFakes
number of Ganged Pixels flagged as fakes [unit8_t].
@ numberOfInnermostPixelLayerOutliers
number of 0th layer barrel outliers
@ expectBLayerHit
Do we expect a b-layer hit for this track?
@ numberOfTRTHighThresholdHitsTotal
total number of TRT hits which pass the high threshold [unit8_t].
@ expectNextToInnermostPixelLayerHit
Do we expect a 1st-layer barrel hit for this track?
@ numberOfSCTHits
number of hits in SCT [unit8_t].
@ numberOfSCTDoubleHoles
number of Holes in both sides of a SCT module [unit8_t].
@ numberOfSCTOutliers
number of SCT outliers [unit8_t].
@ numberOfInnermostPixelLayerHits
these are the hits in the 0th pixel barrel layer
@ numberOfPixelHits
these are the pixel hits, including the b-layer [unit8_t].
@ numberOfPixelSharedHits
number of Pixel all-layer hits shared by several tracks [unit8_t].
@ numberOfSCTSpoiltHits
number of SCT hits with broad errors (width/sqrt(12)) [unit8_t].
@ numberOfSCTSharedHits
number of SCT hits shared by several tracks [unit8_t].
@ numberOfTRTHighThresholdHits
number of TRT hits which pass the high threshold (only xenon counted) [unit8_t].
@ numberOfTRTSharedHits
number of TRT hits used by more than one track
@ numberOfTRTOutliers
number of TRT outliers [unit8_t].
@ numberOfBLayerSplitHits
number of Pixel b-layer hits split by cluster splitting [unit8_t].
@ numberOfPixelDeadSensors
number of dead pixel sensors crossed [unit8_t].
@ numberOfNextToInnermostPixelLayerOutliers
number of 1st pixel layer barrel outliers
@ numberOfSCTHoles
number of SCT holes [unit8_t].