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