ATLAS Offline Software
tauMonitorAlgorithm.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #include "tauMonitorAlgorithm.h"
6 
7 #include "GaudiKernel/SystemOfUnits.h"
8 #include "xAODCore/ShallowCopy.h"
10 #include <algorithm>
11 
12 using Gaudi::Units::GeV;
13 using namespace Monitored;
14 
16  ISvcLocator *pSvcLocator)
17  : AthMonitorAlgorithm(name, pSvcLocator)
18 
19  ,
20  m_doRandom(true) {}
21 
23 
25 
26  ATH_CHECK(m_TauContainerKey.initialize());
27 
29 }
30 
31 StatusCode tauMonitorAlgorithm::fillHistograms(const EventContext &ctx) const {
32 
34 
35  if (!taus.isValid()) {
36  ATH_MSG_ERROR("evtStore() does not contain tau Collection with name "
38  return StatusCode::FAILURE;
39  }
40 
41  auto shallowCopy = xAOD::shallowCopyContainer(*taus);
42  std::unique_ptr<xAOD::TauJetContainer> shallowTaus(shallowCopy.first);
43  std::unique_ptr<xAOD::ShallowAuxContainer> shallowTausAux(shallowCopy.second);
44 
45  const int lowerEtThreshold = 15;
46  const int higherEtThreshold = 75;
48 
49  auto tauEta = Monitored::Scalar<float>("tauEta", 0.0);
50 
51  auto tauPhi = Monitored::Scalar<float>("tauPhi", 0.0);
52  auto tauEt = Monitored::Scalar<float>("tauEt", 0.0);
53  auto tauEtEt15RNNLoose = Monitored::Scalar<float>("tauEtEt15RNNLoose", 0.0);
54  auto panModeEt15RNNLoose =
55  Monitored::Scalar<float>("panModeEt15RNNLoose", 0.0);
56  auto panModeSubstructure =
57  Monitored::Scalar<float>("panModeSubstructure", 0.0);
58 
59  auto tauPhiEt15 = Monitored::Scalar<float>("tauPhiEt15", 0.0);
60  auto tauEtaEt15 = Monitored::Scalar<float>("tauEtaEt15", 0.0);
61 
62  auto tauPhiEt15RNNLoose = Monitored::Scalar<float>("tauPhiEt15RNNLoose", 0.0);
63  auto tauEtaEt15RNNLoose = Monitored::Scalar<float>("tauEtaEt15RNNLoose", 0.0);
64 
65  auto tauCharge = Monitored::Scalar<int>("tauCharge", 0.0);
66  auto RNNJetScore = Monitored::Scalar<float>("RNNJetScore", 0.0);
67  auto RNNJetScoreSigTrans =
68  Monitored::Scalar<float>("RNNJetScoreSigTrans", 0.0);
69 
70  auto RNNEleScore = Monitored::Scalar<float>("RNNEleScore", 0.0);
71  auto RNNEleScoreSigTrans =
72  Monitored::Scalar<float>("RNNEleScoreSigTrans", 0.0);
73 
74  auto NumTracks = Monitored::Scalar<int>("NumTracks", 0.0);
75  auto NumTracksEt15RNNLoose =
76  Monitored::Scalar<int>("NumTracksEt15RNNLoose", 0.0);
77 
78  auto nTauCandidates = Monitored::Scalar<int>("nTauCandidates", 0.0);
79  auto nHighPtTauCandidates =
80  Monitored::Scalar<int>("nHighPtTauCandidates", 0.0);
81  auto nClusters = Monitored::Scalar<int>("nClusters", 0.0);
82  auto nClustersEt15RNNLoose =
83  Monitored::Scalar<int>("nClustersEt15RNNLoose", 0.0);
84 
85  auto tauEtRNNLoose = Monitored::Scalar<float>("tauEtRNNLoose", 0.0);
86  auto tauEtaRNNLoose = Monitored::Scalar<float>("tauEtaRNNLoose", 0.0);
87  auto tauPhiRNNLoose = Monitored::Scalar<float>("tauPhiRNNLoose", 0.0);
88  auto NumTracksRNNLoose = Monitored::Scalar<float>("NumTracksRNNLoose", 0.0);
89 
90  auto tauEtRNNMedium = Monitored::Scalar<float>("tauEtRNNMedium", 0.0);
91  auto tauEtaRNNMedium = Monitored::Scalar<float>("tauEtaRNNMedium", 0.0);
92  auto tauPhiRNNMedium = Monitored::Scalar<float>("tauPhiRNNMedium", 0.0);
93  auto NumTracksRNNMedium = Monitored::Scalar<float>("NumTracksRNNMedium", 0.0);
94 
95  auto tauEtRNNTight = Monitored::Scalar<float>("tauEtRNNTight", 0.0);
96  auto tauEtaRNNTight = Monitored::Scalar<float>("tauEtaRNNTight", 0.0);
97  auto tauPhiRNNTight = Monitored::Scalar<float>("tauPhiRNNTight", 0.0);
98  auto NumTracksRNNTight = Monitored::Scalar<float>("NumTracksRNNTight", 0.0);
99 
100 
101  auto LB = Monitored::Scalar<int>("LB", 0.0);
102 
103  auto EMRadius = Monitored::Scalar<float>("EMRadius", 0.0);
104  auto hadRadius = Monitored::Scalar<float>("hadRadius", 0.0);
105  auto isolFrac = Monitored::Scalar<float>("isolFrac", 0.0);
106  auto stripWidth2 = Monitored::Scalar<float>("stripWidth2", 0.0);
107  auto nStrip = Monitored::Scalar<float>("nStrip", 0.0);
108  auto etEMAtEMScale = Monitored::Scalar<float>("etEMAtEMScale", 0.0);
109 
110  auto etHadAtEMScale = Monitored::Scalar<float>("etHadAtEMScale", 0.0);
111  auto centFrac = Monitored::Scalar<float>("centFrac", 0.0);
112  auto jetSeedEta = Monitored::Scalar<float>("jetSeedEta", 0.0);
113  auto jetSeedPhi = Monitored::Scalar<float>("jetSeedPhi", 0.0);
114  auto jetSeedPt = Monitored::Scalar<float>("jetSeedPt", 0.0);
115 
116  auto muonVeto = Monitored::Scalar<float>("muonVeto", 0.0);
117 
118  auto tauRNNLoose = Monitored::Scalar<float>("tauRNNLoose", 0.0);
119  auto tauRNNMedium = Monitored::Scalar<float>("tauRNNMedium", 0.0);
120  auto tauRNNTight = Monitored::Scalar<float>("tauRNNTight", 0.0);
121 
122  auto PSSFrac = Monitored::Scalar<float>("PSSFrac", 0.0);
123  auto EMFrac = Monitored::Scalar<float>("EMFrac", 0.0);
124 
125  auto EMFracTrk = Monitored::Scalar<float>("EMFracTrk", 0.0);
126  auto EfracL2EffCluster = Monitored::Scalar<float>("EfracL2EffCluster", 0.0);
127  auto EisoEffCluster = Monitored::Scalar<float>("EisoEffCluster", 0.0);
128  auto InvMassEffClusters = Monitored::Scalar<float>("InvMassEffClusters", 0.0);
129  auto nNeutPFO = Monitored::Scalar<float>("nNeutPFO", 0.0);
130  auto nShot = Monitored::Scalar<float>("nShot", 0.0);
131  auto pt3 = Monitored::Scalar<float>("pt3", -9.0);
132 
133  auto BDTScoreAsP0 = Monitored::Scalar<float>("BDTScoreAsP0", 0.0);
134  auto dRmax = Monitored::Scalar<float>("dRmax", 0.0);
135 
136  auto ipSigLeadTrk = Monitored::Scalar<float>("ipSigLeadTrk", 0.0);
137  auto massTrkSys = Monitored::Scalar<float>("massTrkSys", 0.0);
138  auto etOverPtLeadTrack = Monitored::Scalar<float>("etOverPtLeadTrack", 0.0);
139  auto ptRatioEflowApprox = Monitored::Scalar<float>("ptRatioEflowApprox", 0.0);
140  auto trFlightPathSig = Monitored::Scalar<float>("trFlightPathSig", 0.0);
141  auto trkAvgDist = Monitored::Scalar<float>("trkAvgDist", 0.0);
142 
143  auto panEta = Monitored::Scalar<float>("panEta", 0.0);
144  auto panPhi = Monitored::Scalar<float>("panPhi", 0.0);
145  auto panPt = Monitored::Scalar<float>("panPt", 0.0);
146  auto d0 = Monitored::Scalar<float>("d0", 0.0);
147  auto dRJetSeedAxis = Monitored::Scalar<float>("dRJetSeedAxis", 0.0);
148  auto z0 = Monitored::Scalar<float>("z0", 0.0);
149 
150  auto etaTrack = Monitored::Scalar<float>("etaTrack", 0.0);
151  auto ptTrack = Monitored::Scalar<float>("ptTrack", 0.0);
152  auto phiTrack = Monitored::Scalar<float>("phiTrack", 0.0);
153  auto leadTrkPt = Monitored::Scalar<float>("leadTrkPt", 0.0);
154  auto nHighPtTaus = Monitored::Scalar<float>("nHighPtTaus", 0.0);
156  Monitored::Scalar<float>("numberOfTRTHighThresholdHits", 0.0);
158  Monitored::Scalar<float>("numberOfTRTHighThresholdOutliers", 0.0);
159  auto numberOfTRTHits = Monitored::Scalar<float>("numberOfTRTHits", 0.0);
160  auto numberOfTRTOutliers =
161  Monitored::Scalar<float>("numberOfTRTOutliers", 0.0);
162  auto trkWidth2 = Monitored::Scalar<float>("trkWidth2", 0.0);
164  Monitored::Scalar<float>("ipZ0SinThetaSigLeadTrk", 0.0);
165  auto numberOfPixelHits = Monitored::Scalar<float>("numberOfPixelHits", 0.0);
167  Monitored::Scalar<float>("numberOfPixelSharedHits", 0.0);
168  auto numberOfSCTHits = Monitored::Scalar<float>("numberOfSCTHits", 0.0);
169  auto numberOfSCTSharedHits =
170  Monitored::Scalar<float>("numberOfSCTSharedHits", 0.0);
171  auto rConv = Monitored::Scalar<float>("rConv", 0.0);
172  auto rConvII = Monitored::Scalar<float>("rConvII", 0.0);
173 
174  // trackLogSeedJetPt
175  auto trackLogSeedJetPt = Monitored::Scalar<float>("trackLogSeedJetPt", 0.0);
176  auto trackLogPt = Monitored::Scalar<float>("trackLogPt", 0.0);
177  auto trackEta = Monitored::Scalar<float>("trackEta", 0.0);
178  auto trackd0TJVA = Monitored::Scalar<float>("trackd0TJVA", 0.0);
179  auto trackZ0SinthetaTJVA =
180  Monitored::Scalar<float>("trackZ0SinthetaTJVA", 0.0);
181  auto trackD0SigTJVA = Monitored::Scalar<float>("trackD0SigTJVA", 0.0);
182  auto trackZ0sinthetaSigTJVA =
183  Monitored::Scalar<float>("trackZ0sinthetaSigTJVA", 0.0);
184  auto trackCharge = Monitored::Scalar<float>("trackCharge", 0.0);
185  auto trackqOverP = Monitored::Scalar<float>("trackqOverP", 0.0);
186  auto trackLogRConv = Monitored::Scalar<float>("trackLogRConv", 0.0);
187  auto trackTanhRConvII = Monitored::Scalar<float>("trackTanhRConvII", 0.0);
188  auto trackPtRatioSeedJet =
189  Monitored::Scalar<float>("trackPtRatioSeedJet", 0.0);
190  auto trackdRJetSeedAxis = Monitored::Scalar<float>("trackdRJetSeedAxis", 0.0);
191  auto trackNInnermostPixHits =
192  Monitored::Scalar<float>("trackNInnermostPixHits", 0.0);
193  auto trackNPixHits = Monitored::Scalar<float>("trackNPixHits", 0.0);
194  auto trackNSiHits = Monitored::Scalar<float>("trackNSiHits", 0.0);
195  auto trackeProbabilityHT =
196  Monitored::Scalar<float>("trackeProbabilityHT", 0.0);
197  auto trackeProbabilityNN =
198  Monitored::Scalar<float>("trackeProbabilityNN", 0.0);
199  auto trackeProbabilityHTorNN =
200  Monitored::Scalar<float>("trackeProbabilityHTorNN", 0.0);
201  auto trackIdScoreCharged = Monitored::Scalar<float>("track", 0.0);
202  auto trackIdScoreIso = Monitored::Scalar<float>("track", 0.0);
203  auto trackIdScoreConv = Monitored::Scalar<float>("track", 0.0);
204  auto trackIdScoreFake = Monitored::Scalar<float>("track", 0.0);
205 
206  auto clusterLogEt = Monitored::Scalar<float>("clusterLogEt", 0.0);
207  auto clusterEta = Monitored::Scalar<float>("clusterEta", 0.0);
208  auto clusterPhi = Monitored::Scalar<float>("clusterPhi", 0.0);
209  auto clusterSecondR = Monitored::Scalar<float>("clusterSecondR", 0.0);
210  auto clusterSecondLambda =
211  Monitored::Scalar<float>("clusterSecondLambda", 0.0);
212  auto clusterCenterLambda =
213  Monitored::Scalar<float>("clusterCenterLambda", 0.0);
214  auto clusterFirstEngDens =
215  Monitored::Scalar<float>("clusterFirstEngDens", 0.0);
216  auto clusterEMproba = Monitored::Scalar<float>("clusterEMproba", 0.0);
217  auto clustersMeanCenterLambda =
218  Monitored::Scalar<float>("clustersMeanCenterLambda", 0.0);
219  auto clustersMeanFirstEngDens =
220  Monitored::Scalar<float>("clustersMeanFirstEngDens", 0.0);
221  auto clustersMeanEMProbability =
222  Monitored::Scalar<float>("clustersMeanEMProbability", 0.0);
223  auto clustersMeanSecondLambda =
224  Monitored::Scalar<float>("clustersMeanSecondLambda", 0.0);
225  auto clustersMeanPresamplerFrac =
226  Monitored::Scalar<float>("clustersMeanPresamplerFrac", 0.0);
227  auto clustersPFOEngRelDiff =
228  Monitored::Scalar<float>("clustersPFOEngRelDiff", 0.0);
229 
230  nTauCandidates = 0;
231 
232  static const SG::ConstAccessor<char> passThinningAcc("passThinning");
233 
234  for (const auto tau : *shallowTaus) {
235 
236  if (!passThinningAcc.withDefault(*tau, true)) continue;
237 
238  tauEta = tau->eta();
239  tauPhi = tau->phi();
240  tauEt = tau->pt() / GeV;
241  tauCharge = tau->charge();
242  NumTracks = tau->nTracks();
243  nClusters = tau->detail<int>(xAOD::TauJetParameters::numTopoClusters);
244  LB = GetEventInfo(ctx)->lumiBlock();
245 
246  // calo
247  EMRadius = tau->detail<float>(xAOD::TauJetParameters::EMRadius);
248  hadRadius = tau->detail<float>(xAOD::TauJetParameters::hadRadius);
249  isolFrac = tau->detail<float>(xAOD::TauJetParameters::isolFrac);
250  stripWidth2 = tau->detail<float>(xAOD::TauJetParameters::stripWidth2);
251  nStrip = tau->detail<int>(xAOD::TauJetParameters::nStrip);
254 
255  centFrac = tau->detail<float>(xAOD::TauJetParameters::centFrac);
256  jetSeedEta = tau->etaJetSeed();
257  jetSeedPhi = tau->phiJetSeed();
258  jetSeedPt = tau->ptJetSeed() / GeV;
259 
260  // identification
264 
268 
269  muonVeto = tau->isTau(xAOD::TauJetParameters::MuonVeto);
270  tauRNNLoose = tau->isTau(xAOD::TauJetParameters::JetRNNSigLoose);
271  tauRNNMedium = tau->isTau(xAOD::TauJetParameters::JetRNNSigMedium);
272  tauRNNTight = tau->isTau(xAOD::TauJetParameters::JetRNNSigTight);
273 
274  dRmax = tau->detail<float>(xAOD::TauJetParameters::dRmax);
276  tau->detail<float>(xAOD::TauJetParameters::ptRatioEflowApprox);
277  trkAvgDist = tau->detail<float>(xAOD::TauJetParameters::trkAvgDist);
278 
279  panEta = tau->etaPanTauCellBased();
280  panPhi = tau->phiPanTauCellBased();
281  panPt = tau->ptPanTauCellBased() / GeV; // GeV ;
282 
283  // TauB/Identification/EleVetoBDTinputs
284  PSSFrac = tau->detail<float>(xAOD::TauJetParameters::PSSFraction);
285  static const SG::ConstAccessor<float> EMFracFixedAcc("EMFracFixed");
286  EMFrac = EMFracFixedAcc(*tau);
287 
288  // TauB/SubStructure
289  EMFracTrk = tau->detail<float>(xAOD::TauJetParameters::ChPiEMEOverCaloEME);
290  EfracL2EffCluster = tau->detail<float>(
292  EisoEffCluster =
293  tau->detail<float>(xAOD::TauJetParameters::caloIsoCorrected) / GeV;
294  InvMassEffClusters =
295  tau->detail<float>(xAOD::TauJetParameters::effTopoInvMass) /
296  GeV; // puts it in GeV
297  nNeutPFO = tau->nProtoNeutralPFOs();
298  nShot = tau->nShotPFOs();
299 
300  int panModeDummy = -1;
301  int panModeSubstructureDummy = -1;
302 
303  if (m_etaMin < std::abs(tauEta) && std::abs(tauEta) < m_etaMax) {
304 
305  nTauCandidates += 1;
306 
307  if (tauEt > higherEtThreshold) {
308  nHighPtTauCandidates += 1;
309  nHighPtTaus += 1;
310  }
311 
312  if (m_kinGroupName != "tauMonKinGroupGlobal" &&
313  tauEt > lowerEtThreshold && tauRNNLoose) {
314  tauPhiEt15RNNLoose = tau->phi();
315  tauEtaEt15RNNLoose = tau->eta();
316  tauEtEt15RNNLoose = tau->pt() / GeV;
317  nClustersEt15RNNLoose =
318  tau->detail<int>(xAOD::TauJetParameters::numTopoClusters);
319  NumTracksEt15RNNLoose = tau->nTracks();
320 
322  panModeDummy);
323  panModeEt15RNNLoose = panModeDummy;
324  fill(tool, tauPhiEt15RNNLoose, tauEtaEt15RNNLoose,
325  nClustersEt15RNNLoose, NumTracksEt15RNNLoose, tauEtEt15RNNLoose,
326  panModeEt15RNNLoose);
327  }
328 
329  if (m_kinGroupName != "tauMonKinGroupGlobal" && tauRNNLoose) {
330  tauPhiRNNLoose = tau->phi();
331  tauEtaRNNLoose = tau->eta();
332  tauEtRNNLoose = tau->pt() / GeV;
333  NumTracksRNNLoose = tau->nTracks();
334 
335  fill(tool, tauPhiRNNLoose, tauEtaRNNLoose, NumTracksRNNLoose,
336  tauEtRNNLoose);
337  }
338 
339  if (m_kinGroupName != "tauMonKinGroupGlobal" && tauRNNMedium) {
340  tauPhiRNNMedium = tau->phi();
341  tauEtaRNNMedium = tau->eta();
342  tauEtRNNMedium = tau->pt() / GeV;
343  NumTracksRNNMedium = tau->nTracks();
344 
345  fill(tool, tauPhiRNNMedium, tauEtaRNNMedium, NumTracksRNNMedium,
346  tauEtRNNMedium);
347  }
348 
349  if (m_kinGroupName != "tauMonKinGroupGlobal" && tauRNNTight) {
350  tauPhiRNNTight = tau->phi();
351  tauEtaRNNTight = tau->eta();
352  tauEtRNNTight = tau->pt() / GeV;
353  NumTracksRNNTight = tau->nTracks();
354 
355  fill(tool, tauPhiRNNTight, tauEtaRNNTight, NumTracksRNNTight,
356  tauEtRNNTight);
357  }
358 
359 
360  // tracks - old
361  if (tau->nTracks() != 0) {
362 
363  massTrkSys =
364  tau->detail<float>(xAOD::TauJetParameters::massTrkSys) / GeV; // GeV
365  trkWidth2 = tau->detail<float>(xAOD::TauJetParameters::trkWidth2);
367  tau->detail<float>(xAOD::TauJetParameters::trFlightPathSig);
368 
369  static const SG::ConstAccessor<float> d0SigTJVAAcc("d0SigTJVA");
370  if (d0SigTJVAAcc.isAvailable(*tau->track(0))) {
371  ipSigLeadTrk = tau->track(0)->d0SigTJVA();
372  }
373  else {
375  }
376 
377  static const SG::ConstAccessor<float> z0sinthetaSigTJVAAcc("z0sinthetaSigTJVA");
378  if (z0sinthetaSigTJVAAcc.isAvailable(*tau->track(0))) {
379  ipZ0SinThetaSigLeadTrk = tau->track(0)->z0sinthetaSigTJVA();
380  }
381  else {
383  }
384 
385  etOverPtLeadTrack =
386  tau->detail<float>(xAOD::TauJetParameters::etOverPtLeadTrk);
387  leadTrkPt = tau->detail<float>(xAOD::TauJetParameters::leadTrkPt) / GeV;
388 
389  fill(tool, massTrkSys, etOverPtLeadTrack, trkWidth2, trFlightPathSig,
391 
392  if (environment() != Environment_t::AOD) {
393  const xAOD::TrackParticle *track = tau->track(0)->track();
394  const Trk::Perigee perigee = track->perigeeParameters();
395 
396  uint8_t dummy(0);
397 
398  if (track->summaryValue(dummy, xAOD::numberOfSCTSharedHits)) {
401  }
402 
403  if (track->summaryValue(dummy, xAOD::numberOfSCTHits)) {
406  }
407 
408  if (track->summaryValue(dummy, xAOD::numberOfPixelSharedHits)) {
411  }
412 
413  if (track->summaryValue(dummy, xAOD::numberOfPixelHits)) {
416  }
417  if (track->summaryValue(dummy, xAOD::numberOfTRTHighThresholdHits)) {
420  }
421  if (track->summaryValue(dummy,
425  }
426  if (track->summaryValue(dummy, xAOD::numberOfTRTHits)) {
429  }
430  if (track->summaryValue(dummy, xAOD::numberOfTRTOutliers)) {
433  }
434 
435  d0 = perigee.parameters()[Trk::d0];
436  z0 = perigee.parameters()[Trk::z0];
437 
438  phiTrack = perigee.parameters()[Trk::phi];
439  etaTrack = perigee.eta();
440  ptTrack = perigee.pT() / GeV;
441 
442  fill(tool, d0, z0, phiTrack, etaTrack, ptTrack);
443  }
444  }
445  // this else can be removed, but it sets any track variable to 0 if
446  // there are no tracks this solution makes entry numbers match calo which
447  // is desired but there are too many zeros.
448  else {
449  leadTrkPt = 0;
450  fill(tool, leadTrkPt);
451  }
452 
453  // Code for All Tracks and Mean track variables.
454 
455  // pre loop variables:
456  double tauSeedPt = tau->ptJetSeed();
457  double logTauSeedPt = std::log(tauSeedPt);
458  trackLogSeedJetPt = logTauSeedPt;
459 
460  fill(tool, trackLogSeedJetPt);
461 
462  static const SG::ConstAccessor<float> acc_trackScoreCharged("rnn_chargedScore");
463  static const SG::ConstAccessor<float> acc_trackScoreIso("rnn_isolationScore");
464  static const SG::ConstAccessor<float> acc_trackScoreConv("rnn_conversionScore");
465  // rnn_fakeScore may not be available (it is not provided by the TauJets smart slimming list), it can be obtained from unitarity
466 
467  for (const xAOD::TauTrack *track : tau->allTracks()) {
468 
469  static const SG::Accessor<
471  trackAcc("trackLinks");
472  if (!trackAcc(*track)[0]) {
473  continue;
474  }
475 
476  const xAOD::TrackParticle *trackParticle = track->track();
477 
478  float d0TJVA = track->track()->d0();
479  trackZ0SinthetaTJVA = track->z0sinThetaTJVA(*tau);
480  trackD0SigTJVA = 999.;
481  trackZ0sinthetaSigTJVA = 999.;
482  float rConv = 999.;
483  float rConvII = 999.;
484  static const SG::ConstAccessor<float> z0sinthetaTJVAAcc("z0sinthetaTJVA");
485  if (z0sinthetaTJVAAcc.isAvailable(*track)) {
486  d0TJVA = track->d0TJVA();
487  trackZ0SinthetaTJVA = track->z0sinthetaTJVA();
488  trackD0SigTJVA = track->d0SigTJVA();
489  trackZ0sinthetaSigTJVA = track->z0sinthetaSigTJVA();
490  rConv = track->rConv();
491  rConvII = track->rConvII();
492  }
493  trackdRJetSeedAxis =
494  track->p4().DeltaR(tau->p4(xAOD::TauJetParameters::JetSeed));
495  double qOverP = trackParticle->qOverP();
496  double trackPt = trackParticle->pt();
497  uint8_t nInnermostPixelLayerHits = 0;
498  trackParticle->summaryValue(nInnermostPixelLayerHits,
500  uint8_t nPixelHits = 0;
502  uint8_t nPixelDeadSensors = 0;
503  trackParticle->summaryValue(nPixelDeadSensors,
505  uint8_t nSCTHits = 0;
507  uint8_t nSCTDeadSensors = 0;
508  trackParticle->summaryValue(nSCTDeadSensors,
510  uint8_t nTRTHighThresholdHits = 0;
511  trackParticle->summaryValue(nTRTHighThresholdHits,
514  trackParticle->summaryValue(numberOfPixelHoles,
518  float eProbabilityHT = 0.;
520  static const SG::ConstAccessor<float> eProbabilityNNAcc("eProbabilityNN");
521  float eProbabilityNN = eProbabilityNNAcc.withDefault(*trackParticle, -1);
522  // hybrid variable (eProbabilityNN is not computed for tracks with pt
523  // < 2 GeV)
524  trackeProbabilityHTorNN =
525  (trackPt > 2000.) ? eProbabilityNN : eProbabilityHT;
526 
527  trackeProbabilityNN = eProbabilityNN;
528  trackeProbabilityHT = eProbabilityHT;
529  trackLogPt = std::log(trackPt);
530  trackEta = track->eta();
531  trackd0TJVA = std::tanh(d0TJVA / 10.);
532  trackCharge = trackParticle->charge();
533  trackqOverP = qOverP * 1000.;
534  trackLogRConv = std::log(rConv);
535  trackTanhRConvII = std::tanh(rConvII / 500.0);
536  trackPtRatioSeedJet = trackPt / tauSeedPt;
537  trackNInnermostPixHits = nInnermostPixelLayerHits;
538  trackNPixHits = nPixelHits + nPixelDeadSensors;
539  trackNSiHits =
540  nPixelHits + nPixelDeadSensors + nSCTHits + nSCTDeadSensors;
541 
542  fill(tool, trackLogPt, trackEta, trackd0TJVA, trackZ0SinthetaTJVA,
543  trackD0SigTJVA, trackZ0sinthetaSigTJVA, trackCharge, trackqOverP,
544  trackLogRConv, trackTanhRConvII, trackPtRatioSeedJet,
545  trackdRJetSeedAxis, trackNInnermostPixHits,
546  trackNPixHits,
547  trackNSiHits,
548  trackeProbabilityHT, trackeProbabilityNN, trackeProbabilityHTorNN);
549 
550  if (acc_trackScoreCharged.isAvailable(*track)) {
551  float chargedScore = acc_trackScoreCharged(*track);
552  float isolationScore = acc_trackScoreIso(*track);
553  float conversionScore = acc_trackScoreConv(*track);
554  float fakeScore = 1. - chargedScore - isolationScore - conversionScore;
555  // ensure the probability is within [0.,1.]
556  fakeScore = std::max(0.f, fakeScore);
557  fakeScore = std::min(1.f, fakeScore);
558 
559  trackIdScoreCharged = chargedScore;
560  trackIdScoreIso = isolationScore;
561  trackIdScoreConv = conversionScore;
562  trackIdScoreFake = fakeScore;
563 
564  fill(tool, trackIdScoreCharged, trackIdScoreIso, trackIdScoreConv,
565  trackIdScoreFake);
566  }
567  }
568 
569  // clusters
570  std::vector<const xAOD::IParticle *> particleList = tau->clusters();
571  std::vector<xAOD::CaloVertexedTopoCluster> clusters;
572  const xAOD::Vertex *vertex = nullptr;
573  if (tau->vertexLink().isValid())
574  vertex = tau->vertex();
575 
576  for (const xAOD::IParticle *particle : particleList) {
577  const xAOD::CaloCluster *cluster =
578  static_cast<const xAOD::CaloCluster *>(particle);
579  if (vertex) {
580  clusters.emplace_back(*cluster, xAOD::CaloCluster::State::CALIBRATED,
581  vertex->position());
582  } else {
583  clusters.emplace_back(*cluster, xAOD::CaloCluster::State::CALIBRATED);
584  }
585  }
586 
587  // sort by decreasing Et
588  auto et_cmp = [](const xAOD::CaloVertexedTopoCluster &lhs,
589  const xAOD::CaloVertexedTopoCluster &rhs) {
590  return lhs.p4().Et() > rhs.p4().Et();
591  };
592  std::sort(clusters.begin(), clusters.end(), et_cmp);
593 
594  // keep first 6 leading clusters as in RNN ID
595  if (clusters.size() > 6) {
596  clusters.resize(6, clusters[0]);
597  }
598 
599  double moment;
600  for (const auto& vertexedCluster : clusters) {
601  const xAOD::CaloCluster &cluster = vertexedCluster.clust();
602 
603  clusterLogEt = std::log10(vertexedCluster.p4().Et());
604  clusterEta = vertexedCluster.eta();
605  clusterPhi = vertexedCluster.phi();
606 
608  clusterSecondR = std::log10(moment + 0.1);
609 
611  moment);
612  clusterSecondLambda = std::log10(moment + 0.1);
613 
615  moment);
616  clusterCenterLambda = std::log10(moment + 1e-6);
617 
619  moment);
620  if (moment != 0.)
621  moment = std::log10(std::abs(moment));
622  clusterFirstEngDens = moment;
623 
625  moment);
626  clusterEMproba = moment;
627 
628  fill(tool, clusterLogEt, clusterEta, clusterPhi, clusterSecondR,
629  clusterSecondLambda, clusterCenterLambda, clusterFirstEngDens,
630  clusterEMproba);
631  }
632 
633  // Et-weighted average of cluster moments (MVA TES)
634  float avariable = 0.;
636  avariable);
637  if (test)
638  clustersMeanCenterLambda = avariable;
639 
641  avariable);
642  if (test)
643  clustersMeanFirstEngDens = avariable;
644 
646  avariable);
647  if (test)
648  clustersMeanEMProbability = avariable;
649 
651  avariable);
652  if (test)
653  clustersMeanSecondLambda = avariable;
654 
656  avariable);
657  if (test)
658  clustersMeanPresamplerFrac = avariable;
659 
660  test = tau->detail(xAOD::TauJetParameters::PFOEngRelDiff, avariable);
661  if (test)
662  clustersPFOEngRelDiff = avariable;
663 
664  fill(tool, clustersMeanCenterLambda, clustersMeanFirstEngDens,
665  clustersMeanEMProbability, clustersMeanSecondLambda,
666  clustersMeanPresamplerFrac, clustersPFOEngRelDiff);
667 
668  for (int s = 0; s < nShot; s++) {
669  const xAOD::PFO *shot = tau->shotPFO(s);
670  if (shot != nullptr) {
671  float pt3Temp = -9.0;
673  pt3Temp);
674  pt3 = pt3Temp / GeV; // GeV
675  fill(tool, pt3);
676  }
677  }
678 
679  for (unsigned int np = 0; np < nNeutPFO; np++) {
680  const xAOD::PFO *npfo = tau->protoNeutralPFO(np);
681  BDTScoreAsP0 = npfo->bdtPi0Score();
682  fill(tool, BDTScoreAsP0);
683  }
684 
685  if (tauEt > lowerEtThreshold) {
686  tauPhiEt15 = tau->phi();
687  tauEtaEt15 = tau->eta();
688  fill(tool, tauPhiEt15, tauEtaEt15);
689  }
690 
691  fill(tool, tauPhi, tauEta, LB, tauEt, centFrac, isolFrac, EMRadius,
694  muonVeto, tauRNNLoose, tauRNNMedium, tauRNNTight, PSSFrac, EMFrac, EMFracTrk,
695  EfracL2EffCluster, EisoEffCluster, InvMassEffClusters, nNeutPFO,
696  nShot, NumTracks, nClusters, jetSeedEta, jetSeedPhi, jetSeedPt,
698 
700  panModeSubstructureDummy);
701  panModeSubstructure = panModeSubstructureDummy;
702 
703  fill(tool, panModeSubstructure);
704  if (panPhi > -100) {
705  fill(tool, panEta, panPhi, panPt);
706  }
707  }
708  }
709 
710  fill(tool, nHighPtTauCandidates, nTauCandidates, nHighPtTaus);
711 
712  return StatusCode::SUCCESS;
713 }
ShallowCopy.h
xAOD::TrackParticle_v1::pt
virtual double pt() const override final
The transverse momentum ( ) of the particle.
Definition: TrackParticle_v1.cxx:73
xAOD::numberOfPixelHoles
@ numberOfPixelHoles
number of pixel layers on track with absence of hits [unit8_t].
Definition: TrackingPrimitives.h:261
xAOD::TauJetParameters::PanTau_DecayMode
@ PanTau_DecayMode
Definition: TauDefs.h:360
xAOD::TauJetParameters::RNNJetScoreSigTrans
@ RNNJetScoreSigTrans
RNN score which is signal transformed/flattened.
Definition: TauDefs.h:92
AthMonitorAlgorithm::environment
Environment_t environment() const
Accessor functions for the environment.
Definition: AthMonitorAlgorithm.h:205
TauGNNUtils::Variables::Cluster::CENTER_LAMBDA
bool CENTER_LAMBDA(const xAOD::TauJet &, const xAOD::CaloVertexedTopoCluster &cluster, double &out)
Definition: TauGNNUtils.cxx:826
python.CaloRecoConfig.f
f
Definition: CaloRecoConfig.py:127
xAOD::TauJetParameters::PFOEngRelDiff
@ PFOEngRelDiff
Definition: TauDefs.h:318
xAOD::CaloVertexedClusterBase::p4
virtual FourMom_t p4() const final
The full 4-momentum of the particle.
Definition: Event/xAOD/xAODCaloEvent/xAODCaloEvent/CaloVertexedClusterBase.h:88
Trk::ParticleSwitcher::particle
constexpr ParticleHypothesis particle[PARTICLEHYPOTHESES]
the array of masses
Definition: ParticleHypothesis.h:76
python.SystemOfUnits.s
int s
Definition: SystemOfUnits.py:131
xAOD::TauJetParameters::RNNEleScoreSigTrans
@ RNNEleScoreSigTrans
RNN score which is signal transformed/flattened.
Definition: TauDefs.h:96
xAOD::TauJetParameters::trkWidth2
@ trkWidth2
Definition: TauDefs.h:162
max
#define max(a, b)
Definition: cfImp.cxx:41
xAOD::numberOfSCTSharedHits
@ numberOfSCTSharedHits
number of SCT hits shared by several tracks [unit8_t].
Definition: TrackingPrimitives.h:272
TauAnalysisTools::tauEta
double tauEta(const xAOD::TauJet &xTau)
return tau eta
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/Root/HelperFunctions.cxx:99
xAOD::TauJetParameters::trFlightPathSig
@ trFlightPathSig
Definition: TauDefs.h:163
xAOD::uint8_t
uint8_t
Definition: Muon_v1.cxx:575
TauGNNUtils::Variables::Cluster::EM_PROBABILITY
bool EM_PROBABILITY(const xAOD::TauJet &, const xAOD::CaloVertexedTopoCluster &cluster, double &out)
Definition: TauGNNUtils.cxx:895
xAOD::TauJetParameters::lead2ClusterEOverAllClusterE
@ lead2ClusterEOverAllClusterE
Get sum of 2 leading cluster energy over all cluster energy.
Definition: TauDefs.h:218
AthMonitorAlgorithm::Environment_t::AOD
@ AOD
SG::Accessor
Helper class to provide type-safe access to aux data.
Definition: Control/AthContainers/AthContainers/Accessor.h:66
TauGNNUtils::Variables::Track::nPixelHits
bool nPixelHits(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:542
xAOD::TrackParticle_v1::charge
float charge() const
Returns the charge.
Definition: TrackParticle_v1.cxx:150
xAOD::TauJetParameters::ClustersMeanSecondLambda
@ ClustersMeanSecondLambda
Definition: TauDefs.h:315
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:70
Trk::ParametersT
Dummy class used to allow special convertors to be called for surfaces owned by a detector element.
Definition: EMErrorDetail.h:25
xAOD::TrackParticle_v1::summaryValue
bool summaryValue(uint8_t &value, const SummaryType &information) const
Accessor for TrackSummary values.
Definition: TrackParticle_v1.cxx:736
xAOD::PFO_v1::attribute
bool attribute(PFODetails::PFOAttributes AttributeType, T &anAttribute) const
get a PFO Variable via enum
tauMonitorAlgorithm::m_etaMin
Gaudi::Property< float > m_etaMin
Definition: tauMonitorAlgorithm.h:32
xAOD::TauJetParameters::ClustersMeanPresamplerFrac
@ ClustersMeanPresamplerFrac
Definition: TauDefs.h:316
Trk::z0
@ z0
Definition: ParamDefs.h:70
xAOD::numberOfPixelHits
@ numberOfPixelHits
these are the pixel hits, including the b-layer [unit8_t].
Definition: TrackingPrimitives.h:259
xAOD::numberOfTRTHits
@ numberOfTRTHits
number of TRT hits [unit8_t].
Definition: TrackingPrimitives.h:275
SG::ConstAccessor< char >
TrigInDetValidation_Base.test
test
Definition: TrigInDetValidation_Base.py:144
xAOD::PFODetails::tauShots_pt3
@ tauShots_pt3
Definition: Event/xAOD/xAODPFlow/xAODPFlow/PFODefs.h:145
xAOD::TauTrack_v1::TrackParticleLinks_t
std::vector< ElementLink< xAOD::TrackParticleContainer > > TrackParticleLinks_t
Definition: TauTrack_v1.h:104
InDetAccessor::qOverP
@ qOverP
perigee
Definition: InDetAccessor.h:35
PlotPulseshapeFromCool.np
np
Definition: PlotPulseshapeFromCool.py:64
xAOD::IParticle
Class providing the definition of the 4-vector interface.
Definition: Event/xAOD/xAODBase/xAODBase/IParticle.h:40
xAOD::TauJetParameters::ptRatioEflowApprox
@ ptRatioEflowApprox
Definition: TauDefs.h:293
xAOD::TauJetParameters::hadRadius
@ hadRadius
Get hadron calorimeter radius.
Definition: TauDefs.h:192
xAOD::TauJetParameters::ipSigLeadTrk
@ ipSigLeadTrk
Definition: TauDefs.h:160
tauMonitorAlgorithm::m_TauContainerKey
SG::ReadHandleKey< xAOD::TauJetContainer > m_TauContainerKey
Definition: tauMonitorAlgorithm.h:30
xAOD::TauJetParameters::JetSeed
@ JetSeed
Definition: TauDefs.h:336
xAOD::numberOfTRTHighThresholdHits
@ numberOfTRTHighThresholdHits
number of TRT hits which pass the high threshold (only xenon counted) [unit8_t].
Definition: TrackingPrimitives.h:278
xAOD::TauJetParameters::stripWidth2
@ stripWidth2
Get strip width ^2.
Definition: TauDefs.h:202
AthMonitorAlgorithm
Base class for Athena Monitoring Algorithms.
Definition: AthMonitorAlgorithm.h:36
xAOD::TauJetParameters::centFrac
@ centFrac
Get centrality fraction.
Definition: TauDefs.h:200
xAOD::TauJetParameters::dRmax
@ dRmax
Get maximal dR of tracks associated to calo-seeded tau.
Definition: TauDefs.h:226
tauMonitorAlgorithm::fillHistograms
virtual StatusCode fillHistograms(const EventContext &ctx) const override
adds event to the monitoring histograms
Definition: tauMonitorAlgorithm.cxx:31
xAOD::numberOfTRTHighThresholdOutliers
@ numberOfTRTHighThresholdOutliers
number of TRT high threshold outliers (only xenon counted) [unit8_t].
Definition: TrackingPrimitives.h:281
xAOD::CaloCluster_v1
Description of a calorimeter cluster.
Definition: CaloCluster_v1.h:59
xAOD::numberOfPixelSharedHits
@ numberOfPixelSharedHits
number of Pixel all-layer hits shared by several tracks [unit8_t].
Definition: TrackingPrimitives.h:262
xAOD::TauJetParameters::etHadAtEMScale
@ etHadAtEMScale
Get Hadronic energy at EM scale.
Definition: TauDefs.h:196
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
tauMonitorAlgorithm::m_etaMax
Gaudi::Property< float > m_etaMax
Definition: tauMonitorAlgorithm.h:33
Monitored
Generic monitoring tool for athena components.
Definition: GenericMonitoringTool.h:30
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
xAOD::TauJetParameters::trkAvgDist
@ trkAvgDist
Get calibrated EM transverse energy (DEPRECATED since r19)
Definition: TauDefs.h:214
Trk::eProbabilityNN
@ eProbabilityNN
Electron probability from NN.
Definition: Tracking/TrkEvent/TrkTrackSummary/TrkTrackSummary/TrackSummary.h:217
TRT::Track::d0
@ d0
Definition: InnerDetector/InDetCalibEvent/TRT_CalibData/TRT_CalibData/TrackInfo.h:62
tauMonitorAlgorithm::m_kinGroupName
Gaudi::Property< std::string > m_kinGroupName
Definition: tauMonitorAlgorithm.h:35
python.xAODType.dummy
dummy
Definition: xAODType.py:4
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
xAOD::TauJetParameters::etOverPtLeadTrk
@ etOverPtLeadTrk
Definition: TauDefs.h:158
xAOD::TauJetParameters::caloIsoCorrected
@ caloIsoCorrected
Get sum of transvers energy of clusters around jet seed within 0.2 < dR < 0.4 (pile up corrected)
Definition: TauDefs.h:224
xAOD::CaloCluster_v1::retrieveMoment
bool retrieveMoment(MomentType type, double &value) const
Retrieve individual moment.
Definition: CaloCluster_v1.cxx:738
AthMonitorAlgorithm::fill
void fill(const ToolHandle< GenericMonitoringTool > &groupHandle, std::vector< std::reference_wrapper< Monitored::IMonitoredVariable >> &&variables) const
Fills a vector of variables to a group by reference.
TauGNNUtils::Variables::Cluster::SECOND_LAMBDA
bool SECOND_LAMBDA(const xAOD::TauJet &, const xAOD::CaloVertexedTopoCluster &cluster, double &out)
Definition: TauGNNUtils.cxx:821
TRT::Track::z0
@ z0
Definition: InnerDetector/InDetCalibEvent/TRT_CalibData/TRT_CalibData/TrackInfo.h:63
xAOD::numberOfSCTHoles
@ numberOfSCTHoles
number of SCT holes [unit8_t].
Definition: TrackingPrimitives.h:270
xAOD::PFO_v1::bdtPi0Score
float bdtPi0Score() const
get BDT Score used to classify clusters as Pi0 like or not
xAOD::TauJetParameters::numTopoClusters
@ numTopoClusters
get number of topocluster constituents of jet associated to tau candidate
Definition: TauDefs.h:173
AthMonitorAlgorithm::GetEventInfo
SG::ReadHandle< xAOD::EventInfo > GetEventInfo(const EventContext &) const
Return a ReadHandle for an EventInfo object (get run/event numbers, etc.)
Definition: AthMonitorAlgorithm.cxx:107
xAOD::TauJetParameters::massTrkSys
@ massTrkSys
Definition: TauDefs.h:161
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
TauGNNUtils::Variables::Track::trackPt
bool trackPt(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:470
tauMonitorAlgorithm::tauMonitorAlgorithm
tauMonitorAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Definition: tauMonitorAlgorithm.cxx:15
min
#define min(a, b)
Definition: cfImp.cxx:40
xAOD::TrackParticle_v1::qOverP
float qOverP() const
Returns the parameter.
xAOD::TauJetParameters::JetRNNSigTight
@ JetRNNSigTight
Definition: TauDefs.h:148
xAOD::PFO_v1
Class describing a particle flow object.
Definition: PFO_v1.h:35
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
Trk::d0
@ d0
Definition: ParamDefs.h:69
xAOD::TauJetParameters::ClustersMeanEMProbability
@ ClustersMeanEMProbability
Definition: TauDefs.h:313
AtlCoolConsole.tool
tool
Definition: AtlCoolConsole.py:453
xAOD::TauJetParameters::ClustersMeanCenterLambda
@ ClustersMeanCenterLambda
Definition: TauDefs.h:312
TauGNNUtils::Variables::Cluster::SECOND_R
bool SECOND_R(const xAOD::TauJet &, const xAOD::CaloVertexedTopoCluster &cluster, double &out)
Definition: TauGNNUtils.cxx:816
TauGNNUtils::Variables::Track::nSCTHits
bool nSCTHits(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:549
xAOD::TauJetParameters::nStrip
@ nStrip
Get number of strips.
Definition: TauDefs.h:204
tauMonitorAlgorithm::~tauMonitorAlgorithm
virtual ~tauMonitorAlgorithm()
Definition: tauMonitorAlgorithm.cxx:22
tauMonitorAlgorithm::initialize
virtual StatusCode initialize() override
initialize
Definition: tauMonitorAlgorithm.cxx:24
xAOD::shallowCopyContainer
std::pair< std::unique_ptr< T >, std::unique_ptr< ShallowAuxContainer > > shallowCopyContainer(const T &cont, [[maybe_unused]] const EventContext &ctx)
Function making a shallow copy of a constant container.
Definition: ShallowCopy.h:110
xAOD::TauJetParameters::RNNJetScore
@ RNNJetScore
RNN score for Jet rejection (not transformed)
Definition: TauDefs.h:90
AthMonitorAlgorithm::initialize
virtual StatusCode initialize() override
initialize
Definition: AthMonitorAlgorithm.cxx:18
xAOD::numberOfTRTOutliers
@ numberOfTRTOutliers
number of TRT outliers [unit8_t].
Definition: TrackingPrimitives.h:276
xAOD::TauJetParameters::JetRNNSigMedium
@ JetRNNSigMedium
Definition: TauDefs.h:147
Trk::vertex
@ vertex
Definition: MeasurementType.h:21
xAOD::TauJetParameters::MuonVeto
@ MuonVeto
Definition: TauDefs.h:121
xAOD::TauJetParameters::ipZ0SinThetaSigLeadTrk
@ ipZ0SinThetaSigLeadTrk
Definition: TauDefs.h:157
DiTauMassTools::MaxHistStrategyV2::e
e
Definition: PhysicsAnalysis/TauID/DiTauMassTools/DiTauMassTools/HelperFunctions.h:26
xAOD::Vertex_v1
Class describing a Vertex.
Definition: Vertex_v1.h:42
xAOD::TauJetParameters::ChPiEMEOverCaloEME
@ ChPiEMEOverCaloEME
Definition: TauDefs.h:278
xAOD::numberOfSCTDeadSensors
@ numberOfSCTDeadSensors
number of dead SCT sensors crossed [unit8_t].
Definition: TrackingPrimitives.h:273
xAOD::TauTrack_v1
Definition: TauTrack_v1.h:27
python.CaloCondTools.log
log
Definition: CaloCondTools.py:20
RunTileMonitoring.clusters
clusters
Definition: RunTileMonitoring.py:133
xAOD::TauJetParameters::effTopoInvMass
@ effTopoInvMass
get invariant mass from effective topoclusters of jet associated to tau candidate
Definition: TauDefs.h:179
TauGNNUtils::Variables::Cluster::FIRST_ENG_DENS
bool FIRST_ENG_DENS(const xAOD::TauJet &, const xAOD::CaloVertexedTopoCluster &cluster, double &out)
Definition: TauGNNUtils.cxx:888
xAOD::TauJetParameters::ClustersMeanFirstEngDens
@ ClustersMeanFirstEngDens
Definition: TauDefs.h:314
xAOD::eProbabilityHT
@ eProbabilityHT
Electron probability from High Threshold (HT) information [float].
Definition: TrackingPrimitives.h:301
xAOD::TauJetParameters::isolFrac
@ isolFrac
Get isolation fraction.
Definition: TauDefs.h:198
xAOD::TauJetParameters::RNNEleScore
@ RNNEleScore
RNN score for Ele rejection (not transformed)
Definition: TauDefs.h:94
xAOD::numberOfSCTHits
@ numberOfSCTHits
number of hits in SCT [unit8_t].
Definition: TrackingPrimitives.h:268
SG::ConstAccessor::isAvailable
bool isAvailable(const ELT &e) const
Test to see if this variable exists in the store.
Trk::phi
@ phi
Definition: ParamDefs.h:81
xAOD::numberOfPixelDeadSensors
@ numberOfPixelDeadSensors
number of dead pixel sensors crossed [unit8_t].
Definition: TrackingPrimitives.h:266
TauGNNUtils::Variables::Track::d0TJVA
bool d0TJVA(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:515
xAOD::track
@ track
Definition: TrackingPrimitives.h:512
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
ConstAccessor.h
Helper class to provide constant type-safe access to aux data.
Monitored::Scalar
Declare a monitored scalar variable.
Definition: MonitoredScalar.h:34
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
GeV
#define GeV
Definition: CaloTransverseBalanceVecMon.cxx:30
xAOD::TauJetParameters::EMRadius
@ EMRadius
Get E_T radius.
Definition: TauDefs.h:190
xAOD::TauJetParameters::JetRNNSigLoose
@ JetRNNSigLoose
Definition: TauDefs.h:146
AthMonitorAlgorithm::getGroup
const ToolHandle< GenericMonitoringTool > & getGroup(const std::string &name) const
Get a specific monitoring tool from the tool handle array.
Definition: AthMonitorAlgorithm.cxx:164
xAOD::TauJetParameters::etEMAtEMScale
@ etEMAtEMScale
Get EM energy at EM scale.
Definition: TauDefs.h:194
TauGNNUtils::Variables::Track::trackEta
bool trackEta(const xAOD::TauJet &, const xAOD::TauTrack &track, double &out)
Definition: TauGNNUtils.cxx:475
xAOD::numberOfInnermostPixelLayerHits
@ numberOfInnermostPixelLayerHits
these are the hits in the 0th pixel barrel layer
Definition: TrackingPrimitives.h:237
SG::ConstAccessor::withDefault
const_reference_type withDefault(const ELT &e, const T &deflt) const
Fetch the variable for one element, as a const reference, with a default.
tauMonitorAlgorithm.h
xAOD::TauJetParameters::leadTrkPt
@ leadTrkPt
Definition: TauDefs.h:159