ATLAS Offline Software
TauJetRNNUtils.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 
9 #define GeV 1000
10 
11 namespace TauJetRNNUtils {
12 
13 VarCalc::VarCalc() : asg::AsgMessaging("TauJetRNNUtils::VarCalc") {
14 }
15 
16 bool VarCalc::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 VarCalc::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 
36  // Retrieve calculator function
37  TrackCalc func = nullptr;
38  try {
39  func = m_track_map.at(name);
40  } catch (const std::out_of_range &e) {
41  ATH_MSG_ERROR("Variable '" << name << "' not defined");
42  throw;
43  }
44 
45  // Calculate variables for selected tracks
46  bool success = true;
47  double value;
48  for (const auto *const trk : tracks) {
49  success = success && func(tau, *trk, value);
50  out.push_back(value);
51  }
52 
53  return success;
54 }
55 
56 bool VarCalc::compute(const std::string &name, const xAOD::TauJet &tau,
57  const std::vector<xAOD::CaloVertexedTopoCluster> &clusters,
58  std::vector<double> &out) const {
59  out.clear();
60 
61  // Retrieve calculator function
62  ClusterCalc func = nullptr;
63  try {
64  func = m_cluster_map.at(name);
65  } catch (const std::out_of_range &e) {
66  ATH_MSG_ERROR("Variable '" << name << "' not defined");
67  throw;
68  }
69 
70  // Calculate variables for selected clusters
71  bool success = true;
72  double value;
73  for (const xAOD::CaloVertexedTopoCluster& cluster : clusters) {
74  success = success && func(tau, cluster, value);
75  out.push_back(value);
76  }
77 
78  return success;
79 }
80 
81 void VarCalc::insert(const std::string &name, ScalarCalc func, const std::vector<std::string>& scalar_vars) {
82  if (std::find(scalar_vars.begin(), scalar_vars.end(), name) == scalar_vars.end()) {
83  return;
84  }
85  if (!func) {
86  throw std::invalid_argument("Nullptr passed to VarCalc::insert");
87  }
88  m_scalar_map[name] = func;
89 }
90 
91 void VarCalc::insert(const std::string &name, TrackCalc func, const std::vector<std::string>& track_vars) {
92  if (std::find(track_vars.begin(), track_vars.end(), name) == track_vars.end()) {
93  return;
94  }
95  if (!func) {
96  throw std::invalid_argument("Nullptr passed to VarCalc::insert");
97  }
98  m_track_map[name] = func;
99 }
100 
101 void VarCalc::insert(const std::string &name, ClusterCalc func, const std::vector<std::string>& cluster_vars) {
102  if (std::find(cluster_vars.begin(), cluster_vars.end(), name) == cluster_vars.end()) {
103  return;
104  }
105  if (!func) {
106  throw std::invalid_argument("Nullptr passed to VarCalc::insert");
107  }
108  m_cluster_map[name] = func;
109 }
110 
111 std::unique_ptr<VarCalc> get_calculator(const std::vector<std::string>& scalar_vars,
112  const std::vector<std::string>& track_vars,
113  const std::vector<std::string>& cluster_vars,
114  bool useTRT) {
115  auto calc = std::make_unique<VarCalc>();
116 
117  // Scalar variable calculator functions
118  calc->insert("centFrac", Variables::centFrac, scalar_vars);
119  calc->insert("etOverPtLeadTrk", Variables::etOverPtLeadTrk, scalar_vars);
120  calc->insert("innerTrkAvgDist", Variables::innerTrkAvgDist, scalar_vars);
121  calc->insert("absipSigLeadTrk", Variables::absipSigLeadTrk, scalar_vars);
122  calc->insert("SumPtTrkFrac", Variables::SumPtTrkFrac, scalar_vars);
123  calc->insert("EMPOverTrkSysP", Variables::EMPOverTrkSysP, scalar_vars);
124  calc->insert("ptRatioEflowApprox", Variables::ptRatioEflowApprox, scalar_vars);
125  calc->insert("mEflowApprox", Variables::mEflowApprox, scalar_vars);
126  calc->insert("dRmax", Variables::dRmax, scalar_vars);
127  calc->insert("trFlightPathSig", Variables::trFlightPathSig, scalar_vars);
128  calc->insert("massTrkSys", Variables::massTrkSys, scalar_vars);
129  calc->insert("pt", Variables::pt, scalar_vars);
130  calc->insert("pt_tau_log", Variables::pt_tau_log, scalar_vars);
131  calc->insert("ptDetectorAxis", Variables::ptDetectorAxis, scalar_vars);
132  //---added for the eVeto
133  calc->insert("ptJetSeed_log", Variables::ptJetSeed_log, scalar_vars);
134  calc->insert("absleadTrackEta", Variables::absleadTrackEta, scalar_vars);
135  calc->insert("leadTrackDeltaEta", Variables::leadTrackDeltaEta, scalar_vars);
136  calc->insert("leadTrackDeltaPhi", Variables::leadTrackDeltaPhi, scalar_vars);
137  calc->insert("leadTrackProbNNorHT", useTRT ? Variables::leadTrackProbNNorHT : Variables::leadTrackProbNNorHT_noTRT, scalar_vars);
138  calc->insert("EMFracFixed", Variables::EMFracFixed, scalar_vars);
139  calc->insert("etHotShotWinOverPtLeadTrk", Variables::etHotShotWinOverPtLeadTrk, scalar_vars);
140  calc->insert("hadLeakFracFixed", Variables::hadLeakFracFixed, scalar_vars);
141  calc->insert("PSFrac", Variables::PSFrac, scalar_vars);
142  calc->insert("ClustersMeanCenterLambda", Variables::ClustersMeanCenterLambda, scalar_vars);
143  calc->insert("ClustersMeanFirstEngDens", Variables::ClustersMeanFirstEngDens, scalar_vars);
144  calc->insert("ClustersMeanPresamplerFrac", Variables::ClustersMeanPresamplerFrac, scalar_vars);
145 
146  // Track variable calculator functions
147  calc->insert("pt_log", Variables::Track::pt_log, track_vars);
148  calc->insert("pt_tau_log", Variables::Track::pt_tau_log, track_vars);
149  calc->insert("pt_jetseed_log", Variables::Track::pt_jetseed_log, track_vars);
150  calc->insert("d0_abs_log", Variables::Track::d0_abs_log, track_vars);
151  calc->insert("z0sinThetaTJVA_abs_log", Variables::Track::z0sinThetaTJVA_abs_log, track_vars);
152  calc->insert("z0sinthetaTJVA", Variables::Track::z0sinthetaTJVA, track_vars);
153  calc->insert("z0sinthetaSigTJVA", Variables::Track::z0sinthetaSigTJVA, track_vars);
154  calc->insert("d0TJVA", Variables::Track::d0TJVA, track_vars);
155  calc->insert("d0SigTJVA", Variables::Track::d0SigTJVA, track_vars);
156  calc->insert("dEta", Variables::Track::dEta, track_vars);
157  calc->insert("dPhi", Variables::Track::dPhi, track_vars);
158  calc->insert("nInnermostPixelHits", Variables::Track::nInnermostPixelHits, track_vars);
159  calc->insert("nPixelHits", Variables::Track::nPixelHits, track_vars);
160  calc->insert("nSCTHits", Variables::Track::nSCTHits, track_vars);
161  calc->insert("nIBLHitsAndExp", Variables::Track::nIBLHitsAndExp, track_vars);
162  calc->insert("nPixelHitsPlusDeadSensors", Variables::Track::nPixelHitsPlusDeadSensors, track_vars);
163  calc->insert("nSCTHitsPlusDeadSensors", Variables::Track::nSCTHitsPlusDeadSensors, track_vars);
164  calc->insert("eProbabilityNNorHT", useTRT ? Variables::Track::eProbabilityNNorHT : Variables::Track::eProbabilityNNorHT_noTRT, track_vars);
165 
166  // Cluster variable calculator functions
167  calc->insert("et_log", Variables::Cluster::et_log, cluster_vars);
168  calc->insert("pt_tau_log", Variables::Cluster::pt_tau_log, cluster_vars);
169  calc->insert("pt_jetseed_log", Variables::Cluster::pt_jetseed_log, cluster_vars);
170  calc->insert("dEta", Variables::Cluster::dEta, cluster_vars);
171  calc->insert("dPhi", Variables::Cluster::dPhi, cluster_vars);
172  calc->insert("SECOND_R", Variables::Cluster::SECOND_R, cluster_vars);
173  calc->insert("SECOND_LAMBDA", Variables::Cluster::SECOND_LAMBDA, cluster_vars);
174  calc->insert("CENTER_LAMBDA", Variables::Cluster::CENTER_LAMBDA, cluster_vars);
175  //---added for the eVeto
176  calc->insert("SECOND_LAMBDAOverClustersMeanSecondLambda", Variables::Cluster::SECOND_LAMBDAOverClustersMeanSecondLambda, cluster_vars);
177  calc->insert("CENTER_LAMBDAOverClustersMeanCenterLambda", Variables::Cluster::CENTER_LAMBDAOverClustersMeanCenterLambda, cluster_vars);
178  calc->insert("FirstEngDensOverClustersMeanFirstEngDens" , Variables::Cluster::FirstEngDensOverClustersMeanFirstEngDens, cluster_vars);
179 
180  return calc;
181 }
182 
183 
184 namespace Variables {
186 
187 bool centFrac(const xAOD::TauJet &tau, double &out) {
188  float centFrac;
189  const auto success = tau.detail(TauDetail::centFrac, centFrac);
190  out = std::min(centFrac, 1.0f);
191  return success;
192 }
193 
194 bool etOverPtLeadTrk(const xAOD::TauJet &tau, double &out) {
195  float etOverPtLeadTrk;
196  const auto success = tau.detail(TauDetail::etOverPtLeadTrk, etOverPtLeadTrk);
197  out = std::log10(std::max(etOverPtLeadTrk, 0.1f));
198  return success;
199 }
200 
201 bool innerTrkAvgDist(const xAOD::TauJet &tau, double &out) {
202  float innerTrkAvgDist;
203  const auto success = tau.detail(TauDetail::innerTrkAvgDist, innerTrkAvgDist);
205  return success;
206 }
207 
208 bool absipSigLeadTrk(const xAOD::TauJet &tau, double &out) {
209  float ipSigLeadTrk = (tau.nTracks()>0) ? tau.track(0)->d0SigTJVA() : 0.;
210  out = std::min(std::abs(ipSigLeadTrk), 30.0f);
211  return true;
212 }
213 
214 bool SumPtTrkFrac(const xAOD::TauJet &tau, double &out) {
215  float SumPtTrkFrac;
216  const auto success = tau.detail(TauDetail::SumPtTrkFrac, SumPtTrkFrac);
217  out = SumPtTrkFrac;
218  return success;
219 }
220 
221 bool EMPOverTrkSysP(const xAOD::TauJet &tau, double &out) {
222  float EMPOverTrkSysP;
223  const auto success = tau.detail(TauDetail::EMPOverTrkSysP, EMPOverTrkSysP);
224  out = std::log10(std::max(EMPOverTrkSysP, 1e-3f));
225  return success;
226 }
227 
228 bool ptRatioEflowApprox(const xAOD::TauJet &tau, double &out) {
229  float ptRatioEflowApprox;
230  const auto success = tau.detail(TauDetail::ptRatioEflowApprox, ptRatioEflowApprox);
232  return success;
233 }
234 
235 bool mEflowApprox(const xAOD::TauJet &tau, double &out) {
236  float mEflowApprox;
237  const auto success = tau.detail(TauDetail::mEflowApprox, mEflowApprox);
238  out = std::log10(std::max(mEflowApprox, 140.0f));
239  return success;
240 }
241 
242 bool dRmax(const xAOD::TauJet &tau, double &out) {
243  float dRmax;
244  const auto success = tau.detail(TauDetail::dRmax, dRmax);
245  out = dRmax;
246  return success;
247 }
248 
249 bool trFlightPathSig(const xAOD::TauJet &tau, double &out) {
250  float trFlightPathSig;
251  const auto success = tau.detail(TauDetail::trFlightPathSig, trFlightPathSig);
252  out = std::log10(std::max(trFlightPathSig, 0.01f));
253  return success;
254 }
255 
256 bool massTrkSys(const xAOD::TauJet &tau, double &out) {
257  float massTrkSys;
258  const auto success = tau.detail(TauDetail::massTrkSys, massTrkSys);
259  out = std::log10(std::max(massTrkSys, 140.0f));
260  return success;
261 }
262 
263 bool pt(const xAOD::TauJet &tau, double &out) {
264  out = std::log10(std::min(tau.pt() / GeV, 100.0));
265  return true;
266 }
267 
268 bool pt_tau_log(const xAOD::TauJet &tau, double &out) {
269  out = std::log10(std::max(tau.pt() / GeV, 1e-6));
270  return true;
271 }
272 
273 bool ptDetectorAxis(const xAOD::TauJet &tau, double &out) {
274  out = std::log10(std::min(tau.ptDetectorAxis() / GeV, 100.0));
275  return true;
276 }
277 
278 bool ptJetSeed_log(const xAOD::TauJet &tau, double &out) {
279  out = std::log10(std::max(tau.ptJetSeed(), 1e-3));
280  return true;
281 }
282 
283 
284 bool absleadTrackEta(const xAOD::TauJet &tau, double &out){
285  static const SG::ConstAccessor<float> acc_absEtaLeadTrack("ABS_ETA_LEAD_TRACK");
286  float absEtaLeadTrack = acc_absEtaLeadTrack(tau);
287  out = std::max(0.f, absEtaLeadTrack);
288  return true;
289 }
290 
291 bool leadTrackDeltaEta(const xAOD::TauJet &tau, double &out){
292  static const SG::ConstAccessor<float> acc_absDeltaEta("TAU_ABSDELTAETA");
293  float absDeltaEta = acc_absDeltaEta(tau);
294  out = std::max(0.f, absDeltaEta);
295  return true;
296 }
297 
298 bool leadTrackDeltaPhi(const xAOD::TauJet &tau, double &out){
299  static const SG::ConstAccessor<float> acc_absDeltaPhi("TAU_ABSDELTAPHI");
300  float absDeltaPhi = acc_absDeltaPhi(tau);
301  out = std::max(0.f, absDeltaPhi);
302  return true;
303 }
304 
305 bool leadTrackProbNNorHT(const xAOD::TauJet &tau, double &out){
306  auto tracks = tau.allTracks();
307 
308  // Sort tracks in descending pt order
309  if (!tracks.empty()) {
310  auto cmp_pt = [](const xAOD::TauTrack *lhs, const xAOD::TauTrack *rhs) {
311  return lhs->pt() > rhs->pt();
312  };
313  std::sort(tracks.begin(), tracks.end(), cmp_pt);
314 
315  const xAOD::TauTrack* tauLeadTrack = tracks.at(0);
316  const xAOD::TrackParticle* xTrackParticle = tauLeadTrack->track();
318  static const SG::ConstAccessor<float> acc_eProbabilityNN("eProbabilityNN");
319  float eProbabilityNN = acc_eProbabilityNN(*xTrackParticle);
320  out = (tauLeadTrack->pt()>2000.) ? eProbabilityNN : eProbabilityHT;
321  }
322  else {
323  out = 0.;
324  }
325  return true;
326 }
327 
328 bool leadTrackProbNNorHT_noTRT(const xAOD::TauJet &tau, double &out){
329  auto tracks = tau.allTracks();
330 
331  // Sort tracks in descending pt order
332  if (!tracks.empty()) {
333  auto cmp_pt = [](const xAOD::TauTrack *lhs, const xAOD::TauTrack *rhs) {
334  return lhs->pt() > rhs->pt();
335  };
336  std::sort(tracks.begin(), tracks.end(), cmp_pt);
337 
338  const xAOD::TauTrack* tauLeadTrack = tracks.at(0);
339  // Dummy values for eProbNN = 0.5, eProbHT = 1.
340  out = (tauLeadTrack->pt()>2000.) ? 0.5 : 1.;
341  }
342  else {
343  out = 0.;
344  }
345  return true;
346 }
347 
348 
349 
350 bool EMFracFixed(const xAOD::TauJet &tau, double &out){
351  static const SG::ConstAccessor<float> acc_emFracFixed("EMFracFixed");
352  float emFracFixed = acc_emFracFixed(tau);
353  out = std::max(emFracFixed, 0.0f);
354  return true;
355 }
356 
357 bool etHotShotWinOverPtLeadTrk(const xAOD::TauJet &tau, double &out){
358  static const SG::ConstAccessor<float> acc_etHotShotWinOverPtLeadTrk("etHotShotWinOverPtLeadTrk");
359  float etHotShotWinOverPtLeadTrk = acc_etHotShotWinOverPtLeadTrk(tau);
361  out = std::log10(out);
362  return true;
363 }
364 
365 bool hadLeakFracFixed(const xAOD::TauJet &tau, double &out){
366  static const SG::ConstAccessor<float> acc_hadLeakFracFixed("hadLeakFracFixed");
367  float hadLeakFracFixed = acc_hadLeakFracFixed(tau);
369  return true;
370 }
371 
372 bool PSFrac(const xAOD::TauJet &tau, double &out){
373  float PSFrac;
374  const auto success = tau.detail(TauDetail::PSSFraction, PSFrac);
375  out = std::max(0.f,PSFrac);
376  return success;
377 }
378 
379 bool ClustersMeanCenterLambda(const xAOD::TauJet &tau, double &out){
383  return success;
384 }
385 
386 bool ClustersMeanEMProbability(const xAOD::TauJet &tau, double &out){
390  return success;
391 }
392 
393 bool ClustersMeanFirstEngDens(const xAOD::TauJet &tau, double &out){
397  return success;
398 }
399 
400 bool ClustersMeanPresamplerFrac(const xAOD::TauJet &tau, double &out){
404  return success;
405 }
406 
407 bool ClustersMeanSecondLambda(const xAOD::TauJet &tau, double &out){
411  return success;
412 }
413 
414 namespace Track {
415 
416 bool pt_log(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, double &out) {
417  out = std::log10(track.pt());
418  return true;
419 }
420 
421 bool pt_tau_log(const xAOD::TauJet &tau, const xAOD::TauTrack& /*track*/, double &out) {
422  out = std::log10(std::max(tau.pt(), 1e-6));
423  return true;
424 }
425 
426 bool pt_jetseed_log(const xAOD::TauJet &tau, const xAOD::TauTrack& /*track*/, double &out) {
427  out = std::log10(tau.ptJetSeed());
428  return true;
429 }
430 
431 bool z0sinThetaTJVA_abs_log(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, double &out) {
432  out = std::log10(std::abs(track.z0sinthetaTJVA()) + 1e-6);
433  return true;
434 }
435 
436 bool d0_abs_log(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, double &out) {
437  out = std::log10(std::abs(track.d0TJVA()) + 1e-6);
438  return true;
439 }
440 
441 bool z0sinthetaTJVA(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, double &out) {
442  out = track.z0sinthetaTJVA();
443  return true;
444 }
445 
446 bool z0sinthetaSigTJVA(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, double &out) {
447  out = track.z0sinthetaSigTJVA();
448  return true;
449 }
450 
451 bool d0TJVA(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, double &out) {
452  out = track.d0TJVA();
453  return true;
454 }
455 
456 bool d0SigTJVA(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, double &out) {
457  out = track.d0SigTJVA();
458  return true;
459 }
460 
461 bool dEta(const xAOD::TauJet &tau, const xAOD::TauTrack &track, double &out) {
462  out = track.eta() - tau.eta();
463  return true;
464 }
465 
466 bool dPhi(const xAOD::TauJet &tau, const xAOD::TauTrack &track, double &out) {
467  out = track.p4().DeltaPhi(tau.p4());
468  return true;
469 }
470 
471 bool nInnermostPixelHits(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, double &out) {
472  uint8_t inner_pixel_hits;
473  const auto success = track.track()->summaryValue(inner_pixel_hits, xAOD::numberOfInnermostPixelLayerHits);
474  out = inner_pixel_hits;
475  return success;
476 }
477 
478 bool nPixelHits(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, double &out) {
479  uint8_t pixel_hits;
480  const auto success = track.track()->summaryValue(pixel_hits, xAOD::numberOfPixelHits);
481  out = pixel_hits;
482  return success;
483 }
484 
485 bool nSCTHits(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, double &out) {
486  uint8_t sct_hits;
487  const auto success = track.track()->summaryValue(sct_hits, xAOD::numberOfSCTHits);
488  out = sct_hits;
489  return success;
490 }
491 
492 // same as in tau track classification for trigger
493 bool nIBLHitsAndExp(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, double &out) {
494  uint8_t inner_pixel_hits, inner_pixel_exp;
495  const auto success1 = track.track()->summaryValue(inner_pixel_hits, xAOD::numberOfInnermostPixelLayerHits);
496  const auto success2 = track.track()->summaryValue(inner_pixel_exp, xAOD::expectInnermostPixelLayerHit);
497  out = inner_pixel_exp ? inner_pixel_hits : 1.;
498  return success1 && success2;
499 }
500 
501 bool nPixelHitsPlusDeadSensors(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, double &out) {
502  uint8_t pixel_hits, pixel_dead;
503  const auto success1 = track.track()->summaryValue(pixel_hits, xAOD::numberOfPixelHits);
504  const auto success2 = track.track()->summaryValue(pixel_dead, xAOD::numberOfPixelDeadSensors);
505  out = pixel_hits + pixel_dead;
506  return success1 && success2;
507 }
508 
509 bool nSCTHitsPlusDeadSensors(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, double &out) {
510  uint8_t sct_hits, sct_dead;
511  const auto success1 = track.track()->summaryValue(sct_hits, xAOD::numberOfSCTHits);
512  const auto success2 = track.track()->summaryValue(sct_dead, xAOD::numberOfSCTDeadSensors);
513  out = sct_hits + sct_dead;
514  return success1 && success2;
515 }
516 
517 bool eProbabilityNNorHT(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, double &out) {
518  auto atrack = track.track();
519  float eProbabilityHT = atrack->summaryValue(eProbabilityHT, xAOD::eProbabilityHT);
520  static const SG::ConstAccessor<float> acc_eProbabilityNN("eProbabilityNN");
521  float eProbabilityNN = acc_eProbabilityNN(*atrack);
522  out = (atrack->pt()>2000.) ? eProbabilityNN : eProbabilityHT;
523  return true;
524 }
525 
526 bool eProbabilityNNorHT_noTRT(const xAOD::TauJet& /*tau*/, const xAOD::TauTrack &track, double &out) {
527  auto atrack = track.track();
528  // Dummy values for eProbNN = 0.5, eProbHT = 1
529  out = (atrack->pt()>2000.) ? 0.5 : 1.;
530  return true;
531 }
532 
533 } // namespace Track
534 
535 
536 namespace Cluster {
538 
539 bool et_log(const xAOD::TauJet& /*tau*/, const xAOD::CaloVertexedTopoCluster &cluster, double &out) {
540  out = std::log10(cluster.p4().Et());
541  return true;
542 }
543 
544 bool pt_tau_log(const xAOD::TauJet &tau, const xAOD::CaloVertexedTopoCluster& /*cluster*/, double &out) {
545  out = std::log10(std::max(tau.pt(), 1e-6));
546  return true;
547 }
548 
549 bool pt_jetseed_log(const xAOD::TauJet &tau, const xAOD::CaloVertexedTopoCluster& /*cluster*/, double &out) {
550  out = std::log10(tau.ptJetSeed());
551  return true;
552 }
553 
554 bool dEta(const xAOD::TauJet &tau, const xAOD::CaloVertexedTopoCluster &cluster, double &out) {
555  out = cluster.eta() - tau.eta();
556  return true;
557 }
558 
559 bool dPhi(const xAOD::TauJet &tau, const xAOD::CaloVertexedTopoCluster &cluster, double &out) {
560  out = cluster.p4().DeltaPhi(tau.p4());
561  return true;
562 }
563 
564 bool SECOND_R(const xAOD::TauJet& /*tau*/, const xAOD::CaloVertexedTopoCluster &cluster, double &out) {
565  const auto success = cluster.clust().retrieveMoment(MomentType::SECOND_R, out);
566  out = std::log10(out + 0.1);
567  return success;
568 }
569 
570 bool SECOND_LAMBDA(const xAOD::TauJet& /*tau*/, const xAOD::CaloVertexedTopoCluster &cluster, double &out) {
571  const auto success = cluster.clust().retrieveMoment(MomentType::SECOND_LAMBDA, out);
572  out = std::log10(out + 0.1);
573  return success;
574 }
575 
576 bool CENTER_LAMBDA(const xAOD::TauJet& /*tau*/, const xAOD::CaloVertexedTopoCluster &cluster, double &out) {
577  const auto success = cluster.clust().retrieveMoment(MomentType::CENTER_LAMBDA, out);
578  out = std::log10(out + 1e-6);
579  return success;
580 }
581 
583  static const SG::ConstAccessor<float> acc_ClustersMeanSecondLambda("ClustersMeanSecondLambda");
584  float ClustersMeanSecondLambda = acc_ClustersMeanSecondLambda(tau);
585  double secondLambda(0);
586  const auto success = cluster.clust().retrieveMoment(MomentType::SECOND_LAMBDA, secondLambda);
587  out = (ClustersMeanSecondLambda != 0.) ? secondLambda/ClustersMeanSecondLambda : 0.;
588  return success;
589 }
590 
592  static const SG::ConstAccessor<float> acc_ClustersMeanCenterLambda("ClustersMeanCenterLambda");
593  float ClustersMeanCenterLambda = acc_ClustersMeanCenterLambda(tau);
594  double centerLambda(0);
595  const auto success = cluster.clust().retrieveMoment(MomentType::CENTER_LAMBDA, centerLambda);
596  if (ClustersMeanCenterLambda == 0.){
597  out = 250.;
598  }else {
599  out = centerLambda/ClustersMeanCenterLambda;
600  }
601 
602  out = std::min(out, 250.);
603 
604  return success;
605 }
606 
607 
609  // the ClustersMeanFirstEngDens is the log10 of the energy weighted average of the First_ENG_DENS
610  // divided by ETot to make it dimension-less,
611  // so we need to evaluate the difference of log10(clusterFirstEngDens/clusterTotalEnergy) and the ClustersMeanFirstEngDens
612  double clusterFirstEngDens = 0.0;
613  bool status = cluster.clust().retrieveMoment(MomentType::FIRST_ENG_DENS, clusterFirstEngDens);
614  if (clusterFirstEngDens < 1e-6) clusterFirstEngDens = 1e-6;
615 
616  static const SG::ConstAccessor<float> acc_ClusterTotalEnergy("ClusterTotalEnergy");
617  float clusterTotalEnergy = acc_ClusterTotalEnergy(tau);
618  if (clusterTotalEnergy < 1e-6) clusterTotalEnergy = 1e-6;
619 
620  static const SG::ConstAccessor<float> acc_ClustersMeanFirstEngDens("ClustersMeanFirstEngDens");
621  float clustersMeanFirstEngDens = acc_ClustersMeanFirstEngDens(tau);
622 
623  out = std::log10(clusterFirstEngDens/clusterTotalEnergy) - clustersMeanFirstEngDens;
624 
625  return status;
626 }
627 
628 } // namespace Cluster
629 } // namespace Variables
630 } // namespace TauJetRNNUtils
TauJetRNNUtils::Variables::Track::eProbabilityNNorHT_noTRT
bool eProbabilityNNorHT_noTRT(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauJetRNNUtils.cxx:526
TauJetRNNUtils::Variables::Track::nSCTHitsPlusDeadSensors
bool nSCTHitsPlusDeadSensors(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauJetRNNUtils.cxx:509
AllowedVariables::e
e
Definition: AsgElectronSelectorTool.cxx:37
TauJetRNNUtils::Variables::Track::dPhi
bool dPhi(const xAOD::TauJet &tau, const xAOD::TauTrack &track, double &out)
Definition: TauJetRNNUtils.cxx:466
TauJetRNNUtils::Variables::Cluster::CENTER_LAMBDAOverClustersMeanCenterLambda
bool CENTER_LAMBDAOverClustersMeanCenterLambda(const xAOD::TauJet &tau, const xAOD::CaloVertexedTopoCluster &cluster, double &out)
Definition: TauJetRNNUtils.cxx:591
xAOD::CaloVertexedClusterBase::p4
virtual FourMom_t p4() const final
The full 4-momentum of the particle.
Definition: Event/xAOD/xAODCaloEvent/xAODCaloEvent/CaloVertexedClusterBase.h:88
TauJetRNNUtils::Variables::dRmax
bool dRmax(const xAOD::TauJet &tau, double &out)
Definition: TauJetRNNUtils.cxx:242
TauJetRNNUtils::Variables::trFlightPathSig
bool trFlightPathSig(const xAOD::TauJet &tau, double &out)
Definition: TauJetRNNUtils.cxx:249
TauJetRNNUtils.h
xAOD::uint8_t
uint8_t
Definition: Muon_v1.cxx:558
find
std::string find(const std::string &s)
return a remapped string
Definition: hcg.cxx:135
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.
TauJetRNNUtils::Variables::SumPtTrkFrac
bool SumPtTrkFrac(const xAOD::TauJet &tau, double &out)
Definition: TauJetRNNUtils.cxx:214
max
constexpr double max()
Definition: ap_fixedTest.cxx:33
TauJetRNNUtils::Variables::Cluster::pt_jetseed_log
bool pt_jetseed_log(const xAOD::TauJet &tau, const xAOD::CaloVertexedTopoCluster &, double &out)
Definition: TauJetRNNUtils.cxx:549
TauJetRNNUtils::get_calculator
std::unique_ptr< VarCalc > get_calculator(const std::vector< std::string > &scalar_vars, const std::vector< std::string > &track_vars, const std::vector< std::string > &cluster_vars, bool useTRT)
Definition: TauJetRNNUtils.cxx:111
min
constexpr double min()
Definition: ap_fixedTest.cxx:26
TauJetRNNUtils::Variables::Track::d0TJVA
bool d0TJVA(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauJetRNNUtils.cxx:451
xAOD::TrackParticle_v1::summaryValue
bool summaryValue(uint8_t &value, const SummaryType &information) const
Accessor for TrackSummary values.
Definition: TrackParticle_v1.cxx:737
TauJetRNNUtils::Variables::Track::nIBLHitsAndExp
bool nIBLHitsAndExp(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauJetRNNUtils.cxx:493
TauJetRNNUtils::Variables::ClustersMeanCenterLambda
bool ClustersMeanCenterLambda(const xAOD::TauJet &tau, double &out)
Definition: TauJetRNNUtils.cxx:379
xAOD::TauJet_v3::nTracks
size_t nTracks(TauJetParameters::TauTrackFlag flag=TauJetParameters::TauTrackFlag::classifiedCharged) const
Definition: TauJet_v3.cxx:488
asg
Definition: DataHandleTestTool.h:28
python.AthDsoLogger.out
out
Definition: AthDsoLogger.py:70
TauJetRNNUtils::Variables::ptJetSeed_log
bool ptJetSeed_log(const xAOD::TauJet &tau, double &out)
Definition: TauJetRNNUtils.cxx:278
TauJetRNNUtils::Variables::EMPOverTrkSysP
bool EMPOverTrkSysP(const xAOD::TauJet &tau, double &out)
Definition: TauJetRNNUtils.cxx:221
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
TauJetRNNUtils::Variables::ptDetectorAxis
bool ptDetectorAxis(const xAOD::TauJet &tau, double &out)
Definition: TauJetRNNUtils.cxx:273
SG::ConstAccessor< float >
TauJetRNNUtils::Variables::Track::pt_tau_log
bool pt_tau_log(const xAOD::TauJet &tau, const xAOD::TauTrack &, double &out)
Definition: TauJetRNNUtils.cxx:421
TauJetRNNUtils::Variables::Track::z0sinthetaSigTJVA
bool z0sinthetaSigTJVA(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauJetRNNUtils.cxx:446
xAOD::CaloVertexedClusterBase::clust
const CaloCluster & clust() const
Return the cluster being proxied,.
Definition: Event/xAOD/xAODCaloEvent/xAODCaloEvent/CaloVertexedClusterBase.h:69
xAOD::TauJet_v3::ptJetSeed
double ptJetSeed() const
xAOD::TauJet_v3::ptDetectorAxis
double ptDetectorAxis() const
TauJetRNNUtils::Variables::massTrkSys
bool massTrkSys(const xAOD::TauJet &tau, double &out)
Definition: TauJetRNNUtils.cxx:256
TauJetRNNUtils::Variables::ClustersMeanEMProbability
bool ClustersMeanEMProbability(const xAOD::TauJet &tau, double &out)
Definition: TauJetRNNUtils.cxx:386
TauJetRNNUtils::Variables::Cluster::CENTER_LAMBDA
bool CENTER_LAMBDA(const xAOD::TauJet &, const xAOD::CaloVertexedTopoCluster &cluster, double &out)
Definition: TauJetRNNUtils.cxx:576
TauJetRNNUtils::VarCalc::compute
bool compute(const std::string &name, const xAOD::TauJet &tau, double &out) const
Definition: TauJetRNNUtils.cxx:16
xAOD::TauJetParameters::ipSigLeadTrk
@ ipSigLeadTrk
Definition: TauDefs.h:160
xAOD::CaloCluster_v1::MomentType
MomentType
Enums to identify different moments.
Definition: CaloCluster_v1.h:123
TauJetRNNUtils::Variables::pt
bool pt(const xAOD::TauJet &tau, double &out)
Definition: TauJetRNNUtils.cxx:263
xAOD::TauJet_v3::pt
virtual double pt() const
The transverse momentum ( ) of the particle.
TauJetRNNUtils::Variables::Track::pt_log
bool pt_log(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauJetRNNUtils.cxx:416
xAOD::TauJetParameters::Detail
Detail
Enum for tau parameters - used mainly for backward compatibility with the analysis code.
Definition: TauDefs.h:156
TauJetRNNUtils::Variables::Track::d0_abs_log
bool d0_abs_log(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauJetRNNUtils.cxx:436
TauJetRNNUtils::Variables::absleadTrackEta
bool absleadTrackEta(const xAOD::TauJet &tau, double &out)
Definition: TauJetRNNUtils.cxx:284
TauJetRNNUtils
Definition: TauJetRNNUtils.cxx:11
TauJetRNNUtils::Variables::Track::dEta
bool dEta(const xAOD::TauJet &tau, const xAOD::TauTrack &track, double &out)
Definition: TauJetRNNUtils.cxx:461
TauJetRNNUtils::Variables::Cluster::dEta
bool dEta(const xAOD::TauJet &tau, const xAOD::CaloVertexedTopoCluster &cluster, double &out)
Definition: TauJetRNNUtils.cxx:554
TauJetRNNUtils::Variables::mEflowApprox
bool mEflowApprox(const xAOD::TauJet &tau, double &out)
Definition: TauJetRNNUtils.cxx:235
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
TauJetRNNUtils::VarCalc::TrackCalc
bool(*)(const xAOD::TauJet &, const xAOD::TauTrack &, double &) TrackCalc
Definition: TauJetRNNUtils.h:35
TauJetRNNUtils::Variables::Track::nPixelHitsPlusDeadSensors
bool nPixelHitsPlusDeadSensors(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauJetRNNUtils.cxx:501
TauJetRNNUtils::Variables::Cluster::SECOND_LAMBDAOverClustersMeanSecondLambda
bool SECOND_LAMBDAOverClustersMeanSecondLambda(const xAOD::TauJet &tau, const xAOD::CaloVertexedTopoCluster &cluster, double &out)
Definition: TauJetRNNUtils.cxx:582
TauJetRNNUtils::Variables::Cluster::dPhi
bool dPhi(const xAOD::TauJet &tau, const xAOD::CaloVertexedTopoCluster &cluster, double &out)
Definition: TauJetRNNUtils.cxx:559
Trk::eProbabilityNN
@ eProbabilityNN
Electron probability from NN.
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:217
xAOD::TauJet_v3
Class describing a tau jet.
Definition: TauJet_v3.h:41
TauJetRNNUtils::Variables::Track::nSCTHits
bool nSCTHits(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauJetRNNUtils.cxx:485
TauJetRNNUtils::Variables::leadTrackProbNNorHT_noTRT
bool leadTrackProbNNorHT_noTRT(const xAOD::TauJet &tau, double &out)
Definition: TauJetRNNUtils.cxx:328
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
TauJetRNNUtils::Variables::ClustersMeanPresamplerFrac
bool ClustersMeanPresamplerFrac(const xAOD::TauJet &tau, double &out)
Definition: TauJetRNNUtils.cxx:400
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
TauJetRNNUtils::Variables::Track::z0sinThetaTJVA_abs_log
bool z0sinThetaTJVA_abs_log(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauJetRNNUtils.cxx:431
TauJetRNNUtils::Variables::Track::eProbabilityNNorHT
bool eProbabilityNNorHT(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauJetRNNUtils.cxx:517
TauJetRNNUtils::Variables::ptRatioEflowApprox
bool ptRatioEflowApprox(const xAOD::TauJet &tau, double &out)
Definition: TauJetRNNUtils.cxx:228
TauJetRNNUtils::Variables::ClustersMeanFirstEngDens
bool ClustersMeanFirstEngDens(const xAOD::TauJet &tau, double &out)
Definition: TauJetRNNUtils.cxx:393
TauJetRNNUtils::VarCalc::m_cluster_map
std::unordered_map< std::string, ClusterCalc > m_cluster_map
Definition: TauJetRNNUtils.h:68
TauJetRNNUtils::Variables::Track::nPixelHits
bool nPixelHits(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauJetRNNUtils.cxx:478
TauJetRNNUtils::Variables::etOverPtLeadTrk
bool etOverPtLeadTrk(const xAOD::TauJet &tau, double &out)
Definition: TauJetRNNUtils.cxx:194
TauJetRNNUtils::Variables::Track::nInnermostPixelHits
bool nInnermostPixelHits(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauJetRNNUtils.cxx:471
TauJetRNNUtils::VarCalc::m_track_map
std::unordered_map< std::string, TrackCalc > m_track_map
Definition: TauJetRNNUtils.h:67
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
xAOD::TauTrack_v1::pt
virtual double pt() const
The transverse momentum ( ) of the particle.
TauJetRNNUtils::VarCalc::m_scalar_map
std::unordered_map< std::string, ScalarCalc > m_scalar_map
Definition: TauJetRNNUtils.h:66
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:240
TauJetRNNUtils::VarCalc::insert
void insert(const std::string &name, ScalarCalc func, const std::vector< std::string > &scalar_vars)
Definition: TauJetRNNUtils.cxx:81
TauJetRNNUtils::Variables::etHotShotWinOverPtLeadTrk
bool etHotShotWinOverPtLeadTrk(const xAOD::TauJet &tau, double &out)
Definition: TauJetRNNUtils.cxx:357
TauJetRNNUtils::Variables::Cluster::SECOND_LAMBDA
bool SECOND_LAMBDA(const xAOD::TauJet &, const xAOD::CaloVertexedTopoCluster &cluster, double &out)
Definition: TauJetRNNUtils.cxx:570
TauJetRNNUtils::Variables::leadTrackDeltaPhi
bool leadTrackDeltaPhi(const xAOD::TauJet &tau, double &out)
Definition: TauJetRNNUtils.cxx:298
TauGNNUtils::Variables::Cluster::FIRST_ENG_DENS
bool FIRST_ENG_DENS(const xAOD::TauJet &, const xAOD::CaloVertexedTopoCluster &cluster, float &out)
Definition: TauGNNUtils.cxx:788
TauJetRNNUtils::Variables::leadTrackDeltaEta
bool leadTrackDeltaEta(const xAOD::TauJet &tau, double &out)
Definition: TauJetRNNUtils.cxx:291
TauJetRNNUtils::VarCalc::ScalarCalc
bool(*)(const xAOD::TauJet &, double &) ScalarCalc
Definition: TauJetRNNUtils.h:32
TauJetRNNUtils::VarCalc::VarCalc
VarCalc()
Definition: TauJetRNNUtils.cxx:13
TauJetRNNUtils::Variables::pt_tau_log
bool pt_tau_log(const xAOD::TauJet &tau, double &out)
Definition: TauJetRNNUtils.cxx:268
TauJetRNNUtils::Variables::Cluster::SECOND_R
bool SECOND_R(const xAOD::TauJet &, const xAOD::CaloVertexedTopoCluster &cluster, double &out)
Definition: TauJetRNNUtils.cxx:564
TauJetRNNUtils::Variables::leadTrackProbNNorHT
bool leadTrackProbNNorHT(const xAOD::TauJet &tau, double &out)
Definition: TauJetRNNUtils.cxx:305
TauJetRNNUtils::Variables::EMFracFixed
bool EMFracFixed(const xAOD::TauJet &tau, double &out)
Definition: TauJetRNNUtils.cxx:350
TauJetRNNUtils::Variables::Cluster::et_log
bool et_log(const xAOD::TauJet &, const xAOD::CaloVertexedTopoCluster &cluster, double &out)
Definition: TauJetRNNUtils.cxx:539
TauJetRNNUtils::Variables::Track::d0SigTJVA
bool d0SigTJVA(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauJetRNNUtils.cxx:456
xAOD::numberOfSCTDeadSensors
@ numberOfSCTDeadSensors
number of dead SCT sensors crossed [unit8_t].
Definition: TrackingPrimitives.h:274
xAOD::TauTrack_v1
Definition: TauTrack_v1.h:27
TauJetRNNUtils::Variables::PSFrac
bool PSFrac(const xAOD::TauJet &tau, double &out)
Definition: TauJetRNNUtils.cxx:372
xAOD::TauJet_v3::p4
virtual FourMom_t p4() const
The full 4-momentum of the particle.
Definition: TauJet_v3.cxx:96
GlobalVariables.Variables
Variables
Definition: GlobalVariables.py:275
HelperFunctions.h
RunTileMonitoring.clusters
clusters
Definition: RunTileMonitoring.py:133
TauJetRNNUtils::Variables::Track::pt_jetseed_log
bool pt_jetseed_log(const xAOD::TauJet &tau, const xAOD::TauTrack &, double &out)
Definition: TauJetRNNUtils.cxx:426
xAOD::eProbabilityHT
@ eProbabilityHT
Electron probability from High Threshold (HT) information [float].
Definition: TrackingPrimitives.h:302
xAOD::numberOfSCTHits
@ numberOfSCTHits
number of hits in SCT [unit8_t].
Definition: TrackingPrimitives.h:269
TauJetRNNUtils::VarCalc::ClusterCalc
bool(*)(const xAOD::TauJet &, const xAOD::CaloVertexedTopoCluster &, double &) ClusterCalc
Definition: TauJetRNNUtils.h:38
TauJetRNNUtils::Variables::Cluster::FirstEngDensOverClustersMeanFirstEngDens
bool FirstEngDensOverClustersMeanFirstEngDens(const xAOD::TauJet &tau, const xAOD::CaloVertexedTopoCluster &cluster, double &out)
Definition: TauJetRNNUtils.cxx:608
TauJetRNNUtils::Variables::Track::z0sinthetaTJVA
bool z0sinthetaTJVA(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauJetRNNUtils.cxx:441
Track
Definition: TriggerChamberClusterOnTrackCreator.h:21
TauJetRNNUtils::Variables::absipSigLeadTrk
bool absipSigLeadTrk(const xAOD::TauJet &tau, double &out)
Definition: TauJetRNNUtils.cxx:208
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
xAOD::track
@ track
Definition: TrackingPrimitives.h:513
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
TauJetRNNUtils::Variables::innerTrkAvgDist
bool innerTrkAvgDist(const xAOD::TauJet &tau, double &out)
Definition: TauJetRNNUtils.cxx:201
xAOD::CaloVertexedTopoCluster
Evaluate cluster kinematics with a different vertex / signal state.
Definition: Event/xAOD/xAODCaloEvent/xAODCaloEvent/CaloVertexedTopoCluster.h:38
xAOD::TauJetParameters::PSSFraction
@ PSSFraction
Definition: TauDefs.h:277
beamspotnt.calc
calc
Definition: bin/beamspotnt.py:1251
TauJetRNNUtils::Variables::hadLeakFracFixed
bool hadLeakFracFixed(const xAOD::TauJet &tau, double &out)
Definition: TauJetRNNUtils.cxx:365
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
TauJetRNNUtils::Variables::centFrac
bool centFrac(const xAOD::TauJet &tau, double &out)
Definition: TauJetRNNUtils.cxx:187
xAOD::numberOfInnermostPixelLayerHits
@ numberOfInnermostPixelLayerHits
these are the hits in the 0th pixel barrel layer
Definition: TrackingPrimitives.h:238
TauJetRNNUtils::Variables::Cluster::pt_tau_log
bool pt_tau_log(const xAOD::TauJet &tau, const xAOD::CaloVertexedTopoCluster &, double &out)
Definition: TauJetRNNUtils.cxx:544
TauJetRNNUtils::Variables::ClustersMeanSecondLambda
bool ClustersMeanSecondLambda(const xAOD::TauJet &tau, double &out)
Definition: TauJetRNNUtils.cxx:407
GeV
#define GeV
Definition: TauJetRNNUtils.cxx:9