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 etEMAtEMScale = Monitored::Scalar<float>("etEMAtEMScale", 0.0);
128 
129  auto etHadAtEMScale = Monitored::Scalar<float>("etHadAtEMScale", 0.0);
130  auto centFrac = Monitored::Scalar<float>("centFrac", 0.0);
131  auto jetSeedEta = Monitored::Scalar<float>("jetSeedEta", 0.0);
132  auto jetSeedPhi = Monitored::Scalar<float>("jetSeedPhi", 0.0);
133  auto jetSeedPt = Monitored::Scalar<float>("jetSeedPt", 0.0);
134 
135  auto muonVeto = Monitored::Scalar<float>("muonVeto", 0.0);
136 
137  auto tauLoose = Monitored::Scalar<float>("tau"+tauid+"Loose", 0.0);
138  auto tauMedium = Monitored::Scalar<float>("tau"+tauid+"Medium", 0.0);
139  auto tauTight = Monitored::Scalar<float>("tau"+tauid+"Tight", 0.0);
140 
141  auto PSSFrac = Monitored::Scalar<float>("PSSFrac", 0.0);
142  auto EMFrac = Monitored::Scalar<float>("EMFrac", 0.0);
143 
144  auto EMFracTrk = Monitored::Scalar<float>("EMFracTrk", 0.0);
145  auto nNeutPFO = Monitored::Scalar<float>("nNeutPFO", 0.0);
146  auto nShot = Monitored::Scalar<float>("nShot", 0.0);
147 
148  auto BDTScoreAsP0 = Monitored::Scalar<float>("BDTScoreAsP0", 0.0);
149  auto dRmax = Monitored::Scalar<float>("dRmax", 0.0);
150 
151  auto ipSigLeadTrk = Monitored::Scalar<float>("ipSigLeadTrk", 0.0);
152  auto massTrkSys = Monitored::Scalar<float>("massTrkSys", 0.0);
153  auto etOverPtLeadTrack = Monitored::Scalar<float>("etOverPtLeadTrack", 0.0);
154  auto ptRatioEflowApprox = Monitored::Scalar<float>("ptRatioEflowApprox", 0.0);
155  auto trFlightPathSig = Monitored::Scalar<float>("trFlightPathSig", 0.0);
156  auto trkAvgDist = Monitored::Scalar<float>("trkAvgDist", 0.0);
157 
158  auto panEta = Monitored::Scalar<float>("panEta", 0.0);
159  auto panPhi = Monitored::Scalar<float>("panPhi", 0.0);
160  auto panPt = Monitored::Scalar<float>("panPt", 0.0);
161  auto d0 = Monitored::Scalar<float>("d0", 0.0);
162  auto dRJetSeedAxis = Monitored::Scalar<float>("dRJetSeedAxis", 0.0);
163  auto z0 = Monitored::Scalar<float>("z0", 0.0);
164 
165  auto etaTrack = Monitored::Scalar<float>("etaTrack", 0.0);
166  auto ptTrack = Monitored::Scalar<float>("ptTrack", 0.0);
167  auto phiTrack = Monitored::Scalar<float>("phiTrack", 0.0);
168  auto leadTrkPt = Monitored::Scalar<float>("leadTrkPt", 0.0);
169  auto nHighPtTaus = Monitored::Scalar<float>("nHighPtTaus", 0.0);
171  Monitored::Scalar<float>("numberOfTRTHighThresholdHits", 0.0);
173  Monitored::Scalar<float>("numberOfTRTHighThresholdOutliers", 0.0);
174  auto numberOfTRTHits = Monitored::Scalar<float>("numberOfTRTHits", 0.0);
175  auto numberOfTRTOutliers =
176  Monitored::Scalar<float>("numberOfTRTOutliers", 0.0);
178  Monitored::Scalar<float>("ipZ0SinThetaSigLeadTrk", 0.0);
179  auto numberOfPixelHits = Monitored::Scalar<float>("numberOfPixelHits", 0.0);
181  Monitored::Scalar<float>("numberOfPixelSharedHits", 0.0);
182  auto numberOfSCTHits = Monitored::Scalar<float>("numberOfSCTHits", 0.0);
183  auto numberOfSCTSharedHits =
184  Monitored::Scalar<float>("numberOfSCTSharedHits", 0.0);
185  auto rConv = Monitored::Scalar<float>("rConv", 0.0);
186  auto rConvII = Monitored::Scalar<float>("rConvII", 0.0);
187 
188  // trackLogSeedJetPt
189  auto trackLogSeedJetPt = Monitored::Scalar<float>("trackLogSeedJetPt", 0.0);
190  auto trackLogPt = Monitored::Scalar<float>("trackLogPt", 0.0);
191  auto trackEta = Monitored::Scalar<float>("trackEta", 0.0);
192  auto trackd0TJVA = Monitored::Scalar<float>("trackd0TJVA", 0.0);
193  auto trackZ0SinthetaTJVA =
194  Monitored::Scalar<float>("trackZ0SinthetaTJVA", 0.0);
195  auto trackD0SigTJVA = Monitored::Scalar<float>("trackD0SigTJVA", 0.0);
196  auto trackZ0sinthetaSigTJVA =
197  Monitored::Scalar<float>("trackZ0sinthetaSigTJVA", 0.0);
198  auto trackCharge = Monitored::Scalar<float>("trackCharge", 0.0);
199  auto trackqOverP = Monitored::Scalar<float>("trackqOverP", 0.0);
200  auto trackLogRConv = Monitored::Scalar<float>("trackLogRConv", 0.0);
201  auto trackTanhRConvII = Monitored::Scalar<float>("trackTanhRConvII", 0.0);
202  auto trackPtRatioSeedJet =
203  Monitored::Scalar<float>("trackPtRatioSeedJet", 0.0);
204  auto trackdRJetSeedAxis = Monitored::Scalar<float>("trackdRJetSeedAxis", 0.0);
205  auto trackNInnermostPixHits =
206  Monitored::Scalar<float>("trackNInnermostPixHits", 0.0);
207  auto trackNPixHits = Monitored::Scalar<float>("trackNPixHits", 0.0);
208  auto trackNSiHits = Monitored::Scalar<float>("trackNSiHits", 0.0);
209  auto trackeProbabilityHT =
210  Monitored::Scalar<float>("trackeProbabilityHT", 0.0);
211  auto trackeProbabilityNN =
212  Monitored::Scalar<float>("trackeProbabilityNN", 0.0);
213  auto trackeProbabilityHTorNN =
214  Monitored::Scalar<float>("trackeProbabilityHTorNN", 0.0);
215  auto trackIdScoreCharged = Monitored::Scalar<float>("track", 0.0);
216  auto trackIdScoreIso = Monitored::Scalar<float>("track", 0.0);
217  auto trackIdScoreConv = Monitored::Scalar<float>("track", 0.0);
218  auto trackIdScoreFake = Monitored::Scalar<float>("track", 0.0);
219 
220  auto clusterLogEt = Monitored::Scalar<float>("clusterLogEt", 0.0);
221  auto clusterEta = Monitored::Scalar<float>("clusterEta", 0.0);
222  auto clusterPhi = Monitored::Scalar<float>("clusterPhi", 0.0);
223  auto clusterSecondR = Monitored::Scalar<float>("clusterSecondR", 0.0);
224  auto clusterSecondLambda =
225  Monitored::Scalar<float>("clusterSecondLambda", 0.0);
226  auto clusterCenterLambda =
227  Monitored::Scalar<float>("clusterCenterLambda", 0.0);
228  auto clusterFirstEngDens =
229  Monitored::Scalar<float>("clusterFirstEngDens", 0.0);
230  auto clusterEMproba = Monitored::Scalar<float>("clusterEMproba", 0.0);
231  auto clustersMeanCenterLambda =
232  Monitored::Scalar<float>("clustersMeanCenterLambda", 0.0);
233  auto clustersMeanFirstEngDens =
234  Monitored::Scalar<float>("clustersMeanFirstEngDens", 0.0);
235  auto clustersMeanEMProbability =
236  Monitored::Scalar<float>("clustersMeanEMProbability", 0.0);
237  auto clustersMeanSecondLambda =
238  Monitored::Scalar<float>("clustersMeanSecondLambda", 0.0);
239  auto clustersMeanPresamplerFrac =
240  Monitored::Scalar<float>("clustersMeanPresamplerFrac", 0.0);
241  auto clustersPFOEngRelDiff =
242  Monitored::Scalar<float>("clustersPFOEngRelDiff", 0.0);
243 
244  nTauCandidates = 0;
245 
246  static const SG::ConstAccessor<char> passThinningAcc("passThinning");
247 
248  for (const auto tau : *shallowTaus) {
249 
250  if (!passThinningAcc.withDefault(*tau, true)) continue;
251 
252  tauEta = tau->eta();
253  tauPhi = tau->phi();
254  tauEt = tau->pt() / GeV;
255  tauCharge = tau->charge();
256  NumTracks = tau->nTracks();
257  nClusters = tau->detail<int>(xAOD::TauJetParameters::numTopoClusters);
258  LB = GetEventInfo(ctx)->lumiBlock();
259 
260  // calo
261  EMRadius = tau->detail<float>(xAOD::TauJetParameters::EMRadius);
262  hadRadius = tau->detail<float>(xAOD::TauJetParameters::hadRadius);
263  isolFrac = tau->detail<float>(xAOD::TauJetParameters::isolFrac);
266 
267  centFrac = tau->detail<float>(xAOD::TauJetParameters::centFrac);
268  jetSeedEta = tau->etaJetSeed();
269  jetSeedPhi = tau->phiJetSeed();
270  jetSeedPt = tau->ptJetSeed() / GeV;
271 
275 
276  muonVeto = tau->isTau(xAOD::TauJetParameters::MuonVeto);
277 
278  // check to understand which TauID we can use
280  if( trans_score.isAvailable()) {
281 
282  // we are using a special container decorated with GNTau
284  JetScore = score.isAvailable() ? score(*tau) : -1234;
285 
286  JetScoreSigTrans = trans_score(*tau);
287 
289  tauLoose = tauid_loose.isAvailable() ? tauid_loose(*tau) : -1234;
290 
292  tauMedium = tauid_medium.isAvailable() ? tauid_medium(*tau) : -1234;
293 
295  tauTight = tauid_tight.isAvailable() ? tauid_tight(*tau) : -1234;
296 
297  } else{
298  // GNTau is not present -> use RNN based TauID
299  JetScore = tau->discriminant(xAOD::TauJetParameters::TauID::RNNJetScore);
300  JetScoreSigTrans =
302 
303  tauLoose = tau->isTau(xAOD::TauJetParameters::JetRNNSigLoose);
304  tauMedium = tau->isTau(xAOD::TauJetParameters::JetRNNSigMedium);
305  tauTight = tau->isTau(xAOD::TauJetParameters::JetRNNSigTight);
306  }
307 
308  dRmax = tau->detail<float>(xAOD::TauJetParameters::dRmax);
310  tau->detail<float>(xAOD::TauJetParameters::ptRatioEflowApprox);
311  trkAvgDist = tau->detail<float>(xAOD::TauJetParameters::trkAvgDist);
312 
313  panEta = tau->etaPanTauCellBased();
314  panPhi = tau->phiPanTauCellBased();
315  panPt = tau->ptPanTauCellBased() / GeV; // GeV ;
316 
317  // TauB/Identification/EleVetoBDTinputs
318  PSSFrac = tau->detail<float>(xAOD::TauJetParameters::PSSFraction);
319  static const SG::ConstAccessor<float> EMFracFixedAcc("EMFracFixed");
320  EMFrac = EMFracFixedAcc(*tau);
321 
322  // TauB/SubStructure
323  EMFracTrk = tau->detail<float>(xAOD::TauJetParameters::ChPiEMEOverCaloEME);
324  nNeutPFO = tau->nProtoNeutralPFOs();
325  nShot = tau->nShotPFOs();
326 
327  int panModeDummy = -1;
328  int panModeSubstructureDummy = -1;
329 
330  if (m_etaMin < std::abs(tauEta) && std::abs(tauEta) < m_etaMax) {
331 
332  if( tauEt > lowerEtThreshold) {
333  nTauCandidates += 1;
334  }
335 
336  if (tauEt > higherEtThreshold) {
337  nHighPtTauCandidates += 1;
338  nHighPtTaus += 1;
339  }
340 
341  if (m_kinGroupName != "tauMonKinGroupGlobal" &&
342  tauEt > lowerEtThreshold && tauLoose) {
343 
344  tauPhiEt15Loose = tau->phi();
345  tauEtaEt15Loose = tau->eta();
346  tauEtEt15Loose = tau->pt() / GeV;
347  nClustersEt15Loose =
348  tau->detail<int>(xAOD::TauJetParameters::numTopoClusters);
349  NumTracksEt15Loose = tau->nTracks();
350 
352  panModeDummy);
353  panModeEt15Loose = panModeDummy;
354  fill(tool, tauPhiEt15Loose, tauEtaEt15Loose,
355  nClustersEt15Loose, NumTracksEt15Loose, tauEtEt15Loose,
356  panModeEt15Loose);
357  }
358 
359  if (m_kinGroupName != "tauMonKinGroupGlobal" && tauLoose) {
360  tauPhiLoose = tau->phi();
361  tauEtaLoose = tau->eta();
362  tauEtLoose = tau->pt() / GeV;
363  NumTracksLoose = tau->nTracks();
364 
365  fill(tool, tauPhiLoose, tauEtaLoose, NumTracksLoose,
366  tauEtLoose);
367  }
368 
369  if (m_kinGroupName != "tauMonKinGroupGlobal" && tauMedium) {
370  tauPhiMedium = tau->phi();
371  tauEtaMedium = tau->eta();
372  tauEtMedium = tau->pt() / GeV;
373  NumTracksMedium = tau->nTracks();
374 
375  fill(tool, tauPhiMedium, tauEtaMedium, NumTracksMedium,
376  tauEtMedium);
377  }
378 
379  if (m_kinGroupName != "tauMonKinGroupGlobal" && tauTight) {
380  tauPhiTight = tau->phi();
381  tauEtaTight = tau->eta();
382  tauEtTight = tau->pt() / GeV;
383  NumTracksTight = tau->nTracks();
384 
385  fill(tool, tauPhiTight, tauEtaTight, NumTracksTight,
386  tauEtTight);
387  }
388 
389 
390  // tracks - old
391  if (tau->nTracks() != 0) {
392 
393  massTrkSys =
394  tau->detail<float>(xAOD::TauJetParameters::massTrkSys) / GeV; // GeV
396  tau->detail<float>(xAOD::TauJetParameters::trFlightPathSig);
397 
398  static const SG::ConstAccessor<float> d0SigTJVAAcc("d0SigTJVA");
399  if (d0SigTJVAAcc.isAvailable(*tau->track(0))) {
400  ipSigLeadTrk = tau->track(0)->d0SigTJVA();
401  }
402  else {
404  }
405 
406  static const SG::ConstAccessor<float> z0sinthetaSigTJVAAcc("z0sinthetaSigTJVA");
407  if (z0sinthetaSigTJVAAcc.isAvailable(*tau->track(0))) {
408  ipZ0SinThetaSigLeadTrk = tau->track(0)->z0sinthetaSigTJVA();
409  }
410  else {
412  }
413 
414  etOverPtLeadTrack =
415  tau->detail<float>(xAOD::TauJetParameters::etOverPtLeadTrk);
416  leadTrkPt = tau->detail<float>(xAOD::TauJetParameters::leadTrkPt) / GeV;
417 
418  fill(tool, massTrkSys, etOverPtLeadTrack, trFlightPathSig,
420 
421  if (environment() != Environment_t::AOD) {
422  const xAOD::TrackParticle *track = tau->track(0)->track();
423  const Trk::Perigee perigee = track->perigeeParameters();
424 
425  uint8_t dummy(0);
426 
427  if (track->summaryValue(dummy, xAOD::numberOfSCTSharedHits)) {
430  }
431 
432  if (track->summaryValue(dummy, xAOD::numberOfSCTHits)) {
435  }
436 
437  if (track->summaryValue(dummy, xAOD::numberOfPixelSharedHits)) {
440  }
441 
442  if (track->summaryValue(dummy, xAOD::numberOfPixelHits)) {
445  }
446  if (track->summaryValue(dummy, xAOD::numberOfTRTHighThresholdHits)) {
449  }
450  if (track->summaryValue(dummy,
454  }
455  if (track->summaryValue(dummy, xAOD::numberOfTRTHits)) {
458  }
459  if (track->summaryValue(dummy, xAOD::numberOfTRTOutliers)) {
462  }
463 
464  d0 = perigee.parameters()[Trk::d0];
465  z0 = perigee.parameters()[Trk::z0];
466 
467  phiTrack = perigee.parameters()[Trk::phi];
468  etaTrack = perigee.eta();
469  ptTrack = perigee.pT() / GeV;
470 
471  fill(tool, d0, z0, phiTrack, etaTrack, ptTrack);
472  }
473  }
474  // this else can be removed, but it sets any track variable to 0 if
475  // there are no tracks this solution makes entry numbers match calo which
476  // is desired but there are too many zeros.
477  else {
478  leadTrkPt = 0;
479  fill(tool, leadTrkPt);
480  }
481 
482  // Code for All Tracks and Mean track variables.
483 
484  // pre loop variables:
485  double tauSeedPt = tau->ptJetSeed();
486  double logTauSeedPt = std::log(tauSeedPt);
487  trackLogSeedJetPt = logTauSeedPt;
488 
489  fill(tool, trackLogSeedJetPt);
490 
491  static const SG::ConstAccessor<float> acc_trackScoreCharged("rnn_chargedScore");
492  static const SG::ConstAccessor<float> acc_trackScoreIso("rnn_isolationScore");
493  static const SG::ConstAccessor<float> acc_trackScoreConv("rnn_conversionScore");
494  // rnn_fakeScore may not be available (it is not provided by the TauJets smart slimming list), it can be obtained from unitarity
495 
496  for (const xAOD::TauTrack *track : tau->allTracks()) {
497 
498  static const SG::Accessor<
500  trackAcc("trackLinks");
501  if (!trackAcc(*track)[0]) {
502  continue;
503  }
504 
505  const xAOD::TrackParticle *trackParticle = track->track();
506 
507  float d0TJVA = track->track()->d0();
508  trackZ0SinthetaTJVA = track->z0sinThetaTJVA(*tau);
509  trackD0SigTJVA = 999.;
510  trackZ0sinthetaSigTJVA = 999.;
511  float rConv = 999.;
512  float rConvII = 999.;
513  static const SG::ConstAccessor<float> z0sinthetaTJVAAcc("z0sinthetaTJVA");
514  if (z0sinthetaTJVAAcc.isAvailable(*track)) {
515  d0TJVA = track->d0TJVA();
516  trackZ0SinthetaTJVA = track->z0sinthetaTJVA();
517  trackD0SigTJVA = track->d0SigTJVA();
518  trackZ0sinthetaSigTJVA = track->z0sinthetaSigTJVA();
519  rConv = track->rConv();
520  rConvII = track->rConvII();
521  }
522  trackdRJetSeedAxis =
523  track->p4().DeltaR(tau->p4(xAOD::TauJetParameters::JetSeed));
524  double qOverP = trackParticle->qOverP();
525  double trackPt = trackParticle->pt();
526  uint8_t nInnermostPixelLayerHits = 0;
527  trackParticle->summaryValue(nInnermostPixelLayerHits,
529  uint8_t nPixelHits = 0;
532  trackParticle->summaryValue(nPixelDeadSensors,
534  uint8_t nSCTHits = 0;
537  trackParticle->summaryValue(nSCTDeadSensors,
540  trackParticle->summaryValue(nTRTHighThresholdHits,
543  trackParticle->summaryValue(numberOfPixelHoles,
547  float eProbabilityHT = 0.;
549  static const SG::ConstAccessor<float> eProbabilityNNAcc("eProbabilityNN");
550  float eProbabilityNN = eProbabilityNNAcc.withDefault(*trackParticle, -1);
551  // hybrid variable (eProbabilityNN is not computed for tracks with pt
552  // < 2 GeV)
553  trackeProbabilityHTorNN =
554  (trackPt > 2000.) ? eProbabilityNN : eProbabilityHT;
555 
556  trackeProbabilityNN = eProbabilityNN;
557  trackeProbabilityHT = eProbabilityHT;
558  trackLogPt = std::log(trackPt);
559  trackEta = track->eta();
560  trackd0TJVA = std::tanh(d0TJVA / 10.);
561  trackCharge = trackParticle->charge();
562  trackqOverP = qOverP * 1000.;
563  trackLogRConv = std::log(rConv);
564  trackTanhRConvII = std::tanh(rConvII / 500.0);
565  trackPtRatioSeedJet = trackPt / tauSeedPt;
566  trackNInnermostPixHits = nInnermostPixelLayerHits;
567  trackNPixHits = nPixelHits + nPixelDeadSensors;
568  trackNSiHits =
570 
571  fill(tool, trackLogPt, trackEta, trackd0TJVA, trackZ0SinthetaTJVA,
572  trackD0SigTJVA, trackZ0sinthetaSigTJVA, trackCharge, trackqOverP,
573  trackLogRConv, trackTanhRConvII, trackPtRatioSeedJet,
574  trackdRJetSeedAxis, trackNInnermostPixHits,
575  trackNPixHits,
576  trackNSiHits,
577  trackeProbabilityHT, trackeProbabilityNN, trackeProbabilityHTorNN);
578 
579  if (acc_trackScoreCharged.isAvailable(*track)) {
580  float chargedScore = acc_trackScoreCharged(*track);
581  float isolationScore = acc_trackScoreIso(*track);
582  float conversionScore = acc_trackScoreConv(*track);
583  float fakeScore = 1. - chargedScore - isolationScore - conversionScore;
584  // ensure the probability is within [0.,1.]
585  fakeScore = std::max(0.f, fakeScore);
586  fakeScore = std::min(1.f, fakeScore);
587 
588  trackIdScoreCharged = chargedScore;
589  trackIdScoreIso = isolationScore;
590  trackIdScoreConv = conversionScore;
591  trackIdScoreFake = fakeScore;
592 
593  fill(tool, trackIdScoreCharged, trackIdScoreIso, trackIdScoreConv,
594  trackIdScoreFake);
595  }
596  }
597 
598  // clusters
599  std::vector<const xAOD::IParticle *> particleList = tau->clusters();
600  std::vector<xAOD::CaloVertexedTopoCluster> clusters;
601  const xAOD::Vertex *vertex = nullptr;
602  if (tau->vertexLink().isValid())
603  vertex = tau->vertex();
604 
605  for (const xAOD::IParticle *particle : particleList) {
606  const xAOD::CaloCluster *cluster =
607  static_cast<const xAOD::CaloCluster *>(particle);
608  if (vertex) {
609  clusters.emplace_back(*cluster, xAOD::CaloCluster::State::CALIBRATED,
610  vertex->position());
611  } else {
612  clusters.emplace_back(*cluster, xAOD::CaloCluster::State::CALIBRATED);
613  }
614  }
615 
616  // sort by decreasing Et
617  auto et_cmp = [](const xAOD::CaloVertexedTopoCluster &lhs,
618  const xAOD::CaloVertexedTopoCluster &rhs) {
619  return lhs.p4().Et() > rhs.p4().Et();
620  };
621  std::sort(clusters.begin(), clusters.end(), et_cmp);
622 
623  // keep first 6 leading clusters as in RNN ID
624  if (clusters.size() > 6) {
625  clusters.resize(6, clusters[0]);
626  }
627 
628  double moment;
629  for (const auto& vertexedCluster : clusters) {
630  const xAOD::CaloCluster &cluster = vertexedCluster.clust();
631 
632  clusterLogEt = std::log10(vertexedCluster.p4().Et());
633  clusterEta = vertexedCluster.eta();
634  clusterPhi = vertexedCluster.phi();
635 
637  clusterSecondR = std::log10(moment + 0.1);
638 
640  moment);
641  clusterSecondLambda = std::log10(moment + 0.1);
642 
644  moment);
645  clusterCenterLambda = std::log10(moment + 1e-6);
646 
648  moment);
649  if (moment != 0.)
650  moment = std::log10(std::abs(moment));
651  clusterFirstEngDens = moment;
652 
654  moment);
655  clusterEMproba = moment;
656 
657  fill(tool, clusterLogEt, clusterEta, clusterPhi, clusterSecondR,
658  clusterSecondLambda, clusterCenterLambda, clusterFirstEngDens,
659  clusterEMproba);
660  }
661 
662  // Et-weighted average of cluster moments (MVA TES)
663  float avariable = 0.;
665  avariable);
666  if (test)
667  clustersMeanCenterLambda = avariable;
668 
670  avariable);
671  if (test)
672  clustersMeanFirstEngDens = avariable;
673 
675  avariable);
676  if (test)
677  clustersMeanEMProbability = avariable;
678 
680  avariable);
681  if (test)
682  clustersMeanSecondLambda = avariable;
683 
685  avariable);
686  if (test)
687  clustersMeanPresamplerFrac = avariable;
688 
689  test = tau->detail(xAOD::TauJetParameters::PFOEngRelDiff, avariable);
690  if (test)
691  clustersPFOEngRelDiff = avariable;
692 
693  fill(tool, clustersMeanCenterLambda, clustersMeanFirstEngDens,
694  clustersMeanEMProbability, clustersMeanSecondLambda,
695  clustersMeanPresamplerFrac, clustersPFOEngRelDiff);
696 
697  for (unsigned int np = 0; np < nNeutPFO; np++) {
698  const xAOD::PFO *npfo = tau->protoNeutralPFO(np);
699  BDTScoreAsP0 = npfo->bdtPi0Score();
700  fill(tool, BDTScoreAsP0);
701  }
702 
703  if (tauEt > lowerEtThreshold) {
704  tauPhiEt15 = tau->phi();
705  tauEtaEt15 = tau->eta();
706  fill(tool, tauPhiEt15, tauEtaEt15);
707  }
708 
709  fill(tool, tauPhi, tauEta, LB, tauEt, centFrac, isolFrac, EMRadius,
711  tauCharge, JetScore, JetScoreSigTrans, RNNEleScore, RNNEleScoreSigTrans,
712  muonVeto, tauLoose, tauMedium, tauTight, PSSFrac, EMFrac, EMFracTrk, nNeutPFO,
713  nShot, NumTracks, nClusters, jetSeedEta, jetSeedPhi, jetSeedPt,
715 
717  panModeSubstructureDummy);
718  panModeSubstructure = panModeSubstructureDummy;
719 
720  fill(tool, panModeSubstructure);
721  if (panPhi > -100) {
722  fill(tool, panEta, panPhi, panPt);
723  }
724  }
725  }
726 
727  fill(tool, nHighPtTauCandidates, nTauCandidates, nHighPtTaus);
728 
729  return StatusCode::SUCCESS;
730 }
ShallowCopy.h
xAOD::TrackParticle_v1::pt
virtual double pt() const override final
The transverse momentum ( ) of the particle.
Definition: TrackParticle_v1.cxx:75
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
IDTPM::nPixelDeadSensors
float nPixelDeadSensors(const U &p)
Definition: TrackParametersHelper.h:642
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:17
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::numberOfSCTSharedHits
@ numberOfSCTSharedHits
number of SCT hits shared by several tracks [unit8_t].
Definition: TrackingPrimitives.h:273
TauTrackVars::d0TJVA
bool d0TJVA(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
Definition: ConstituentLoaderTauTrack.cxx:158
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:558
TauTrackVars::trackEta
bool trackEta(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
Definition: ConstituentLoaderTauTrack.cxx:118
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:143
TauTrackVars::trackPt
bool trackPt(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
Definition: ConstituentLoaderTauTrack.cxx:113
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
TauClusterVars::EM_PROBABILITY
bool EM_PROBABILITY(const xAOD::TauJet &, const xAOD::CaloVertexedTopoCluster &cluster, float &out)
Definition: ConstituentLoaderTauCluster.cxx:209
xAOD::TrackParticle_v1::summaryValue
bool summaryValue(uint8_t &value, const SummaryType &information) const
Accessor for TrackSummary values.
Definition: TrackParticle_v1.cxx:666
tauMonitorAlgorithm::m_offlineGNTauLooseWPDecorKey
SG::ReadDecorHandleKey< xAOD::TauJetContainer > m_offlineGNTauLooseWPDecorKey
Definition: tauMonitorAlgorithm.h:33
TauClusterVars::SECOND_R
bool SECOND_R(const xAOD::TauJet &, const xAOD::CaloVertexedTopoCluster &cluster, float &out)
Definition: ConstituentLoaderTauCluster.cxx:124
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::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
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
tauMonitorAlgorithm::m_etaMax
Gaudi::Property< float > m_etaMax
Definition: tauMonitorAlgorithm.h:38
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
TauClusterVars::FIRST_ENG_DENS
bool FIRST_ENG_DENS(const xAOD::TauJet &, const xAOD::CaloVertexedTopoCluster &cluster, float &out)
Definition: ConstituentLoaderTauCluster.cxx:202
xAOD::TauJetParameters::etOverPtLeadTrk
@ etOverPtLeadTrk
Definition: TauDefs.h:158
hist_file_dump.f
f
Definition: hist_file_dump.py:140
xAOD::CaloCluster_v1::retrieveMoment
bool retrieveMoment(MomentType type, double &value) const
Retrieve individual moment.
Definition: CaloCluster_v1.cxx:662
tauMonitorAlgorithm::m_offlineGNTauTransScoreDecorKey
SG::ReadDecorHandleKey< xAOD::TauJetContainer > m_offlineGNTauTransScoreDecorKey
Definition: tauMonitorAlgorithm.h:32
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
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
tauMonitorAlgorithm::~tauMonitorAlgorithm
virtual ~tauMonitorAlgorithm()
Definition: tauMonitorAlgorithm.cxx:20
tauMonitorAlgorithm::initialize
virtual StatusCode initialize() override
initialize
Definition: tauMonitorAlgorithm.cxx:22
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
TauClusterVars::CENTER_LAMBDA
bool CENTER_LAMBDA(const xAOD::TauJet &, const xAOD::CaloVertexedTopoCluster &cluster, float &out)
Definition: ConstituentLoaderTauCluster.cxx:138
python.CaloCondTools.log
log
Definition: CaloCondTools.py:20
RunTileMonitoring.clusters
clusters
Definition: RunTileMonitoring.py:133
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
IDTPM::nSCTDeadSensors
float nSCTDeadSensors(const U &p)
Definition: TrackParametersHelper.h:678
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:44
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
TauClusterVars::SECOND_LAMBDA
bool SECOND_LAMBDA(const xAOD::TauJet &, const xAOD::CaloVertexedTopoCluster &cluster, float &out)
Definition: ConstituentLoaderTauCluster.cxx:131
xAOD::TauJetParameters::PSSFraction
@ PSSFraction
Definition: TauDefs.h:277
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
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