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