ATLAS Offline Software
Loading...
Searching...
No Matches
ConstituentLoaderTauTrack.cxx
Go to the documentation of this file.
1/*
2Copyright (C) 2002-2025 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 = dynamic_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 return [func_as_ref](const xAOD::TauTrack& trk, const xAOD::TauJet& tau) {
80 float out;
81 bool success = func_as_ref(tau, trk, out);
82 if (!success) {
83 throw std::runtime_error("Error in track variable calculation");
84 }
85 return out;
86 };
87 }
88
89 const std::string& ConstituentLoaderTauTrack::getName() const {
90 return m_name;
91 }
93 return m_config.type;
94 }
98 const std::set<std::string>& ConstituentLoaderTauTrack::getUsedRemap() const {
99 return m_used_remap;
100 }
101
102}
103
104namespace TauTrackVars {
105
106bool pt_log(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
107 out = std::log10(track.pt());
108 return true;
109}
110
111bool trackPt(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
112 out = track.pt();
113 return true;
114}
115
116bool trackEta(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
117 out = track.eta();
118 return true;
119}
120
121bool trackPhi(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
122 out = track.phi();
123 return true;
124}
125
126bool pt_tau_log(const xAOD::TauJet &tau, const xAOD::TauTrack& /*track*/, float &out) {
127 out = std::log10(std::max(tau.pt(), 1e-6));
128 return true;
129}
130
131bool pt_jetseed_log(const xAOD::TauJet &tau, const xAOD::TauTrack& /*track*/, float &out) {
132 out = std::log10(tau.ptJetSeed());
133 return true;
134}
135
136bool d0_abs_log(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
137 out = std::log10(std::abs(track.d0TJVA()) + 1e-6);
138 return true;
139}
140
141bool z0sinThetaTJVA_abs_log(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
142 out = std::log10(std::abs(track.z0sinthetaTJVA()) + 1e-6);
143 return true;
144}
145
146bool z0sinthetaTJVA(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
147 out = track.z0sinthetaTJVA();
148 return true;
149}
150
151bool z0sinthetaSigTJVA(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
152 out = track.z0sinthetaSigTJVA();
153 return true;
154}
155
156bool d0TJVA(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
157 out = track.d0TJVA();
158 return true;
159}
160
161bool d0SigTJVA(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
162 out = track.d0SigTJVA();
163 return true;
164}
165
166bool dEta(const xAOD::TauJet &tau, const xAOD::TauTrack &track, float &out) {
167 out = track.eta() - tau.eta();
168 return true;
169}
170
171bool dEtaJetSeedAxis(const xAOD::TauJet &tau, const xAOD::TauTrack &track, float &out) {
172 TLorentzVector tlvSeedJet = tau.p4(xAOD::TauJetParameters::JetSeed);
173 out = std::abs(tlvSeedJet.Eta() - track.eta());
174 return true;
175}
176
177bool dPhi(const xAOD::TauJet &tau, const xAOD::TauTrack &track, float &out) {
178 out = track.p4().DeltaPhi(tau.p4());
179 return true;
180}
181
182bool dPhiJetSeedAxis(const xAOD::TauJet &tau, const xAOD::TauTrack &track, float &out) {
183 TLorentzVector tlvSeedJet = tau.p4(xAOD::TauJetParameters::JetSeed);
184 out = tlvSeedJet.DeltaPhi(track.p4());
185 return true;
186}
187
188bool nInnermostPixelHits(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
189 uint8_t inner_pixel_hits;
190 const auto success = track.track()->summaryValue(inner_pixel_hits, xAOD::numberOfInnermostPixelLayerHits);
191 out = inner_pixel_hits;
192 return success;
193}
194
195bool nPixelHits(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
196 uint8_t pixel_hits;
197 const auto success = track.track()->summaryValue(pixel_hits, xAOD::numberOfPixelHits);
198 out = pixel_hits;
199 return success;
200}
201
202bool nSCTHits(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
203 uint8_t sct_hits;
204 const auto success = track.track()->summaryValue(sct_hits, xAOD::numberOfSCTHits);
205 out = sct_hits;
206 return success;
207}
208
209// same as in tau track classification for trigger
210bool nIBLHitsAndExp(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
211 uint8_t inner_pixel_hits, inner_pixel_exp;
212 const auto success1 = track.track()->summaryValue(inner_pixel_hits, xAOD::numberOfInnermostPixelLayerHits);
213 const auto success2 = track.track()->summaryValue(inner_pixel_exp, xAOD::expectInnermostPixelLayerHit);
214 out = inner_pixel_exp ? inner_pixel_hits : 1.;
215 return success1 && success2;
216}
217
218bool nPixelHitsPlusDeadSensors(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
219 uint8_t pixel_hits, pixel_dead;
220 const auto success1 = track.track()->summaryValue(pixel_hits, xAOD::numberOfPixelHits);
221 const auto success2 = track.track()->summaryValue(pixel_dead, xAOD::numberOfPixelDeadSensors);
222 out = pixel_hits + pixel_dead;
223 return success1 && success2;
224}
225
226bool nSCTHitsPlusDeadSensors(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
227 uint8_t sct_hits, sct_dead;
228 const auto success1 = track.track()->summaryValue(sct_hits, xAOD::numberOfSCTHits);
229 const auto success2 = track.track()->summaryValue(sct_dead, xAOD::numberOfSCTDeadSensors);
230 out = sct_hits + sct_dead;
231 return success1 && success2;
232}
233
234bool eProbabilityHT(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
235 float eProbabilityHT;
236 const auto success = track.track()->summaryValue(eProbabilityHT, xAOD::eProbabilityHT);
237 out = eProbabilityHT;
238 return success;
239}
240
241bool eProbabilityHT_noTRT(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &/*track*/, float &out) {
242 // Dummy eProbHT = 1.
243 out = 1.;
244 return true;
245}
246
247bool eProbabilityNN(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
248 static const SG::ConstAccessor<float> acc_eProbabilityNN("eProbabilityNN");
249 out = acc_eProbabilityNN(track);
250 return true;
251}
252
253bool eProbabilityNNorHT(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
254 auto atrack = track.track();
255 float eProbabilityHT = atrack->summaryValue(eProbabilityHT, xAOD::eProbabilityHT);
256 static const SG::ConstAccessor<float> acc_eProbabilityNN("eProbabilityNN");
257 float eProbabilityNN = acc_eProbabilityNN(*atrack);
258 out = (atrack->pt()>2000.) ? eProbabilityNN : eProbabilityHT;
259 return true;
260}
261
262bool chargedScoreRNN(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
263 static const SG::ConstAccessor<float> acc_chargedScoreRNN("rnn_chargedScore");
264 out = acc_chargedScoreRNN(track);
265 return true;
266}
267
268bool isolationScoreRNN(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
269 static const SG::ConstAccessor<float> acc_isolationScoreRNN("rnn_isolationScore");
270 out = acc_isolationScoreRNN(track);
271 return true;
272}
273
274bool conversionScoreRNN(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
275 static const SG::ConstAccessor<float> acc_conversionScoreRNN("rnn_conversionScore");
276 out = acc_conversionScoreRNN(track);
277 return true;
278}
279
280bool fakeScoreRNN(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
281 static const SG::ConstAccessor<float> acc_fakeScoreRNN("rnn_fakeScore");
282 out = acc_fakeScoreRNN(track);
283 return true;
284}
285
286//Extension - variables for GNTau
287bool numberOfInnermostPixelLayerHits(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
288 uint8_t trk_val = 0;
289 const auto success = track.track()->summaryValue(trk_val, xAOD::numberOfInnermostPixelLayerHits);
290 out = trk_val;
291 return success;
292}
293
294bool numberOfPixelHits(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
295 uint8_t trk_val = 0;
296 const auto success = track.track()->summaryValue(trk_val, xAOD::numberOfPixelHits);
297 out = trk_val;
298 return success;
299}
300
301bool numberOfPixelSharedHits(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
302 uint8_t trk_val = 0;
303 const auto success = track.track()->summaryValue(trk_val, xAOD::numberOfPixelSharedHits);
304 out = trk_val;
305 return success;
306}
307
308bool numberOfPixelDeadSensors(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
309 uint8_t trk_val = 0;
310 const auto success = track.track()->summaryValue(trk_val, xAOD::numberOfPixelDeadSensors);
311 out = trk_val;
312 return success;
313}
314
315bool numberOfSCTHits(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
316 uint8_t trk_val = 0;
317 const auto success = track.track()->summaryValue(trk_val, xAOD::numberOfSCTHits);
318 out = trk_val;
319 return success;
320}
321
322bool numberOfSCTSharedHits(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
323 uint8_t trk_val = 0;
324 const auto success = track.track()->summaryValue(trk_val, xAOD::numberOfSCTSharedHits);
325 out = trk_val;
326 return success;
327}
328
329bool numberOfSCTDeadSensors(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
330 uint8_t trk_val = 0;
331 const auto success = track.track()->summaryValue(trk_val, xAOD::numberOfSCTDeadSensors);
332 out = trk_val;
333 return success;
334}
335
336bool numberOfTRTHighThresholdHits(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
337 uint8_t trk_val = 0;
338 const auto success = track.track()->summaryValue(trk_val, xAOD::numberOfTRTHighThresholdHits);
339 out = trk_val;
340 return success;
341}
342
343bool numberOfTRTHits(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
344 uint8_t trk_val = 0;
345 const auto success = track.track()->summaryValue(trk_val, xAOD::numberOfTRTHits);
346 out = trk_val;
347 return success;
348}
349
350bool nSiHits(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
351 uint8_t pix_hit = 0;uint8_t pix_dead = 0;uint8_t sct_hit = 0;uint8_t sct_dead = 0;
352 const auto success1 = track.track()->summaryValue(pix_hit, xAOD::numberOfPixelHits);
353 const auto success2 = track.track()->summaryValue(pix_dead, xAOD::numberOfPixelDeadSensors);
354 const auto success3 = track.track()->summaryValue(sct_hit, xAOD::numberOfSCTHits);
355 const auto success4 = track.track()->summaryValue(sct_dead, xAOD::numberOfSCTDeadSensors);
356 out = pix_hit + pix_dead + sct_hit + sct_dead;
357 return success1 && success2 && success3 && success4;
358}
359
360bool expectInnermostPixelLayerHit(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
361 uint8_t trk_val = 0;
362 const auto success = track.track()->summaryValue(trk_val, xAOD::expectInnermostPixelLayerHit);
363 out = trk_val;
364 return success;
365}
366
367bool expectNextToInnermostPixelLayerHit(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
368 uint8_t trk_val = 0;
369 const auto success = track.track()->summaryValue(trk_val, xAOD::expectNextToInnermostPixelLayerHit);
370 out = trk_val;
371 return success;
372}
373
374bool numberOfContribPixelLayers(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
375 uint8_t trk_val = 0;
376 const auto success = track.track()->summaryValue(trk_val, xAOD::numberOfContribPixelLayers);
377 out = trk_val;
378 return success;
379}
380
381bool numberOfPixelHoles(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
382 uint8_t trk_val = 0;
383 const auto success = track.track()->summaryValue(trk_val, xAOD::numberOfPixelHoles);
384 out = trk_val;
385 return success;
386}
387
388bool d0_old(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
389 out = track.track()->d0();
390 //out = trk_val;
391 return true;
392}
393
394bool qOverP(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
395 out = track.track()->qOverP();
396 return true;
397}
398
399bool theta(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
400 out = track.track()->theta();
401 return true;
402}
403
404bool z0TJVA(const xAOD::TauJet& tau, const xAOD::TauTrack &track, float &out) {
405 out = track.track()->z0() + track.track()->vz() - tau.vertex()->z();
406 return true;
407}
408
409bool charge(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, float &out) {
410 out = track.track()->charge();
411 return true;
412}
413
414} // 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
std::pair< std::vector< float >, std::vector< int64_t > > Inputs
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".
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].