User will overwrite this function. Histogram booking is no longer done in C++. This function is called in execute once the filters are all passed.
41 {
42
44
45 if (!
taus.isValid()) {
46 ATH_MSG_ERROR(
"evtStore() does not contain tau Collection with name "
47 << m_TauContainerKey);
48 return StatusCode::FAILURE;
49 }
50
52
53 const int lowerEtThreshold = 15;
54 const int higherEtThreshold = 75;
55 const auto & tool = getGroup(m_kinGroupName);
56
58
61
62 std::string tauid = "";
63 if(m_TauContainerKey.key().find("TauMonTauJets") != std::string::npos)
64 {
65 tauid = "GNTau";
66 } else {
67 tauid = "RNN";
68 }
69
70 auto tauEtEt15Loose = Monitored::Scalar<float>("tauEtEt15"+tauid+"Loose", 0.0);
71 auto panModeEt15Loose =
72 Monitored::Scalar<float>("panModeEt15"+tauid+"Loose", 0.0);
73 auto panModeSubstructure =
74 Monitored::Scalar<float>("panModeSubstructure", 0.0);
75
76 auto tauPhiEt15 = Monitored::Scalar<float>("tauPhiEt15", 0.0);
77 auto tauEtaEt15 = Monitored::Scalar<float>("tauEtaEt15", 0.0);
78
79 auto tauPhiEt15Loose = Monitored::Scalar<float>("tauPhiEt15"+tauid+"Loose", 0.0);
80 auto tauEtaEt15Loose = Monitored::Scalar<float>("tauEtaEt15"+tauid+"Loose", 0.0);
81
82 auto tauCharge = Monitored::Scalar<int>("tauCharge", 0.0);
83 auto JetScore = Monitored::Scalar<float>(tauid+"JetScore", 0.0);
84 auto JetScoreSigTrans =
85 Monitored::Scalar<float>(tauid+"JetScoreSigTrans", 0.0);
86
87 auto RNNEleScore = Monitored::Scalar<float>(
"RNNEleScore", 0.0);
89 Monitored::Scalar<float>("RNNEleScoreSigTrans", 0.0);
90
91 auto NumTracks = Monitored::Scalar<int>("NumTracks", 0.0);
92 auto NumTracksEt15Loose =
93 Monitored::Scalar<int>("NumTracksEt15"+tauid+"Loose", 0.0);
94
95 auto nTauCandidates = Monitored::Scalar<int>("nTauCandidates", 0.0);
96 auto nHighPtTauCandidates =
97 Monitored::Scalar<int>("nHighPtTauCandidates", 0.0);
98 auto nClusters = Monitored::Scalar<int>("nClusters", 0.0);
99 auto nClustersEt15Loose =
100 Monitored::Scalar<int>("nClustersEt15"+tauid+"Loose", 0.0);
101
102 auto tauEtLoose = Monitored::Scalar<float>("tauEt"+tauid+"Loose", 0.0);
103 auto tauEtaLoose = Monitored::Scalar<float>("tauEta"+tauid+"Loose", 0.0);
104 auto tauPhiLoose = Monitored::Scalar<float>("tauPhi"+tauid+"Loose", 0.0);
105 auto NumTracksLoose = Monitored::Scalar<float>("NumTracks"+tauid+"Loose", 0.0);
106
107 auto tauEtMedium = Monitored::Scalar<float>("tauEt"+tauid+"Medium", 0.0);
108 auto tauEtaMedium = Monitored::Scalar<float>("tauEta"+tauid+"Medium", 0.0);
109 auto tauPhiMedium = Monitored::Scalar<float>("tauPhi"+tauid+"Medium", 0.0);
110 auto NumTracksMedium = Monitored::Scalar<float>("NumTracks"+tauid+"Medium", 0.0);
111
112 auto tauEtTight = Monitored::Scalar<float>("tauEt"+tauid+"Tight", 0.0);
113 auto tauEtaTight = Monitored::Scalar<float>("tauEta"+tauid+"Tight", 0.0);
114 auto tauPhiTight = Monitored::Scalar<float>("tauPhi"+tauid+"Tight", 0.0);
115 auto NumTracksTight = Monitored::Scalar<float>("NumTracks"+tauid+"Tight", 0.0);
116
117 auto LB = Monitored::Scalar<int>(
"LB", 0.0);
118
119 auto isolFrac = Monitored::Scalar<float>(
"isolFrac", 0.0);
120 auto etEMAtEMScale = Monitored::Scalar<float>(
"etEMAtEMScale", 0.0);
121
122 auto etHadAtEMScale = Monitored::Scalar<float>(
"etHadAtEMScale", 0.0);
123 auto centFrac = Monitored::Scalar<float>(
"centFrac", 0.0);
124 auto jetSeedEta = Monitored::Scalar<float>("jetSeedEta", 0.0);
125 auto jetSeedPhi = Monitored::Scalar<float>("jetSeedPhi", 0.0);
126 auto jetSeedPt = Monitored::Scalar<float>("jetSeedPt", 0.0);
127
128 auto muonVeto = Monitored::Scalar<float>("muonVeto", 0.0);
129
130 auto tauLoose = Monitored::Scalar<float>("tau"+tauid+"Loose", 0.0);
131 auto tauMedium = Monitored::Scalar<float>("tau"+tauid+"Medium", 0.0);
132 auto tauTight = Monitored::Scalar<float>("tau"+tauid+"Tight", 0.0);
133
134 auto PSSFrac = Monitored::Scalar<float>("PSSFrac", 0.0);
135 auto EMFrac = Monitored::Scalar<float>("EMFrac", 0.0);
136
137 auto EMFracTrk = Monitored::Scalar<float>("EMFracTrk", 0.0);
138 auto nNeutPFO = Monitored::Scalar<float>("nNeutPFO", 0.0);
139 auto nShot = Monitored::Scalar<float>("nShot", 0.0);
140
141 auto BDTScoreAsP0 = Monitored::Scalar<float>("BDTScoreAsP0", 0.0);
142 auto dRmax = Monitored::Scalar<float>(
"dRmax", 0.0);
143
144 auto ipSigLeadTrk = Monitored::Scalar<float>(
"ipSigLeadTrk", 0.0);
145 auto massTrkSys = Monitored::Scalar<float>(
"massTrkSys", 0.0);
146 auto etOverPtLeadTrack = Monitored::Scalar<float>("etOverPtLeadTrack", 0.0);
148 auto trFlightPathSig = Monitored::Scalar<float>(
"trFlightPathSig", 0.0);
149 auto trkAvgDist = Monitored::Scalar<float>(
"trkAvgDist", 0.0);
150
151 auto panEta = Monitored::Scalar<float>("panEta", 0.0);
152 auto panPhi = Monitored::Scalar<float>("panPhi", 0.0);
153 auto panPt = Monitored::Scalar<float>("panPt", 0.0);
154 auto d0 = Monitored::Scalar<float>(
"d0", 0.0);
155 auto dRJetSeedAxis = Monitored::Scalar<float>("dRJetSeedAxis", 0.0);
156 auto z0 = Monitored::Scalar<float>(
"z0", 0.0);
157
158 auto etaTrack = Monitored::Scalar<float>("etaTrack", 0.0);
159 auto ptTrack = Monitored::Scalar<float>("ptTrack", 0.0);
160 auto phiTrack = Monitored::Scalar<float>("phiTrack", 0.0);
161 auto leadTrkPt = Monitored::Scalar<float>(
"leadTrkPt", 0.0);
162 auto nHighPtTaus = Monitored::Scalar<float>("nHighPtTaus", 0.0);
164 Monitored::Scalar<float>("numberOfTRTHighThresholdHits", 0.0);
166 Monitored::Scalar<float>("numberOfTRTHighThresholdOutliers", 0.0);
167 auto numberOfTRTHits = Monitored::Scalar<float>(
"numberOfTRTHits", 0.0);
169 Monitored::Scalar<float>("numberOfTRTOutliers", 0.0);
171 Monitored::Scalar<float>("ipZ0SinThetaSigLeadTrk", 0.0);
174 Monitored::Scalar<float>("numberOfPixelSharedHits", 0.0);
175 auto numberOfSCTHits = Monitored::Scalar<float>(
"numberOfSCTHits", 0.0);
177 Monitored::Scalar<float>("numberOfSCTSharedHits", 0.0);
178 auto rConv = Monitored::Scalar<float>("rConv", 0.0);
179 auto rConvII = Monitored::Scalar<float>("rConvII", 0.0);
180
181
182 auto trackLogSeedJetPt = Monitored::Scalar<float>("trackLogSeedJetPt", 0.0);
183 auto trackLogPt = Monitored::Scalar<float>("trackLogPt", 0.0);
184 auto trackEta = Monitored::Scalar<float>(
"trackEta", 0.0);
185 auto trackd0TJVA = Monitored::Scalar<float>("trackd0TJVA", 0.0);
186 auto trackZ0SinthetaTJVA =
187 Monitored::Scalar<float>("trackZ0SinthetaTJVA", 0.0);
188 auto trackD0SigTJVA = Monitored::Scalar<float>("trackD0SigTJVA", 0.0);
189 auto trackZ0sinthetaSigTJVA =
190 Monitored::Scalar<float>("trackZ0sinthetaSigTJVA", 0.0);
191 auto trackCharge = Monitored::Scalar<float>("trackCharge", 0.0);
192 auto trackqOverP = Monitored::Scalar<float>("trackqOverP", 0.0);
193 auto trackLogRConv = Monitored::Scalar<float>("trackLogRConv", 0.0);
194 auto trackTanhRConvII = Monitored::Scalar<float>("trackTanhRConvII", 0.0);
195 auto trackPtRatioSeedJet =
196 Monitored::Scalar<float>("trackPtRatioSeedJet", 0.0);
197 auto trackdRJetSeedAxis = Monitored::Scalar<float>("trackdRJetSeedAxis", 0.0);
198 auto trackNInnermostPixHits =
199 Monitored::Scalar<float>("trackNInnermostPixHits", 0.0);
200 auto trackNPixHits = Monitored::Scalar<float>("trackNPixHits", 0.0);
201 auto trackNSiHits = Monitored::Scalar<float>("trackNSiHits", 0.0);
202 auto trackeProbabilityHT =
203 Monitored::Scalar<float>("trackeProbabilityHT", 0.0);
204 auto trackeProbabilityNN =
205 Monitored::Scalar<float>("trackeProbabilityNN", 0.0);
206 auto trackeProbabilityHTorNN =
207 Monitored::Scalar<float>("trackeProbabilityHTorNN", 0.0);
208 auto trackIdScoreCharged = Monitored::Scalar<float>("track", 0.0);
209 auto trackIdScoreIso = Monitored::Scalar<float>("track", 0.0);
210 auto trackIdScoreConv = Monitored::Scalar<float>("track", 0.0);
211 auto trackIdScoreFake = Monitored::Scalar<float>("track", 0.0);
212
213 auto clusterLogEt = Monitored::Scalar<float>("clusterLogEt", 0.0);
214 auto clusterEta = Monitored::Scalar<float>("clusterEta", 0.0);
215 auto clusterPhi = Monitored::Scalar<float>("clusterPhi", 0.0);
216 auto clusterSecondR = Monitored::Scalar<float>("clusterSecondR", 0.0);
217 auto clusterSecondLambda =
218 Monitored::Scalar<float>("clusterSecondLambda", 0.0);
219 auto clusterCenterLambda =
220 Monitored::Scalar<float>("clusterCenterLambda", 0.0);
221 auto clusterFirstEngDens =
222 Monitored::Scalar<float>("clusterFirstEngDens", 0.0);
223 auto clusterEMproba = Monitored::Scalar<float>("clusterEMproba", 0.0);
224 auto clustersMeanCenterLambda =
225 Monitored::Scalar<float>("clustersMeanCenterLambda", 0.0);
226 auto clustersMeanFirstEngDens =
227 Monitored::Scalar<float>("clustersMeanFirstEngDens", 0.0);
228 auto clustersMeanEMProbability =
229 Monitored::Scalar<float>("clustersMeanEMProbability", 0.0);
230 auto clustersMeanSecondLambda =
231 Monitored::Scalar<float>("clustersMeanSecondLambda", 0.0);
232 auto clustersMeanPresamplerFrac =
233 Monitored::Scalar<float>("clustersMeanPresamplerFrac", 0.0);
234 auto clustersPFOEngRelDiff =
235 Monitored::Scalar<float>("clustersPFOEngRelDiff", 0.0);
236
237 nTauCandidates = 0;
238
239
244
245 static const SG::ConstAccessor<char> passThinningAcc("passThinning");
246 static const SG::ConstAccessor<float> scoreAcc("GNTauScore_v0prune");
247 static const SG::ConstAccessor<float> EMFracFixedAcc("EMFracFixed");
248 static const SG::ConstAccessor<float> d0SigTJVAAcc("d0SigTJVA");
249 static const SG::ConstAccessor<float> z0sinthetaSigTJVAAcc("z0sinthetaSigTJVA");
250 static const SG::ConstAccessor<float> acc_trackScoreCharged("rnn_chargedScore");
251 static const SG::ConstAccessor<float> acc_trackScoreIso("rnn_isolationScore");
252 static const SG::ConstAccessor<float> acc_trackScoreConv("rnn_conversionScore");
253 static const SG::ConstAccessor<float> z0sinthetaTJVAAcc("z0sinthetaTJVA");
254 static const SG::ConstAccessor<float> eProbabilityNNAcc("eProbabilityNN");
255
257
258 for (const auto tau : *shallowTaus) {
259
260 if (!passThinningAcc.withDefault(*tau, true)) continue;
261
262 tauEta = tau->eta();
263 tauPhi = tau->phi();
264 tauEt = tau->pt() /
GeV;
265 tauCharge = tau->charge();
266 NumTracks = tau->nTracks();
269
270
274
276 jetSeedEta = tau->etaJetSeed();
277 jetSeedPhi = tau->phiJetSeed();
278 jetSeedPt = tau->ptJetSeed() /
GeV;
279
283
285
286
288
289
290 JetScore = scoreAcc(*tau);
291
292 JetScoreSigTrans = trans_score(*tau);
293
294 tauLoose = tauid_loose.
isAvailable() ? tauid_loose(*tau) : -1234;
295
296 tauMedium = tauid_medium.
isAvailable() ? tauid_medium(*tau) : -1234;
297
298 tauTight = tauid_tight.
isAvailable() ? tauid_tight(*tau) : -1234;
299
300 } else{
301
303 JetScoreSigTrans =
305
309 }
310
315
316 panEta = tau->etaPanTauCellBased();
317 panPhi = tau->phiPanTauCellBased();
318 panPt = tau->ptPanTauCellBased() /
GeV;
319
320
322 EMFrac = EMFracFixedAcc(*tau);
323
324
326 nNeutPFO = tau->nProtoNeutralPFOs();
327 nShot = tau->nShotPFOs();
328
329 int panModeDummy = -1;
330 int panModeSubstructureDummy = -1;
331
332 if (m_etaMin < std::abs(tauEta) && std::abs(tauEta) < m_etaMax) {
333
334 if( tauEt > lowerEtThreshold) {
335 nTauCandidates += 1;
336 }
337
338 if (tauEt > higherEtThreshold) {
339 nHighPtTauCandidates += 1;
340 nHighPtTaus += 1;
341 }
342
343 if (m_kinGroupName != "tauMonKinGroupGlobal" &&
344 tauEt > lowerEtThreshold && tauLoose) {
345
346 tauPhiEt15Loose = tau->phi();
347 tauEtaEt15Loose = tau->eta();
348 tauEtEt15Loose = tau->pt() /
GeV;
349 nClustersEt15Loose =
351 NumTracksEt15Loose = tau->nTracks();
352
354 panModeDummy);
355 panModeEt15Loose = panModeDummy;
356 fill(tool, tauPhiEt15Loose, tauEtaEt15Loose,
357 nClustersEt15Loose, NumTracksEt15Loose, tauEtEt15Loose,
358 panModeEt15Loose);
359 }
360
361 if (m_kinGroupName != "tauMonKinGroupGlobal" && tauLoose) {
362 tauPhiLoose = tau->phi();
363 tauEtaLoose = tau->eta();
364 tauEtLoose = tau->pt() /
GeV;
365 NumTracksLoose = tau->nTracks();
366
367 fill(tool, tauPhiLoose, tauEtaLoose, NumTracksLoose,
368 tauEtLoose);
369 }
370
371 if (m_kinGroupName != "tauMonKinGroupGlobal" && tauMedium) {
372 tauPhiMedium = tau->phi();
373 tauEtaMedium = tau->eta();
374 tauEtMedium = tau->pt() /
GeV;
375 NumTracksMedium = tau->nTracks();
376
377 fill(tool, tauPhiMedium, tauEtaMedium, NumTracksMedium,
378 tauEtMedium);
379 }
380
381 if (m_kinGroupName != "tauMonKinGroupGlobal" && tauTight) {
382 tauPhiTight = tau->phi();
383 tauEtaTight = tau->eta();
384 tauEtTight = tau->pt() /
GeV;
385 NumTracksTight = tau->nTracks();
386
387 fill(tool, tauPhiTight, tauEtaTight, NumTracksTight,
388 tauEtTight);
389 }
390
391
392
393 if (tau->nTracks() != 0) {
394
399
400 if (d0SigTJVAAcc.isAvailable(*tau->track(0))) {
402 }
403 else {
405 }
406
407 if (z0sinthetaSigTJVAAcc.isAvailable(*tau->track(0))) {
409 }
410 else {
412 }
413
414 etOverPtLeadTrack =
417
418 fill(tool, massTrkSys, etOverPtLeadTrack, trFlightPathSig,
419 ipSigLeadTrk, ipZ0SinThetaSigLeadTrk, leadTrkPt);
420
424
426
429 fill(tool, numberOfSCTSharedHits);
430 }
431
434 fill(tool, numberOfSCTHits);
435 }
436
439 fill(tool, numberOfPixelSharedHits);
440 }
441
444 fill(tool, numberOfPixelHits);
445 }
448 fill(tool, numberOfTRTHighThresholdHits);
449 }
450 if (
track->summaryValue(dummy,
453 fill(tool, numberOfTRTHighThresholdOutliers);
454 }
457 fill(tool, numberOfTRTHits);
458 }
461 fill(tool, numberOfTRTOutliers);
462 }
463
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
475
476
477 else {
479 fill(tool, leadTrkPt);
480 }
481
482
483
484
485 double tauSeedPt = tau->ptJetSeed();
486 double logTauSeedPt = std::log(tauSeedPt);
487 trackLogSeedJetPt = logTauSeedPt;
488
489 fill(tool, trackLogSeedJetPt);
490
492 if (!trackAcc(*track)[0]) {
493 continue;
494 }
495
497
499 trackZ0SinthetaTJVA =
track->z0sinThetaTJVA(*tau);
500 trackD0SigTJVA = 999.;
501 trackZ0sinthetaSigTJVA = 999.;
502 float rConv = 999.;
503 float rConvII = 999.;
504 if (z0sinthetaTJVAAcc.isAvailable(*track)) {
506 trackZ0SinthetaTJVA =
track->z0sinthetaTJVA();
507 trackD0SigTJVA =
track->d0SigTJVA();
508 trackZ0sinthetaSigTJVA =
track->z0sinthetaSigTJVA();
509 rConv =
track->rConv();
510 rConvII =
track->rConvII();
511 }
512 trackdRJetSeedAxis =
516 uint8_t nInnermostPixelLayerHits = 0;
538
539 float eProbabilityNN = eProbabilityNNAcc.withDefault(*trackParticle, -1);
540
541
542 trackeProbabilityHTorNN =
544
547 trackLogPt = std::log(trackPt);
549 trackd0TJVA = std::tanh(d0TJVA / 10.);
550 trackCharge = trackParticle->
charge();
551 trackqOverP =
qOverP * 1000.;
552 trackLogRConv = std::log(rConv);
553 trackTanhRConvII = std::tanh(rConvII / 500.0);
554 trackPtRatioSeedJet =
trackPt / tauSeedPt;
555 trackNInnermostPixHits = nInnermostPixelLayerHits;
557 trackNSiHits =
559
560 fill(tool, trackLogPt, trackEta, trackd0TJVA, trackZ0SinthetaTJVA,
561 trackD0SigTJVA, trackZ0sinthetaSigTJVA, trackCharge, trackqOverP,
562 trackLogRConv, trackTanhRConvII, trackPtRatioSeedJet,
563 trackdRJetSeedAxis, trackNInnermostPixHits,
564 trackNPixHits,
565 trackNSiHits,
566 trackeProbabilityHT, trackeProbabilityNN, trackeProbabilityHTorNN);
567
568 if (acc_trackScoreCharged.isAvailable(*track)) {
569 float chargedScore = acc_trackScoreCharged(*track);
570 float isolationScore = acc_trackScoreIso(*track);
571 float conversionScore = acc_trackScoreConv(*track);
572 float fakeScore = 1. - chargedScore - isolationScore - conversionScore;
573
574 fakeScore = std::max(0.f, fakeScore);
575 fakeScore = std::min(1.f, fakeScore);
576
577 trackIdScoreCharged = chargedScore;
578 trackIdScoreIso = isolationScore;
579 trackIdScoreConv = conversionScore;
580 trackIdScoreFake = fakeScore;
581
582 fill(tool, trackIdScoreCharged, trackIdScoreIso, trackIdScoreConv,
583 trackIdScoreFake);
584 }
585 }
586
587
588 std::vector<const xAOD::IParticle *> particleList = tau->clusters();
589 std::vector<xAOD::CaloVertexedTopoCluster>
clusters;
591 if (tau->vertexLink().isValid())
593
594 for (const xAOD::IParticle *particle : particleList) {
597 if (vertex) {
600 } else {
602 }
603 }
604
605
606 auto et_cmp = [](const xAOD::CaloVertexedTopoCluster &lhs,
607 const xAOD::CaloVertexedTopoCluster &rhs) {
608 return lhs.
p4().Et() > rhs.p4().Et();
609 };
611
612
615 }
616
617 double moment;
618 for (const auto& vertexedCluster : clusters) {
620
621 clusterLogEt = std::log10(vertexedCluster.p4().Et());
622 clusterEta = vertexedCluster.eta();
623 clusterPhi = vertexedCluster.phi();
624
626 clusterSecondR = std::log10(moment + 0.1);
627
629 moment);
630 clusterSecondLambda = std::log10(moment + 0.1);
631
633 moment);
634 clusterCenterLambda = std::log10(moment + 1e-6);
635
637 moment);
638 if (moment != 0.)
639 moment = std::log10(std::abs(moment));
640 clusterFirstEngDens = moment;
641
643 moment);
644 clusterEMproba = moment;
645
646 fill(tool, clusterLogEt, clusterEta, clusterPhi, clusterSecondR,
647 clusterSecondLambda, clusterCenterLambda, clusterFirstEngDens,
648 clusterEMproba);
649 }
650
651
652 float avariable = 0.;
654 avariable);
655 if (test)
656 clustersMeanCenterLambda = avariable;
657
659 avariable);
660 if (test)
661 clustersMeanFirstEngDens = avariable;
662
664 avariable);
665 if (test)
666 clustersMeanEMProbability = avariable;
667
669 avariable);
670 if (test)
671 clustersMeanSecondLambda = avariable;
672
674 avariable);
675 if (test)
676 clustersMeanPresamplerFrac = avariable;
677
679 if (test)
680 clustersPFOEngRelDiff = avariable;
681
682 fill(tool, clustersMeanCenterLambda, clustersMeanFirstEngDens,
683 clustersMeanEMProbability, clustersMeanSecondLambda,
684 clustersMeanPresamplerFrac, clustersPFOEngRelDiff);
685
686 for (
unsigned int np = 0;
np < nNeutPFO;
np++) {
687 const xAOD::PFO *npfo = tau->protoNeutralPFO(np);
689 fill(tool, BDTScoreAsP0);
690 }
691
692 if (tauEt > lowerEtThreshold) {
693 tauPhiEt15 = tau->phi();
694 tauEtaEt15 = tau->eta();
695 fill(tool, tauPhiEt15, tauEtaEt15);
696 }
697
698 fill(tool, tauPhi, tauEta, LB, tauEt, centFrac, isolFrac,etEMAtEMScale, etHadAtEMScale,
699 tauCharge, JetScore, JetScoreSigTrans, RNNEleScore, RNNEleScoreSigTrans,
700 muonVeto, tauLoose, tauMedium, tauTight, PSSFrac, EMFrac, EMFracTrk, nNeutPFO,
701 nShot, NumTracks, nClusters, jetSeedEta, jetSeedPhi, jetSeedPt,
702 dRmax, ptRatioEflowApprox, trkAvgDist);
703
705 panModeSubstructureDummy);
706 panModeSubstructure = panModeSubstructureDummy;
707
708 fill(tool, panModeSubstructure);
709 if (panPhi > -100) {
710 fill(tool, panEta, panPhi, panPt);
711 }
712 }
713 }
714
715 fill(tool, nHighPtTauCandidates, nTauCandidates, nHighPtTaus);
716
717 return StatusCode::SUCCESS;
718}
#define ATH_MSG_ERROR(x,...)
Environment_t environment() const
Accessor functions for the environment.
SG::ReadHandle< xAOD::EventInfo > GetEventInfo(const EventContext &) const
Return a ReadHandle for an EventInfo object (get run/event numbers, etc.).
Declare a monitored scalar variable.
bool isAvailable()
Test to see if this variable exists in the store, for the referenced object.
double eta() const
Access method for pseudorapidity - from momentum.
double pT() const
Access method for transverse momentum.
SG::ReadDecorHandleKey< xAOD::TauJetContainer > m_offlineGNTauMediumWPDecorKey
SG::ReadDecorHandleKey< xAOD::TauJetContainer > m_offlineGNTauLooseWPDecorKey
SG::ReadDecorHandleKey< xAOD::TauJetContainer > m_offlineGNTauTransScoreDecorKey
SG::ReadDecorHandleKey< xAOD::TauJetContainer > m_offlineGNTauTightWPDecorKey
bool retrieveMoment(MomentType type, double &value) const
Retrieve individual moment.
@ SECOND_LAMBDA
Second Moment in .
@ EM_PROBABILITY
Classification probability to be em-like.
@ SECOND_R
Second Moment in .
@ FIRST_ENG_DENS
First Moment in E/V.
@ CENTER_LAMBDA
Shower depth at Cluster Centroid.
virtual FourMom_t p4() const final
The full 4-momentum of the particle.
float bdtPi0Score() const
get BDT Score used to classify clusters as Pi0 like or not
bool summaryValue(uint8_t &value, const SummaryType &information) const
Accessor for TrackSummary values.
float qOverP() const
Returns the parameter.
virtual double pt() const override final
The transverse momentum ( ) of the particle.
float charge() const
Returns the charge.
float nTRTHighThresholdHits(const U &p)
float nPixelDeadSensors(const U &p)
float nSCTHits(const U &p)
float nSCTDeadSensors(const U &p)
float nPixelHits(const U &p)
void fill(const ToolHandle< GenericMonitoringTool > &tool, T &&... variables)
SG::Accessor< T, ALLOC > Accessor
bool trackEta(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool d0TJVA(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
bool trackPt(const xAOD::TauJet &, const xAOD::TauTrack &track, float &out)
constexpr ParticleHypothesis particle[PARTICLEHYPOTHESES]
the array of masses
ParametersT< TrackParametersDim, Charged, PerigeeSurface > Perigee
@ eProbabilityNN
Electron probability from NN.
void sort(typename DataModel_detail::iterator< DVL > beg, typename DataModel_detail::iterator< DVL > end)
Specialization of sort for DataVector/List.
@ etHadAtEMScale
Get Hadronic energy at EM scale.
@ isolFrac
Get isolation fraction.
@ ClustersMeanEMProbability
@ ClustersMeanSecondLambda
@ ClustersMeanFirstEngDens
@ trkAvgDist
Get calibrated EM transverse energy (DEPRECATED since r19).
@ ClustersMeanPresamplerFrac
@ etEMAtEMScale
Get EM energy at EM scale.
@ centFrac
Get centrality fraction.
@ ClustersMeanCenterLambda
@ numTopoClusters
get number of topocluster constituents of jet associated to tau candidate
@ dRmax
Get maximal dR of tracks associated to calo-seeded tau.
@ RNNEleScore
RNN score for Ele rejection (not transformed).
@ RNNEleScoreSigTrans
RNN score which is signal transformed/flattened.
@ RNNJetScore
RNN score for Jet rejection (not transformed).
@ RNNJetScoreSigTrans
RNN score which is signal transformed/flattened.
PFO_v1 PFO
Definition of the current "pfo version".
CaloCluster_v1 CaloCluster
Define the latest version of the calorimeter cluster class.
TrackParticle_v1 TrackParticle
Reference the current persistent version:
Vertex_v1 Vertex
Define the latest version of the vertex class.
TauTrack_v1 TauTrack
Definition of the current version.
ShallowCopyResult_t< T > shallowCopy(const T &cont, const EventContext &ctx)
Create a shallow copy of an existing container.
@ numberOfPixelHoles
number of pixel layers on track with absence of hits [unit8_t].
@ numberOfTRTHighThresholdOutliers
number of TRT high threshold outliers (only xenon counted) [unit8_t].
@ numberOfTRTHits
number of TRT hits [unit8_t].
@ numberOfSCTDeadSensors
number of dead SCT sensors crossed [unit8_t].
@ eProbabilityHT
Electron probability from High Threshold (HT) information [float].
@ numberOfSCTHits
number of hits in SCT [unit8_t].
@ numberOfInnermostPixelLayerHits
these are the hits in the 0th pixel barrel layer
@ numberOfPixelHits
these are the pixel hits, including the b-layer [unit8_t].
@ numberOfPixelSharedHits
number of Pixel all-layer hits shared by several tracks [unit8_t].
@ numberOfSCTSharedHits
number of SCT hits shared by several tracks [unit8_t].
@ numberOfTRTHighThresholdHits
number of TRT hits which pass the high threshold (only xenon counted) [unit8_t].
@ numberOfTRTOutliers
number of TRT outliers [unit8_t].
@ numberOfPixelDeadSensors
number of dead pixel sensors crossed [unit8_t].
@ numberOfSCTHoles
number of SCT holes [unit8_t].