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
56 const int lowerEtThreshold = 15;
57 const int higherEtThreshold = 75;
58 auto tool = getGroup(m_kinGroupName);
59
61
64
65 std::string tauid = "";
66 if(m_TauContainerKey.key().find("TauMonTauJets") != std::string::npos)
67 {
68 tauid = "GNTau";
69 } else {
70 tauid = "RNN";
71 }
72
73 auto tauEtEt15Loose = Monitored::Scalar<float>("tauEtEt15"+tauid+"Loose", 0.0);
74 auto panModeEt15Loose =
75 Monitored::Scalar<float>("panModeEt15"+tauid+"Loose", 0.0);
76 auto panModeSubstructure =
77 Monitored::Scalar<float>("panModeSubstructure", 0.0);
78
79 auto tauPhiEt15 = Monitored::Scalar<float>("tauPhiEt15", 0.0);
80 auto tauEtaEt15 = Monitored::Scalar<float>("tauEtaEt15", 0.0);
81
82 auto tauPhiEt15Loose = Monitored::Scalar<float>("tauPhiEt15"+tauid+"Loose", 0.0);
83 auto tauEtaEt15Loose = Monitored::Scalar<float>("tauEtaEt15"+tauid+"Loose", 0.0);
84
85 auto tauCharge = Monitored::Scalar<int>("tauCharge", 0.0);
86 auto JetScore = Monitored::Scalar<float>(tauid+"JetScore", 0.0);
87 auto JetScoreSigTrans =
88 Monitored::Scalar<float>(tauid+"JetScoreSigTrans", 0.0);
89
90 auto RNNEleScore = Monitored::Scalar<float>(
"RNNEleScore", 0.0);
92 Monitored::Scalar<float>("RNNEleScoreSigTrans", 0.0);
93
94 auto NumTracks = Monitored::Scalar<int>("NumTracks", 0.0);
95 auto NumTracksEt15Loose =
96 Monitored::Scalar<int>("NumTracksEt15"+tauid+"Loose", 0.0);
97
98 auto nTauCandidates = Monitored::Scalar<int>("nTauCandidates", 0.0);
99 auto nHighPtTauCandidates =
100 Monitored::Scalar<int>("nHighPtTauCandidates", 0.0);
101 auto nClusters = Monitored::Scalar<int>("nClusters", 0.0);
102 auto nClustersEt15Loose =
103 Monitored::Scalar<int>("nClustersEt15"+tauid+"Loose", 0.0);
104
105 auto tauEtLoose = Monitored::Scalar<float>("tauEt"+tauid+"Loose", 0.0);
106 auto tauEtaLoose = Monitored::Scalar<float>("tauEta"+tauid+"Loose", 0.0);
107 auto tauPhiLoose = Monitored::Scalar<float>("tauPhi"+tauid+"Loose", 0.0);
108 auto NumTracksLoose = Monitored::Scalar<float>("NumTracks"+tauid+"Loose", 0.0);
109
110 auto tauEtMedium = Monitored::Scalar<float>("tauEt"+tauid+"Medium", 0.0);
111 auto tauEtaMedium = Monitored::Scalar<float>("tauEta"+tauid+"Medium", 0.0);
112 auto tauPhiMedium = Monitored::Scalar<float>("tauPhi"+tauid+"Medium", 0.0);
113 auto NumTracksMedium = Monitored::Scalar<float>("NumTracks"+tauid+"Medium", 0.0);
114
115 auto tauEtTight = Monitored::Scalar<float>("tauEt"+tauid+"Tight", 0.0);
116 auto tauEtaTight = Monitored::Scalar<float>("tauEta"+tauid+"Tight", 0.0);
117 auto tauPhiTight = Monitored::Scalar<float>("tauPhi"+tauid+"Tight", 0.0);
118 auto NumTracksTight = Monitored::Scalar<float>("NumTracks"+tauid+"Tight", 0.0);
119
120 auto LB = Monitored::Scalar<int>(
"LB", 0.0);
121
122 auto isolFrac = Monitored::Scalar<float>(
"isolFrac", 0.0);
123 auto etEMAtEMScale = Monitored::Scalar<float>(
"etEMAtEMScale", 0.0);
124
125 auto etHadAtEMScale = Monitored::Scalar<float>(
"etHadAtEMScale", 0.0);
126 auto centFrac = Monitored::Scalar<float>(
"centFrac", 0.0);
127 auto jetSeedEta = Monitored::Scalar<float>("jetSeedEta", 0.0);
128 auto jetSeedPhi = Monitored::Scalar<float>("jetSeedPhi", 0.0);
129 auto jetSeedPt = Monitored::Scalar<float>("jetSeedPt", 0.0);
130
131 auto muonVeto = Monitored::Scalar<float>("muonVeto", 0.0);
132
133 auto tauLoose = Monitored::Scalar<float>("tau"+tauid+"Loose", 0.0);
134 auto tauMedium = Monitored::Scalar<float>("tau"+tauid+"Medium", 0.0);
135 auto tauTight = Monitored::Scalar<float>("tau"+tauid+"Tight", 0.0);
136
137 auto PSSFrac = Monitored::Scalar<float>("PSSFrac", 0.0);
138 auto EMFrac = Monitored::Scalar<float>("EMFrac", 0.0);
139
140 auto EMFracTrk = Monitored::Scalar<float>("EMFracTrk", 0.0);
141 auto nNeutPFO = Monitored::Scalar<float>("nNeutPFO", 0.0);
142 auto nShot = Monitored::Scalar<float>("nShot", 0.0);
143
144 auto BDTScoreAsP0 = Monitored::Scalar<float>("BDTScoreAsP0", 0.0);
145 auto dRmax = Monitored::Scalar<float>(
"dRmax", 0.0);
146
147 auto ipSigLeadTrk = Monitored::Scalar<float>(
"ipSigLeadTrk", 0.0);
148 auto massTrkSys = Monitored::Scalar<float>(
"massTrkSys", 0.0);
149 auto etOverPtLeadTrack = Monitored::Scalar<float>("etOverPtLeadTrack", 0.0);
151 auto trFlightPathSig = Monitored::Scalar<float>(
"trFlightPathSig", 0.0);
152 auto trkAvgDist = Monitored::Scalar<float>(
"trkAvgDist", 0.0);
153
154 auto panEta = Monitored::Scalar<float>("panEta", 0.0);
155 auto panPhi = Monitored::Scalar<float>("panPhi", 0.0);
156 auto panPt = Monitored::Scalar<float>("panPt", 0.0);
157 auto d0 = Monitored::Scalar<float>(
"d0", 0.0);
158 auto dRJetSeedAxis = Monitored::Scalar<float>("dRJetSeedAxis", 0.0);
159 auto z0 = Monitored::Scalar<float>(
"z0", 0.0);
160
161 auto etaTrack = Monitored::Scalar<float>("etaTrack", 0.0);
162 auto ptTrack = Monitored::Scalar<float>("ptTrack", 0.0);
163 auto phiTrack = Monitored::Scalar<float>("phiTrack", 0.0);
164 auto leadTrkPt = Monitored::Scalar<float>(
"leadTrkPt", 0.0);
165 auto nHighPtTaus = Monitored::Scalar<float>("nHighPtTaus", 0.0);
167 Monitored::Scalar<float>("numberOfTRTHighThresholdHits", 0.0);
169 Monitored::Scalar<float>("numberOfTRTHighThresholdOutliers", 0.0);
170 auto numberOfTRTHits = Monitored::Scalar<float>(
"numberOfTRTHits", 0.0);
172 Monitored::Scalar<float>("numberOfTRTOutliers", 0.0);
174 Monitored::Scalar<float>("ipZ0SinThetaSigLeadTrk", 0.0);
177 Monitored::Scalar<float>("numberOfPixelSharedHits", 0.0);
178 auto numberOfSCTHits = Monitored::Scalar<float>(
"numberOfSCTHits", 0.0);
180 Monitored::Scalar<float>("numberOfSCTSharedHits", 0.0);
181 auto rConv = Monitored::Scalar<float>("rConv", 0.0);
182 auto rConvII = Monitored::Scalar<float>("rConvII", 0.0);
183
184
185 auto trackLogSeedJetPt = Monitored::Scalar<float>("trackLogSeedJetPt", 0.0);
186 auto trackLogPt = Monitored::Scalar<float>("trackLogPt", 0.0);
187 auto trackEta = Monitored::Scalar<float>(
"trackEta", 0.0);
188 auto trackd0TJVA = Monitored::Scalar<float>("trackd0TJVA", 0.0);
189 auto trackZ0SinthetaTJVA =
190 Monitored::Scalar<float>("trackZ0SinthetaTJVA", 0.0);
191 auto trackD0SigTJVA = Monitored::Scalar<float>("trackD0SigTJVA", 0.0);
192 auto trackZ0sinthetaSigTJVA =
193 Monitored::Scalar<float>("trackZ0sinthetaSigTJVA", 0.0);
194 auto trackCharge = Monitored::Scalar<float>("trackCharge", 0.0);
195 auto trackqOverP = Monitored::Scalar<float>("trackqOverP", 0.0);
196 auto trackLogRConv = Monitored::Scalar<float>("trackLogRConv", 0.0);
197 auto trackTanhRConvII = Monitored::Scalar<float>("trackTanhRConvII", 0.0);
198 auto trackPtRatioSeedJet =
199 Monitored::Scalar<float>("trackPtRatioSeedJet", 0.0);
200 auto trackdRJetSeedAxis = Monitored::Scalar<float>("trackdRJetSeedAxis", 0.0);
201 auto trackNInnermostPixHits =
202 Monitored::Scalar<float>("trackNInnermostPixHits", 0.0);
203 auto trackNPixHits = Monitored::Scalar<float>("trackNPixHits", 0.0);
204 auto trackNSiHits = Monitored::Scalar<float>("trackNSiHits", 0.0);
205 auto trackeProbabilityHT =
206 Monitored::Scalar<float>("trackeProbabilityHT", 0.0);
207 auto trackeProbabilityNN =
208 Monitored::Scalar<float>("trackeProbabilityNN", 0.0);
209 auto trackeProbabilityHTorNN =
210 Monitored::Scalar<float>("trackeProbabilityHTorNN", 0.0);
211 auto trackIdScoreCharged = Monitored::Scalar<float>("track", 0.0);
212 auto trackIdScoreIso = Monitored::Scalar<float>("track", 0.0);
213 auto trackIdScoreConv = Monitored::Scalar<float>("track", 0.0);
214 auto trackIdScoreFake = Monitored::Scalar<float>("track", 0.0);
215
216 auto clusterLogEt = Monitored::Scalar<float>("clusterLogEt", 0.0);
217 auto clusterEta = Monitored::Scalar<float>("clusterEta", 0.0);
218 auto clusterPhi = Monitored::Scalar<float>("clusterPhi", 0.0);
219 auto clusterSecondR = Monitored::Scalar<float>("clusterSecondR", 0.0);
220 auto clusterSecondLambda =
221 Monitored::Scalar<float>("clusterSecondLambda", 0.0);
222 auto clusterCenterLambda =
223 Monitored::Scalar<float>("clusterCenterLambda", 0.0);
224 auto clusterFirstEngDens =
225 Monitored::Scalar<float>("clusterFirstEngDens", 0.0);
226 auto clusterEMproba = Monitored::Scalar<float>("clusterEMproba", 0.0);
227 auto clustersMeanCenterLambda =
228 Monitored::Scalar<float>("clustersMeanCenterLambda", 0.0);
229 auto clustersMeanFirstEngDens =
230 Monitored::Scalar<float>("clustersMeanFirstEngDens", 0.0);
231 auto clustersMeanEMProbability =
232 Monitored::Scalar<float>("clustersMeanEMProbability", 0.0);
233 auto clustersMeanSecondLambda =
234 Monitored::Scalar<float>("clustersMeanSecondLambda", 0.0);
235 auto clustersMeanPresamplerFrac =
236 Monitored::Scalar<float>("clustersMeanPresamplerFrac", 0.0);
237 auto clustersPFOEngRelDiff =
238 Monitored::Scalar<float>("clustersPFOEngRelDiff", 0.0);
239
240 nTauCandidates = 0;
241
242 static const SG::ConstAccessor<char> passThinningAcc("passThinning");
243
244 for (const auto tau : *shallowTaus) {
245
246 if (!passThinningAcc.withDefault(*tau, true)) continue;
247
248 tauEta = tau->eta();
249 tauPhi = tau->phi();
250 tauEt = tau->pt() /
GeV;
251 tauCharge = tau->charge();
252 NumTracks = tau->nTracks();
255
256
260
262 jetSeedEta = tau->etaJetSeed();
263 jetSeedPhi = tau->phiJetSeed();
264 jetSeedPt = tau->ptJetSeed() /
GeV;
265
269
271
272
275
276
278 JetScore =
score.isAvailable() ?
score(*tau) : -1234;
279
280 JetScoreSigTrans = trans_score(*tau);
281
283 tauLoose = tauid_loose.
isAvailable() ? tauid_loose(*tau) : -1234;
284
286 tauMedium = tauid_medium.
isAvailable() ? tauid_medium(*tau) : -1234;
287
289 tauTight = tauid_tight.
isAvailable() ? tauid_tight(*tau) : -1234;
290
291 } else{
292
294 JetScoreSigTrans =
296
300 }
301
306
307 panEta = tau->etaPanTauCellBased();
308 panPhi = tau->phiPanTauCellBased();
309 panPt = tau->ptPanTauCellBased() /
GeV;
310
311
313 static const SG::ConstAccessor<float> EMFracFixedAcc("EMFracFixed");
314 EMFrac = EMFracFixedAcc(*tau);
315
316
318 nNeutPFO = tau->nProtoNeutralPFOs();
319 nShot = tau->nShotPFOs();
320
321 int panModeDummy = -1;
322 int panModeSubstructureDummy = -1;
323
324 if (m_etaMin < std::abs(tauEta) && std::abs(tauEta) < m_etaMax) {
325
326 if( tauEt > lowerEtThreshold) {
327 nTauCandidates += 1;
328 }
329
330 if (tauEt > higherEtThreshold) {
331 nHighPtTauCandidates += 1;
332 nHighPtTaus += 1;
333 }
334
335 if (m_kinGroupName != "tauMonKinGroupGlobal" &&
336 tauEt > lowerEtThreshold && tauLoose) {
337
338 tauPhiEt15Loose = tau->phi();
339 tauEtaEt15Loose = tau->eta();
340 tauEtEt15Loose = tau->pt() /
GeV;
341 nClustersEt15Loose =
343 NumTracksEt15Loose = tau->nTracks();
344
346 panModeDummy);
347 panModeEt15Loose = panModeDummy;
348 fill(tool, tauPhiEt15Loose, tauEtaEt15Loose,
349 nClustersEt15Loose, NumTracksEt15Loose, tauEtEt15Loose,
350 panModeEt15Loose);
351 }
352
353 if (m_kinGroupName != "tauMonKinGroupGlobal" && tauLoose) {
354 tauPhiLoose = tau->phi();
355 tauEtaLoose = tau->eta();
356 tauEtLoose = tau->pt() /
GeV;
357 NumTracksLoose = tau->nTracks();
358
359 fill(tool, tauPhiLoose, tauEtaLoose, NumTracksLoose,
360 tauEtLoose);
361 }
362
363 if (m_kinGroupName != "tauMonKinGroupGlobal" && tauMedium) {
364 tauPhiMedium = tau->phi();
365 tauEtaMedium = tau->eta();
366 tauEtMedium = tau->pt() /
GeV;
367 NumTracksMedium = tau->nTracks();
368
369 fill(tool, tauPhiMedium, tauEtaMedium, NumTracksMedium,
370 tauEtMedium);
371 }
372
373 if (m_kinGroupName != "tauMonKinGroupGlobal" && tauTight) {
374 tauPhiTight = tau->phi();
375 tauEtaTight = tau->eta();
376 tauEtTight = tau->pt() /
GeV;
377 NumTracksTight = tau->nTracks();
378
379 fill(tool, tauPhiTight, tauEtaTight, NumTracksTight,
380 tauEtTight);
381 }
382
383
384
385 if (tau->nTracks() != 0) {
386
391
392 static const SG::ConstAccessor<float> d0SigTJVAAcc("d0SigTJVA");
393 if (d0SigTJVAAcc.isAvailable(*tau->track(0))) {
395 }
396 else {
398 }
399
400 static const SG::ConstAccessor<float> z0sinthetaSigTJVAAcc("z0sinthetaSigTJVA");
401 if (z0sinthetaSigTJVAAcc.isAvailable(*tau->track(0))) {
403 }
404 else {
406 }
407
408 etOverPtLeadTrack =
411
412 fill(tool, massTrkSys, etOverPtLeadTrack, trFlightPathSig,
413 ipSigLeadTrk, ipZ0SinThetaSigLeadTrk, leadTrkPt);
414
418
420
423 fill(tool, numberOfSCTSharedHits);
424 }
425
428 fill(tool, numberOfSCTHits);
429 }
430
433 fill(tool, numberOfPixelSharedHits);
434 }
435
438 fill(tool, numberOfPixelHits);
439 }
442 fill(tool, numberOfTRTHighThresholdHits);
443 }
444 if (
track->summaryValue(dummy,
447 fill(tool, numberOfTRTHighThresholdOutliers);
448 }
451 fill(tool, numberOfTRTHits);
452 }
455 fill(tool, numberOfTRTOutliers);
456 }
457
460
461 phiTrack = perigee.parameters()[
Trk::phi];
462 etaTrack = perigee.
eta();
463 ptTrack = perigee.
pT() /
GeV;
464
465 fill(tool, d0, z0, phiTrack, etaTrack, ptTrack);
466 }
467 }
468
469
470
471 else {
473 fill(tool, leadTrkPt);
474 }
475
476
477
478
479 double tauSeedPt = tau->ptJetSeed();
480 double logTauSeedPt = std::log(tauSeedPt);
481 trackLogSeedJetPt = logTauSeedPt;
482
483 fill(tool, trackLogSeedJetPt);
484
485 static const SG::ConstAccessor<float> acc_trackScoreCharged("rnn_chargedScore");
486 static const SG::ConstAccessor<float> acc_trackScoreIso("rnn_isolationScore");
487 static const SG::ConstAccessor<float> acc_trackScoreConv("rnn_conversionScore");
488
489
491
492 static const SG::Accessor<
494 trackAcc("trackLinks");
495 if (!trackAcc(*track)[0]) {
496 continue;
497 }
498
500
502 trackZ0SinthetaTJVA =
track->z0sinThetaTJVA(*tau);
503 trackD0SigTJVA = 999.;
504 trackZ0sinthetaSigTJVA = 999.;
505 float rConv = 999.;
506 float rConvII = 999.;
507 static const SG::ConstAccessor<float> z0sinthetaTJVAAcc("z0sinthetaTJVA");
508 if (z0sinthetaTJVAAcc.isAvailable(*track)) {
510 trackZ0SinthetaTJVA =
track->z0sinthetaTJVA();
511 trackD0SigTJVA =
track->d0SigTJVA();
512 trackZ0sinthetaSigTJVA =
track->z0sinthetaSigTJVA();
513 rConv =
track->rConv();
514 rConvII =
track->rConvII();
515 }
516 trackdRJetSeedAxis =
520 uint8_t nInnermostPixelLayerHits = 0;
543 static const SG::ConstAccessor<float> eProbabilityNNAcc("eProbabilityNN");
544 float eProbabilityNN = eProbabilityNNAcc.withDefault(*trackParticle, -1);
545
546
547 trackeProbabilityHTorNN =
549
552 trackLogPt = std::log(trackPt);
554 trackd0TJVA = std::tanh(d0TJVA / 10.);
555 trackCharge = trackParticle->
charge();
556 trackqOverP =
qOverP * 1000.;
557 trackLogRConv = std::log(rConv);
558 trackTanhRConvII = std::tanh(rConvII / 500.0);
559 trackPtRatioSeedJet =
trackPt / tauSeedPt;
560 trackNInnermostPixHits = nInnermostPixelLayerHits;
562 trackNSiHits =
564
565 fill(tool, trackLogPt, trackEta, trackd0TJVA, trackZ0SinthetaTJVA,
566 trackD0SigTJVA, trackZ0sinthetaSigTJVA, trackCharge, trackqOverP,
567 trackLogRConv, trackTanhRConvII, trackPtRatioSeedJet,
568 trackdRJetSeedAxis, trackNInnermostPixHits,
569 trackNPixHits,
570 trackNSiHits,
571 trackeProbabilityHT, trackeProbabilityNN, trackeProbabilityHTorNN);
572
573 if (acc_trackScoreCharged.isAvailable(*track)) {
574 float chargedScore = acc_trackScoreCharged(*track);
575 float isolationScore = acc_trackScoreIso(*track);
576 float conversionScore = acc_trackScoreConv(*track);
577 float fakeScore = 1. - chargedScore - isolationScore - conversionScore;
578
579 fakeScore = std::max(0.f, fakeScore);
580 fakeScore = std::min(1.f, fakeScore);
581
582 trackIdScoreCharged = chargedScore;
583 trackIdScoreIso = isolationScore;
584 trackIdScoreConv = conversionScore;
585 trackIdScoreFake = fakeScore;
586
587 fill(tool, trackIdScoreCharged, trackIdScoreIso, trackIdScoreConv,
588 trackIdScoreFake);
589 }
590 }
591
592
593 std::vector<const xAOD::IParticle *> particleList = tau->clusters();
594 std::vector<xAOD::CaloVertexedTopoCluster>
clusters;
596 if (tau->vertexLink().isValid())
598
599 for (const xAOD::IParticle *particle : particleList) {
602 if (vertex) {
605 } else {
607 }
608 }
609
610
611 auto et_cmp = [](const xAOD::CaloVertexedTopoCluster &lhs,
612 const xAOD::CaloVertexedTopoCluster &rhs) {
613 return lhs.
p4().Et() > rhs.p4().Et();
614 };
616
617
620 }
621
622 double moment;
623 for (const auto& vertexedCluster : clusters) {
625
626 clusterLogEt = std::log10(vertexedCluster.p4().Et());
627 clusterEta = vertexedCluster.eta();
628 clusterPhi = vertexedCluster.phi();
629
631 clusterSecondR = std::log10(moment + 0.1);
632
634 moment);
635 clusterSecondLambda = std::log10(moment + 0.1);
636
638 moment);
639 clusterCenterLambda = std::log10(moment + 1e-6);
640
642 moment);
643 if (moment != 0.)
644 moment = std::log10(std::abs(moment));
645 clusterFirstEngDens = moment;
646
648 moment);
649 clusterEMproba = moment;
650
651 fill(tool, clusterLogEt, clusterEta, clusterPhi, clusterSecondR,
652 clusterSecondLambda, clusterCenterLambda, clusterFirstEngDens,
653 clusterEMproba);
654 }
655
656
657 float avariable = 0.;
659 avariable);
660 if (test)
661 clustersMeanCenterLambda = avariable;
662
664 avariable);
665 if (test)
666 clustersMeanFirstEngDens = avariable;
667
669 avariable);
670 if (test)
671 clustersMeanEMProbability = avariable;
672
674 avariable);
675 if (test)
676 clustersMeanSecondLambda = avariable;
677
679 avariable);
680 if (test)
681 clustersMeanPresamplerFrac = avariable;
682
684 if (test)
685 clustersPFOEngRelDiff = avariable;
686
687 fill(tool, clustersMeanCenterLambda, clustersMeanFirstEngDens,
688 clustersMeanEMProbability, clustersMeanSecondLambda,
689 clustersMeanPresamplerFrac, clustersPFOEngRelDiff);
690
691 for (
unsigned int np = 0;
np < nNeutPFO;
np++) {
692 const xAOD::PFO *npfo = tau->protoNeutralPFO(np);
694 fill(tool, BDTScoreAsP0);
695 }
696
697 if (tauEt > lowerEtThreshold) {
698 tauPhiEt15 = tau->phi();
699 tauEtaEt15 = tau->eta();
700 fill(tool, tauPhiEt15, tauEtaEt15);
701 }
702
703 fill(tool, tauPhi, tauEta, LB, tauEt, centFrac, isolFrac,etEMAtEMScale, etHadAtEMScale,
704 tauCharge, JetScore, JetScoreSigTrans, RNNEleScore, RNNEleScoreSigTrans,
705 muonVeto, tauLoose, tauMedium, tauTight, PSSFrac, EMFrac, EMFracTrk, nNeutPFO,
706 nShot, NumTracks, nClusters, jetSeedEta, jetSeedPhi, jetSeedPt,
707 dRmax, ptRatioEflowApprox, trkAvgDist);
708
710 panModeSubstructureDummy);
711 panModeSubstructure = panModeSubstructureDummy;
712
713 fill(tool, panModeSubstructure);
714 if (panPhi > -100) {
715 fill(tool, panEta, panPhi, panPt);
716 }
717 }
718 }
719
720 fill(tool, nHighPtTauCandidates, nTauCandidates, nHighPtTaus);
721
722 return StatusCode::SUCCESS;
723}
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.
@ 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].