ATLAS Offline Software
tauMonitorAlgorithm.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2025 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 
21 
23 
24  ATH_CHECK(m_TauContainerKey.initialize());
25 
28 
31 
34 
37 
40 
42 }
43 
44 StatusCode tauMonitorAlgorithm::fillHistograms(const EventContext &ctx) const {
45 
47 
48  if (!taus.isValid()) {
49  ATH_MSG_ERROR("evtStore() does not contain tau Collection with name "
51  return StatusCode::FAILURE;
52  }
53 
54  auto shallowCopy = xAOD::shallowCopyContainer(*taus);
55  std::unique_ptr<xAOD::TauJetContainer> shallowTaus(shallowCopy.first);
56  std::unique_ptr<xAOD::ShallowAuxContainer> shallowTausAux(shallowCopy.second);
57 
58  const int lowerEtThreshold = 15;
59  const int higherEtThreshold = 75;
61 
62  auto tauEta = Monitored::Scalar<float>("tauEta", 0.0);
63 
64  auto tauPhi = Monitored::Scalar<float>("tauPhi", 0.0);
65  auto tauEt = Monitored::Scalar<float>("tauEt", 0.0);
66 
67  std::string tauid = "";
68  if(m_TauContainerKey.key().find("TMTauJets") != std::string::npos)
69  {
70  tauid = "GNTau";
71  } else {
72  tauid = "RNN";
73  }
74 
75  auto tauEtEt15Loose = Monitored::Scalar<float>("tauEtEt15"+tauid+"Loose", 0.0);
76  auto panModeEt15Loose =
77  Monitored::Scalar<float>("panModeEt15"+tauid+"Loose", 0.0);
78  auto panModeSubstructure =
79  Monitored::Scalar<float>("panModeSubstructure", 0.0);
80 
81  auto tauPhiEt15 = Monitored::Scalar<float>("tauPhiEt15", 0.0);
82  auto tauEtaEt15 = Monitored::Scalar<float>("tauEtaEt15", 0.0);
83 
84  auto tauPhiEt15Loose = Monitored::Scalar<float>("tauPhiEt15"+tauid+"Loose", 0.0);
85  auto tauEtaEt15Loose = Monitored::Scalar<float>("tauEtaEt15"+tauid+"Loose", 0.0);
86 
87  auto tauCharge = Monitored::Scalar<int>("tauCharge", 0.0);
88  auto JetScore = Monitored::Scalar<float>(tauid+"JetScore", 0.0);
89  auto JetScoreSigTrans =
90  Monitored::Scalar<float>(tauid+"JetScoreSigTrans", 0.0);
91 
92  auto RNNEleScore = Monitored::Scalar<float>("RNNEleScore", 0.0);
93  auto RNNEleScoreSigTrans =
94  Monitored::Scalar<float>("RNNEleScoreSigTrans", 0.0);
95 
96  auto NumTracks = Monitored::Scalar<int>("NumTracks", 0.0);
97  auto NumTracksEt15Loose =
98  Monitored::Scalar<int>("NumTracksEt15"+tauid+"Loose", 0.0);
99 
100  auto nTauCandidates = Monitored::Scalar<int>("nTauCandidates", 0.0);
101  auto nHighPtTauCandidates =
102  Monitored::Scalar<int>("nHighPtTauCandidates", 0.0);
103  auto nClusters = Monitored::Scalar<int>("nClusters", 0.0);
104  auto nClustersEt15Loose =
105  Monitored::Scalar<int>("nClustersEt15"+tauid+"Loose", 0.0);
106 
107  auto tauEtLoose = Monitored::Scalar<float>("tauEt"+tauid+"Loose", 0.0);
108  auto tauEtaLoose = Monitored::Scalar<float>("tauEta"+tauid+"Loose", 0.0);
109  auto tauPhiLoose = Monitored::Scalar<float>("tauPhi"+tauid+"Loose", 0.0);
110  auto NumTracksLoose = Monitored::Scalar<float>("NumTracks"+tauid+"Loose", 0.0);
111 
112  auto tauEtMedium = Monitored::Scalar<float>("tauEt"+tauid+"Medium", 0.0);
113  auto tauEtaMedium = Monitored::Scalar<float>("tauEta"+tauid+"Medium", 0.0);
114  auto tauPhiMedium = Monitored::Scalar<float>("tauPhi"+tauid+"Medium", 0.0);
115  auto NumTracksMedium = Monitored::Scalar<float>("NumTracks"+tauid+"Medium", 0.0);
116 
117  auto tauEtTight = Monitored::Scalar<float>("tauEt"+tauid+"Tight", 0.0);
118  auto tauEtaTight = Monitored::Scalar<float>("tauEta"+tauid+"Tight", 0.0);
119  auto tauPhiTight = Monitored::Scalar<float>("tauPhi"+tauid+"Tight", 0.0);
120  auto NumTracksTight = Monitored::Scalar<float>("NumTracks"+tauid+"Tight", 0.0);
121 
122  auto LB = Monitored::Scalar<int>("LB", 0.0);
123 
124  auto EMRadius = Monitored::Scalar<float>("EMRadius", 0.0);
125  auto hadRadius = Monitored::Scalar<float>("hadRadius", 0.0);
126  auto isolFrac = Monitored::Scalar<float>("isolFrac", 0.0);
127  auto stripWidth2 = Monitored::Scalar<float>("stripWidth2", 0.0);
128  auto nStrip = Monitored::Scalar<float>("nStrip", 0.0);
129  auto etEMAtEMScale = Monitored::Scalar<float>("etEMAtEMScale", 0.0);
130 
131  auto etHadAtEMScale = Monitored::Scalar<float>("etHadAtEMScale", 0.0);
132  auto centFrac = Monitored::Scalar<float>("centFrac", 0.0);
133  auto jetSeedEta = Monitored::Scalar<float>("jetSeedEta", 0.0);
134  auto jetSeedPhi = Monitored::Scalar<float>("jetSeedPhi", 0.0);
135  auto jetSeedPt = Monitored::Scalar<float>("jetSeedPt", 0.0);
136 
137  auto muonVeto = Monitored::Scalar<float>("muonVeto", 0.0);
138 
139  auto tauLoose = Monitored::Scalar<float>("tau"+tauid+"Loose", 0.0);
140  auto tauMedium = Monitored::Scalar<float>("tau"+tauid+"Medium", 0.0);
141  auto tauTight = Monitored::Scalar<float>("tau"+tauid+"Tight", 0.0);
142 
143  auto PSSFrac = Monitored::Scalar<float>("PSSFrac", 0.0);
144  auto EMFrac = Monitored::Scalar<float>("EMFrac", 0.0);
145 
146  auto EMFracTrk = Monitored::Scalar<float>("EMFracTrk", 0.0);
147  auto EfracL2EffCluster = Monitored::Scalar<float>("EfracL2EffCluster", 0.0);
148  auto EisoEffCluster = Monitored::Scalar<float>("EisoEffCluster", 0.0);
149  auto InvMassEffClusters = Monitored::Scalar<float>("InvMassEffClusters", 0.0);
150  auto nNeutPFO = Monitored::Scalar<float>("nNeutPFO", 0.0);
151  auto nShot = Monitored::Scalar<float>("nShot", 0.0);
152  auto pt3 = Monitored::Scalar<float>("pt3", -9.0);
153 
154  auto BDTScoreAsP0 = Monitored::Scalar<float>("BDTScoreAsP0", 0.0);
155  auto dRmax = Monitored::Scalar<float>("dRmax", 0.0);
156 
157  auto ipSigLeadTrk = Monitored::Scalar<float>("ipSigLeadTrk", 0.0);
158  auto massTrkSys = Monitored::Scalar<float>("massTrkSys", 0.0);
159  auto etOverPtLeadTrack = Monitored::Scalar<float>("etOverPtLeadTrack", 0.0);
160  auto ptRatioEflowApprox = Monitored::Scalar<float>("ptRatioEflowApprox", 0.0);
161  auto trFlightPathSig = Monitored::Scalar<float>("trFlightPathSig", 0.0);
162  auto trkAvgDist = Monitored::Scalar<float>("trkAvgDist", 0.0);
163 
164  auto panEta = Monitored::Scalar<float>("panEta", 0.0);
165  auto panPhi = Monitored::Scalar<float>("panPhi", 0.0);
166  auto panPt = Monitored::Scalar<float>("panPt", 0.0);
167  auto d0 = Monitored::Scalar<float>("d0", 0.0);
168  auto dRJetSeedAxis = Monitored::Scalar<float>("dRJetSeedAxis", 0.0);
169  auto z0 = Monitored::Scalar<float>("z0", 0.0);
170 
171  auto etaTrack = Monitored::Scalar<float>("etaTrack", 0.0);
172  auto ptTrack = Monitored::Scalar<float>("ptTrack", 0.0);
173  auto phiTrack = Monitored::Scalar<float>("phiTrack", 0.0);
174  auto leadTrkPt = Monitored::Scalar<float>("leadTrkPt", 0.0);
175  auto nHighPtTaus = Monitored::Scalar<float>("nHighPtTaus", 0.0);
177  Monitored::Scalar<float>("numberOfTRTHighThresholdHits", 0.0);
179  Monitored::Scalar<float>("numberOfTRTHighThresholdOutliers", 0.0);
180  auto numberOfTRTHits = Monitored::Scalar<float>("numberOfTRTHits", 0.0);
181  auto numberOfTRTOutliers =
182  Monitored::Scalar<float>("numberOfTRTOutliers", 0.0);
183  auto trkWidth2 = Monitored::Scalar<float>("trkWidth2", 0.0);
185  Monitored::Scalar<float>("ipZ0SinThetaSigLeadTrk", 0.0);
186  auto numberOfPixelHits = Monitored::Scalar<float>("numberOfPixelHits", 0.0);
188  Monitored::Scalar<float>("numberOfPixelSharedHits", 0.0);
189  auto numberOfSCTHits = Monitored::Scalar<float>("numberOfSCTHits", 0.0);
190  auto numberOfSCTSharedHits =
191  Monitored::Scalar<float>("numberOfSCTSharedHits", 0.0);
192  auto rConv = Monitored::Scalar<float>("rConv", 0.0);
193  auto rConvII = Monitored::Scalar<float>("rConvII", 0.0);
194 
195  // trackLogSeedJetPt
196  auto trackLogSeedJetPt = Monitored::Scalar<float>("trackLogSeedJetPt", 0.0);
197  auto trackLogPt = Monitored::Scalar<float>("trackLogPt", 0.0);
198  auto trackEta = Monitored::Scalar<float>("trackEta", 0.0);
199  auto trackd0TJVA = Monitored::Scalar<float>("trackd0TJVA", 0.0);
200  auto trackZ0SinthetaTJVA =
201  Monitored::Scalar<float>("trackZ0SinthetaTJVA", 0.0);
202  auto trackD0SigTJVA = Monitored::Scalar<float>("trackD0SigTJVA", 0.0);
203  auto trackZ0sinthetaSigTJVA =
204  Monitored::Scalar<float>("trackZ0sinthetaSigTJVA", 0.0);
205  auto trackCharge = Monitored::Scalar<float>("trackCharge", 0.0);
206  auto trackqOverP = Monitored::Scalar<float>("trackqOverP", 0.0);
207  auto trackLogRConv = Monitored::Scalar<float>("trackLogRConv", 0.0);
208  auto trackTanhRConvII = Monitored::Scalar<float>("trackTanhRConvII", 0.0);
209  auto trackPtRatioSeedJet =
210  Monitored::Scalar<float>("trackPtRatioSeedJet", 0.0);
211  auto trackdRJetSeedAxis = Monitored::Scalar<float>("trackdRJetSeedAxis", 0.0);
212  auto trackNInnermostPixHits =
213  Monitored::Scalar<float>("trackNInnermostPixHits", 0.0);
214  auto trackNPixHits = Monitored::Scalar<float>("trackNPixHits", 0.0);
215  auto trackNSiHits = Monitored::Scalar<float>("trackNSiHits", 0.0);
216  auto trackeProbabilityHT =
217  Monitored::Scalar<float>("trackeProbabilityHT", 0.0);
218  auto trackeProbabilityNN =
219  Monitored::Scalar<float>("trackeProbabilityNN", 0.0);
220  auto trackeProbabilityHTorNN =
221  Monitored::Scalar<float>("trackeProbabilityHTorNN", 0.0);
222  auto trackIdScoreCharged = Monitored::Scalar<float>("track", 0.0);
223  auto trackIdScoreIso = Monitored::Scalar<float>("track", 0.0);
224  auto trackIdScoreConv = Monitored::Scalar<float>("track", 0.0);
225  auto trackIdScoreFake = Monitored::Scalar<float>("track", 0.0);
226 
227  auto clusterLogEt = Monitored::Scalar<float>("clusterLogEt", 0.0);
228  auto clusterEta = Monitored::Scalar<float>("clusterEta", 0.0);
229  auto clusterPhi = Monitored::Scalar<float>("clusterPhi", 0.0);
230  auto clusterSecondR = Monitored::Scalar<float>("clusterSecondR", 0.0);
231  auto clusterSecondLambda =
232  Monitored::Scalar<float>("clusterSecondLambda", 0.0);
233  auto clusterCenterLambda =
234  Monitored::Scalar<float>("clusterCenterLambda", 0.0);
235  auto clusterFirstEngDens =
236  Monitored::Scalar<float>("clusterFirstEngDens", 0.0);
237  auto clusterEMproba = Monitored::Scalar<float>("clusterEMproba", 0.0);
238  auto clustersMeanCenterLambda =
239  Monitored::Scalar<float>("clustersMeanCenterLambda", 0.0);
240  auto clustersMeanFirstEngDens =
241  Monitored::Scalar<float>("clustersMeanFirstEngDens", 0.0);
242  auto clustersMeanEMProbability =
243  Monitored::Scalar<float>("clustersMeanEMProbability", 0.0);
244  auto clustersMeanSecondLambda =
245  Monitored::Scalar<float>("clustersMeanSecondLambda", 0.0);
246  auto clustersMeanPresamplerFrac =
247  Monitored::Scalar<float>("clustersMeanPresamplerFrac", 0.0);
248  auto clustersPFOEngRelDiff =
249  Monitored::Scalar<float>("clustersPFOEngRelDiff", 0.0);
250 
251  nTauCandidates = 0;
252 
253  static const SG::ConstAccessor<char> passThinningAcc("passThinning");
254 
255  for (const auto tau : *shallowTaus) {
256 
257  if (!passThinningAcc.withDefault(*tau, true)) continue;
258 
259  tauEta = tau->eta();
260  tauPhi = tau->phi();
261  tauEt = tau->pt() / GeV;
262  tauCharge = tau->charge();
263  NumTracks = tau->nTracks();
264  nClusters = tau->detail<int>(xAOD::TauJetParameters::numTopoClusters);
265  LB = GetEventInfo(ctx)->lumiBlock();
266 
267  // calo
268  EMRadius = tau->detail<float>(xAOD::TauJetParameters::EMRadius);
269  hadRadius = tau->detail<float>(xAOD::TauJetParameters::hadRadius);
270  isolFrac = tau->detail<float>(xAOD::TauJetParameters::isolFrac);
271  stripWidth2 = tau->detail<float>(xAOD::TauJetParameters::stripWidth2);
272  nStrip = tau->detail<int>(xAOD::TauJetParameters::nStrip);
275 
276  centFrac = tau->detail<float>(xAOD::TauJetParameters::centFrac);
277  jetSeedEta = tau->etaJetSeed();
278  jetSeedPhi = tau->phiJetSeed();
279  jetSeedPt = tau->ptJetSeed() / GeV;
280 
284 
285  muonVeto = tau->isTau(xAOD::TauJetParameters::MuonVeto);
286 
287  // check to understand which TauID we can use
289  if( trans_score.isAvailable()) {
290 
291  // we are using a special container decorated with GNTau
293  JetScore = score.isAvailable() ? score(*tau) : -1234;
294 
295  JetScoreSigTrans = trans_score(*tau);
296 
298  tauLoose = tauid_loose.isAvailable() ? tauid_loose(*tau) : -1234;
299 
301  tauMedium = tauid_medium.isAvailable() ? tauid_medium(*tau) : -1234;
302 
304  tauTight = tauid_tight.isAvailable() ? tauid_tight(*tau) : -1234;
305 
306  } else{
307  // GNTau is not present -> use RNN based TauID
308  JetScore = tau->discriminant(xAOD::TauJetParameters::TauID::RNNJetScore);
309  JetScoreSigTrans =
311 
312  tauLoose = tau->isTau(xAOD::TauJetParameters::JetRNNSigLoose);
313  tauMedium = tau->isTau(xAOD::TauJetParameters::JetRNNSigMedium);
314  tauTight = tau->isTau(xAOD::TauJetParameters::JetRNNSigTight);
315  }
316 
317  dRmax = tau->detail<float>(xAOD::TauJetParameters::dRmax);
319  tau->detail<float>(xAOD::TauJetParameters::ptRatioEflowApprox);
320  trkAvgDist = tau->detail<float>(xAOD::TauJetParameters::trkAvgDist);
321 
322  panEta = tau->etaPanTauCellBased();
323  panPhi = tau->phiPanTauCellBased();
324  panPt = tau->ptPanTauCellBased() / GeV; // GeV ;
325 
326  // TauB/Identification/EleVetoBDTinputs
327  PSSFrac = tau->detail<float>(xAOD::TauJetParameters::PSSFraction);
328  static const SG::ConstAccessor<float> EMFracFixedAcc("EMFracFixed");
329  EMFrac = EMFracFixedAcc(*tau);
330 
331  // TauB/SubStructure
332  EMFracTrk = tau->detail<float>(xAOD::TauJetParameters::ChPiEMEOverCaloEME);
333  EfracL2EffCluster = tau->detail<float>(
335  EisoEffCluster =
336  tau->detail<float>(xAOD::TauJetParameters::caloIsoCorrected) / GeV;
337  InvMassEffClusters =
338  tau->detail<float>(xAOD::TauJetParameters::effTopoInvMass) /
339  GeV; // puts it in GeV
340  nNeutPFO = tau->nProtoNeutralPFOs();
341  nShot = tau->nShotPFOs();
342 
343  int panModeDummy = -1;
344  int panModeSubstructureDummy = -1;
345 
346  if (m_etaMin < std::abs(tauEta) && std::abs(tauEta) < m_etaMax) {
347 
348  if( tauEt > lowerEtThreshold) {
349  nTauCandidates += 1;
350  }
351 
352  if (tauEt > higherEtThreshold) {
353  nHighPtTauCandidates += 1;
354  nHighPtTaus += 1;
355  }
356 
357  if (m_kinGroupName != "tauMonKinGroupGlobal" &&
358  tauEt > lowerEtThreshold && tauLoose) {
359 
360  tauPhiEt15Loose = tau->phi();
361  tauEtaEt15Loose = tau->eta();
362  tauEtEt15Loose = tau->pt() / GeV;
363  nClustersEt15Loose =
364  tau->detail<int>(xAOD::TauJetParameters::numTopoClusters);
365  NumTracksEt15Loose = tau->nTracks();
366 
368  panModeDummy);
369  panModeEt15Loose = panModeDummy;
370  fill(tool, tauPhiEt15Loose, tauEtaEt15Loose,
371  nClustersEt15Loose, NumTracksEt15Loose, tauEtEt15Loose,
372  panModeEt15Loose);
373  }
374 
375  if (m_kinGroupName != "tauMonKinGroupGlobal" && tauLoose) {
376  tauPhiLoose = tau->phi();
377  tauEtaLoose = tau->eta();
378  tauEtLoose = tau->pt() / GeV;
379  NumTracksLoose = tau->nTracks();
380 
381  fill(tool, tauPhiLoose, tauEtaLoose, NumTracksLoose,
382  tauEtLoose);
383  }
384 
385  if (m_kinGroupName != "tauMonKinGroupGlobal" && tauMedium) {
386  tauPhiMedium = tau->phi();
387  tauEtaMedium = tau->eta();
388  tauEtMedium = tau->pt() / GeV;
389  NumTracksMedium = tau->nTracks();
390 
391  fill(tool, tauPhiMedium, tauEtaMedium, NumTracksMedium,
392  tauEtMedium);
393  }
394 
395  if (m_kinGroupName != "tauMonKinGroupGlobal" && tauTight) {
396  tauPhiTight = tau->phi();
397  tauEtaTight = tau->eta();
398  tauEtTight = tau->pt() / GeV;
399  NumTracksTight = tau->nTracks();
400 
401  fill(tool, tauPhiTight, tauEtaTight, NumTracksTight,
402  tauEtTight);
403  }
404 
405 
406  // tracks - old
407  if (tau->nTracks() != 0) {
408 
409  massTrkSys =
410  tau->detail<float>(xAOD::TauJetParameters::massTrkSys) / GeV; // GeV
411  trkWidth2 = tau->detail<float>(xAOD::TauJetParameters::trkWidth2);
413  tau->detail<float>(xAOD::TauJetParameters::trFlightPathSig);
414 
415  static const SG::ConstAccessor<float> d0SigTJVAAcc("d0SigTJVA");
416  if (d0SigTJVAAcc.isAvailable(*tau->track(0))) {
417  ipSigLeadTrk = tau->track(0)->d0SigTJVA();
418  }
419  else {
421  }
422 
423  static const SG::ConstAccessor<float> z0sinthetaSigTJVAAcc("z0sinthetaSigTJVA");
424  if (z0sinthetaSigTJVAAcc.isAvailable(*tau->track(0))) {
425  ipZ0SinThetaSigLeadTrk = tau->track(0)->z0sinthetaSigTJVA();
426  }
427  else {
429  }
430 
431  etOverPtLeadTrack =
432  tau->detail<float>(xAOD::TauJetParameters::etOverPtLeadTrk);
433  leadTrkPt = tau->detail<float>(xAOD::TauJetParameters::leadTrkPt) / GeV;
434 
435  fill(tool, massTrkSys, etOverPtLeadTrack, trkWidth2, trFlightPathSig,
437 
438  if (environment() != Environment_t::AOD) {
439  const xAOD::TrackParticle *track = tau->track(0)->track();
440  const Trk::Perigee perigee = track->perigeeParameters();
441 
442  uint8_t dummy(0);
443 
444  if (track->summaryValue(dummy, xAOD::numberOfSCTSharedHits)) {
447  }
448 
449  if (track->summaryValue(dummy, xAOD::numberOfSCTHits)) {
452  }
453 
454  if (track->summaryValue(dummy, xAOD::numberOfPixelSharedHits)) {
457  }
458 
459  if (track->summaryValue(dummy, xAOD::numberOfPixelHits)) {
462  }
463  if (track->summaryValue(dummy, xAOD::numberOfTRTHighThresholdHits)) {
466  }
467  if (track->summaryValue(dummy,
471  }
472  if (track->summaryValue(dummy, xAOD::numberOfTRTHits)) {
475  }
476  if (track->summaryValue(dummy, xAOD::numberOfTRTOutliers)) {
479  }
480 
481  d0 = perigee.parameters()[Trk::d0];
482  z0 = perigee.parameters()[Trk::z0];
483 
484  phiTrack = perigee.parameters()[Trk::phi];
485  etaTrack = perigee.eta();
486  ptTrack = perigee.pT() / GeV;
487 
488  fill(tool, d0, z0, phiTrack, etaTrack, ptTrack);
489  }
490  }
491  // this else can be removed, but it sets any track variable to 0 if
492  // there are no tracks this solution makes entry numbers match calo which
493  // is desired but there are too many zeros.
494  else {
495  leadTrkPt = 0;
496  fill(tool, leadTrkPt);
497  }
498 
499  // Code for All Tracks and Mean track variables.
500 
501  // pre loop variables:
502  double tauSeedPt = tau->ptJetSeed();
503  double logTauSeedPt = std::log(tauSeedPt);
504  trackLogSeedJetPt = logTauSeedPt;
505 
506  fill(tool, trackLogSeedJetPt);
507 
508  static const SG::ConstAccessor<float> acc_trackScoreCharged("rnn_chargedScore");
509  static const SG::ConstAccessor<float> acc_trackScoreIso("rnn_isolationScore");
510  static const SG::ConstAccessor<float> acc_trackScoreConv("rnn_conversionScore");
511  // rnn_fakeScore may not be available (it is not provided by the TauJets smart slimming list), it can be obtained from unitarity
512 
513  for (const xAOD::TauTrack *track : tau->allTracks()) {
514 
515  static const SG::Accessor<
517  trackAcc("trackLinks");
518  if (!trackAcc(*track)[0]) {
519  continue;
520  }
521 
522  const xAOD::TrackParticle *trackParticle = track->track();
523 
524  float d0TJVA = track->track()->d0();
525  trackZ0SinthetaTJVA = track->z0sinThetaTJVA(*tau);
526  trackD0SigTJVA = 999.;
527  trackZ0sinthetaSigTJVA = 999.;
528  float rConv = 999.;
529  float rConvII = 999.;
530  static const SG::ConstAccessor<float> z0sinthetaTJVAAcc("z0sinthetaTJVA");
531  if (z0sinthetaTJVAAcc.isAvailable(*track)) {
532  d0TJVA = track->d0TJVA();
533  trackZ0SinthetaTJVA = track->z0sinthetaTJVA();
534  trackD0SigTJVA = track->d0SigTJVA();
535  trackZ0sinthetaSigTJVA = track->z0sinthetaSigTJVA();
536  rConv = track->rConv();
537  rConvII = track->rConvII();
538  }
539  trackdRJetSeedAxis =
540  track->p4().DeltaR(tau->p4(xAOD::TauJetParameters::JetSeed));
541  double qOverP = trackParticle->qOverP();
542  double trackPt = trackParticle->pt();
543  uint8_t nInnermostPixelLayerHits = 0;
544  trackParticle->summaryValue(nInnermostPixelLayerHits,
546  uint8_t nPixelHits = 0;
548  uint8_t nPixelDeadSensors = 0;
549  trackParticle->summaryValue(nPixelDeadSensors,
551  uint8_t nSCTHits = 0;
553  uint8_t nSCTDeadSensors = 0;
554  trackParticle->summaryValue(nSCTDeadSensors,
557  trackParticle->summaryValue(nTRTHighThresholdHits,
560  trackParticle->summaryValue(numberOfPixelHoles,
564  float eProbabilityHT = 0.;
566  static const SG::ConstAccessor<float> eProbabilityNNAcc("eProbabilityNN");
567  float eProbabilityNN = eProbabilityNNAcc.withDefault(*trackParticle, -1);
568  // hybrid variable (eProbabilityNN is not computed for tracks with pt
569  // < 2 GeV)
570  trackeProbabilityHTorNN =
571  (trackPt > 2000.) ? eProbabilityNN : eProbabilityHT;
572 
573  trackeProbabilityNN = eProbabilityNN;
574  trackeProbabilityHT = eProbabilityHT;
575  trackLogPt = std::log(trackPt);
576  trackEta = track->eta();
577  trackd0TJVA = std::tanh(d0TJVA / 10.);
578  trackCharge = trackParticle->charge();
579  trackqOverP = qOverP * 1000.;
580  trackLogRConv = std::log(rConv);
581  trackTanhRConvII = std::tanh(rConvII / 500.0);
582  trackPtRatioSeedJet = trackPt / tauSeedPt;
583  trackNInnermostPixHits = nInnermostPixelLayerHits;
584  trackNPixHits = nPixelHits + nPixelDeadSensors;
585  trackNSiHits =
586  nPixelHits + nPixelDeadSensors + nSCTHits + nSCTDeadSensors;
587 
588  fill(tool, trackLogPt, trackEta, trackd0TJVA, trackZ0SinthetaTJVA,
589  trackD0SigTJVA, trackZ0sinthetaSigTJVA, trackCharge, trackqOverP,
590  trackLogRConv, trackTanhRConvII, trackPtRatioSeedJet,
591  trackdRJetSeedAxis, trackNInnermostPixHits,
592  trackNPixHits,
593  trackNSiHits,
594  trackeProbabilityHT, trackeProbabilityNN, trackeProbabilityHTorNN);
595 
596  if (acc_trackScoreCharged.isAvailable(*track)) {
597  float chargedScore = acc_trackScoreCharged(*track);
598  float isolationScore = acc_trackScoreIso(*track);
599  float conversionScore = acc_trackScoreConv(*track);
600  float fakeScore = 1. - chargedScore - isolationScore - conversionScore;
601  // ensure the probability is within [0.,1.]
602  fakeScore = std::max(0.f, fakeScore);
603  fakeScore = std::min(1.f, fakeScore);
604 
605  trackIdScoreCharged = chargedScore;
606  trackIdScoreIso = isolationScore;
607  trackIdScoreConv = conversionScore;
608  trackIdScoreFake = fakeScore;
609 
610  fill(tool, trackIdScoreCharged, trackIdScoreIso, trackIdScoreConv,
611  trackIdScoreFake);
612  }
613  }
614 
615  // clusters
616  std::vector<const xAOD::IParticle *> particleList = tau->clusters();
617  std::vector<xAOD::CaloVertexedTopoCluster> clusters;
618  const xAOD::Vertex *vertex = nullptr;
619  if (tau->vertexLink().isValid())
620  vertex = tau->vertex();
621 
622  for (const xAOD::IParticle *particle : particleList) {
623  const xAOD::CaloCluster *cluster =
624  static_cast<const xAOD::CaloCluster *>(particle);
625  if (vertex) {
626  clusters.emplace_back(*cluster, xAOD::CaloCluster::State::CALIBRATED,
627  vertex->position());
628  } else {
629  clusters.emplace_back(*cluster, xAOD::CaloCluster::State::CALIBRATED);
630  }
631  }
632 
633  // sort by decreasing Et
634  auto et_cmp = [](const xAOD::CaloVertexedTopoCluster &lhs,
635  const xAOD::CaloVertexedTopoCluster &rhs) {
636  return lhs.p4().Et() > rhs.p4().Et();
637  };
638  std::sort(clusters.begin(), clusters.end(), et_cmp);
639 
640  // keep first 6 leading clusters as in RNN ID
641  if (clusters.size() > 6) {
642  clusters.resize(6, clusters[0]);
643  }
644 
645  double moment;
646  for (const auto& vertexedCluster : clusters) {
647  const xAOD::CaloCluster &cluster = vertexedCluster.clust();
648 
649  clusterLogEt = std::log10(vertexedCluster.p4().Et());
650  clusterEta = vertexedCluster.eta();
651  clusterPhi = vertexedCluster.phi();
652 
654  clusterSecondR = std::log10(moment + 0.1);
655 
657  moment);
658  clusterSecondLambda = std::log10(moment + 0.1);
659 
661  moment);
662  clusterCenterLambda = std::log10(moment + 1e-6);
663 
665  moment);
666  if (moment != 0.)
667  moment = std::log10(std::abs(moment));
668  clusterFirstEngDens = moment;
669 
671  moment);
672  clusterEMproba = moment;
673 
674  fill(tool, clusterLogEt, clusterEta, clusterPhi, clusterSecondR,
675  clusterSecondLambda, clusterCenterLambda, clusterFirstEngDens,
676  clusterEMproba);
677  }
678 
679  // Et-weighted average of cluster moments (MVA TES)
680  float avariable = 0.;
682  avariable);
683  if (test)
684  clustersMeanCenterLambda = avariable;
685 
687  avariable);
688  if (test)
689  clustersMeanFirstEngDens = avariable;
690 
692  avariable);
693  if (test)
694  clustersMeanEMProbability = avariable;
695 
697  avariable);
698  if (test)
699  clustersMeanSecondLambda = avariable;
700 
702  avariable);
703  if (test)
704  clustersMeanPresamplerFrac = avariable;
705 
706  test = tau->detail(xAOD::TauJetParameters::PFOEngRelDiff, avariable);
707  if (test)
708  clustersPFOEngRelDiff = avariable;
709 
710  fill(tool, clustersMeanCenterLambda, clustersMeanFirstEngDens,
711  clustersMeanEMProbability, clustersMeanSecondLambda,
712  clustersMeanPresamplerFrac, clustersPFOEngRelDiff);
713 
714  for (int s = 0; s < nShot; s++) {
715  const xAOD::PFO *shot = tau->shotPFO(s);
716  if (shot != nullptr) {
717  float pt3Temp = -9.0;
719  pt3Temp);
720  pt3 = pt3Temp / GeV; // GeV
721  fill(tool, pt3);
722  }
723  }
724 
725  for (unsigned int np = 0; np < nNeutPFO; np++) {
726  const xAOD::PFO *npfo = tau->protoNeutralPFO(np);
727  BDTScoreAsP0 = npfo->bdtPi0Score();
728  fill(tool, BDTScoreAsP0);
729  }
730 
731  if (tauEt > lowerEtThreshold) {
732  tauPhiEt15 = tau->phi();
733  tauEtaEt15 = tau->eta();
734  fill(tool, tauPhiEt15, tauEtaEt15);
735  }
736 
737  fill(tool, tauPhi, tauEta, LB, tauEt, centFrac, isolFrac, EMRadius,
739  tauCharge, JetScore, JetScoreSigTrans, RNNEleScore, RNNEleScoreSigTrans,
740  muonVeto, tauLoose, tauMedium, tauTight, PSSFrac, EMFrac, EMFracTrk,
741  EfracL2EffCluster, EisoEffCluster, InvMassEffClusters, nNeutPFO,
742  nShot, NumTracks, nClusters, jetSeedEta, jetSeedPhi, jetSeedPt,
744 
746  panModeSubstructureDummy);
747  panModeSubstructure = panModeSubstructureDummy;
748 
749  fill(tool, panModeSubstructure);
750  if (panPhi > -100) {
751  fill(tool, panEta, panPhi, panPt);
752  }
753  }
754  }
755 
756  fill(tool, nHighPtTauCandidates, nTauCandidates, nHighPtTaus);
757 
758  return StatusCode::SUCCESS;
759 }
ShallowCopy.h
xAOD::TrackParticle_v1::pt
virtual double pt() const override final
The transverse momentum ( ) of the particle.
Definition: TrackParticle_v1.cxx:74
AllowedVariables::e
e
Definition: AsgElectronSelectorTool.cxx:37
xAOD::numberOfPixelHoles
@ numberOfPixelHoles
number of pixel layers on track with absence of hits [unit8_t].
Definition: TrackingPrimitives.h:262
xAOD::TauJetParameters::PanTau_DecayMode
@ PanTau_DecayMode
Definition: TauDefs.h:360
tauMonitorAlgorithm::m_offlineGNTauScoreDecorKey
SG::ReadDecorHandleKey< xAOD::TauJetContainer > m_offlineGNTauScoreDecorKey
Definition: tauMonitorAlgorithm.h:31
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
xAOD::TauJetParameters::PFOEngRelDiff
@ PFOEngRelDiff
Definition: TauDefs.h:318
GeV
#define GeV
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/Root/HelperFunctions.cxx:18
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:79
xAOD::TauJetParameters::RNNEleScoreSigTrans
@ RNNEleScoreSigTrans
RNN score which is signal transformed/flattened.
Definition: TauDefs.h:96
xAOD::TauJetParameters::trkWidth2
@ trkWidth2
Definition: TauDefs.h:162
xAOD::numberOfSCTSharedHits
@ numberOfSCTSharedHits
number of SCT hits shared by several tracks [unit8_t].
Definition: TrackingPrimitives.h:273
TauAnalysisTools::tauEta
double tauEta(const xAOD::TauJet &xTau)
return tau eta
Definition: PhysicsAnalysis/TauID/TauAnalysisTools/Root/HelperFunctions.cxx:100
xAOD::TauJetParameters::trFlightPathSig
@ trFlightPathSig
Definition: TauDefs.h:163
xAOD::uint8_t
uint8_t
Definition: Muon_v1.cxx:558
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:68
xAOD::TrackParticle_v1::charge
float charge() const
Returns the charge.
Definition: TrackParticle_v1.cxx:151
xAOD::TauJetParameters::ClustersMeanSecondLambda
@ ClustersMeanSecondLambda
Definition: TauDefs.h:315
SG::ReadHandle
Definition: StoreGate/StoreGate/ReadHandle.h:67
max
constexpr double max()
Definition: ap_fixedTest.cxx:33
Trk::ParametersT
Dummy class used to allow special convertors to be called for surfaces owned by a detector element.
Definition: EMErrorDetail.h:25
min
constexpr double min()
Definition: ap_fixedTest.cxx:26
xAOD::TrackParticle_v1::summaryValue
bool summaryValue(uint8_t &value, const SummaryType &information) const
Accessor for TrackSummary values.
Definition: TrackParticle_v1.cxx:737
xAOD::PFO_v1::attribute
bool attribute(PFODetails::PFOAttributes AttributeType, T &anAttribute) const
get a PFO Variable via enum
tauMonitorAlgorithm::m_offlineGNTauLooseWPDecorKey
SG::ReadDecorHandleKey< xAOD::TauJetContainer > m_offlineGNTauLooseWPDecorKey
Definition: tauMonitorAlgorithm.h:33
tauMonitorAlgorithm::m_etaMin
Gaudi::Property< float > m_etaMin
Definition: tauMonitorAlgorithm.h:37
xAOD::TauJetParameters::ClustersMeanPresamplerFrac
@ ClustersMeanPresamplerFrac
Definition: TauDefs.h:316
Trk::z0
@ z0
Definition: ParamDefs.h:64
xAOD::numberOfPixelHits
@ numberOfPixelHits
these are the pixel hits, including the b-layer [unit8_t].
Definition: TrackingPrimitives.h:260
xAOD::numberOfTRTHits
@ numberOfTRTHits
number of TRT hits [unit8_t].
Definition: TrackingPrimitives.h:276
SG::ConstAccessor< char >
TrigInDetValidation_Base.test
test
Definition: TrigInDetValidation_Base.py:142
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:91
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:41
xAOD::TauJetParameters::ptRatioEflowApprox
@ ptRatioEflowApprox
Definition: TauDefs.h:293
IDTPM::nPixelHits
float nPixelHits(const U &p)
Definition: TrackParametersHelper.h:354
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:279
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:44
xAOD::numberOfTRTHighThresholdOutliers
@ numberOfTRTHighThresholdOutliers
number of TRT high threshold outliers (only xenon counted) [unit8_t].
Definition: TrackingPrimitives.h:282
xAOD::CaloCluster_v1
Description of a calorimeter cluster.
Definition: CaloCluster_v1.h:62
xAOD::numberOfPixelSharedHits
@ numberOfPixelSharedHits
number of Pixel all-layer hits shared by several tracks [unit8_t].
Definition: TrackingPrimitives.h:263
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
SG::ReadDecorHandle
Handle class for reading a decoration on an object.
Definition: StoreGate/StoreGate/ReadDecorHandle.h:94
TauGNNUtils::Variables::Track::trackPt
bool trackPt(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
Definition: TauGNNUtils.cxx:346
tauMonitorAlgorithm::m_etaMax
Gaudi::Property< float > m_etaMax
Definition: tauMonitorAlgorithm.h:38
TauGNNUtils::Variables::Cluster::SECOND_LAMBDA
bool SECOND_LAMBDA(const xAOD::TauJet &, const xAOD::CaloVertexedTopoCluster &cluster, float &out)
Definition: TauGNNUtils.cxx:717
Monitored
Generic monitoring tool for athena components.
Definition: GenericMonitoringTool.h:28
IDTPM::nSCTHits
float nSCTHits(const U &p)
Definition: TrackParametersHelper.h:393
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
CalibDbCompareRT.dummy
dummy
Definition: CalibDbCompareRT.py:59
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:40
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
hist_file_dump.f
f
Definition: hist_file_dump.py:140
xAOD::CaloCluster_v1::retrieveMoment
bool retrieveMoment(MomentType type, double &value) const
Retrieve individual moment.
Definition: CaloCluster_v1.cxx:692
tauMonitorAlgorithm::m_offlineGNTauTransScoreDecorKey
SG::ReadDecorHandleKey< xAOD::TauJetContainer > m_offlineGNTauTransScoreDecorKey
Definition: tauMonitorAlgorithm.h:32
TauGNNUtils::Variables::Cluster::EM_PROBABILITY
bool EM_PROBABILITY(const xAOD::TauJet &, const xAOD::CaloVertexedTopoCluster &cluster, float &out)
Definition: TauGNNUtils.cxx:795
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.
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:271
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
TauGNNUtils::Variables::Cluster::SECOND_R
bool SECOND_R(const xAOD::TauJet &, const xAOD::CaloVertexedTopoCluster &cluster, float &out)
Definition: TauGNNUtils.cxx:710
xAOD::TauJetParameters::massTrkSys
@ massTrkSys
Definition: TauDefs.h:161
SG::ReadHandle::isValid
virtual bool isValid() override final
Can the handle be successfully dereferenced?
tauMonitorAlgorithm::tauMonitorAlgorithm
tauMonitorAlgorithm(const std::string &name, ISvcLocator *pSvcLocator)
Definition: tauMonitorAlgorithm.cxx:15
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:240
Trk::d0
@ d0
Definition: ParamDefs.h:63
xAOD::TauJetParameters::ClustersMeanEMProbability
@ ClustersMeanEMProbability
Definition: TauDefs.h:313
AtlCoolConsole.tool
tool
Definition: AtlCoolConsole.py:452
xAOD::TauJetParameters::ClustersMeanCenterLambda
@ ClustersMeanCenterLambda
Definition: TauDefs.h:312
xAOD::TauJetParameters::nStrip
@ nStrip
Get number of strips.
Definition: TauDefs.h:204
tauMonitorAlgorithm::~tauMonitorAlgorithm
virtual ~tauMonitorAlgorithm()
Definition: tauMonitorAlgorithm.cxx:20
tauMonitorAlgorithm::initialize
virtual StatusCode initialize() override
initialize
Definition: tauMonitorAlgorithm.cxx:22
TauGNNUtils::Variables::Cluster::FIRST_ENG_DENS
bool FIRST_ENG_DENS(const xAOD::TauJet &, const xAOD::CaloVertexedTopoCluster &cluster, float &out)
Definition: TauGNNUtils.cxx:788
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
tauMonitorAlgorithm::m_offlineGNTauMediumWPDecorKey
SG::ReadDecorHandleKey< xAOD::TauJetContainer > m_offlineGNTauMediumWPDecorKey
Definition: tauMonitorAlgorithm.h:34
xAOD::TauJetParameters::RNNJetScore
@ RNNJetScore
RNN score for Jet rejection (not transformed)
Definition: TauDefs.h:90
xAOD::score
@ score
Definition: TrackingPrimitives.h:514
AthMonitorAlgorithm::initialize
virtual StatusCode initialize() override
initialize
Definition: AthMonitorAlgorithm.cxx:18
xAOD::numberOfTRTOutliers
@ numberOfTRTOutliers
number of TRT outliers [unit8_t].
Definition: TrackingPrimitives.h:277
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
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:274
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
xAOD::TauJetParameters::ClustersMeanFirstEngDens
@ ClustersMeanFirstEngDens
Definition: TauDefs.h:314
xAOD::eProbabilityHT
@ eProbabilityHT
Electron probability from High Threshold (HT) information [float].
Definition: TrackingPrimitives.h:302
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
python.SystemOfUnits.s
float s
Definition: SystemOfUnits.py:147
xAOD::numberOfSCTHits
@ numberOfSCTHits
number of hits in SCT [unit8_t].
Definition: TrackingPrimitives.h:269
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:75
tauMonitorAlgorithm::m_offlineGNTauTightWPDecorKey
SG::ReadDecorHandleKey< xAOD::TauJetContainer > m_offlineGNTauTightWPDecorKey
Definition: tauMonitorAlgorithm.h:35
xAOD::numberOfPixelDeadSensors
@ numberOfPixelDeadSensors
number of dead pixel sensors crossed [unit8_t].
Definition: TrackingPrimitives.h:267
xAOD::track
@ track
Definition: TrackingPrimitives.h:513
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.
IDTPM::nTRTHighThresholdHits
float nTRTHighThresholdHits(const U &p)
Definition: TrackParametersHelper.h:477
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
TauGNNUtils::Variables::Track::trackEta
bool trackEta(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
Definition: TauGNNUtils.cxx:351
xAOD::TauJetParameters::EMRadius
@ EMRadius
Get E_T radius.
Definition: TauDefs.h:190
TauGNNUtils::Variables::Cluster::CENTER_LAMBDA
bool CENTER_LAMBDA(const xAOD::TauJet &, const xAOD::CaloVertexedTopoCluster &cluster, float &out)
Definition: TauGNNUtils.cxx:724
TauGNNUtils::Variables::Track::d0TJVA
bool d0TJVA(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
Definition: TauGNNUtils.cxx:391
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
xAOD::numberOfInnermostPixelLayerHits
@ numberOfInnermostPixelLayerHits
these are the hits in the 0th pixel barrel layer
Definition: TrackingPrimitives.h:238
SG::ConstAccessor::withDefault
const_reference_type withDefault(const ELT &e, const T &deflt) const
Fetch the variable for one element, as a const reference, with a default.
tauMonitorAlgorithm.h
xAOD::TauJetParameters::leadTrkPt
@ leadTrkPt
Definition: TauDefs.h:159