135{
136
137
138
139
140
141 auto n_taus = Monitored::Scalar<int>("NTauCandidates", 0);
142
143 auto pT = Monitored::Scalar<float>(
"Pt", 0);
144 auto eta = Monitored::Scalar<float>(
"Eta", -99.9);
145 auto phi = Monitored::Scalar<float>(
"Phi", -99.9);
146
147 auto etaRoI = Monitored::Scalar<float>("EtaRoI", -99.9);
148 auto phiRoI = Monitored::Scalar<float>("PhiRoI", -99.9);
149 auto dEta_RoI = Monitored::Scalar<float>("dEtaTau_RoI", -10);
150 auto dPhi_RoI = Monitored::Scalar<float>("dPhiTau_RoI", -10);
151
152 auto mEflowApprox = Monitored::Scalar<float>(
"mEflowApprox", -99.9);
154 auto pt_jetseed_log = Monitored::Scalar<float>(
"pt_jetseed_log", -99.9);
155 auto etaDetectorAxis = Monitored::Scalar<float>("etaDetectorAxis", -99.9);
156 auto ptDetectorAxis = Monitored::Scalar<float>(
"ptDetectorAxis", -99.9);
157 auto ptDetectorAxis_log = Monitored::Scalar<float>("ptDetectorAxis_log", -99.9);
158
159 auto n_cells = Monitored::Scalar<int>("NCaloCells", 0);
160 auto EMRadius = Monitored::Scalar<float>(
"EMRadius", -0.099);
161 auto HadRadius = Monitored::Scalar<float>("HadRadius", -0.099);
162 auto EtHad = Monitored::Scalar<float>("EtHad", -10);
163 auto EtEm = Monitored::Scalar<float>("EtEm", -10);
164 auto EMFrac = Monitored::Scalar<float>("EMFrac", -10);
165 auto IsoFrac = Monitored::Scalar<float>("IsoFrac", -1);
166 auto CentFrac = Monitored::Scalar<float>("CentFrac", -10);
167
168 auto clustersMeanCenterLambda = Monitored::Scalar<float>("clustersMeanCenterLambda", 0);
169 auto clustersMeanFirstEngDens = Monitored::Scalar<float>("clustersMeanFirstEngDens", 0);
170 auto clustersMeanEMProbability = Monitored::Scalar<float>("clustersMeanEMProbability", 0);
171 auto clustersMeanSecondLambda = Monitored::Scalar<float>("clustersMeanSecondLambda", 0);
172 auto clustersMeanPresamplerFrac = Monitored::Scalar<float>("clustersMeanPresamplerFrac", 0);
173
174 auto n_clusters = Monitored::Scalar<int>("NClusters", 0);
175 std::vector<float> cluster_et_log, cluster_dEta, cluster_dPhi;
176 std::vector<float> cluster_log_SECOND_R, cluster_SECOND_LAMBDA, cluster_CENTER_LAMBDA;
181 auto mon_cluster_SECOND_LAMBDA =
Monitored::Collection(
"cluster_SECOND_LAMBDA", cluster_SECOND_LAMBDA);
182 auto mon_cluster_CENTER_LAMBDA =
Monitored::Collection(
"cluster_CENTER_LAMBDA", cluster_CENTER_LAMBDA);
183 std::vector<unsigned char> calo_errors;
185
186
187 auto n_tracks = Monitored::Scalar<int>("NTracks", -10);
188 auto n_iso_tracks = Monitored::Scalar<int>("NIsoTracks", -10);
189
190 auto ipSigLeadTrk = Monitored::Scalar<float>(
"ipSigLeadTrk", -1000);
191 auto trFlightPathSig = Monitored::Scalar<float>(
"trFlightPathSig", -10);
192 auto massTrkSys = Monitored::Scalar<float>(
"massTrkSys", -10);
193 auto dRmax = Monitored::Scalar<float>(
"dRmax", -10);
194 auto trkAvgDist = Monitored::Scalar<float>(
"TrkAvgDist", -1);
195 auto innerTrkAvgDist = Monitored::Scalar<float>(
"innerTrkAvgDist", -1);
196 auto etovPtLead = Monitored::Scalar<float>("EtovPtLead", -10);
197 auto PSSFraction = Monitored::Scalar<float>(
"PSSFraction", -999.9);
198 auto EMPOverTrkSysP = Monitored::Scalar<float>(
"EMPOverTrkSysP", -999.9);
200 auto vertex_x = Monitored::Scalar<float>("vertex_x", -999.9);
201 auto vertex_y = Monitored::Scalar<float>("vertex_y", -999.9);
202 auto vertex_z = Monitored::Scalar<float>("vertex_z", -999.9);
203
204 auto n_all_tracks = Monitored::Scalar<int>("NAllTracks", 0);
205 std::vector<float> track_pt_log, track_dEta, track_dPhi;
206 std::vector<float> track_d0_abs_log, track_z0sinthetaTJVA_abs_log;
207 std::vector<float> track_nPixelHitsPlusDeadSensors, track_nSCTHitsPlusDeadSensors;
212 auto mon_track_z0sinthetaTJVA_abs_log =
Monitored::Collection(
"track_z0sinthetaTJVA_abs_log", track_z0sinthetaTJVA_abs_log);
213 auto mon_track_nPixelHitsPlusDeadSensors =
Monitored::Collection(
"track_nPixelHitsPlusDeadSensors", track_nPixelHitsPlusDeadSensors);
214 auto mon_track_nSCTHitsPlusDeadSensors =
Monitored::Collection(
"track_nSCTHitsPlusDeadSensors", track_nSCTHitsPlusDeadSensors);
215 std::vector<unsigned char> track_errors;
217
218 std::map<std::string, Monitored::Scalar<float>> monitoredIdVariables;
220 monitoredIdVariables.emplace(key + "_TauJetScore_0p", Monitored::Scalar<float>(key + "_TauJetScore_0p", -1));
221 monitoredIdVariables.emplace(key + "_TauJetScoreTrans_0p", Monitored::Scalar<float>(key + "_TauJetScoreTrans_0p", -1));
222 monitoredIdVariables.emplace(key + "_TauJetScore_1p", Monitored::Scalar<float>(key + "_TauJetScore_1p", -1));
223 monitoredIdVariables.emplace(key + "_TauJetScoreTrans_1p", Monitored::Scalar<float>(key + "_TauJetScoreTrans_1p", -1));
224 monitoredIdVariables.emplace(key + "_TauJetScore_mp", Monitored::Scalar<float>(key + "_TauJetScore_mp", -1));
225 monitoredIdVariables.emplace(key + "_TauJetScoreTrans_mp", Monitored::Scalar<float>(key + "_TauJetScoreTrans_mp", -1));
226 }
227
228
229 auto n_hits = Monitored::Scalar<int>("NHits", 0);
230 std::vector<float> hit_z, hit_dPhi;
233
234 std::map<std::string, Monitored::Scalar<float>> monitoredHitZVariables;
236 monitoredHitZVariables.emplace(key + "_z0", Monitored::Scalar<float>(key + "_z0", -999));
237 monitoredHitZVariables.emplace(key + "_z0_sigma", Monitored::Scalar<float>(key + "_z0_sigma", -999));
238 }
239
240 std::vector<std::reference_wrapper<Monitored::IMonitoredVariable>> monVars = {
241 std::ref(n_taus),
242 std::ref(pT), std::ref(
eta), std::ref(
phi),
243 std::ref(etaRoI), std::ref(phiRoI), std::ref(dEta_RoI), std::ref(dPhi_RoI),
244 std::ref(mEflowApprox), std::ref(ptRatioEflowApprox), std::ref(pt_jetseed_log),
245 std::ref(etaDetectorAxis), std::ref(ptDetectorAxis), std::ref(ptDetectorAxis_log),
246 std::ref(n_cells),
247 std::ref(EMRadius), std::ref(HadRadius), std::ref(EtHad), std::ref(EtEm), std::ref(EMFrac), std::ref(IsoFrac), std::ref(CentFrac),
248 std::ref(clustersMeanCenterLambda), std::ref(clustersMeanFirstEngDens), std::ref(clustersMeanEMProbability),
249 std::ref(clustersMeanSecondLambda), std::ref(clustersMeanPresamplerFrac),
250 std::ref(n_clusters), std::ref(mon_cluster_et_log), std::ref(mon_cluster_dEta), std::ref(mon_cluster_dPhi),
251 std::ref(mon_cluster_log_SECOND_R), std::ref(mon_cluster_SECOND_LAMBDA), std::ref(mon_cluster_CENTER_LAMBDA),
252 std::ref(mon_calo_errors),
253 std::ref(n_tracks), std::ref(n_iso_tracks),
254 std::ref(ipSigLeadTrk), std::ref(trFlightPathSig), std::ref(massTrkSys), std::ref(dRmax), std::ref(trkAvgDist), std::ref(innerTrkAvgDist),
255 std::ref(etovPtLead), std::ref(PSSFraction), std::ref(EMPOverTrkSysP), std::ref(ChPiEMEOverCaloEME),
256 std::ref(vertex_x), std::ref(vertex_y), std::ref(vertex_z),
257 std::ref(n_all_tracks), std::ref(mon_track_pt_log), std::ref(mon_track_dEta), std::ref(mon_track_dPhi),
258 std::ref(mon_track_d0_abs_log), std::ref(mon_track_z0sinthetaTJVA_abs_log),
259 std::ref(mon_track_nPixelHitsPlusDeadSensors), std::ref(mon_track_nSCTHitsPlusDeadSensors),
260 std::ref(mon_track_errors),
261 std::ref(n_hits), std::ref(mon_hit_z), std::ref(mon_hit_dPhi)
262 };
263 for(auto& [key, var] : monitoredIdVariables) monVars.push_back(std::ref(var));
264 for(auto& [key, var] : monitoredHitZVariables) monVars.push_back(std::ref(var));
265 auto monitorIt = Monitored::Group(
m_monTool, monVars);
266
267
269
270
271
272
274
275
276 std::vector<ROOT::Math::XYZVector> tauHits;
277
278
279
280
281
285 return StatusCode::FAILURE;
286 }
287
288 if(roisHandle->empty()) {
290 return StatusCode::FAILURE;
291 }
292
294 if(roiDescriptor) {
296 } else {
299 return StatusCode::FAILURE;
300 }
301
302
303
304
305
306
307
308 std::unique_ptr<xAOD::TauJetContainer> outputContainer = std::make_unique<xAOD::TauJetContainer>();
309 std::unique_ptr<xAOD::TauJetAuxContainer> outputAuxContainer = std::make_unique<xAOD::TauJetAuxContainer>();
310 outputContainer->setStore(outputAuxContainer.get());
311
313 ATH_CHECK(outputTauHandle.record(std::move(outputContainer), std::move(outputAuxContainer)));
314
315
316 std::unique_ptr<xAOD::TauTrackContainer> outputTrackContainer = std::make_unique<xAOD::TauTrackContainer>();
317 std::unique_ptr<xAOD::TauTrackAuxContainer> outputTrackAuxContainer = std::make_unique<xAOD::TauTrackAuxContainer>();
318 outputTrackContainer->setStore(outputTrackAuxContainer.get());
319
321 ATH_CHECK(tauTrackHandle.record(std::move(outputTrackContainer), std::move(outputTrackAuxContainer)));
322
323
324
325
326
327
328
329
330
331
332
333
335
338
340 if(RoICaloClusterContainer) {
341 ATH_MSG_DEBUG(
"CaloCluster container found of size: " << RoICaloClusterContainer->
size());
342
343
345 } else {
348 return StatusCode::FAILURE;
349 }
350
351
352 std::unique_ptr<xAOD::JetContainer> jetContainer{std::make_unique<xAOD::JetContainer>()};
353 std::unique_ptr<xAOD::JetAuxContainer> jetAuxContainer{std::make_unique<xAOD::JetAuxContainer>()};
354 jetContainer->setStore(jetAuxContainer.get());
355
357 ATH_CHECK(outputTauSeedJetHandle.
record(std::move(jetContainer), std::move(jetAuxContainer)));
358
359
360 outputTauSeedJetHandle->push_back(std::make_unique<xAOD::Jet>());
361 xAOD::Jet *jet = outputTauSeedJetHandle->back();
362
363
364
365
366
368 TLorentzVector cluster_p4, barycenter;
370 ATH_MSG_DEBUG(
"Cluster (e, eta, phi): (" << cluster->e() <<
", " << cluster->eta() <<
", " << cluster->phi() <<
")");
371
372 if(cluster->e() < 0) {
374 continue;
375 }
376
377 cluster_p4.SetPtEtaPhiE(cluster->pt(), cluster->eta(), cluster->phi(), cluster->e());
379
380 barycenter += cluster_p4;
381 }
382
384 ATH_MSG_DEBUG(
"Built jet with eta: " << jet->
eta() <<
", phi: " << jet->
phi() <<
", pT: " << jet->
pt() <<
", E: "<< jet->
e() );
385
386
387
388
389 outputTauHandle->push_back(std::make_unique<xAOD::TauJet>());
390 tau = outputTauHandle->back();
392
393
394 tau->
setJet(outputTauSeedJetHandle.
ptr(), jet);
395
396
398 ATH_MSG_DEBUG(
"Changing (eta, phi) back to the RoI center due to negative energy: " << jet->
e());
399 tau->
setP4(tau->
pt(), roiDescriptor->
eta(), roiDescriptor->
phi(), tau->
m());
401 }
402 }
403
404
405
406
407
409
410 SG::ReadHandle<xAOD::TauJetContainer> tauInputHandle(
m_tauJetInputKey, ctx);
413
414
416
417
418
420
421 SG::ReadDecorHandle<xAOD::TauJetContainer, std::vector<ElementLink<xAOD::TrackMeasurementValidationContainer>>> hitsInputDecorHandle(
m_hitsInputDecorKey, ctx);
422 ATH_CHECK(hitsInputDecorHandle.isValid());
423 SG::WriteDecorHandle<xAOD::TauJetContainer, std::vector<ElementLink<xAOD::TrackMeasurementValidationContainer>>> hitsOutputDecorHandle(
m_hitsOutputDecorKey, ctx);
424 ATH_CHECK(hitsOutputDecorHandle.isValid());
425
426
427
428
429
430
431 static const SG::AuxElement::ConstAccessor<float>
x(
"HitsXRelToBeamspot");
432 static const SG::AuxElement::ConstAccessor<float>
y(
"HitsYRelToBeamspot");
433 static const SG::AuxElement::ConstAccessor<float>
z(
"HitsZRelToBeamspot");
434
435 for(
size_t i = 0;
i < inputTauContainer->
size(); ++
i) {
437 const auto& inputHits = hitsInputDecorHandle(*inputTau);
438
439 for(const ElementLink<xAOD::TrackMeasurementValidationContainer>& el : inputHits) {
441 tauHits.push_back(ROOT::Math::XYZVector(
x(**el),
y(**el),
z(**el)));
442 }
443 }
444
446 hitsOutputDecorHandle(*outputTau) = inputHits;
447 }
448 }
449
450
451
457
458 for(
size_t j = 0;
j < inputTauContainer->
size(); ++
j) {
459 outputDecorHandle(*outputTauHandle->at(j)) = inputDecorHandle(*inputTauContainer->
at(j));
460 }
461 }
462
463
468
469
471 }
472
473
474
475 if(!outputTauHandle->empty()) {
476 tau = outputTauHandle->back();
477
478
480
481
482
483
485 }
486 }
487
488
489
490
491
495
496 if(!VertexContainerHandle.
isValid()) {
497 ATH_MSG_DEBUG(
"No VertexContainer retrieved for the trigger element");
499 } else {
500 RoIVxContainer = VertexContainerHandle.
get();
502 }
503 }
504
505
507
508
509
510
511
512 StatusCode processStatus = StatusCode::SUCCESS;
513
514
515
518
519 processStatus =
tool->executeVertexFinder(*tau, RoIVxContainer);
520
521 if(!processStatus.isFailure()) {
523 } else {
525 break;
526 }
527 }
528
531 else break;
532
533 processStatus =
tool->execute(*tau);
534
535 if(!processStatus.isFailure()) {
537 } else {
539 break;
540 }
541 }
542
545 else break;
546
547 processStatus =
tool->executeTrackFinder(*tau, *tauTrackHandle);
548
549 if(!processStatus.isFailure()) {
551 } else {
553 break;
554 }
555 }
556
559 else break;
560
561 processStatus =
tool->execute(*tau);
562
563 if(!processStatus.isFailure()) {
565 } else {
567 break;
568 }
569 }
570
571
575 else break;
576
577 processStatus =
tool->executeVertexVariables(*tau, dummyVxCont);
578
579 if(!processStatus.isFailure()) {
581 } else {
583 break;
584 }
585 }
586
589 else break;
590
591 processStatus =
tool->execute(*tau);
592
593 if(!processStatus.isFailure()) {
595 } else {
597 break;
598 }
599 }
600
602
603
604
605 if(!processStatus.isSuccess()) {
606 ATH_MSG_DEBUG(
"The tau object has NOT been registered in the tau container");
607
610 tauTrackHandle->erase(tauTrackHandle->end() - bad_tau->
nAllTracks(), tauTrackHandle->end());
611
612 outputTauHandle->pop_back();
613
615
616 } else {
617
618
619 float fJetEnergy = (*tau->
jetLink())->e();
621
622 if(fJetEnergy < 0.00001) {
623 ATH_MSG_DEBUG(
"Changing tau's (eta,phi) to RoI ones due to negative energy (PxPyPzE flips eta and phi)");
624 ATH_MSG_DEBUG(
"This is probably not needed anymore, method PxPyPzE has been corrected");
625
626
627 tau->
setP4(tau->
pt(), roiDescriptor->
eta(), roiDescriptor->
phi(), tau->
m());
628
629 ATH_MSG_DEBUG(
"Roi: " << roiDescriptor->
roiId() <<
", Tau eta: " << tau->
eta() <<
", phi: " << tau->
phi() <<
", pT: " << tau->
pt());
630 }
631
632
633
634
635
636
637 pT = tau->
pt()/Gaudi::Units::GeV;
640
641
642 etaRoI = roiDescriptor->
eta();
643 phiRoI = roiDescriptor->
phi();
644 dEta_RoI =
eta - roiDescriptor->
eta();
645 dPhi_RoI =
phi - roiDescriptor->
phi();
646 if(dPhi_RoI < -
M_PI) dPhi_RoI += 2.0*
M_PI;
647 if(dPhi_RoI >
M_PI) dPhi_RoI -= 2.0*
M_PI;
648
649
650 float pre_mEflowApprox;
652 mEflowApprox = std::log10(std::max(pre_mEflowApprox, 140.0f));
653
654 float pre_ptRatioEflowApprox;
657
661 ptDetectorAxis_log = std::log10(std::min(tau->
ptDetectorAxis()/Gaudi::Units::GeV, 10000.0));
662
663
668 EtHad /= Gaudi::Units::GeV;
670 EtEm /= Gaudi::Units::GeV;
671
672 float Et_raw = EtEm + EtHad;
673 if(Et_raw != 0) EMFrac = EtEm / Et_raw;
674
677
678
679
682 if(test) clustersMeanCenterLambda =
tmp;
684 if(test) clustersMeanFirstEngDens =
tmp;
686 if(test) clustersMeanEMProbability =
tmp;
688 if(test) clustersMeanSecondLambda =
tmp;
690 if(test) clustersMeanPresamplerFrac =
tmp;
691
692
693
694 n_clusters = tau->
clusters().size();
695 for(
const auto& cluster : tau->
clusters()) {
697
698 cluster_et_log.push_back(std::log10(
cls->et()));
699 cluster_dEta.push_back(
cls->eta() - tau->
eta());
700 cluster_dPhi.push_back(
cls->p4().DeltaPhi(tau->
p4()));
701
702 double log_second_R = -999;
704 if(success_SECOND_R) log_second_R = std::log10(log_second_R + 0.1);
705 cluster_log_SECOND_R.push_back(log_second_R);
706
707 double second_lambda = -999;
709 if(success_SECOND_LAMBDA) second_lambda = std::log10(second_lambda + 0.1);
710 cluster_SECOND_LAMBDA.push_back(second_lambda);
711
712 double center_lambda = -999;
714 if(success_CENTER_LAMBDA) center_lambda = std::log10(center_lambda + 1e-6);
715 cluster_CENTER_LAMBDA.push_back(center_lambda);
716 }
717
718
719
734
739 }
740
741
742
745 track_pt_log.push_back(std::log10(
track->pt()));
746 track_dEta.push_back(
track->eta() - tau->
eta());
747 track_dPhi.push_back(
track->p4().DeltaPhi(tau->
p4()));
748 track_d0_abs_log.push_back(std::log10(std::abs(
track->track()->d0()) + 1e-6));
749 track_z0sinthetaTJVA_abs_log.push_back(
track->z0sinthetaTJVA());
750
751 uint8_t pixel_hits, pixel_dead;
754 float nPixelHitsPlusDeadSensor = -999;
755 if(success1_pixel_hits && success2_pixel_dead) nPixelHitsPlusDeadSensor = pixel_hits + pixel_dead;
756 track_nPixelHitsPlusDeadSensors.push_back(nPixelHitsPlusDeadSensor);
757
763 track_nSCTHitsPlusDeadSensors.push_back(nSCTHitsPlusDeadSensors);
764 }
765
766
767
769 n_hits = tauHits.size();
770 for(const ROOT::Math::XYZVector& hit : tauHits) {
771 hit_z.push_back(hit.z());
773 }
774 }
775
776
777
780
781 if(
score.isAvailable(*tau)) {
783 monitoredIdVariables.at(key +
"_TauJetScore_0p") =
score(*tau);
784 }
else if(tau->
nTracks() == 1) {
785 monitoredIdVariables.at(key +
"_TauJetScore_1p") =
score(*tau);
786 } else {
787 monitoredIdVariables.at(key +
"_TauJetScore_mp") =
score(*tau);
788 }
789 }
790
791 if(scoreTrans.isAvailable(*tau)) {
793 monitoredIdVariables.at(key + "_TauJetScoreTrans_0p") = scoreTrans(*tau);
794 }
else if(tau->
nTracks() == 1) {
795 monitoredIdVariables.at(key + "_TauJetScoreTrans_1p") = scoreTrans(*tau);
796 } else {
797 monitoredIdVariables.at(key + "_TauJetScoreTrans_mp") = scoreTrans(*tau);
798 }
799 }
800 }
801
802
803
806
807 if(
z0.isAvailable(*tau)) {
808 monitoredHitZVariables.at(key +
"_z0") =
z0(*tau);
809 }
810 if(
sigma.isAvailable(*tau)) {
811 monitoredHitZVariables.at(key +
"_z0_sigma") =
sigma(*tau);
812 }
813 }
814
815
816 ++n_taus;
817
818
820 <<
", Tau pT (GeV): " << pT <<
", Tau eta: " <<
eta <<
", Tau phi: " <<
phi
821 << ", wrt RoI dEta: " << dEta_RoI << ", dPhi: " << dPhi_RoI);
822 }
823
824
825
826
827
828 ATH_MSG_DEBUG(
"Output TauJetContainer size: " << outputTauHandle->size());
829 ATH_MSG_DEBUG(
"Output TauJetTrackContainer size: " << tauTrackHandle->size());
830
831 return StatusCode::SUCCESS;
832}
Scalar eta() const
pseudorapidity method
Scalar phi() const
phi method
#define ATH_CHECK
Evaluate an expression and check for errors.
Athena::TPCnvVers::Current TrigRoiDescriptor
const T * at(size_type n) const
Access an element, as an rvalue.
size_type size() const noexcept
Returns the number of elements in the collection.
bool empty() const noexcept
Returns true if the collection is empty.
bool isValid() const
Test to see if the link can be dereferenced.
virtual double phi() const override final
Methods to retrieve data members.
virtual double eta() const override final
virtual bool isValid() override final
Can the handle be successfully dereferenced?
const_pointer_type get() const
Dereference the pointer, but don't cache anything.
StatusCode record(std::unique_ptr< T > data)
Record a const object to the store.
pointer_type ptr()
Dereference the pointer.
virtual unsigned int roiWord() const override final
virtual unsigned int roiId() const override final
these quantities probably don't need to be used any more
const ToolHandleArray< ITauToolBase > m_idTools
StatusCode deepCopy(SG::WriteHandle< DataVector< V > > &writeHandle, const DataVector< V > *oldContainer) const
const ToolHandleArray< ITauToolBase > m_commonTools
const ToolHandle< GenericMonitoringTool > m_monTool
SG::WriteDecorHandleKeyArray< xAOD::TauJetContainer > m_tauJetOutputDecorKeysArray
SG::WriteHandleKey< xAOD::TauJetContainer > m_tauJetOutputKey
Gaudi::Property< std::map< std::string, std::pair< std::string, std::string > > > m_monitoredHitZRegressions
SG::WriteHandleKey< xAOD::TauTrackContainer > m_tauTrackOutputKey
const ToolHandleArray< ITauToolBase > m_commonToolsBeforeTF
std::map< std::string, std::pair< SG::ConstAccessor< float >, SG::ConstAccessor< float > > > m_monitoredInferenceAccessors
SG::ReadHandleKey< xAOD::TauTrackContainer > m_tauTrackInputKey
SG::WriteHandleKey< xAOD::JetContainer > m_tauSeedOutputKey
SG::ReadDecorHandleKey< xAOD::TauJetContainer > m_hitsInputDecorKey
SG::WriteDecorHandleKey< xAOD::TauJetContainer > m_hitsOutputDecorKey
SG::ReadHandleKey< xAOD::VertexContainer > m_vertexInputKey
SG::ReadHandleKey< xAOD::CaloClusterContainer > m_clustersInputKey
SG::ReadDecorHandleKeyArray< xAOD::TauJetContainer > m_tauJetInputDecorKeysArray
const ToolHandleArray< ITauToolBase > m_vertexFinderTools
const ToolHandleArray< ITauToolBase > m_trackFinderTools
SG::ReadHandleKey< xAOD::TauJetContainer > m_tauJetInputKey
const ToolHandleArray< ITauToolBase > m_vertexVarsTools
Gaudi::Property< std::map< std::string, std::pair< std::string, std::string > > > m_monitoredIdScores
SG::ReadHandleKey< TrigRoiDescriptorCollection > m_roiInputKey
@ SECOND_LAMBDA
Second Moment in .
@ SECOND_R
Second Moment in .
@ CENTER_LAMBDA
Shower depth at Cluster Centroid.
virtual double phi() const
The azimuthal angle ( ) of the particle.
void addConstituent(const ElementLink< IParticleContainer > &link, float weight=1.0)
Add a constituent directly in the ElementLink format.
void setJetP4(const JetFourMom_t &p4)
void setConstituentsSignalState(JetConstitScale t)
Set the state at which constituents were when this jet was found. This function is called by jet buil...
virtual double pt() const
The transverse momentum ( ) of the particle.
virtual double eta() const
The pseudorapidity ( ) of the particle.
virtual double e() const
The total energy of the particle.
virtual double phi() const
The azimuthal angle ( ) of the particle.
void setROIWord(unsigned int)
void clearTauTrackLinks()
Remove all tracks from the tau.
unsigned int ROIWord() const
the ROIWord, in case TauJet is used in EF trigger
double ptDetectorAxis() const
virtual FourMom_t p4() const
The full 4-momentum of the particle.
virtual double pt() const
The transverse momentum ( ) of the particle.
double etaDetectorAxis() const
const VertexLink_t & vertexLink() const
const JetLink_t & jetLink() const
void setJet(const xAOD::JetContainer *cont, const xAOD::Jet *jet)
bool detail(TauJetParameters::Detail detail, int &value) const
Get and set values of common details variables via enum.
const TauTrack * track(size_t i, TauJetParameters::TauTrackFlag flag=TauJetParameters::TauTrackFlag::classifiedCharged, int *container_index=0) const
Get the pointer to a given tauTrack associated with this tau /*container index needed by trackNonCons...
const Vertex * vertex() const
void setP4(double pt, double eta, double phi, double m)
Set methods for IParticle values.
std::vector< const IParticle * > clusters() const
size_t nTracksIsolation() const
virtual double m() const
The invariant mass of the particle.
size_t nAllTracks() const
std::vector< const TauTrack * > allTracks() const
Get the v<const pointer> to all tracks associated with this tau, regardless of classification.
virtual double eta() const
The pseudorapidity ( ) of the particle.
size_t nTracks(TauJetParameters::TauTrackFlag flag=TauJetParameters::TauTrackFlag::classifiedCharged) const
float z() const
Returns the z position.
float y() const
Returns the y position.
VxType::VertexType vertexType() const
The type of the vertex.
float x() const
Returns the x position.
@ nSCTHitsPlusDeadSensors
T wrapToPi(T phi)
Wrap angle in radians to [-pi, pi].
::StatusCode StatusCode
StatusCode definition for legacy code.
ValuesCollection< T > Collection(std::string name, const T &collection)
Declare a monitored (double-convertible) collection.
SG::ReadCondHandle< T > makeHandle(const SG::ReadCondHandleKey< T > &key, const EventContext &ctx=Gaudi::Hive::currentContext())
bool pt_jetseed_log(const xAOD::TauJet &tau, const xAOD::CaloVertexedTopoCluster &, float &out)
float j(const xAOD::IParticle &, const xAOD::TrackMeasurementValidation &hit, const Eigen::Matrix3d &jab_inv)
bool ptDetectorAxis(const xAOD::TauJet &tau, float &out)
@ 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
@ dRmax
Get maximal dR of tracks associated to calo-seeded tau.
@ NoVtx
Dummy vertex. TrackParticle was not used in vertex fit.
Jet_v1 Jet
Definition of the current "jet version".
CaloCluster_v1 CaloCluster
Define the latest version of the calorimeter cluster class.
VertexContainer_v1 VertexContainer
Definition of the current "Vertex container version".
TauTrack_v1 TauTrack
Definition of the current version.
TauJet_v3 TauJet
Definition of the current "tau version".
TauTrackContainer_v1 TauTrackContainer
Definition of the current TauTrack container version.
CaloClusterContainer_v1 CaloClusterContainer
Define the latest version of the calorimeter cluster container.
TauJetContainer_v3 TauJetContainer
Definition of the current "taujet container version".
@ numberOfSCTDeadSensors
number of dead SCT sensors crossed [unit8_t].
@ numberOfSCTHits
number of hits in SCT [unit8_t].
@ numberOfPixelHits
these are the pixel hits, including the b-layer [unit8_t].
@ numberOfPixelDeadSensors
number of dead pixel sensors crossed [unit8_t].
@ CalibratedJetConstituent
ROOT::Math::LorentzVector< ROOT::Math::PtEtaPhiM4D< double > > JetFourMom_t
Base 4 Momentum type for Jet.