ATLAS Offline Software
TauGNNUtils.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3 */
4 
7 #include <algorithm>
8 #include <iostream>
9 
10 #define GeV 1000
11 
12 namespace TauGNNUtils {
13 
14 GNNVarCalc::GNNVarCalc() : asg::AsgMessaging("TauGNNUtils::GNNVarCalc") {
15 }
16 
17 bool GNNVarCalc::compute(const std::string &name, const xAOD::TauJet &tau,
18  double &out) const {
19  // Retrieve calculator function
20  ScalarCalc func = nullptr;
21  try {
22  func = m_scalar_map.at(name);
23  } catch (const std::out_of_range &e) {
24  ATH_MSG_ERROR("Variable '" << name << "' not defined");
25  throw;
26  }
27 
28  // Calculate variable
29  return func(tau, out);
30 }
31 
32 bool GNNVarCalc::compute(const std::string &name, const xAOD::TauJet &tau,
33  const std::vector<const xAOD::TauTrack *> &tracks,
34  std::vector<double> &out) const {
35  out.clear();
36  out.reserve(tracks.size());
37 
38  // Retrieve calculator function
39  TrackCalc func = nullptr;
40  try {
41  func = m_track_map.at(name);
42  } catch (const std::out_of_range &e) {
43  ATH_MSG_ERROR("Variable '" << name << "' not defined");
44  throw;
45  }
46 
47  // Calculate variables for selected tracks
48  bool success = true;
49  double value;
50  for (const auto *const trk : tracks) {
51  success = success && func(tau, *trk, value);
52  out.push_back(value);
53  }
54 
55  return success;
56 }
57 
58 bool GNNVarCalc::compute(const std::string &name, const xAOD::TauJet &tau,
59  const std::vector<xAOD::CaloVertexedTopoCluster> &clusters,
60  std::vector<double> &out) const {
61  out.clear();
62  out.reserve(clusters.size());
63 
64  // Retrieve calculator function
65  ClusterCalc func = nullptr;
66  try {
67  func = m_cluster_map.at(name);
68  } catch (const std::out_of_range &e) {
69  ATH_MSG_ERROR("Variable '" << name << "' not defined");
70  throw;
71  }
72 
73  // Calculate variables for selected clusters
74  bool success = true;
75  double value;
76  for (const xAOD::CaloVertexedTopoCluster& cluster : clusters) {
77  success = success && func(tau, cluster, value);
78  out.push_back(value);
79  }
80 
81  return success;
82 }
83 
84 void GNNVarCalc::insert(const std::string &name, ScalarCalc func, const std::vector<std::string>& scalar_vars) {
85  if (std::find(scalar_vars.begin(), scalar_vars.end(), name) == scalar_vars.end()) {
86  return;
87  }
88  if (!func) {
89  throw std::invalid_argument("Nullptr passed to GNNVarCalc::insert");
90  }
91  m_scalar_map[name] = func;
92 }
93 
94 void GNNVarCalc::insert(const std::string &name, TrackCalc func, const std::vector<std::string>& track_vars) {
95  if (std::find(track_vars.begin(), track_vars.end(), name) == track_vars.end()) {
96  return;
97  }
98  if (!func) {
99  throw std::invalid_argument("Nullptr passed to GNNVarCalc::insert");
100  }
101  m_track_map[name] = func;
102 }
103 
104 void GNNVarCalc::insert(const std::string &name, ClusterCalc func, const std::vector<std::string>& cluster_vars) {
105  if (std::find(cluster_vars.begin(), cluster_vars.end(), name) == cluster_vars.end()) {
106  return;
107  }
108  if (!func) {
109  throw std::invalid_argument("Nullptr passed to GNNVarCalc::insert");
110  }
111  m_cluster_map[name] = func;
112 }
113 
114 std::unique_ptr<GNNVarCalc> get_calculator(const std::vector<std::string>& scalar_vars,
115  const std::vector<std::string>& track_vars,
116  const std::vector<std::string>& cluster_vars) {
117  auto calc = std::make_unique<GNNVarCalc>();
118 
119  // Scalar variable calculator functions
120  //calc->insert("absEta", Variables::absEta, scalar_vars);
121  calc->insert("isolFrac", Variables::isolFrac, scalar_vars);
122  calc->insert("centFrac", Variables::centFrac, scalar_vars);
123  calc->insert("etOverPtLeadTrk", Variables::etOverPtLeadTrk, scalar_vars);
124  calc->insert("innerTrkAvgDist", Variables::innerTrkAvgDist, scalar_vars);
125  calc->insert("absipSigLeadTrk", Variables::absipSigLeadTrk, scalar_vars);
126  calc->insert("SumPtTrkFrac", Variables::SumPtTrkFrac, scalar_vars);
127  calc->insert("sumEMCellEtOverLeadTrkPt", Variables::sumEMCellEtOverLeadTrkPt, scalar_vars);
128  calc->insert("EMPOverTrkSysP", Variables::EMPOverTrkSysP, scalar_vars);
129  calc->insert("ptRatioEflowApprox", Variables::ptRatioEflowApprox, scalar_vars);
130  calc->insert("mEflowApprox", Variables::mEflowApprox, scalar_vars);
131  calc->insert("dRmax", Variables::dRmax, scalar_vars);
132  calc->insert("trFlightPathSig", Variables::trFlightPathSig, scalar_vars);
133  calc->insert("massTrkSys", Variables::massTrkSys, scalar_vars);
134  calc->insert("pt", Variables::pt, scalar_vars);
135  //calc->insert("pt_tau_log", Variables::pt_tau_log, scalar_vars);
136  //calc->insert("ptDetectorAxis", Variables::ptDetectorAxis, scalar_vars);
137  //calc->insert("ptIntermediateAxis", Variables::ptIntermediateAxis, scalar_vars);
138  //---added for the eVeto
139  /*calc->insert("ptJetSeed_log", Variables::ptJetSeed_log, scalar_vars);
140  calc->insert("absleadTrackEta", Variables::absleadTrackEta, scalar_vars);
141  calc->insert("leadTrackDeltaEta", Variables::leadTrackDeltaEta, scalar_vars);
142  calc->insert("leadTrackDeltaPhi", Variables::leadTrackDeltaPhi, scalar_vars);
143  calc->insert("leadTrackProbNNorHT", Variables::leadTrackProbNNorHT, scalar_vars);
144  calc->insert("EMFracFixed", Variables::EMFracFixed, scalar_vars);
145  calc->insert("etHotShotWinOverPtLeadTrk", Variables::etHotShotWinOverPtLeadTrk, scalar_vars);
146  calc->insert("hadLeakFracFixed", Variables::hadLeakFracFixed, scalar_vars);
147  calc->insert("PSFrac", Variables::PSFrac, scalar_vars);
148  calc->insert("ClustersMeanCenterLambda", Variables::ClustersMeanCenterLambda, scalar_vars);
149  calc->insert("ClustersMeanFirstEngDens", Variables::ClustersMeanFirstEngDens, scalar_vars);
150  calc->insert("ClustersMeanPresamplerFrac", Variables::ClustersMeanPresamplerFrac, scalar_vars);
151  */
152 
153  // Track variable calculator functions
154  calc->insert("pt_log", Variables::Track::pt_log, track_vars);
155  calc->insert("trackPt", Variables::Track::trackPt, track_vars);
156  calc->insert("trackEta", Variables::Track::trackEta, track_vars);
157  calc->insert("trackPhi", Variables::Track::trackPhi, track_vars);
158  //calc->insert("pt_tau_log", Variables::Track::pt_tau_log, track_vars);
159  //calc->insert("pt_jetseed_log", Variables::Track::pt_jetseed_log, track_vars);
160  calc->insert("d0_abs_log", Variables::Track::d0_abs_log, track_vars);
161  calc->insert("z0sinThetaTJVA_abs_log", Variables::Track::z0sinThetaTJVA_abs_log, track_vars);
162  calc->insert("z0sinthetaTJVA", Variables::Track::z0sinthetaTJVA, track_vars);
163  calc->insert("z0sinthetaSigTJVA", Variables::Track::z0sinthetaSigTJVA, track_vars);
164  calc->insert("d0TJVA", Variables::Track::d0TJVA, track_vars);
165  calc->insert("d0SigTJVA", Variables::Track::d0SigTJVA, track_vars);
166  calc->insert("dEta", Variables::Track::dEta, track_vars);
167  calc->insert("dEtaJetSeedAxis", Variables::Track::dEtaJetSeedAxis, track_vars);
168  calc->insert("dPhi", Variables::Track::dPhi, track_vars);
169  calc->insert("dPhiJetSeedAxis", Variables::Track::dPhiJetSeedAxis, track_vars);
170  calc->insert("nInnermostPixelHits", Variables::Track::nInnermostPixelHits, track_vars);
171  calc->insert("nPixelHits", Variables::Track::nPixelHits, track_vars);
172  //calc->insert("nSCTHits", Variables::Track::nSCTHits, track_vars);
173  //calc->insert("nIBLHitsAndExp", Variables::Track::nIBLHitsAndExp, track_vars);
174  calc->insert("nPixelHitsPlusDeadSensors", Variables::Track::nPixelHitsPlusDeadSensors, track_vars);
175  calc->insert("nSCTHitsPlusDeadSensors", Variables::Track::nSCTHitsPlusDeadSensors, track_vars);
176  /* Development variables
177  //calc->insert("eProbabilityHT", Variables::Track::eProbabilityHT, track_vars);
178  //calc->insert("eProbabilityNN", Variables::Track::eProbabilityNN, track_vars);
179  //calc->insert("eProbabilityNNorHT", Variables::Track::eProbabilityNNorHT, track_vars);
180  //calc->insert("chargedScoreRNN", Variables::Track::chargedScoreRNN, track_vars);
181  //calc->insert("isolationScoreRNN", Variables::Track::isolationScoreRNN, track_vars);
182  //calc->insert("conversionScoreRNN", Variables::Track::conversionScoreRNN, track_vars);
183  //calc->insert("fakeScoreRNN", Variables::Track::fakeScoreRNN, track_vars);
184  */
185 
186  //Extension - variables for GNTau
187  calc->insert("numberOfInnermostPixelLayerHits", Variables::Track::numberOfInnermostPixelLayerHits, track_vars);
188  /* Development variables
189  calc->insert("numberOfPixelHits", Variables::Track::numberOfPixelHits, track_vars);
190  calc->insert("numberOfPixelSharedHits", Variables::Track::numberOfPixelSharedHits, track_vars);
191  calc->insert("numberOfPixelDeadSensors", Variables::Track::numberOfPixelDeadSensors, track_vars);
192  calc->insert("numberOfSCTHits", Variables::Track::numberOfSCTHits, track_vars);
193  calc->insert("numberOfSCTSharedHits", Variables::Track::numberOfSCTSharedHits, track_vars);
194  calc->insert("numberOfSCTDeadSensors", Variables::Track::numberOfSCTDeadSensors, track_vars);
195  calc->insert("numberOfTRTHighThresholdHits", Variables::Track::numberOfTRTHighThresholdHits, track_vars);
196  calc->insert("numberOfTRTHits", Variables::Track::numberOfTRTHits, track_vars);
197  calc->insert("nSiHits", Variables::Track::nSiHits, track_vars);
198  calc->insert("expectInnermostPixelLayerHit", Variables::Track::expectInnermostPixelLayerHit, track_vars);
199  calc->insert("expectNextToInnermostPixelLayerHit", Variables::Track::expectNextToInnermostPixelLayerHit, track_vars);
200  calc->insert("numberOfContribPixelLayers", Variables::Track::numberOfContribPixelLayers, track_vars);
201  calc->insert("numberOfPixelHoles", Variables::Track::numberOfPixelHoles, track_vars);
202  calc->insert("d0_old", Variables::Track::d0_old, track_vars);
203  calc->insert("qOverP", Variables::Track::qOverP, track_vars);
204  calc->insert("theta", Variables::Track::theta, track_vars);
205  calc->insert("z0TJVA", Variables::Track::z0TJVA, track_vars);
206  calc->insert("charge", Variables::Track::charge, track_vars);
207  calc->insert("dz0_TV_PV0", Variables::Track::dz0_TV_PV0, track_vars);
208  calc->insert("log_sumpt_TV", Variables::Track::log_sumpt_TV, track_vars);
209  calc->insert("log_sumpt2_TV", Variables::Track::log_sumpt2_TV, track_vars);
210  calc->insert("log_sumpt_PV0", Variables::Track::log_sumpt_PV0, track_vars);
211  calc->insert("log_sumpt2_PV0", Variables::Track::log_sumpt2_PV0, track_vars);
212  */
213 
214  // Cluster variable calculator functions
215  //calc->insert("et_log", Variables::Cluster::et_log, cluster_vars);
216  //calc->insert("pt_tau_log", Variables::Cluster::pt_tau_log, cluster_vars);
217  //calc->insert("pt_jetseed_log", Variables::Cluster::pt_jetseed_log, cluster_vars);
218  calc->insert("dEta", Variables::Cluster::dEta, cluster_vars);
219  calc->insert("dPhi", Variables::Cluster::dPhi, cluster_vars);
220  calc->insert("SECOND_R", Variables::Cluster::SECOND_R, cluster_vars);
221  calc->insert("SECOND_LAMBDA", Variables::Cluster::SECOND_LAMBDA, cluster_vars);
222  calc->insert("CENTER_LAMBDA", Variables::Cluster::CENTER_LAMBDA, cluster_vars);
223  /*---added for the eVeto
224  calc->insert("SECOND_LAMBDAOverClustersMeanSecondLambda", Variables::Cluster::SECOND_LAMBDAOverClustersMeanSecondLambda, cluster_vars);
225  calc->insert("CENTER_LAMBDAOverClustersMeanCenterLambda", Variables::Cluster::CENTER_LAMBDAOverClustersMeanCenterLambda, cluster_vars);
226  calc->insert("FirstEngDensOverClustersMeanFirstEngDens" , Variables::Cluster::FirstEngDensOverClustersMeanFirstEngDens, cluster_vars);
227  */
228 
229  //Extension - Variables for GNTau
230  //calc->insert("e", Variables::Cluster::e, cluster_vars);
231  calc->insert("et", Variables::Cluster::et, cluster_vars);
232 
233  /*Development variables
234  calc->insert("FIRST_ENG_DENS", Variables::Cluster::FIRST_ENG_DENS, cluster_vars);
235  calc->insert("EM_PROBABILITY", Variables::Cluster::EM_PROBABILITY, cluster_vars);
236  calc->insert("CENTER_MAG", Variables::Cluster::CENTER_MAG, cluster_vars);
237  */
238  return calc;
239 }
240 
241 
242 namespace Variables {
244 
245 bool absEta(const xAOD::TauJet &tau, double &out) {
246  out = std::abs(tau.eta());
247  return true;
248 }
249 
250 bool centFrac(const xAOD::TauJet &tau, double &out) {
251  float centFrac;
252  const auto success = tau.detail(TauDetail::centFrac, centFrac);
253  //out = std::min(centFrac, 1.0f);
254  out = centFrac;
255  return success;
256 }
257 
258 bool isolFrac(const xAOD::TauJet &tau, double &out) {
259  float isolFrac;
260  const auto success = tau.detail(TauDetail::isolFrac, isolFrac);
261  //out = std::min(isolFrac, 1.0f);
262  out = isolFrac;
263  return success;
264 }
265 
266 bool etOverPtLeadTrk(const xAOD::TauJet &tau, double &out) {
267  float etOverPtLeadTrk;
268  const auto success = tau.detail(TauDetail::etOverPtLeadTrk, etOverPtLeadTrk);
270  return success;
271 }
272 
273 bool innerTrkAvgDist(const xAOD::TauJet &tau, double &out) {
274  float innerTrkAvgDist;
275  const auto success = tau.detail(TauDetail::innerTrkAvgDist, innerTrkAvgDist);
277  return success;
278 }
279 
280 bool absipSigLeadTrk(const xAOD::TauJet &tau, double &out) {
281  float ipSigLeadTrk = (tau.nTracks()>0) ? tau.track(0)->d0SigTJVA() : 0.;
282  //out = std::min(std::abs(ipSigLeadTrk), 30.0f);
283  out = std::abs(ipSigLeadTrk);
284  return true;
285 }
286 
287 bool sumEMCellEtOverLeadTrkPt(const xAOD::TauJet &tau, double &out) {
291  return success;
292 }
293 
294 bool SumPtTrkFrac(const xAOD::TauJet &tau, double &out) {
295  float SumPtTrkFrac;
296  const auto success = tau.detail(TauDetail::SumPtTrkFrac, SumPtTrkFrac);
297  out = SumPtTrkFrac;
298  return success;
299 }
300 
301 bool EMPOverTrkSysP(const xAOD::TauJet &tau, double &out) {
302  float EMPOverTrkSysP;
303  const auto success = tau.detail(TauDetail::EMPOverTrkSysP, EMPOverTrkSysP);
305  return success;
306 }
307 
308 bool ptRatioEflowApprox(const xAOD::TauJet &tau, double &out) {
309  float ptRatioEflowApprox;
310  const auto success = tau.detail(TauDetail::ptRatioEflowApprox, ptRatioEflowApprox);
311  //out = std::min(ptRatioEflowApprox, 4.0f);
313  return success;
314 }
315 
316 bool mEflowApprox(const xAOD::TauJet &tau, double &out) {
317  float mEflowApprox;
318  const auto success = tau.detail(TauDetail::mEflowApprox, mEflowApprox);
319  out = mEflowApprox;
320  return success;
321 }
322 
323 bool dRmax(const xAOD::TauJet &tau, double &out) {
324  float dRmax;
325  const auto success = tau.detail(TauDetail::dRmax, dRmax);
326  out = dRmax;
327  return success;
328 }
329 
330 bool trFlightPathSig(const xAOD::TauJet &tau, double &out) {
331  float trFlightPathSig;
332  const auto success = tau.detail(TauDetail::trFlightPathSig, trFlightPathSig);
334  return success;
335 }
336 
337 bool massTrkSys(const xAOD::TauJet &tau, double &out) {
338  float massTrkSys;
339  const auto success = tau.detail(TauDetail::massTrkSys, massTrkSys);
340  out = massTrkSys;
341  return success;
342 }
343 
344 bool pt(const xAOD::TauJet &tau, double &out) {
345  out = tau.pt();
346  return true;
347 }
348 
349 bool pt_tau_log(const xAOD::TauJet &tau, double &out) {
350  out = std::log10(std::max(tau.pt() / GeV, 1e-6));
351  return true;
352 }
353 
354 bool ptDetectorAxis(const xAOD::TauJet &tau, double &out) {
355  out = tau.ptDetectorAxis();
356  return true;
357 }
358 
359 bool ptIntermediateAxis(const xAOD::TauJet &tau, double &out) {
360  out = tau.ptIntermediateAxis();
361  return true;
362 }
363 
364 bool ptJetSeed_log(const xAOD::TauJet &tau, double &out) {
365  out = std::log10(std::max(tau.ptJetSeed(), 1e-3));
366  return true;
367 }
368 
369 bool absleadTrackEta(const xAOD::TauJet &tau, double &out){
370  static const SG::ConstAccessor<float> acc_absEtaLeadTrack("ABS_ETA_LEAD_TRACK");
371  float absEtaLeadTrack = acc_absEtaLeadTrack(tau);
372  out = std::max(0.f, absEtaLeadTrack);
373  return true;
374 }
375 
376 bool leadTrackDeltaEta(const xAOD::TauJet &tau, double &out){
377  static const SG::ConstAccessor<float> acc_absDeltaEta("TAU_ABSDELTAETA");
378  float absDeltaEta = acc_absDeltaEta(tau);
379  out = std::max(0.f, absDeltaEta);
380  return true;
381 }
382 
383 bool leadTrackDeltaPhi(const xAOD::TauJet &tau, double &out){
384  static const SG::ConstAccessor<float> acc_absDeltaPhi("TAU_ABSDELTAPHI");
385  float absDeltaPhi = acc_absDeltaPhi(tau);
386  out = std::max(0.f, absDeltaPhi);
387  return true;
388 }
389 
390 bool leadTrackProbNNorHT(const xAOD::TauJet &tau, double &out){
391  auto tracks = tau.allTracks();
392 
393  // Sort tracks in descending pt order
394  if (!tracks.empty()) {
395  auto cmp_pt = [](const xAOD::TauTrack *lhs, const xAOD::TauTrack *rhs) {
396  return lhs->pt() > rhs->pt();
397  };
398  std::sort(tracks.begin(), tracks.end(), cmp_pt);
399 
400  const xAOD::TauTrack* tauLeadTrack = tracks.at(0);
401  const xAOD::TrackParticle* xTrackParticle = tauLeadTrack->track();
403  static const SG::ConstAccessor<float> acc_eProbabilityNN("eProbabilityNN");
404  float eProbabilityNN = acc_eProbabilityNN(*xTrackParticle);
405  out = (tauLeadTrack->pt()>2000.) ? eProbabilityNN : eProbabilityHT;
406  }
407  else {
408  out = 0.;
409  }
410  return true;
411 }
412 
413 bool EMFracFixed(const xAOD::TauJet &tau, double &out){
414  static const SG::ConstAccessor<float> acc_emFracFixed("EMFracFixed");
415  float emFracFixed = acc_emFracFixed(tau);
416  out = std::max(emFracFixed, 0.0f);
417  return true;
418 }
419 
420 bool etHotShotWinOverPtLeadTrk(const xAOD::TauJet &tau, double &out){
421  static const SG::ConstAccessor<float> acc_etHotShotWinOverPtLeadTrk("etHotShotWinOverPtLeadTrk");
422  float etHotShotWinOverPtLeadTrk = acc_etHotShotWinOverPtLeadTrk(tau);
424  return true;
425 }
426 
427 bool hadLeakFracFixed(const xAOD::TauJet &tau, double &out){
428  static const SG::ConstAccessor<float> acc_hadLeakFracFixed("hadLeakFracFixed");
429  float hadLeakFracFixed = acc_hadLeakFracFixed(tau);
431  return true;
432 }
433 
434 bool PSFrac(const xAOD::TauJet &tau, double &out){
435  float PSFrac;
436  const auto success = tau.detail(TauDetail::PSSFraction, PSFrac);
437  out = std::max(0.f,PSFrac);
438  return success;
439 }
440 
441 bool ClustersMeanCenterLambda(const xAOD::TauJet &tau, double &out){
445  return success;
446 }
447 
448 bool ClustersMeanEMProbability(const xAOD::TauJet &tau, double &out){
452  return success;
453 }
454 
455 bool ClustersMeanFirstEngDens(const xAOD::TauJet &tau, double &out){
459  return success;
460 }
461 
462 bool ClustersMeanPresamplerFrac(const xAOD::TauJet &tau, double &out){
466  return success;
467 }
468 
469 bool ClustersMeanSecondLambda(const xAOD::TauJet &tau, double &out){
473  return success;
474 }
475 
476 namespace Track {
477 
478 bool pt_log(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, double &out) {
479  out = std::log10(track.pt());
480  return true;
481 }
482 
483 bool trackPt(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, double &out) {
484  out = track.pt();
485  return true;
486 }
487 
488 bool trackEta(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, double &out) {
489  out = track.eta();
490  return true;
491 }
492 
493 bool trackPhi(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, double &out) {
494  out = track.phi();
495  return true;
496 }
497 
498 bool pt_tau_log(const xAOD::TauJet &tau, const xAOD::TauTrack& /*track*/, double &out) {
499  out = std::log10(std::max(tau.pt(), 1e-6));
500  return true;
501 }
502 
503 bool pt_jetseed_log(const xAOD::TauJet &tau, const xAOD::TauTrack& /*track*/, double &out) {
504  out = std::log10(tau.ptJetSeed());
505  return true;
506 }
507 
508 bool d0_abs_log(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, double &out) {
509  out = std::log10(std::abs(track.d0TJVA()) + 1e-6);
510  return true;
511 }
512 
513 bool z0sinThetaTJVA_abs_log(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, double &out) {
514  out = std::log10(std::abs(track.z0sinthetaTJVA()) + 1e-6);
515  return true;
516 }
517 
518 bool z0sinthetaTJVA(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, double &out) {
519  out = track.z0sinthetaTJVA();
520  return true;
521 }
522 
523 bool z0sinthetaSigTJVA(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, double &out) {
524  out = track.z0sinthetaSigTJVA();
525  return true;
526 }
527 
528 bool d0TJVA(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, double &out) {
529  out = track.d0TJVA();
530  return true;
531 }
532 
533 bool d0SigTJVA(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, double &out) {
534  out = track.d0SigTJVA();
535  return true;
536 }
537 
538 bool dEta(const xAOD::TauJet &tau, const xAOD::TauTrack &track, double &out) {
539  out = track.eta() - tau.eta();
540  return true;
541 }
542 
543 bool dEtaJetSeedAxis(const xAOD::TauJet &tau, const xAOD::TauTrack &track, double &out) {
544  TLorentzVector tlvSeedJet = tau.p4(xAOD::TauJetParameters::JetSeed);
545  out = std::abs(tlvSeedJet.Eta() - track.eta());
546  return true;
547 }
548 
549 bool dPhi(const xAOD::TauJet &tau, const xAOD::TauTrack &track, double &out) {
550  out = track.p4().DeltaPhi(tau.p4());
551  return true;
552 }
553 
554 bool dPhiJetSeedAxis(const xAOD::TauJet &tau, const xAOD::TauTrack &track, double &out) {
555  TLorentzVector tlvSeedJet = tau.p4(xAOD::TauJetParameters::JetSeed);
556  out = tlvSeedJet.DeltaPhi(track.p4());
557  return true;
558 }
559 
560 bool nInnermostPixelHits(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, double &out) {
561  uint8_t inner_pixel_hits;
562  const auto success = track.track()->summaryValue(inner_pixel_hits, xAOD::numberOfInnermostPixelLayerHits);
563  out = inner_pixel_hits;
564  return success;
565 }
566 
567 bool nPixelHits(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, double &out) {
568  uint8_t pixel_hits;
569  const auto success = track.track()->summaryValue(pixel_hits, xAOD::numberOfPixelHits);
570  out = pixel_hits;
571  return success;
572 }
573 
574 bool nSCTHits(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, double &out) {
575  uint8_t sct_hits;
576  const auto success = track.track()->summaryValue(sct_hits, xAOD::numberOfSCTHits);
577  out = sct_hits;
578  return success;
579 }
580 
581 // same as in tau track classification for trigger
582 bool nIBLHitsAndExp(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, double &out) {
583  uint8_t inner_pixel_hits, inner_pixel_exp;
584  const auto success1 = track.track()->summaryValue(inner_pixel_hits, xAOD::numberOfInnermostPixelLayerHits);
585  const auto success2 = track.track()->summaryValue(inner_pixel_exp, xAOD::expectInnermostPixelLayerHit);
586  out = inner_pixel_exp ? inner_pixel_hits : 1.;
587  return success1 && success2;
588 }
589 
590 bool nPixelHitsPlusDeadSensors(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, double &out) {
591  uint8_t pixel_hits, pixel_dead;
592  const auto success1 = track.track()->summaryValue(pixel_hits, xAOD::numberOfPixelHits);
593  const auto success2 = track.track()->summaryValue(pixel_dead, xAOD::numberOfPixelDeadSensors);
594  out = pixel_hits + pixel_dead;
595  return success1 && success2;
596 }
597 
598 bool nSCTHitsPlusDeadSensors(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, double &out) {
599  uint8_t sct_hits, sct_dead;
600  const auto success1 = track.track()->summaryValue(sct_hits, xAOD::numberOfSCTHits);
601  const auto success2 = track.track()->summaryValue(sct_dead, xAOD::numberOfSCTDeadSensors);
602  out = sct_hits + sct_dead;
603  return success1 && success2;
604 }
605 
606 bool eProbabilityHT(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, double &out) {
607  float eProbabilityHT;
608  const auto success = track.track()->summaryValue(eProbabilityHT, xAOD::eProbabilityHT);
610  return success;
611 }
612 
613 bool eProbabilityNN(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, double &out) {
614  static const SG::ConstAccessor<float> acc_eProbabilityNN("eProbabilityNN");
615  out = acc_eProbabilityNN(track);
616  return true;
617 }
618 
619 bool eProbabilityNNorHT(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, double &out) {
620  auto atrack = track.track();
621  float eProbabilityHT = atrack->summaryValue(eProbabilityHT, xAOD::eProbabilityHT);
622  static const SG::ConstAccessor<float> acc_eProbabilityNN("eProbabilityNN");
623  float eProbabilityNN = acc_eProbabilityNN(*atrack);
624  out = (atrack->pt()>2000.) ? eProbabilityNN : eProbabilityHT;
625  return true;
626 }
627 
628 bool chargedScoreRNN(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, double &out) {
629  static const SG::ConstAccessor<float> acc_chargedScoreRNN("rnn_chargedScore");
630  out = acc_chargedScoreRNN(track);
631  return true;
632 }
633 
634 bool isolationScoreRNN(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, double &out) {
635  static const SG::ConstAccessor<float> acc_isolationScoreRNN("rnn_isolationScore");
636  out = acc_isolationScoreRNN(track);
637  return true;
638 }
639 
640 bool conversionScoreRNN(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, double &out) {
641  static const SG::ConstAccessor<float> acc_conversionScoreRNN("rnn_conversionScore");
642  out = acc_conversionScoreRNN(track);
643  return true;
644 }
645 
646 bool fakeScoreRNN(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, double &out) {
647  static const SG::ConstAccessor<float> acc_fakeScoreRNN("rnn_fakeScore");
648  out = acc_fakeScoreRNN(track);
649  return true;
650 }
651 
652 //Extension - variables for GNTau
653 bool numberOfInnermostPixelLayerHits(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, double &out) {
654  uint8_t trk_val = 0;
655  const auto success = track.track()->summaryValue(trk_val, xAOD::numberOfInnermostPixelLayerHits);
656  out = trk_val;
657  return success;
658 }
659 
660 bool numberOfPixelHits(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, double &out) {
661  uint8_t trk_val = 0;
662  const auto success = track.track()->summaryValue(trk_val, xAOD::numberOfPixelHits);
663  out = trk_val;
664  return success;
665 }
666 
667 bool numberOfPixelSharedHits(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, double &out) {
668  uint8_t trk_val = 0;
669  const auto success = track.track()->summaryValue(trk_val, xAOD::numberOfPixelSharedHits);
670  out = trk_val;
671  return success;
672 }
673 
674 bool numberOfPixelDeadSensors(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, double &out) {
675  uint8_t trk_val = 0;
676  const auto success = track.track()->summaryValue(trk_val, xAOD::numberOfPixelDeadSensors);
677  out = trk_val;
678  return success;
679 }
680 
681 bool numberOfSCTHits(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, double &out) {
682  uint8_t trk_val = 0;
683  const auto success = track.track()->summaryValue(trk_val, xAOD::numberOfSCTHits);
684  out = trk_val;
685  return success;
686 }
687 
688 bool numberOfSCTSharedHits(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, double &out) {
689  uint8_t trk_val = 0;
690  const auto success = track.track()->summaryValue(trk_val, xAOD::numberOfSCTSharedHits);
691  out = trk_val;
692  return success;
693 }
694 
695 bool numberOfSCTDeadSensors(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, double &out) {
696  uint8_t trk_val = 0;
697  const auto success = track.track()->summaryValue(trk_val, xAOD::numberOfSCTDeadSensors);
698  out = trk_val;
699  return success;
700 }
701 
702 bool numberOfTRTHighThresholdHits(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, double &out) {
703  uint8_t trk_val = 0;
704  const auto success = track.track()->summaryValue(trk_val, xAOD::numberOfTRTHighThresholdHits);
705  out = trk_val;
706  return success;
707 }
708 
709 bool numberOfTRTHits(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, double &out) {
710  uint8_t trk_val = 0;
711  const auto success = track.track()->summaryValue(trk_val, xAOD::numberOfTRTHits);
712  out = trk_val;
713  return success;
714 }
715 
716 bool nSiHits(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, double &out) {
717  uint8_t pix_hit = 0;uint8_t pix_dead = 0;uint8_t sct_hit = 0;uint8_t sct_dead = 0;
718  const auto success1 = track.track()->summaryValue(pix_hit, xAOD::numberOfPixelHits);
719  const auto success2 = track.track()->summaryValue(pix_dead, xAOD::numberOfPixelDeadSensors);
720  const auto success3 = track.track()->summaryValue(sct_hit, xAOD::numberOfSCTHits);
721  const auto success4 = track.track()->summaryValue(sct_dead, xAOD::numberOfSCTDeadSensors);
722  out = pix_hit + pix_dead + sct_hit + sct_dead;
723  return success1 && success2 && success3 && success4;
724 }
725 
726 bool expectInnermostPixelLayerHit(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, double &out) {
727  uint8_t trk_val = 0;
728  const auto success = track.track()->summaryValue(trk_val, xAOD::expectInnermostPixelLayerHit);
729  out = trk_val;
730  return success;
731 }
732 
734  uint8_t trk_val = 0;
735  const auto success = track.track()->summaryValue(trk_val, xAOD::expectNextToInnermostPixelLayerHit);
736  out = trk_val;
737  return success;
738 }
739 
740 bool numberOfContribPixelLayers(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, double &out) {
741  uint8_t trk_val = 0;
742  const auto success = track.track()->summaryValue(trk_val, xAOD::numberOfContribPixelLayers);
743  out = trk_val;
744  return success;
745 }
746 
747 bool numberOfPixelHoles(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, double &out) {
748  uint8_t trk_val = 0;
749  const auto success = track.track()->summaryValue(trk_val, xAOD::numberOfPixelHoles);
750  out = trk_val;
751  return success;
752 }
753 
754 bool d0_old(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, double &out) {
755  out = track.track()->d0();
756  //out = trk_val;
757  return true;
758 }
759 
760 bool qOverP(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, double &out) {
761  out = track.track()->qOverP();
762  return true;
763 }
764 
765 bool theta(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, double &out) {
766  out = track.track()->theta();
767  return true;
768 }
769 
770 bool z0TJVA(const xAOD::TauJet& tau, const xAOD::TauTrack &track, double &out) {
771  out = track.track()->z0() + track.track()->vz() - tau.vertex()->z();
772  return true;
773 }
774 
775 bool charge(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, double &out) {
776  out = track.track()->charge();
777  return true;
778 }
779 
780 bool dz0_TV_PV0(const xAOD::TauJet& tau, const xAOD::TauTrack &/*track*/, double &out) {
781  static const SG::ConstAccessor<float> acc_dz0TVPV0("dz0_TV_PV0");
782  out = acc_dz0TVPV0.withDefault(tau, 0);
783  return true;
784 }
785 
786 bool log_sumpt_TV(const xAOD::TauJet& tau, const xAOD::TauTrack &/*track*/, double &out) {
787  static const SG::ConstAccessor<float> acc_logsumptTV("log_sumpt_TV");
788  out = acc_logsumptTV.withDefault(tau, 0);
789  return true;
790 }
791 
792 bool log_sumpt2_TV(const xAOD::TauJet& tau, const xAOD::TauTrack &/*track*/, double &out) {
793  static const SG::ConstAccessor<float> acc_logsumpt2TV("log_sumpt2_TV");
794  out = acc_logsumpt2TV.withDefault(tau, 0);
795  return true;
796 }
797 
798 bool log_sumpt_PV0(const xAOD::TauJet& tau, const xAOD::TauTrack &/*track*/, double &out) {
799  static const SG::ConstAccessor<float> acc_logsumptPV0("log_sumpt_PV0");
800  out = acc_logsumptPV0.withDefault(tau, 0);
801  return true;
802 }
803 
804 bool log_sumpt2_PV0(const xAOD::TauJet& tau, const xAOD::TauTrack &/*track*/, double &out) {
805  static const SG::ConstAccessor<float> acc_logsumpt2PV0("log_sumpt2_PV0");
806  out = acc_logsumpt2PV0.withDefault(tau, 0);
807  return true;
808 }
809 
810 } // namespace Track
811 
812 
813 namespace Cluster {
815 
816 bool et_log(const xAOD::TauJet& /*tau*/, const xAOD::CaloVertexedTopoCluster &cluster, double &out) {
817  out = std::log10(cluster.p4().Et());
818  return true;
819 }
820 
821 bool pt_tau_log(const xAOD::TauJet &tau, const xAOD::CaloVertexedTopoCluster& /*cluster*/, double &out) {
822  out = std::log10(std::max(tau.pt(), 1e-6));
823  return true;
824 }
825 
826 bool pt_jetseed_log(const xAOD::TauJet &tau, const xAOD::CaloVertexedTopoCluster& /*cluster*/, double &out) {
827  out = std::log10(tau.ptJetSeed());
828  return true;
829 }
830 
831 bool dEta(const xAOD::TauJet &tau, const xAOD::CaloVertexedTopoCluster &cluster, double &out) {
832  out = cluster.eta() - tau.eta();
833  return true;
834 }
835 
836 bool dPhi(const xAOD::TauJet &tau, const xAOD::CaloVertexedTopoCluster &cluster, double &out) {
837  out = cluster.p4().DeltaPhi(tau.p4());
838  return true;
839 }
840 
841 bool SECOND_R(const xAOD::TauJet& /*tau*/, const xAOD::CaloVertexedTopoCluster &cluster, double &out) {
842  const auto success = cluster.clust().retrieveMoment(MomentType::SECOND_R, out);
843  return success;
844 }
845 
846 bool SECOND_LAMBDA(const xAOD::TauJet& /*tau*/, const xAOD::CaloVertexedTopoCluster &cluster, double &out) {
847  const auto success = cluster.clust().retrieveMoment(MomentType::SECOND_LAMBDA, out);
848  return success;
849 }
850 
851 bool CENTER_LAMBDA(const xAOD::TauJet& /*tau*/, const xAOD::CaloVertexedTopoCluster &cluster, double &out) {
852  const auto success = cluster.clust().retrieveMoment(MomentType::CENTER_LAMBDA, out);
853  return success;
854 }
855 
857  static const SG::ConstAccessor<float> acc_ClustersMeanSecondLambda("ClustersMeanSecondLambda");
858  float ClustersMeanSecondLambda = acc_ClustersMeanSecondLambda(tau);
859  double secondLambda(0);
860  const auto success = cluster.clust().retrieveMoment(MomentType::SECOND_LAMBDA, secondLambda);
861  out = (ClustersMeanSecondLambda != 0.) ? secondLambda/ClustersMeanSecondLambda : 0.;
862  return success;
863 }
864 
866  static const SG::ConstAccessor<float> acc_ClustersMeanCenterLambda("ClustersMeanCenterLambda");
867  float ClustersMeanCenterLambda = acc_ClustersMeanCenterLambda(tau);
868  double centerLambda(0);
869  const auto success = cluster.clust().retrieveMoment(MomentType::CENTER_LAMBDA, centerLambda);
870  if (ClustersMeanCenterLambda == 0.){
871  out = 250.;
872  }else {
873  out = centerLambda/ClustersMeanCenterLambda;
874  }
875 
876  out = std::min(out, 250.);
877 
878  return success;
879 }
880 
881 
883  // the ClustersMeanFirstEngDens is the log10 of the energy weighted average of the First_ENG_DENS
884  // divided by ETot to make it dimension-less,
885  // so we need to evaluate the difference of log10(clusterFirstEngDens/clusterTotalEnergy) and the ClustersMeanFirstEngDens
886  double clusterFirstEngDens = 0.0;
887  bool status = cluster.clust().retrieveMoment(MomentType::FIRST_ENG_DENS, clusterFirstEngDens);
888  if (clusterFirstEngDens < 1e-6) clusterFirstEngDens = 1e-6;
889 
890  static const SG::ConstAccessor<float> acc_ClusterTotalEnergy("ClusterTotalEnergy");
891  float clusterTotalEnergy = acc_ClusterTotalEnergy(tau);
892  if (clusterTotalEnergy < 1e-6) clusterTotalEnergy = 1e-6;
893 
894  static const SG::ConstAccessor<float> acc_ClustersMeanFirstEngDens("ClustersMeanFirstEngDens");
895  float clustersMeanFirstEngDens = acc_ClustersMeanFirstEngDens(tau);
896 
897  out = std::log10(clusterFirstEngDens/clusterTotalEnergy) - clustersMeanFirstEngDens;
898 
899  return status;
900 }
901 
902 //Extension - Variables for GNTau
903 bool e(const xAOD::TauJet& /*tau*/, const xAOD::CaloVertexedTopoCluster &cluster, double &out) {
904  out = cluster.p4().E();
905  return true;
906 }
907 
908 bool et(const xAOD::TauJet& /*tau*/, const xAOD::CaloVertexedTopoCluster &cluster, double &out) {
909  out = cluster.p4().Et();
910  return true;
911 }
912 
913 bool FIRST_ENG_DENS(const xAOD::TauJet& /*tau*/, const xAOD::CaloVertexedTopoCluster &cluster, double &out) {
914  double clusterFirstEngDens = 0.0;
915  bool status = cluster.clust().retrieveMoment(MomentType::FIRST_ENG_DENS, clusterFirstEngDens);
916  out = clusterFirstEngDens;
917  return status;
918 }
919 
920 bool EM_PROBABILITY(const xAOD::TauJet& /*tau*/, const xAOD::CaloVertexedTopoCluster &cluster, double &out) {
921  double clusterEMprob = 0.0;
922  bool status = cluster.clust().retrieveMoment(MomentType::EM_PROBABILITY, clusterEMprob);
923  out = clusterEMprob;
924  return status;
925 }
926 
927 bool CENTER_MAG(const xAOD::TauJet& /*tau*/, const xAOD::CaloVertexedTopoCluster &cluster, double &out) {
928  double clusterCenterMag = 0.0;
929  bool status = cluster.clust().retrieveMoment(MomentType::CENTER_MAG, clusterCenterMag);
930  out = clusterCenterMag;
931  return status;
932 }
933 
934 } // namespace Cluster
935 } // namespace Variables
936 } // namespace TauGNNUtils
TauGNNUtils::Variables::Cluster::dPhi
bool dPhi(const xAOD::TauJet &tau, const xAOD::CaloVertexedTopoCluster &cluster, double &out)
Definition: TauGNNUtils.cxx:836
TauGNNUtils::Variables::Track::numberOfPixelHoles
bool numberOfPixelHoles(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:747
TauGNNUtils::GNNVarCalc::ScalarCalc
bool(*)(const xAOD::TauJet &, double &) ScalarCalc
Definition: TauGNNUtils.h:34
TauGNNUtils::Variables::Track::log_sumpt2_TV
bool log_sumpt2_TV(const xAOD::TauJet &tau, const xAOD::TauTrack &, double &out)
Definition: TauGNNUtils.cxx:792
xAOD::numberOfPixelHoles
@ numberOfPixelHoles
number of pixel layers on track with absence of hits [unit8_t].
Definition: TrackingPrimitives.h:262
TauGNNUtils::Variables::Cluster::CENTER_LAMBDA
bool CENTER_LAMBDA(const xAOD::TauJet &, const xAOD::CaloVertexedTopoCluster &cluster, double &out)
Definition: TauGNNUtils.cxx:851
TauGNNUtils::Variables::Track::numberOfPixelDeadSensors
bool numberOfPixelDeadSensors(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:674
xAOD::CaloVertexedClusterBase::p4
virtual FourMom_t p4() const final
The full 4-momentum of the particle.
Definition: Event/xAOD/xAODCaloEvent/xAODCaloEvent/CaloVertexedClusterBase.h:88
TauGNNUtils::Variables::centFrac
bool centFrac(const xAOD::TauJet &tau, double &out)
Definition: TauGNNUtils.cxx:250
TauGNNUtils::Variables::ClustersMeanFirstEngDens
bool ClustersMeanFirstEngDens(const xAOD::TauJet &tau, double &out)
Definition: TauGNNUtils.cxx:455
TauGNNUtils::Variables::Cluster::et_log
bool et_log(const xAOD::TauJet &, const xAOD::CaloVertexedTopoCluster &cluster, double &out)
Definition: TauGNNUtils.cxx:816
xAOD::numberOfSCTSharedHits
@ numberOfSCTSharedHits
number of SCT hits shared by several tracks [unit8_t].
Definition: TrackingPrimitives.h:273
TauGNNUtils::get_calculator
std::unique_ptr< GNNVarCalc > get_calculator(const std::vector< std::string > &scalar_vars, const std::vector< std::string > &track_vars, const std::vector< std::string > &cluster_vars)
Definition: TauGNNUtils.cxx:114
TauGNNUtils::Variables::ptRatioEflowApprox
bool ptRatioEflowApprox(const xAOD::TauJet &tau, double &out)
Definition: TauGNNUtils.cxx:308
TauGNNUtils::Variables::Track::log_sumpt_PV0
bool log_sumpt_PV0(const xAOD::TauJet &tau, const xAOD::TauTrack &, double &out)
Definition: TauGNNUtils.cxx:798
xAOD::uint8_t
uint8_t
Definition: Muon_v1.cxx:558
TauGNNUtils
Definition: TauGNNUtils.cxx:12
find
std::string find(const std::string &s)
return a remapped string
Definition: hcg.cxx:135
TauGNNUtils::Variables::Cluster::EM_PROBABILITY
bool EM_PROBABILITY(const xAOD::TauJet &, const xAOD::CaloVertexedTopoCluster &cluster, double &out)
Definition: TauGNNUtils.cxx:920
TauGNNUtils::Variables::absipSigLeadTrk
bool absipSigLeadTrk(const xAOD::TauJet &tau, double &out)
Definition: TauGNNUtils.cxx:280
xAOD::TauTrack_v1::d0SigTJVA
float d0SigTJVA() const
Definition: TauTrack_v1.cxx:120
xAOD::TauJet_v3::eta
virtual double eta() const
The pseudorapidity ( ) of the particle.
GeV
#define GeV
Definition: TauGNNUtils.cxx:10
TauGNNUtils::Variables::Track::nPixelHits
bool nPixelHits(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:567
TauGNNUtils::Variables::Track::dEtaJetSeedAxis
bool dEtaJetSeedAxis(const xAOD::TauJet &tau, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:543
max
constexpr double max()
Definition: ap_fixedTest.cxx:33
TauGNNUtils::Variables::EMFracFixed
bool EMFracFixed(const xAOD::TauJet &tau, double &out)
Definition: TauGNNUtils.cxx:413
min
constexpr double min()
Definition: ap_fixedTest.cxx:26
TauGNNUtils.h
TauGNNUtils::Variables::Track::dz0_TV_PV0
bool dz0_TV_PV0(const xAOD::TauJet &tau, const xAOD::TauTrack &, double &out)
Definition: TauGNNUtils.cxx:780
xAOD::TrackParticle_v1::summaryValue
bool summaryValue(uint8_t &value, const SummaryType &information) const
Accessor for TrackSummary values.
Definition: TrackParticle_v1.cxx:737
xAOD::TauJet_v3::nTracks
size_t nTracks(TauJetParameters::TauTrackFlag flag=TauJetParameters::TauTrackFlag::classifiedCharged) const
Definition: TauJet_v3.cxx:488
TauGNNUtils::Variables::Track::chargedScoreRNN
bool chargedScoreRNN(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:628
asg
Definition: DataHandleTestTool.h:28
python.AthDsoLogger.out
out
Definition: AthDsoLogger.py:70
TauGNNUtils::Variables::Track::numberOfSCTHits
bool numberOfSCTHits(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:681
TauGNNUtils::Variables::Track::expectNextToInnermostPixelLayerHit
bool expectNextToInnermostPixelLayerHit(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:733
TauGNNUtils::Variables::Track::eProbabilityNNorHT
bool eProbabilityNNorHT(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:619
TauGNNUtils::Variables::Cluster::FirstEngDensOverClustersMeanFirstEngDens
bool FirstEngDensOverClustersMeanFirstEngDens(const xAOD::TauJet &tau, const xAOD::CaloVertexedTopoCluster &cluster, double &out)
Definition: TauGNNUtils.cxx:882
TauGNNUtils::Variables::innerTrkAvgDist
bool innerTrkAvgDist(const xAOD::TauJet &tau, double &out)
Definition: TauGNNUtils.cxx:273
athena.value
value
Definition: athena.py:124
xAOD::numberOfPixelHits
@ numberOfPixelHits
these are the pixel hits, including the b-layer [unit8_t].
Definition: TrackingPrimitives.h:260
xAOD::expectInnermostPixelLayerHit
@ expectInnermostPixelLayerHit
Do we expect a 0th-layer barrel hit for this track?
Definition: TrackingPrimitives.h:237
xAOD::CaloVertexedClusterBase::eta
virtual double eta() const final
The pseudorapidity ( ) of the particle.
Definition: Event/xAOD/xAODCaloEvent/xAODCaloEvent/CaloVertexedClusterBase.h:77
TauGNNUtils::Variables::absleadTrackEta
bool absleadTrackEta(const xAOD::TauJet &tau, double &out)
Definition: TauGNNUtils.cxx:369
xAOD::numberOfTRTHits
@ numberOfTRTHits
number of TRT hits [unit8_t].
Definition: TrackingPrimitives.h:276
TauGNNUtils::Variables::Cluster::CENTER_LAMBDAOverClustersMeanCenterLambda
bool CENTER_LAMBDAOverClustersMeanCenterLambda(const xAOD::TauJet &tau, const xAOD::CaloVertexedTopoCluster &cluster, double &out)
Definition: TauGNNUtils.cxx:865
TauGNNUtils::Variables::isolFrac
bool isolFrac(const xAOD::TauJet &tau, double &out)
Definition: TauGNNUtils.cxx:258
SG::ConstAccessor< float >
TauGNNUtils::Variables::ptIntermediateAxis
bool ptIntermediateAxis(const xAOD::TauJet &tau, double &out)
Definition: TauGNNUtils.cxx:359
TauGNNUtils::Variables::Cluster::et
bool et(const xAOD::TauJet &, const xAOD::CaloVertexedTopoCluster &cluster, double &out)
Definition: TauGNNUtils.cxx:908
TauGNNUtils::Variables::massTrkSys
bool massTrkSys(const xAOD::TauJet &tau, double &out)
Definition: TauGNNUtils.cxx:337
TauGNNUtils::Variables::hadLeakFracFixed
bool hadLeakFracFixed(const xAOD::TauJet &tau, double &out)
Definition: TauGNNUtils.cxx:427
TauGNNUtils::Variables::Track::d0_old
bool d0_old(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:754
xAOD::CaloVertexedClusterBase::clust
const CaloCluster & clust() const
Return the cluster being proxied,.
Definition: Event/xAOD/xAODCaloEvent/xAODCaloEvent/CaloVertexedClusterBase.h:69
TauGNNUtils::Variables::Track::d0_abs_log
bool d0_abs_log(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:508
xAOD::TauJet_v3::ptJetSeed
double ptJetSeed() const
xAOD::TauJet_v3::ptDetectorAxis
double ptDetectorAxis() const
TauGNNUtils::Variables::trFlightPathSig
bool trFlightPathSig(const xAOD::TauJet &tau, double &out)
Definition: TauGNNUtils.cxx:330
TauGNNUtils::Variables::etHotShotWinOverPtLeadTrk
bool etHotShotWinOverPtLeadTrk(const xAOD::TauJet &tau, double &out)
Definition: TauGNNUtils.cxx:420
xAOD::TauJetParameters::ipSigLeadTrk
@ ipSigLeadTrk
Definition: TauDefs.h:160
xAOD::TauJetParameters::JetSeed
@ JetSeed
Definition: TauDefs.h:336
xAOD::numberOfTRTHighThresholdHits
@ numberOfTRTHighThresholdHits
number of TRT hits which pass the high threshold (only xenon counted) [unit8_t].
Definition: TrackingPrimitives.h:279
TauGNNUtils::GNNVarCalc::ClusterCalc
bool(*)(const xAOD::TauJet &, const xAOD::CaloVertexedTopoCluster &, double &) ClusterCalc
Definition: TauGNNUtils.h:40
TauGNNUtils::Variables::ClustersMeanEMProbability
bool ClustersMeanEMProbability(const xAOD::TauJet &tau, double &out)
Definition: TauGNNUtils.cxx:448
xAOD::CaloCluster_v1::MomentType
MomentType
Enums to identify different moments.
Definition: CaloCluster_v1.h:123
TauGNNUtils::Variables::Track::pt_jetseed_log
bool pt_jetseed_log(const xAOD::TauJet &tau, const xAOD::TauTrack &, double &out)
Definition: TauGNNUtils.cxx:503
xAOD::TauJet_v3::pt
virtual double pt() const
The transverse momentum ( ) of the particle.
xAOD::TauJetParameters::Detail
Detail
Enum for tau parameters - used mainly for backward compatibility with the analysis code.
Definition: TauDefs.h:156
TauGNNUtils::GNNVarCalc::TrackCalc
bool(*)(const xAOD::TauJet &, const xAOD::TauTrack &, double &) TrackCalc
Definition: TauGNNUtils.h:37
TauGNNUtils::Variables::PSFrac
bool PSFrac(const xAOD::TauJet &tau, double &out)
Definition: TauGNNUtils.cxx:434
xAOD::numberOfPixelSharedHits
@ numberOfPixelSharedHits
number of Pixel all-layer hits shared by several tracks [unit8_t].
Definition: TrackingPrimitives.h:263
TauGNNUtils::Variables::Track::nSiHits
bool nSiHits(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:716
TauGNNUtils::Variables::Track::eProbabilityHT
bool eProbabilityHT(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:606
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
xAOD::expectNextToInnermostPixelLayerHit
@ expectNextToInnermostPixelLayerHit
Do we expect a 1st-layer barrel hit for this track?
Definition: TrackingPrimitives.h:248
TauGNNUtils::Variables::Track::isolationScoreRNN
bool isolationScoreRNN(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:634
TauGNNUtils::Variables::Track::z0sinthetaTJVA
bool z0sinthetaTJVA(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:518
TauGNNUtils::Variables::pt_tau_log
bool pt_tau_log(const xAOD::TauJet &tau, double &out)
Definition: TauGNNUtils.cxx:349
TauGNNUtils::Variables::leadTrackDeltaPhi
bool leadTrackDeltaPhi(const xAOD::TauJet &tau, double &out)
Definition: TauGNNUtils.cxx:383
TauGNNUtils::Variables::Track::z0sinthetaSigTJVA
bool z0sinthetaSigTJVA(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:523
TauGNNUtils::Variables::Track::charge
bool charge(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:775
TauGNNUtils::Variables::Track::expectInnermostPixelLayerHit
bool expectInnermostPixelLayerHit(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:726
TauGNNUtils::Variables::Track::dPhi
bool dPhi(const xAOD::TauJet &tau, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:549
xAOD::TauJet_v3
Class describing a tau jet.
Definition: TauJet_v3.h:41
xAOD::TauJet_v3::track
const TauTrack * track(size_t i, TauJetParameters::TauTrackFlag flag=TauJetParameters::TauTrackFlag::classifiedCharged, int *container_index=0) const
Get the pointer to a given tauTrack associated with this tau /*container index needed by trackNonCons...
Definition: TauJet_v3.cxx:422
TauGNNUtils::Variables::Track::nInnermostPixelHits
bool nInnermostPixelHits(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:560
TauGNNUtils::GNNVarCalc::compute
bool compute(const std::string &name, const xAOD::TauJet &tau, double &out) const
Definition: TauGNNUtils.cxx:17
TauGNNUtils::Variables::Track::log_sumpt_TV
bool log_sumpt_TV(const xAOD::TauJet &tau, const xAOD::TauTrack &, double &out)
Definition: TauGNNUtils.cxx:786
TauGNNUtils::Variables::Track::numberOfSCTDeadSensors
bool numberOfSCTDeadSensors(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:695
hist_file_dump.f
f
Definition: hist_file_dump.py:140
xAOD::CaloCluster_v1::retrieveMoment
bool retrieveMoment(MomentType type, double &value) const
Retrieve individual moment.
Definition: CaloCluster_v1.cxx:692
TauGNNUtils::Variables::ptJetSeed_log
bool ptJetSeed_log(const xAOD::TauJet &tau, double &out)
Definition: TauGNNUtils.cxx:364
xAOD::Vertex_v1::z
float z() const
Returns the z position.
TauGNNUtils::Variables::Cluster::SECOND_LAMBDA
bool SECOND_LAMBDA(const xAOD::TauJet &, const xAOD::CaloVertexedTopoCluster &cluster, double &out)
Definition: TauGNNUtils.cxx:846
TauGNNUtils::Variables::ClustersMeanSecondLambda
bool ClustersMeanSecondLambda(const xAOD::TauJet &tau, double &out)
Definition: TauGNNUtils.cxx:469
TauGNNUtils::Variables::Cluster::pt_jetseed_log
bool pt_jetseed_log(const xAOD::TauJet &tau, const xAOD::CaloVertexedTopoCluster &, double &out)
Definition: TauGNNUtils.cxx:826
TauGNNUtils::GNNVarCalc::m_track_map
std::unordered_map< std::string, TrackCalc > m_track_map
Definition: TauGNNUtils.h:69
TauGNNUtils::Variables::leadTrackDeltaEta
bool leadTrackDeltaEta(const xAOD::TauJet &tau, double &out)
Definition: TauGNNUtils.cxx:376
TauGNNUtils::Variables::Track::numberOfSCTSharedHits
bool numberOfSCTSharedHits(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:688
TauGNNUtils::Variables::mEflowApprox
bool mEflowApprox(const xAOD::TauJet &tau, double &out)
Definition: TauGNNUtils.cxx:316
TauGNNUtils::Variables::Track::trackPt
bool trackPt(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:483
TauGNNUtils::Variables::ClustersMeanPresamplerFrac
bool ClustersMeanPresamplerFrac(const xAOD::TauJet &tau, double &out)
Definition: TauGNNUtils.cxx:462
xAOD::TauJet_v3::detail
bool detail(TauJetParameters::Detail detail, int &value) const
Get and set values of common details variables via enum.
Definition: TauJet_v3.cxx:264
TauGNNUtils::Variables::Track::dPhiJetSeedAxis
bool dPhiJetSeedAxis(const xAOD::TauJet &tau, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:554
xAOD::TauTrack_v1::pt
virtual double pt() const
The transverse momentum ( ) of the particle.
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
TauGNNUtils::Variables::SumPtTrkFrac
bool SumPtTrkFrac(const xAOD::TauJet &tau, double &out)
Definition: TauGNNUtils.cxx:294
TauGNNUtils::GNNVarCalc::m_cluster_map
std::unordered_map< std::string, ClusterCalc > m_cluster_map
Definition: TauGNNUtils.h:70
TauGNNUtils::Variables::Track::numberOfPixelHits
bool numberOfPixelHits(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:660
TauGNNUtils::Variables::Cluster::SECOND_R
bool SECOND_R(const xAOD::TauJet &, const xAOD::CaloVertexedTopoCluster &cluster, double &out)
Definition: TauGNNUtils.cxx:841
TauGNNUtils::Variables::Track::nSCTHits
bool nSCTHits(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:574
TauGNNUtils::Variables::Cluster::e
bool e(const xAOD::TauJet &, const xAOD::CaloVertexedTopoCluster &cluster, double &out)
Definition: TauGNNUtils.cxx:903
TauGNNUtils::Variables::Track::qOverP
bool qOverP(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:760
TauGNNUtils::Variables::sumEMCellEtOverLeadTrkPt
bool sumEMCellEtOverLeadTrkPt(const xAOD::TauJet &tau, double &out)
Definition: TauGNNUtils.cxx:287
TauGNNUtils::Variables::Track::nPixelHitsPlusDeadSensors
bool nPixelHitsPlusDeadSensors(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:590
TauGNNUtils::Variables::Track::numberOfPixelSharedHits
bool numberOfPixelSharedHits(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:667
TauGNNUtils::Variables::dRmax
bool dRmax(const xAOD::TauJet &tau, double &out)
Definition: TauGNNUtils.cxx:323
TauGNNUtils::Variables::EMPOverTrkSysP
bool EMPOverTrkSysP(const xAOD::TauJet &tau, double &out)
Definition: TauGNNUtils.cxx:301
TauGNNUtils::Variables::Track::theta
bool theta(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:765
TauGNNUtils::GNNVarCalc::insert
void insert(const std::string &name, ScalarCalc func, const std::vector< std::string > &scalar_vars)
Definition: TauGNNUtils.cxx:84
TauGNNUtils::Variables::Track::numberOfContribPixelLayers
bool numberOfContribPixelLayers(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:740
TauGNNUtils::Variables::Cluster::CENTER_MAG
bool CENTER_MAG(const xAOD::TauJet &, const xAOD::CaloVertexedTopoCluster &cluster, double &out)
Definition: TauGNNUtils.cxx:927
TauGNNUtils::Variables::etOverPtLeadTrk
bool etOverPtLeadTrk(const xAOD::TauJet &tau, double &out)
Definition: TauGNNUtils.cxx:266
TauGNNUtils::Variables::Track::fakeScoreRNN
bool fakeScoreRNN(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:646
TauGNNUtils::Variables::Track::pt_log
bool pt_log(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:478
TauGNNUtils::Variables::leadTrackProbNNorHT
bool leadTrackProbNNorHT(const xAOD::TauJet &tau, double &out)
Definition: TauGNNUtils.cxx:390
TauGNNUtils::Variables::ClustersMeanCenterLambda
bool ClustersMeanCenterLambda(const xAOD::TauJet &tau, double &out)
Definition: TauGNNUtils.cxx:441
TauGNNUtils::Variables::Track::nSCTHitsPlusDeadSensors
bool nSCTHitsPlusDeadSensors(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:598
TauGNNUtils::Variables::Track::numberOfTRTHighThresholdHits
bool numberOfTRTHighThresholdHits(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:702
xAOD::TauJet_v3::vertex
const Vertex * vertex() const
xAOD::numberOfSCTDeadSensors
@ numberOfSCTDeadSensors
number of dead SCT sensors crossed [unit8_t].
Definition: TrackingPrimitives.h:274
xAOD::TauTrack_v1
Definition: TauTrack_v1.h:27
TauGNNUtils::Variables::Track::eProbabilityNN
bool eProbabilityNN(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:613
xAOD::TauJet_v3::p4
virtual FourMom_t p4() const
The full 4-momentum of the particle.
Definition: TauJet_v3.cxx:96
TauGNNUtils::Variables::Track::conversionScoreRNN
bool conversionScoreRNN(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:640
GlobalVariables.Variables
Variables
Definition: GlobalVariables.py:275
TauGNNUtils::GNNVarCalc::GNNVarCalc
GNNVarCalc()
Definition: TauGNNUtils.cxx:14
HelperFunctions.h
RunTileMonitoring.clusters
clusters
Definition: RunTileMonitoring.py:133
TauGNNUtils::Variables::Cluster::FIRST_ENG_DENS
bool FIRST_ENG_DENS(const xAOD::TauJet &, const xAOD::CaloVertexedTopoCluster &cluster, double &out)
Definition: TauGNNUtils.cxx:913
TauGNNUtils::Variables::absEta
bool absEta(const xAOD::TauJet &tau, double &out)
Definition: TauGNNUtils.cxx:245
xAOD::eProbabilityHT
@ eProbabilityHT
Electron probability from High Threshold (HT) information [float].
Definition: TrackingPrimitives.h:302
TauGNNUtils::Variables::Cluster::SECOND_LAMBDAOverClustersMeanSecondLambda
bool SECOND_LAMBDAOverClustersMeanSecondLambda(const xAOD::TauJet &tau, const xAOD::CaloVertexedTopoCluster &cluster, double &out)
Definition: TauGNNUtils.cxx:856
TauGNNUtils::Variables::Track::pt_tau_log
bool pt_tau_log(const xAOD::TauJet &tau, const xAOD::TauTrack &, double &out)
Definition: TauGNNUtils.cxx:498
TauGNNUtils::Variables::pt
bool pt(const xAOD::TauJet &tau, double &out)
Definition: TauGNNUtils.cxx:344
xAOD::numberOfContribPixelLayers
@ numberOfContribPixelLayers
number of contributing layers of the pixel detector [unit8_t].
Definition: TrackingPrimitives.h:231
xAOD::numberOfSCTHits
@ numberOfSCTHits
number of hits in SCT [unit8_t].
Definition: TrackingPrimitives.h:269
TauGNNUtils::Variables::Track::z0TJVA
bool z0TJVA(const xAOD::TauJet &tau, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:770
TauGNNUtils::Variables::Track::numberOfTRTHits
bool numberOfTRTHits(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:709
Track
Definition: TriggerChamberClusterOnTrackCreator.h:21
TauGNNUtils::Variables::Track::trackPhi
bool trackPhi(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:493
merge.status
status
Definition: merge.py:16
xAOD::numberOfPixelDeadSensors
@ numberOfPixelDeadSensors
number of dead pixel sensors crossed [unit8_t].
Definition: TrackingPrimitives.h:267
xAOD::TauTrack_v1::track
const TrackParticle * track() const
TauGNNUtils::Variables::Track::d0TJVA
bool d0TJVA(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:528
xAOD::track
@ track
Definition: TrackingPrimitives.h:513
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
TauGNNUtils::Variables::Track::z0sinThetaTJVA_abs_log
bool z0sinThetaTJVA_abs_log(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:513
xAOD::CaloVertexedTopoCluster
Evaluate cluster kinematics with a different vertex / signal state.
Definition: Event/xAOD/xAODCaloEvent/xAODCaloEvent/CaloVertexedTopoCluster.h:38
xAOD::TauJet_v3::ptIntermediateAxis
double ptIntermediateAxis() const
TauGNNUtils::Variables::ptDetectorAxis
bool ptDetectorAxis(const xAOD::TauJet &tau, double &out)
Definition: TauGNNUtils.cxx:354
TauGNNUtils::Variables::Track::dEta
bool dEta(const xAOD::TauJet &tau, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:538
xAOD::TauJetParameters::PSSFraction
@ PSSFraction
Definition: TauDefs.h:277
beamspotnt.calc
calc
Definition: bin/beamspotnt.py:1251
TauGNNUtils::Variables::Track::numberOfInnermostPixelLayerHits
bool numberOfInnermostPixelLayerHits(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:653
TauGNNUtils::Variables::Cluster::dEta
bool dEta(const xAOD::TauJet &tau, const xAOD::CaloVertexedTopoCluster &cluster, double &out)
Definition: TauGNNUtils.cxx:831
xAOD::TauJet_v3::allTracks
std::vector< const TauTrack * > allTracks() const
Get the v<const pointer> to all tracks associated with this tau, regardless of classification.
Definition: TauJet_v3.cxx:482
TauGNNUtils::Variables::Cluster::pt_tau_log
bool pt_tau_log(const xAOD::TauJet &tau, const xAOD::CaloVertexedTopoCluster &, double &out)
Definition: TauGNNUtils.cxx:821
TauGNNUtils::Variables::Track::d0SigTJVA
bool d0SigTJVA(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:533
TauGNNUtils::Variables::Track::nIBLHitsAndExp
bool nIBLHitsAndExp(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:582
TauGNNUtils::Variables::Track::trackEta
bool trackEta(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:488
xAOD::numberOfInnermostPixelLayerHits
@ numberOfInnermostPixelLayerHits
these are the hits in the 0th pixel barrel layer
Definition: TrackingPrimitives.h:238
SG::ConstAccessor::withDefault
const_reference_type withDefault(const ELT &e, const T &deflt) const
Fetch the variable for one element, as a const reference, with a default.
TauGNNUtils::Variables::Track::log_sumpt2_PV0
bool log_sumpt2_PV0(const xAOD::TauJet &tau, const xAOD::TauTrack &, double &out)
Definition: TauGNNUtils.cxx:804
TauGNNUtils::GNNVarCalc::m_scalar_map
std::unordered_map< std::string, ScalarCalc > m_scalar_map
Definition: TauGNNUtils.h:68