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