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 EtHad = Monitored::Scalar<float>("EtHad", -10);
161 auto EtEm = Monitored::Scalar<float>("EtEm", -10);
162 auto EMFrac = Monitored::Scalar<float>("EMFrac", -10);
163 auto IsoFrac = Monitored::Scalar<float>("IsoFrac", -1);
164 auto CentFrac = Monitored::Scalar<float>("CentFrac", -10);
165
166 auto clustersMeanCenterLambda = Monitored::Scalar<float>("clustersMeanCenterLambda", 0);
167 auto clustersMeanFirstEngDens = Monitored::Scalar<float>("clustersMeanFirstEngDens", 0);
168 auto clustersMeanEMProbability = Monitored::Scalar<float>("clustersMeanEMProbability", 0);
169 auto clustersMeanSecondLambda = Monitored::Scalar<float>("clustersMeanSecondLambda", 0);
170 auto clustersMeanPresamplerFrac = Monitored::Scalar<float>("clustersMeanPresamplerFrac", 0);
171
172 auto n_clusters = Monitored::Scalar<int>("NClusters", 0);
173 std::vector<float> cluster_et_log, cluster_dEta, cluster_dPhi;
174 std::vector<float> cluster_log_SECOND_R, cluster_SECOND_LAMBDA, cluster_CENTER_LAMBDA;
179 auto mon_cluster_SECOND_LAMBDA =
Monitored::Collection(
"cluster_SECOND_LAMBDA", cluster_SECOND_LAMBDA);
180 auto mon_cluster_CENTER_LAMBDA =
Monitored::Collection(
"cluster_CENTER_LAMBDA", cluster_CENTER_LAMBDA);
181 std::vector<unsigned char> calo_errors;
183
184
185 auto n_tracks = Monitored::Scalar<int>("NTracks", -10);
186 auto n_iso_tracks = Monitored::Scalar<int>("NIsoTracks", -10);
187
188 auto ipSigLeadTrk = Monitored::Scalar<float>(
"ipSigLeadTrk", -1000);
189 auto trFlightPathSig = Monitored::Scalar<float>(
"trFlightPathSig", -10);
190 auto massTrkSys = Monitored::Scalar<float>(
"massTrkSys", -10);
191 auto dRmax = Monitored::Scalar<float>(
"dRmax", -10);
192 auto trkAvgDist = Monitored::Scalar<float>(
"TrkAvgDist", -1);
193 auto innerTrkAvgDist = Monitored::Scalar<float>(
"innerTrkAvgDist", -1);
194 auto etovPtLead = Monitored::Scalar<float>("EtovPtLead", -10);
195 auto PSSFraction = Monitored::Scalar<float>(
"PSSFraction", -999.9);
196 auto EMPOverTrkSysP = Monitored::Scalar<float>(
"EMPOverTrkSysP", -999.9);
198 auto vertex_x = Monitored::Scalar<float>("vertex_x", -999.9);
199 auto vertex_y = Monitored::Scalar<float>("vertex_y", -999.9);
200 auto vertex_z = Monitored::Scalar<float>("vertex_z", -999.9);
201
202 auto n_all_tracks = Monitored::Scalar<int>("NAllTracks", 0);
203 std::vector<float> track_pt_log, track_dEta, track_dPhi;
204 std::vector<float> track_d0_abs_log, track_z0sinthetaTJVA_abs_log;
205 std::vector<float> track_nPixelHitsPlusDeadSensors, track_nSCTHitsPlusDeadSensors;
210 auto mon_track_z0sinthetaTJVA_abs_log =
Monitored::Collection(
"track_z0sinthetaTJVA_abs_log", track_z0sinthetaTJVA_abs_log);
211 auto mon_track_nPixelHitsPlusDeadSensors =
Monitored::Collection(
"track_nPixelHitsPlusDeadSensors", track_nPixelHitsPlusDeadSensors);
212 auto mon_track_nSCTHitsPlusDeadSensors =
Monitored::Collection(
"track_nSCTHitsPlusDeadSensors", track_nSCTHitsPlusDeadSensors);
213 std::vector<unsigned char> track_errors;
215
216 std::map<std::string, Monitored::Scalar<float>> monitoredIdVariables;
218 monitoredIdVariables.emplace(key + "_TauJetScore_0p", Monitored::Scalar<float>(key + "_TauJetScore_0p", -1));
219 monitoredIdVariables.emplace(key + "_TauJetScoreTrans_0p", Monitored::Scalar<float>(key + "_TauJetScoreTrans_0p", -1));
220 monitoredIdVariables.emplace(key + "_TauJetScore_1p", Monitored::Scalar<float>(key + "_TauJetScore_1p", -1));
221 monitoredIdVariables.emplace(key + "_TauJetScoreTrans_1p", Monitored::Scalar<float>(key + "_TauJetScoreTrans_1p", -1));
222 monitoredIdVariables.emplace(key + "_TauJetScore_mp", Monitored::Scalar<float>(key + "_TauJetScore_mp", -1));
223 monitoredIdVariables.emplace(key + "_TauJetScoreTrans_mp", Monitored::Scalar<float>(key + "_TauJetScoreTrans_mp", -1));
224 }
225
226
227 auto n_hits = Monitored::Scalar<int>("NHits", 0);
228 std::vector<float> hit_z, hit_dPhi;
231
232 std::map<std::string, Monitored::Scalar<float>> monitoredHitZVariables;
234 monitoredHitZVariables.emplace(key + "_z0", Monitored::Scalar<float>(key + "_z0", -999));
235 monitoredHitZVariables.emplace(key + "_z0_sigma", Monitored::Scalar<float>(key + "_z0_sigma", -999));
236 }
237
238 std::vector<std::reference_wrapper<Monitored::IMonitoredVariable>> monVars = {
239 std::ref(n_taus),
240 std::ref(pT), std::ref(
eta), std::ref(
phi),
241 std::ref(etaRoI), std::ref(phiRoI), std::ref(dEta_RoI), std::ref(dPhi_RoI),
242 std::ref(mEflowApprox), std::ref(ptRatioEflowApprox), std::ref(pt_jetseed_log),
243 std::ref(etaDetectorAxis), std::ref(ptDetectorAxis), std::ref(ptDetectorAxis_log),
244 std::ref(n_cells),
245 std::ref(EtHad), std::ref(EtEm), std::ref(EMFrac), std::ref(IsoFrac), std::ref(CentFrac),
246 std::ref(clustersMeanCenterLambda), std::ref(clustersMeanFirstEngDens), std::ref(clustersMeanEMProbability),
247 std::ref(clustersMeanSecondLambda), std::ref(clustersMeanPresamplerFrac),
248 std::ref(n_clusters), std::ref(mon_cluster_et_log), std::ref(mon_cluster_dEta), std::ref(mon_cluster_dPhi),
249 std::ref(mon_cluster_log_SECOND_R), std::ref(mon_cluster_SECOND_LAMBDA), std::ref(mon_cluster_CENTER_LAMBDA),
250 std::ref(mon_calo_errors),
251 std::ref(n_tracks), std::ref(n_iso_tracks),
252 std::ref(ipSigLeadTrk), std::ref(trFlightPathSig), std::ref(massTrkSys), std::ref(dRmax), std::ref(trkAvgDist), std::ref(innerTrkAvgDist),
253 std::ref(etovPtLead), std::ref(PSSFraction), std::ref(EMPOverTrkSysP), std::ref(ChPiEMEOverCaloEME),
254 std::ref(vertex_x), std::ref(vertex_y), std::ref(vertex_z),
255 std::ref(n_all_tracks), std::ref(mon_track_pt_log), std::ref(mon_track_dEta), std::ref(mon_track_dPhi),
256 std::ref(mon_track_d0_abs_log), std::ref(mon_track_z0sinthetaTJVA_abs_log),
257 std::ref(mon_track_nPixelHitsPlusDeadSensors), std::ref(mon_track_nSCTHitsPlusDeadSensors),
258 std::ref(mon_track_errors),
259 std::ref(n_hits), std::ref(mon_hit_z), std::ref(mon_hit_dPhi)
260 };
261 for(auto& [key, var] : monitoredIdVariables) monVars.push_back(std::ref(var));
262 for(auto& [key, var] : monitoredHitZVariables) monVars.push_back(std::ref(var));
263 auto monitorIt = Monitored::Group(
m_monTool, monVars);
264
265
267
268
269
270
272
273
274 std::vector<ROOT::Math::XYZVector> tauHits;
275
276
277
278
279
283 return StatusCode::FAILURE;
284 }
285
286 if(roisHandle->empty()) {
288 return StatusCode::FAILURE;
289 }
290
292 if(roiDescriptor) {
294 } else {
297 return StatusCode::FAILURE;
298 }
299
300
301
302
303
304
305
306 std::unique_ptr<xAOD::TauJetContainer> outputContainer = std::make_unique<xAOD::TauJetContainer>();
307 std::unique_ptr<xAOD::TauJetAuxContainer> outputAuxContainer = std::make_unique<xAOD::TauJetAuxContainer>();
308 outputContainer->setStore(outputAuxContainer.get());
309
311 ATH_CHECK(outputTauHandle.record(std::move(outputContainer), std::move(outputAuxContainer)));
312
313
314 std::unique_ptr<xAOD::TauTrackContainer> outputTrackContainer = std::make_unique<xAOD::TauTrackContainer>();
315 std::unique_ptr<xAOD::TauTrackAuxContainer> outputTrackAuxContainer = std::make_unique<xAOD::TauTrackAuxContainer>();
316 outputTrackContainer->setStore(outputTrackAuxContainer.get());
317
319 ATH_CHECK(tauTrackHandle.record(std::move(outputTrackContainer), std::move(outputTrackAuxContainer)));
320
321
322
323
324
325
326
327
328
329
330
331
333
336
338 if(RoICaloClusterContainer) {
339 ATH_MSG_DEBUG(
"CaloCluster container found of size: " << RoICaloClusterContainer->
size());
340
341
343 } else {
346 return StatusCode::FAILURE;
347 }
348
349
350 std::unique_ptr<xAOD::JetContainer> jetContainer{std::make_unique<xAOD::JetContainer>()};
351 std::unique_ptr<xAOD::JetAuxContainer> jetAuxContainer{std::make_unique<xAOD::JetAuxContainer>()};
352 jetContainer->setStore(jetAuxContainer.get());
353
355 ATH_CHECK(outputTauSeedJetHandle.
record(std::move(jetContainer), std::move(jetAuxContainer)));
356
357
358 outputTauSeedJetHandle->push_back(std::make_unique<xAOD::Jet>());
359 xAOD::Jet *jet = outputTauSeedJetHandle->back();
360
361
362
363
364
366 TLorentzVector cluster_p4, barycenter;
368 ATH_MSG_DEBUG(
"Cluster (e, eta, phi): (" << cluster->e() <<
", " << cluster->eta() <<
", " << cluster->phi() <<
")");
369
370 if(cluster->e() < 0) {
372 continue;
373 }
374
375 cluster_p4.SetPtEtaPhiE(cluster->pt(), cluster->eta(), cluster->phi(), cluster->e());
377
378 barycenter += cluster_p4;
379 }
380
382 ATH_MSG_DEBUG(
"Built jet with eta: " << jet->
eta() <<
", phi: " << jet->
phi() <<
", pT: " << jet->
pt() <<
", E: "<< jet->
e() );
383
384
385
386
387 outputTauHandle->push_back(std::make_unique<xAOD::TauJet>());
388 tau = outputTauHandle->back();
390
391
392 tau->
setJet(outputTauSeedJetHandle.
ptr(), jet);
393
394
396 ATH_MSG_DEBUG(
"Changing (eta, phi) back to the RoI center due to negative energy: " << jet->
e());
397 tau->
setP4(tau->
pt(), roiDescriptor->
eta(), roiDescriptor->
phi(), tau->
m());
399 }
400 }
401
402
403
404
405
407
408 SG::ReadHandle<xAOD::TauJetContainer> tauInputHandle(
m_tauJetInputKey, ctx);
411
412
414
415
416
418
419 SG::ReadDecorHandle<xAOD::TauJetContainer, std::vector<ElementLink<xAOD::TrackMeasurementValidationContainer>>> hitsInputDecorHandle(
m_hitsInputDecorKey, ctx);
420 ATH_CHECK(hitsInputDecorHandle.isValid());
421 SG::WriteDecorHandle<xAOD::TauJetContainer, std::vector<ElementLink<xAOD::TrackMeasurementValidationContainer>>> hitsOutputDecorHandle(
m_hitsOutputDecorKey, ctx);
422 ATH_CHECK(hitsOutputDecorHandle.isValid());
423
424
425
426
427
428
429 static const SG::AuxElement::ConstAccessor<float>
x(
"HitsXRelToBeamspot");
430 static const SG::AuxElement::ConstAccessor<float>
y(
"HitsYRelToBeamspot");
431 static const SG::AuxElement::ConstAccessor<float>
z(
"HitsZRelToBeamspot");
432
433 for(
size_t i = 0;
i < inputTauContainer->
size(); ++
i) {
435 const auto& inputHits = hitsInputDecorHandle(*inputTau);
436
439 tauHits.push_back(ROOT::Math::XYZVector(
x(**el),
y(**el),
z(**el)));
440 }
441 }
442
444 hitsOutputDecorHandle(*outputTau) = inputHits;
445 }
446 }
447
448
449
455
456 for(
size_t j = 0;
j < inputTauContainer->
size(); ++
j) {
457 outputDecorHandle(*outputTauHandle->at(j)) = inputDecorHandle(*inputTauContainer->
at(j));
458 }
459 }
460
461
466
467
469 }
470
471
472
473 if(!outputTauHandle->empty()) {
474 tau = outputTauHandle->back();
475
476
478
479
480
481
483 }
484 }
485
486
487
488
489
493
494 if(!VertexContainerHandle.
isValid()) {
495 ATH_MSG_DEBUG(
"No VertexContainer retrieved for the trigger element");
497 } else {
498 RoIVxContainer = VertexContainerHandle.
get();
500 }
501 }
502
503
505
506
507
508
509
510 StatusCode processStatus = StatusCode::SUCCESS;
511
512
513
516
517 processStatus =
tool->executeVertexFinder(*tau, RoIVxContainer);
518
519 if(!processStatus.isFailure()) {
521 } else {
523 break;
524 }
525 }
526
529 else break;
530
531 processStatus =
tool->execute(*tau);
532
533 if(!processStatus.isFailure()) {
535 } else {
537 break;
538 }
539 }
540
543 else break;
544
545 processStatus =
tool->executeTrackFinder(*tau, *tauTrackHandle);
546
547 if(!processStatus.isFailure()) {
549 } else {
551 break;
552 }
553 }
554
557 else break;
558
559 processStatus =
tool->execute(*tau);
560
561 if(!processStatus.isFailure()) {
563 } else {
565 break;
566 }
567 }
568
569
573 else break;
574
575 processStatus =
tool->executeVertexVariables(*tau, dummyVxCont);
576
577 if(!processStatus.isFailure()) {
579 } else {
581 break;
582 }
583 }
584
587 else break;
588
589 processStatus =
tool->execute(*tau);
590
591 if(!processStatus.isFailure()) {
593 } else {
595 break;
596 }
597 }
598
600
601
602
603 if(!processStatus.isSuccess()) {
604 ATH_MSG_DEBUG(
"The tau object has NOT been registered in the tau container");
605
608 tauTrackHandle->erase(tauTrackHandle->end() - bad_tau->
nAllTracks(), tauTrackHandle->end());
609
610 outputTauHandle->pop_back();
611
613
614 } else {
615
616
617 float fJetEnergy = (*tau->
jetLink())->e();
619
620 if(fJetEnergy < 0.00001) {
621 ATH_MSG_DEBUG(
"Changing tau's (eta,phi) to RoI ones due to negative energy (PxPyPzE flips eta and phi)");
622 ATH_MSG_DEBUG(
"This is probably not needed anymore, method PxPyPzE has been corrected");
623
624
625 tau->
setP4(tau->
pt(), roiDescriptor->
eta(), roiDescriptor->
phi(), tau->
m());
626
627 ATH_MSG_DEBUG(
"Roi: " << roiDescriptor->
roiId() <<
", Tau eta: " << tau->
eta() <<
", phi: " << tau->
phi() <<
", pT: " << tau->
pt());
628 }
629
630
631
632
633
634
635 pT = tau->
pt()/Gaudi::Units::GeV;
638
639
640 etaRoI = roiDescriptor->
eta();
641 phiRoI = roiDescriptor->
phi();
642 dEta_RoI =
eta - roiDescriptor->
eta();
643 dPhi_RoI =
phi - roiDescriptor->
phi();
644 if(dPhi_RoI < -
M_PI) dPhi_RoI += 2.0*
M_PI;
645 if(dPhi_RoI >
M_PI) dPhi_RoI -= 2.0*
M_PI;
646
647
648 float pre_mEflowApprox;
650 mEflowApprox = std::log10(std::max(pre_mEflowApprox, 140.0f));
651
652 float pre_ptRatioEflowApprox;
655
659 ptDetectorAxis_log = std::log10(std::min(tau->
ptDetectorAxis()/Gaudi::Units::GeV, 10000.0));
660
661
664 EtHad /= Gaudi::Units::GeV;
666 EtEm /= Gaudi::Units::GeV;
667
668 float Et_raw = EtEm + EtHad;
669 if(Et_raw != 0) EMFrac = EtEm / Et_raw;
670
673
674
675
678 if(test) clustersMeanCenterLambda =
tmp;
680 if(test) clustersMeanFirstEngDens =
tmp;
682 if(test) clustersMeanEMProbability =
tmp;
684 if(test) clustersMeanSecondLambda =
tmp;
686 if(test) clustersMeanPresamplerFrac =
tmp;
687
688
689
690 n_clusters = tau->
clusters().size();
691 for(
const auto& cluster : tau->
clusters()) {
693
694 cluster_et_log.push_back(std::log10(
cls->et()));
695 cluster_dEta.push_back(
cls->eta() - tau->
eta());
696 cluster_dPhi.push_back(
cls->p4().DeltaPhi(tau->
p4()));
697
698 double log_second_R = -999;
700 if(success_SECOND_R) log_second_R = std::log10(log_second_R + 0.1);
701 cluster_log_SECOND_R.push_back(log_second_R);
702
703 double second_lambda = -999;
705 if(success_SECOND_LAMBDA) second_lambda = std::log10(second_lambda + 0.1);
706 cluster_SECOND_LAMBDA.push_back(second_lambda);
707
708 double center_lambda = -999;
710 if(success_CENTER_LAMBDA) center_lambda = std::log10(center_lambda + 1e-6);
711 cluster_CENTER_LAMBDA.push_back(center_lambda);
712 }
713
714
715
730
735 }
736
737
738
741 track_pt_log.push_back(std::log10(
track->pt()));
742 track_dEta.push_back(
track->eta() - tau->
eta());
743 track_dPhi.push_back(
track->p4().DeltaPhi(tau->
p4()));
744 track_d0_abs_log.push_back(std::log10(std::abs(
track->track()->d0()) + 1e-6));
745 track_z0sinthetaTJVA_abs_log.push_back(
track->z0sinthetaTJVA());
746
747 uint8_t pixel_hits, pixel_dead;
750 float nPixelHitsPlusDeadSensor = -999;
751 if(success1_pixel_hits && success2_pixel_dead) nPixelHitsPlusDeadSensor = pixel_hits + pixel_dead;
752 track_nPixelHitsPlusDeadSensors.push_back(nPixelHitsPlusDeadSensor);
753
759 track_nSCTHitsPlusDeadSensors.push_back(nSCTHitsPlusDeadSensors);
760 }
761
762
763
765 n_hits = tauHits.size();
766 for(const ROOT::Math::XYZVector& hit : tauHits) {
767 hit_z.push_back(hit.z());
769 }
770 }
771
772
773
776
777 if(
score.isAvailable(*tau)) {
779 monitoredIdVariables.at(key +
"_TauJetScore_0p") =
score(*tau);
780 }
else if(tau->
nTracks() == 1) {
781 monitoredIdVariables.at(key +
"_TauJetScore_1p") =
score(*tau);
782 } else {
783 monitoredIdVariables.at(key +
"_TauJetScore_mp") =
score(*tau);
784 }
785 }
786
787 if(scoreTrans.isAvailable(*tau)) {
789 monitoredIdVariables.at(key + "_TauJetScoreTrans_0p") = scoreTrans(*tau);
790 }
else if(tau->
nTracks() == 1) {
791 monitoredIdVariables.at(key + "_TauJetScoreTrans_1p") = scoreTrans(*tau);
792 } else {
793 monitoredIdVariables.at(key + "_TauJetScoreTrans_mp") = scoreTrans(*tau);
794 }
795 }
796 }
797
798
799
802
803 if(
z0.isAvailable(*tau)) {
804 monitoredHitZVariables.at(key +
"_z0") =
z0(*tau);
805 }
806 if(
sigma.isAvailable(*tau)) {
807 monitoredHitZVariables.at(key +
"_z0_sigma") =
sigma(*tau);
808 }
809 }
810
811
812 ++n_taus;
813
814
816 <<
", Tau pT (GeV): " << pT <<
", Tau eta: " <<
eta <<
", Tau phi: " <<
phi
817 << ", wrt RoI dEta: " << dEta_RoI << ", dPhi: " << dPhi_RoI);
818 }
819
820
821
822
823
824 ATH_MSG_DEBUG(
"Output TauJetContainer size: " << outputTauHandle->size());
825 ATH_MSG_DEBUG(
"Output TauJetTrackContainer size: " << tauTrackHandle->size());
826
827 return StatusCode::SUCCESS;
828}
Scalar eta() const
pseudorapidity method
Scalar phi() const
phi method
#define ATH_CHECK
Evaluate an expression and check for errors.
ElementLink()
Default constructor.
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
Check if the element can be found.
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)
@ 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.