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