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.
44 {
45
47
48 if (!
taus.isValid()) {
49 ATH_MSG_ERROR(
"evtStore() does not contain tau Collection with name "
50 << m_TauContainerKey);
51 return StatusCode::FAILURE;
52 }
53
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;
60 auto tool = getGroup(m_kinGroupName);
61
63
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);
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);
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);
176 Monitored::Scalar<float>("numberOfTRTOutliers", 0.0);
178 Monitored::Scalar<float>("ipZ0SinThetaSigLeadTrk", 0.0);
181 Monitored::Scalar<float>("numberOfPixelSharedHits", 0.0);
182 auto numberOfSCTHits = Monitored::Scalar<float>(
"numberOfSCTHits", 0.0);
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
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
253 tauPhi = tau->phi();
254 tauEt = tau->pt() /
GeV;
255 tauCharge = tau->charge();
256 NumTracks = tau->nTracks();
259
260
266
268 jetSeedEta = tau->etaJetSeed();
269 jetSeedPhi = tau->phiJetSeed();
270 jetSeedPt = tau->ptJetSeed() /
GeV;
271
275
277
278
281
282
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
300 JetScoreSigTrans =
302
306 }
307
312
313 panEta = tau->etaPanTauCellBased();
314 panPhi = tau->phiPanTauCellBased();
315 panPt = tau->ptPanTauCellBased() /
GeV;
316
317
319 static const SG::ConstAccessor<float> EMFracFixedAcc("EMFracFixed");
320 EMFrac = EMFracFixedAcc(*tau);
321
322
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 =
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
391 if (tau->nTracks() != 0) {
392
397
398 static const SG::ConstAccessor<float> d0SigTJVAAcc("d0SigTJVA");
399 if (d0SigTJVAAcc.isAvailable(*tau->track(0))) {
401 }
402 else {
404 }
405
406 static const SG::ConstAccessor<float> z0sinthetaSigTJVAAcc("z0sinthetaSigTJVA");
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
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
495
497
498 static const SG::Accessor<
500 trackAcc("trackLinks");
501 if (!trackAcc(*track)[0]) {
502 continue;
503 }
504
506
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)) {
516 trackZ0SinthetaTJVA =
track->z0sinthetaTJVA();
517 trackD0SigTJVA =
track->d0SigTJVA();
518 trackZ0sinthetaSigTJVA =
track->z0sinthetaSigTJVA();
519 rConv =
track->rConv();
520 rConvII =
track->rConvII();
521 }
522 trackdRJetSeedAxis =
526 uint8_t nInnermostPixelLayerHits = 0;
549 static const SG::ConstAccessor<float> eProbabilityNNAcc("eProbabilityNN");
550 float eProbabilityNN = eProbabilityNNAcc.withDefault(*trackParticle, -1);
551
552
553 trackeProbabilityHTorNN =
555
558 trackLogPt = std::log(trackPt);
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;
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
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
599 std::vector<const xAOD::IParticle *> particleList = tau->clusters();
600 std::vector<xAOD::CaloVertexedTopoCluster>
clusters;
602 if (tau->vertexLink().isValid())
604
605 for (const xAOD::IParticle *particle : particleList) {
608 if (vertex) {
611 } else {
613 }
614 }
615
616
617 auto et_cmp = [](const xAOD::CaloVertexedTopoCluster &lhs,
618 const xAOD::CaloVertexedTopoCluster &rhs) {
619 return lhs.
p4().Et() > rhs.p4().Et();
620 };
622
623
626 }
627
628 double moment;
629 for (const auto& vertexedCluster : clusters) {
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
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
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);
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,
710 hadRadius, etEMAtEMScale, etHadAtEMScale,
711 tauCharge, JetScore, JetScoreSigTrans, RNNEleScore, RNNEleScoreSigTrans,
712 muonVeto, tauLoose, tauMedium, tauTight, PSSFrac, EMFrac, EMFracTrk, nNeutPFO,
713 nShot, NumTracks, nClusters, jetSeedEta, jetSeedPhi, jetSeedPt,
714 dRmax, ptRatioEflowApprox, trkAvgDist);
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}
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_offlineGNTauScoreDecorKey
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
std::vector< ElementLink< xAOD::TrackParticleContainer > > TrackParticleLinks_t
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)
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.
@ hadRadius
Get hadron calorimeter radius.
@ EMRadius
Get E_T radius.
@ 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.
std::pair< std::unique_ptr< T >, std::unique_ptr< ShallowAuxContainer > > shallowCopyContainer(const T &cont, const EventContext &ctx)
Function making a shallow copy of a constant container.
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.
@ 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].