ATLAS Offline Software
Loading...
Searching...
No Matches
ConstituentLoaderTauTrack.cxx
Go to the documentation of this file.
1/*
2Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3*/
4
6
7namespace FlavorTagInference {
8 using FeatureFunc_t = std::function<float(const xAOD::TauTrack&, const xAOD::TauJet&)>;
9 using FeatureFuncAsReference_t = std::function<bool(const xAOD::TauJet&, const xAOD::TauTrack&, float&)>;
12 {
13 for (const InputVariableConfig& input_var : cfg.inputs) {
14 m_feature_extractors.push_back(getFeatureExtractor(input_var.name));
15 }
16 }
17
18 std::vector<const xAOD::TauTrack*> ConstituentLoaderTauTrack::getTauTracks( const xAOD::TauJet* tau ) const
19 {
20 std::vector<const xAOD::TauTrack*> out = tau->allTracks();
21
22 // Skip unclassified tracks:
23 // - the track is a LRT and classifyLRT = false
24 // - the track is not among the MaxNtracks highest-pt tracks in the track classifier
25 // - track classification is not run (trigger)
27 std::vector<const xAOD::TauTrack*> classified_tracks;
28 std::copy_if(out.begin(), out.end(), std::back_inserter(classified_tracks),
29 [](const xAOD::TauTrack* track) {
30 return !track->flag(xAOD::TauJetParameters::unclassified);
31 }
32 );
33 out = std::move(classified_tracks);
34 }
35
36 // Sort by descending pt
38 std::sort(out.begin(), out.end(),
39 [](const xAOD::TauTrack* lhs, const xAOD::TauTrack* rhs) {
40 return lhs->pt() > rhs->pt();
41 }
42 );
43 } else {
44 // throw
45 throw std::runtime_error("Unsupported sorting order");
46 }
47 // Truncate tracks
48 if (static_cast<size_t>(out.size()) > m_config.max_n_constituents) {
49 out.resize(m_config.max_n_constituents, out[0]);
50 }
51 return out;
52 }
53
54 Inputs ConstituentLoaderTauTrack::getFeatures(const xAOD::TauJet* tau, const std::vector<const xAOD::TauTrack*>& tau_trks) const {
55 std::vector<int64_t> features_dim = {static_cast<int64_t>(tau_trks.size()), static_cast<int64_t>(m_feature_extractors.size())};
56 std::vector<float> features;
57 features.reserve(tau_trks.size() * m_feature_extractors.size());
58 for (const auto* trk : tau_trks) {
59 for (const auto& extractor : m_feature_extractors) {
60 features.push_back(extractor(*trk, *tau));
61 }
62 }
63 return Inputs{std::move(features), std::move(features_dim)};
64 }
65
67 auto tau = static_cast<const xAOD::TauJet*>(&i_tau);
68 std::vector<const xAOD::TauTrack*> sorted_tau_trks = getTauTracks(tau);
69 return getFeatures(tau, sorted_tau_trks);
70 }
71
73 FeatureFuncAsReference_t func_as_ref = nullptr;
74 try {
75 func_as_ref = m_func_map.at(var_name);
76 } catch (const std::out_of_range &e) {
77 throw std::runtime_error("Variable '" + var_name + "' not defined");
78 }
79 //coverity[COPY_INSTEAD_OF_MOVE]
80 return [func_as_ref](const xAOD::TauTrack& trk, const xAOD::TauJet& tau) {
81 float out;
82 bool success = func_as_ref(tau, trk, out);
83 if (!success) {
84 throw std::runtime_error("Error in track variable calculation");
85 }
86 return out;
87 };
88 }
89
90 const std::string& ConstituentLoaderTauTrack::getName() const {
91 return m_name;
92 }
94 return m_config.type;
95 }
99 const std::set<std::string>& ConstituentLoaderTauTrack::getUsedRemap() const {
100 return m_used_remap;
101 }
102
103}
104
105namespace TauTrackVars {
106
107bool pt_log(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
108 out = std::log10(track.pt());
109 return true;
110}
111
112bool trackPt(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
113 out = track.pt();
114 return true;
115}
116
117bool trackEta(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
118 out = track.eta();
119 return true;
120}
121
122bool trackPhi(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
123 out = track.phi();
124 return true;
125}
126
127bool pt_tau_log(const xAOD::TauJet &tau, const xAOD::TauTrack& /*track*/, float &out) {
128 out = std::log10(std::max(tau.pt(), 1e-6));
129 return true;
130}
131
132bool pt_jetseed_log(const xAOD::TauJet &tau, const xAOD::TauTrack& /*track*/, float &out) {
133 out = std::log10(tau.ptJetSeed());
134 return true;
135}
136
137bool d0_abs_log(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
138 out = std::log10(std::abs(track.d0TJVA()) + 1e-6);
139 return true;
140}
141
142bool z0sinThetaTJVA_abs_log(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
143 out = std::log10(std::abs(track.z0sinthetaTJVA()) + 1e-6);
144 return true;
145}
146
147bool z0sinthetaTJVA(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
148 out = track.z0sinthetaTJVA();
149 return true;
150}
151
152bool z0sinthetaSigTJVA(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
153 out = track.z0sinthetaSigTJVA();
154 return true;
155}
156
157bool d0TJVA(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
158 out = track.d0TJVA();
159 return true;
160}
161
162bool d0SigTJVA(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
163 out = track.d0SigTJVA();
164 return true;
165}
166
167bool dEta(const xAOD::TauJet &tau, const xAOD::TauTrack &track, float &out) {
168 out = track.eta() - tau.eta();
169 return true;
170}
171
172bool dEtaJetSeedAxis(const xAOD::TauJet &tau, const xAOD::TauTrack &track, float &out) {
173 TLorentzVector tlvSeedJet = tau.p4(xAOD::TauJetParameters::JetSeed);
174 out = std::abs(tlvSeedJet.Eta() - track.eta());
175 return true;
176}
177
178bool dPhi(const xAOD::TauJet &tau, const xAOD::TauTrack &track, float &out) {
179 out = track.p4().DeltaPhi(tau.p4());
180 return true;
181}
182
183bool dPhiJetSeedAxis(const xAOD::TauJet &tau, const xAOD::TauTrack &track, float &out) {
184 TLorentzVector tlvSeedJet = tau.p4(xAOD::TauJetParameters::JetSeed);
185 out = tlvSeedJet.DeltaPhi(track.p4());
186 return true;
187}
188
189bool nInnermostPixelHits(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
190 uint8_t inner_pixel_hits;
191 const auto success = track.track()->summaryValue(inner_pixel_hits, xAOD::numberOfInnermostPixelLayerHits);
192 out = inner_pixel_hits;
193 return success;
194}
195
196bool nPixelHits(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
197 uint8_t pixel_hits;
198 const auto success = track.track()->summaryValue(pixel_hits, xAOD::numberOfPixelHits);
199 out = pixel_hits;
200 return success;
201}
202
203bool nSCTHits(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
204 uint8_t sct_hits;
205 const auto success = track.track()->summaryValue(sct_hits, xAOD::numberOfSCTHits);
206 out = sct_hits;
207 return success;
208}
209
210// same as in tau track classification for trigger
211bool nIBLHitsAndExp(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
212 uint8_t inner_pixel_hits, inner_pixel_exp;
213 const auto success1 = track.track()->summaryValue(inner_pixel_hits, xAOD::numberOfInnermostPixelLayerHits);
214 const auto success2 = track.track()->summaryValue(inner_pixel_exp, xAOD::expectInnermostPixelLayerHit);
215 out = inner_pixel_exp ? inner_pixel_hits : 1.;
216 return success1 && success2;
217}
218
219bool nPixelHitsPlusDeadSensors(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
220 uint8_t pixel_hits, pixel_dead;
221 const auto success1 = track.track()->summaryValue(pixel_hits, xAOD::numberOfPixelHits);
222 const auto success2 = track.track()->summaryValue(pixel_dead, xAOD::numberOfPixelDeadSensors);
223 out = pixel_hits + pixel_dead;
224 return success1 && success2;
225}
226
227bool nSCTHitsPlusDeadSensors(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
228 uint8_t sct_hits, sct_dead;
229 const auto success1 = track.track()->summaryValue(sct_hits, xAOD::numberOfSCTHits);
230 const auto success2 = track.track()->summaryValue(sct_dead, xAOD::numberOfSCTDeadSensors);
231 out = sct_hits + sct_dead;
232 return success1 && success2;
233}
234
235bool eProbabilityHT(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
236 float eProbabilityHT;
237 const auto success = track.track()->summaryValue(eProbabilityHT, xAOD::eProbabilityHT);
238 out = eProbabilityHT;
239 return success;
240}
241
242bool eProbabilityHT_noTRT(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &/*track*/, float &out) {
243 // Dummy eProbHT = 1.
244 out = 1.;
245 return true;
246}
247
248bool eProbabilityNN(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
249 static const SG::ConstAccessor<float> acc_eProbabilityNN("eProbabilityNN");
250 out = acc_eProbabilityNN(track);
251 return true;
252}
253
254bool eProbabilityNNorHT(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
255 auto atrack = track.track();
256 float eProbabilityHT = atrack->summaryValue(eProbabilityHT, xAOD::eProbabilityHT);
257 static const SG::ConstAccessor<float> acc_eProbabilityNN("eProbabilityNN");
258 float eProbabilityNN = acc_eProbabilityNN(*atrack);
259 out = (atrack->pt()>2000.) ? eProbabilityNN : eProbabilityHT;
260 return true;
261}
262
263bool chargedScoreRNN(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
264 static const SG::ConstAccessor<float> acc_chargedScoreRNN("rnn_chargedScore");
265 out = acc_chargedScoreRNN(track);
266 return true;
267}
268
269bool isolationScoreRNN(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
270 static const SG::ConstAccessor<float> acc_isolationScoreRNN("rnn_isolationScore");
271 out = acc_isolationScoreRNN(track);
272 return true;
273}
274
275bool conversionScoreRNN(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
276 static const SG::ConstAccessor<float> acc_conversionScoreRNN("rnn_conversionScore");
277 out = acc_conversionScoreRNN(track);
278 return true;
279}
280
281bool fakeScoreRNN(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
282 static const SG::ConstAccessor<float> acc_fakeScoreRNN("rnn_fakeScore");
283 out = acc_fakeScoreRNN(track);
284 return true;
285}
286
287//Extension - variables for GNTau
288bool numberOfInnermostPixelLayerHits(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
289 uint8_t trk_val = 0;
290 const auto success = track.track()->summaryValue(trk_val, xAOD::numberOfInnermostPixelLayerHits);
291 out = trk_val;
292 return success;
293}
294
295bool numberOfPixelHits(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
296 uint8_t trk_val = 0;
297 const auto success = track.track()->summaryValue(trk_val, xAOD::numberOfPixelHits);
298 out = trk_val;
299 return success;
300}
301
302bool numberOfPixelSharedHits(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
303 uint8_t trk_val = 0;
304 const auto success = track.track()->summaryValue(trk_val, xAOD::numberOfPixelSharedHits);
305 out = trk_val;
306 return success;
307}
308
309bool numberOfPixelDeadSensors(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
310 uint8_t trk_val = 0;
311 const auto success = track.track()->summaryValue(trk_val, xAOD::numberOfPixelDeadSensors);
312 out = trk_val;
313 return success;
314}
315
316bool numberOfSCTHits(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
317 uint8_t trk_val = 0;
318 const auto success = track.track()->summaryValue(trk_val, xAOD::numberOfSCTHits);
319 out = trk_val;
320 return success;
321}
322
323bool numberOfSCTSharedHits(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
324 uint8_t trk_val = 0;
325 const auto success = track.track()->summaryValue(trk_val, xAOD::numberOfSCTSharedHits);
326 out = trk_val;
327 return success;
328}
329
330bool numberOfSCTDeadSensors(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
331 uint8_t trk_val = 0;
332 const auto success = track.track()->summaryValue(trk_val, xAOD::numberOfSCTDeadSensors);
333 out = trk_val;
334 return success;
335}
336
337bool numberOfTRTHighThresholdHits(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
338 uint8_t trk_val = 0;
339 const auto success = track.track()->summaryValue(trk_val, xAOD::numberOfTRTHighThresholdHits);
340 out = trk_val;
341 return success;
342}
343
344bool numberOfTRTHits(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
345 uint8_t trk_val = 0;
346 const auto success = track.track()->summaryValue(trk_val, xAOD::numberOfTRTHits);
347 out = trk_val;
348 return success;
349}
350
351bool nSiHits(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
352 uint8_t pix_hit = 0;uint8_t pix_dead = 0;uint8_t sct_hit = 0;uint8_t sct_dead = 0;
353 const auto success1 = track.track()->summaryValue(pix_hit, xAOD::numberOfPixelHits);
354 const auto success2 = track.track()->summaryValue(pix_dead, xAOD::numberOfPixelDeadSensors);
355 const auto success3 = track.track()->summaryValue(sct_hit, xAOD::numberOfSCTHits);
356 const auto success4 = track.track()->summaryValue(sct_dead, xAOD::numberOfSCTDeadSensors);
357 out = pix_hit + pix_dead + sct_hit + sct_dead;
358 return success1 && success2 && success3 && success4;
359}
360
361bool expectInnermostPixelLayerHit(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
362 uint8_t trk_val = 0;
363 const auto success = track.track()->summaryValue(trk_val, xAOD::expectInnermostPixelLayerHit);
364 out = trk_val;
365 return success;
366}
367
368bool expectNextToInnermostPixelLayerHit(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
369 uint8_t trk_val = 0;
370 const auto success = track.track()->summaryValue(trk_val, xAOD::expectNextToInnermostPixelLayerHit);
371 out = trk_val;
372 return success;
373}
374
375bool numberOfContribPixelLayers(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
376 uint8_t trk_val = 0;
377 const auto success = track.track()->summaryValue(trk_val, xAOD::numberOfContribPixelLayers);
378 out = trk_val;
379 return success;
380}
381
382bool numberOfPixelHoles(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
383 uint8_t trk_val = 0;
384 const auto success = track.track()->summaryValue(trk_val, xAOD::numberOfPixelHoles);
385 out = trk_val;
386 return success;
387}
388
389bool d0_old(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
390 out = track.track()->d0();
391 //out = trk_val;
392 return true;
393}
394
395bool qOverP(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
396 out = track.track()->qOverP();
397 return true;
398}
399
400bool theta(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
401 out = track.track()->theta();
402 return true;
403}
404
405bool z0TJVA(const xAOD::TauJet& tau, const xAOD::TauTrack &track, float &out) {
406 out = track.track()->z0() + track.track()->vz() - tau.vertex()->z();
407 return true;
408}
409
410bool charge(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
411 out = track.track()->charge();
412 return true;
413}
414
415} // namespace TrackVars
Scalar theta() const
theta method
std::function< bool(const xAOD::TauJet &, const xAOD::TauTrack &, float &)> FeatureFuncAsReference_t
std::vector< const xAOD::TauTrack * > getTauTracks(const xAOD::TauJet *tau) const
std::function< float(const xAOD::TauTrack &, const xAOD::TauJet &)> FeatureFunc_t
const FTagDataDependencyNames & getDependencies() const override
ConstituentLoaderTauTrack(const ConstituentsInputConfig &cfg)
const std::set< std::string > & getUsedRemap() const override
const ConstituentsType & getType() const override
Inputs getData(const xAOD::IParticle &p) const override
Inputs getFeatures(const xAOD::TauJet *tau, const std::vector< const xAOD::TauTrack * > &tau_trks) const
FeatureFunc_t getFeatureExtractor(const std::string &var_name) const
static const std::unordered_map< std::string, FeatureFuncAsReference_t > m_func_map
Helper class to provide constant type-safe access to aux data.
Class providing the definition of the 4-vector interface.
virtual FourMom_t p4() const
The full 4-momentum of the particle.
Definition TauJet_v3.cxx:96
virtual double pt() const
The transverse momentum ( ) of the particle.
const Vertex * vertex() const
double ptJetSeed() const
std::vector< const TauTrack * > allTracks() const
Get the v<const pointer> to all tracks associated with this tau, regardless of classification.
virtual double eta() const
The pseudorapidity ( ) of the particle.
float z() const
Returns the z position.
This file contains "getter" functions used for accessing tagger inputs from the EDM.
std::function< float(const xAOD::CaloVertexedTopoCluster &, const xAOD::TauJet &)> FeatureFunc_t
std::function< bool(const xAOD::TauJet &, const xAOD::CaloVertexedTopoCluster &, float &)> FeatureFuncAsReference_t
bool nSCTHitsPlusDeadSensors(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool numberOfSCTHits(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool numberOfPixelHits(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool trackEta(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool numberOfSCTSharedHits(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool nInnermostPixelHits(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool numberOfPixelSharedHits(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool dEta(const xAOD::TauJet &tau, const xAOD::TauTrack &track, float &out)
bool nSiHits(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool expectNextToInnermostPixelLayerHit(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool dPhi(const xAOD::TauJet &tau, const xAOD::TauTrack &track, float &out)
bool isolationScoreRNN(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool pt_tau_log(const xAOD::TauJet &tau, const xAOD::TauTrack &, float &out)
bool numberOfTRTHighThresholdHits(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool eProbabilityHT_noTRT(const xAOD::TauJet &, const xAOD::TauTrack &, float &out)
bool numberOfInnermostPixelLayerHits(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool eProbabilityHT(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool nIBLHitsAndExp(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool z0sinthetaTJVA(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool pt_jetseed_log(const xAOD::TauJet &tau, const xAOD::TauTrack &, float &out)
bool numberOfPixelHoles(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool numberOfTRTHits(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool trackPhi(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool eProbabilityNN(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool d0TJVA(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool qOverP(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool expectInnermostPixelLayerHit(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool nSCTHits(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool pt_log(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool dEtaJetSeedAxis(const xAOD::TauJet &tau, const xAOD::TauTrack &track, float &out)
bool z0sinthetaSigTJVA(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool numberOfSCTDeadSensors(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool d0_abs_log(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool numberOfPixelDeadSensors(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool conversionScoreRNN(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool numberOfContribPixelLayers(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool dPhiJetSeedAxis(const xAOD::TauJet &tau, const xAOD::TauTrack &track, float &out)
bool fakeScoreRNN(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool trackPt(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool chargedScoreRNN(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool d0_old(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool z0TJVA(const xAOD::TauJet &tau, const xAOD::TauTrack &track, float &out)
bool charge(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool nPixelHits(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool d0SigTJVA(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool nPixelHitsPlusDeadSensors(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool z0sinThetaTJVA_abs_log(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool eProbabilityNNorHT(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
void sort(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end)
Specialization of sort for DataVector/List.
TauTrack_v1 TauTrack
Definition of the current version.
Definition TauTrack.h:16
TauJet_v3 TauJet
Definition of the current "tau version".
Definition TauJet.h:17
setBGCode setTAP setLVL2ErrorBits bool
@ expectInnermostPixelLayerHit
Do we expect a 0th-layer barrel hit for this track?
@ numberOfPixelHoles
number of pixel layers on track with absence of hits [unit8_t].
@ numberOfContribPixelLayers
number of contributing layers of the pixel detector [unit8_t].
@ numberOfTRTHits
number of TRT hits [unit8_t].
@ numberOfSCTDeadSensors
number of dead SCT sensors crossed [unit8_t].
@ eProbabilityHT
Electron probability from High Threshold (HT) information [float].
@ expectNextToInnermostPixelLayerHit
Do we expect a 1st-layer barrel hit for this track?
@ numberOfSCTHits
number of hits in SCT [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].
@ 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].
@ numberOfPixelDeadSensors
number of dead pixel sensors crossed [unit8_t].