146{
147
148
149
150
151
152 auto n_taus = Monitored::Scalar<int>("NTauCandidates", 0);
153
154 auto pT = Monitored::Scalar<float>(
"Pt", 0);
155 auto eta = Monitored::Scalar<float>(
"Eta", -99.9);
156 auto phi = Monitored::Scalar<float>(
"Phi", -99.9);
157
158 auto etaRoI = Monitored::Scalar<float>("EtaRoI", -99.9);
159 auto phiRoI = Monitored::Scalar<float>("PhiRoI", -99.9);
160 auto dEta_RoI = Monitored::Scalar<float>("dEtaTau_RoI", -10);
161 auto dPhi_RoI = Monitored::Scalar<float>("dPhiTau_RoI", -10);
162
163 auto mEflowApprox = Monitored::Scalar<float>(
"mEflowApprox", -99.9);
165 auto pt_jetseed_log = Monitored::Scalar<float>(
"pt_jetseed_log", -99.9);
166 auto etaDetectorAxis = Monitored::Scalar<float>("etaDetectorAxis", -99.9);
167 auto ptDetectorAxis = Monitored::Scalar<float>(
"ptDetectorAxis", -99.9);
168 auto ptDetectorAxis_log = Monitored::Scalar<float>("ptDetectorAxis_log", -99.9);
169
170 auto n_cells = Monitored::Scalar<int>("NCaloCells", 0);
171 auto EtHad = Monitored::Scalar<float>("EtHad", -10);
172 auto EtEm = Monitored::Scalar<float>("EtEm", -10);
173 auto EMFrac = Monitored::Scalar<float>("EMFrac", -10);
174 auto IsoFrac = Monitored::Scalar<float>("IsoFrac", -1);
175 auto CentFrac = Monitored::Scalar<float>("CentFrac", -10);
176
177 auto clustersMeanCenterLambda = Monitored::Scalar<float>("clustersMeanCenterLambda", 0);
178 auto clustersMeanFirstEngDens = Monitored::Scalar<float>("clustersMeanFirstEngDens", 0);
179 auto clustersMeanEMProbability = Monitored::Scalar<float>("clustersMeanEMProbability", 0);
180 auto clustersMeanSecondLambda = Monitored::Scalar<float>("clustersMeanSecondLambda", 0);
181 auto clustersMeanPresamplerFrac = Monitored::Scalar<float>("clustersMeanPresamplerFrac", 0);
182
183 auto n_clusters = Monitored::Scalar<int>("NClusters", 0);
184 std::vector<float> cluster_et_log, cluster_dEta, cluster_dPhi;
185 std::vector<float> cluster_log_SECOND_R, cluster_SECOND_LAMBDA, cluster_CENTER_LAMBDA;
190 auto mon_cluster_SECOND_LAMBDA =
Monitored::Collection(
"cluster_SECOND_LAMBDA", cluster_SECOND_LAMBDA);
191 auto mon_cluster_CENTER_LAMBDA =
Monitored::Collection(
"cluster_CENTER_LAMBDA", cluster_CENTER_LAMBDA);
192 std::vector<unsigned char> calo_errors;
194
195
196 auto n_tracks = Monitored::Scalar<int>("NTracks", -10);
197 auto n_iso_tracks = Monitored::Scalar<int>("NIsoTracks", -10);
198
199 auto ipSigLeadTrk = Monitored::Scalar<float>(
"ipSigLeadTrk", -1000);
200 auto trFlightPathSig = Monitored::Scalar<float>(
"trFlightPathSig", -10);
201 auto massTrkSys = Monitored::Scalar<float>(
"massTrkSys", -10);
202 auto dRmax = Monitored::Scalar<float>(
"dRmax", -10);
203 auto trkAvgDist = Monitored::Scalar<float>(
"TrkAvgDist", -1);
204 auto innerTrkAvgDist = Monitored::Scalar<float>(
"innerTrkAvgDist", -1);
205 auto etovPtLead = Monitored::Scalar<float>("EtovPtLead", -10);
206 auto PSSFraction = Monitored::Scalar<float>(
"PSSFraction", -999.9);
207 auto EMPOverTrkSysP = Monitored::Scalar<float>(
"EMPOverTrkSysP", -999.9);
209 auto vertex_x = Monitored::Scalar<float>("vertex_x", -999.9);
210 auto vertex_y = Monitored::Scalar<float>("vertex_y", -999.9);
211 auto vertex_z = Monitored::Scalar<float>("vertex_z", -999.9);
212
213 auto n_all_tracks = Monitored::Scalar<int>("NAllTracks", 0);
214 std::vector<float> track_pt_log, track_dEta, track_dPhi;
215 std::vector<float> track_d0_abs_log, track_z0sinthetaTJVA_abs_log;
216 std::vector<float> track_nPixelHitsPlusDeadSensors, track_nSCTHitsPlusDeadSensors;
221 auto mon_track_z0sinthetaTJVA_abs_log =
Monitored::Collection(
"track_z0sinthetaTJVA_abs_log", track_z0sinthetaTJVA_abs_log);
222 auto mon_track_nPixelHitsPlusDeadSensors =
Monitored::Collection(
"track_nPixelHitsPlusDeadSensors", track_nPixelHitsPlusDeadSensors);
223 auto mon_track_nSCTHitsPlusDeadSensors =
Monitored::Collection(
"track_nSCTHitsPlusDeadSensors", track_nSCTHitsPlusDeadSensors);
224 std::vector<unsigned char> track_errors;
226
227 std::map<std::string, Monitored::Scalar<float>> monitoredIdVariables;
229 monitoredIdVariables.emplace(key + "_TauJetScore_0p", Monitored::Scalar<float>(key + "_TauJetScore_0p", -1));
230 monitoredIdVariables.emplace(key + "_TauJetScoreTrans_0p", Monitored::Scalar<float>(key + "_TauJetScoreTrans_0p", -1));
231 monitoredIdVariables.emplace(key + "_TauJetScore_1p", Monitored::Scalar<float>(key + "_TauJetScore_1p", -1));
232 monitoredIdVariables.emplace(key + "_TauJetScoreTrans_1p", Monitored::Scalar<float>(key + "_TauJetScoreTrans_1p", -1));
233 monitoredIdVariables.emplace(key + "_TauJetScore_mp", Monitored::Scalar<float>(key + "_TauJetScore_mp", -1));
234 monitoredIdVariables.emplace(key + "_TauJetScoreTrans_mp", Monitored::Scalar<float>(key + "_TauJetScoreTrans_mp", -1));
235 }
236
237
238 auto n_hits = Monitored::Scalar<int>("NHits", 0);
239 std::vector<float> hit_z, hit_dPhi;
242
243 std::map<std::string, Monitored::Scalar<float>> monitoredHitZVariables;
245 monitoredHitZVariables.emplace(key + "_z0", Monitored::Scalar<float>(key + "_z0", -999));
246 monitoredHitZVariables.emplace(key + "_z0_sigma", Monitored::Scalar<float>(key + "_z0_sigma", -999));
247 }
248
249 std::vector<std::reference_wrapper<Monitored::IMonitoredVariable>> monVars = {
250 std::ref(n_taus),
251 std::ref(pT), std::ref(
eta), std::ref(
phi),
252 std::ref(etaRoI), std::ref(phiRoI), std::ref(dEta_RoI), std::ref(dPhi_RoI),
253 std::ref(mEflowApprox), std::ref(ptRatioEflowApprox), std::ref(pt_jetseed_log),
254 std::ref(etaDetectorAxis), std::ref(ptDetectorAxis), std::ref(ptDetectorAxis_log),
255 std::ref(n_cells),
256 std::ref(EtHad), std::ref(EtEm), std::ref(EMFrac), std::ref(IsoFrac), std::ref(CentFrac),
257 std::ref(clustersMeanCenterLambda), std::ref(clustersMeanFirstEngDens), std::ref(clustersMeanEMProbability),
258 std::ref(clustersMeanSecondLambda), std::ref(clustersMeanPresamplerFrac),
259 std::ref(n_clusters), std::ref(mon_cluster_et_log), std::ref(mon_cluster_dEta), std::ref(mon_cluster_dPhi),
260 std::ref(mon_cluster_log_SECOND_R), std::ref(mon_cluster_SECOND_LAMBDA), std::ref(mon_cluster_CENTER_LAMBDA),
261 std::ref(mon_calo_errors),
262 std::ref(n_tracks), std::ref(n_iso_tracks),
263 std::ref(ipSigLeadTrk), std::ref(trFlightPathSig), std::ref(massTrkSys), std::ref(dRmax), std::ref(trkAvgDist), std::ref(innerTrkAvgDist),
264 std::ref(etovPtLead), std::ref(PSSFraction), std::ref(EMPOverTrkSysP), std::ref(ChPiEMEOverCaloEME),
265 std::ref(vertex_x), std::ref(vertex_y), std::ref(vertex_z),
266 std::ref(n_all_tracks), std::ref(mon_track_pt_log), std::ref(mon_track_dEta), std::ref(mon_track_dPhi),
267 std::ref(mon_track_d0_abs_log), std::ref(mon_track_z0sinthetaTJVA_abs_log),
268 std::ref(mon_track_nPixelHitsPlusDeadSensors), std::ref(mon_track_nSCTHitsPlusDeadSensors),
269 std::ref(mon_track_errors),
270 std::ref(n_hits), std::ref(mon_hit_z), std::ref(mon_hit_dPhi)
271 };
272 for(auto& [key, var] : monitoredIdVariables) monVars.push_back(std::ref(var));
273 for(auto& [key, var] : monitoredHitZVariables) monVars.push_back(std::ref(var));
274 auto monitorIt = Monitored::Group(
m_monTool, monVars);
275
276
278
279
280
281
283
284
285 std::vector<ROOT::Math::XYZVector> tauHits;
286
287
288
289
290
294 return StatusCode::FAILURE;
295 }
296
297 if(roisHandle->empty()) {
299 return StatusCode::FAILURE;
300 }
301
303 if(roiDescriptor) {
305 } else {
308 return StatusCode::FAILURE;
309 }
310
311
312
313
314
315
316
317 std::unique_ptr<xAOD::TauJetContainer> outputContainer = std::make_unique<xAOD::TauJetContainer>();
318 std::unique_ptr<xAOD::TauJetAuxContainer> outputAuxContainer = std::make_unique<xAOD::TauJetAuxContainer>();
319 outputContainer->setStore(outputAuxContainer.get());
320
322 ATH_CHECK(outputTauHandle.record(std::move(outputContainer), std::move(outputAuxContainer)));
323
324
325 std::unique_ptr<xAOD::TauTrackContainer> outputTrackContainer = std::make_unique<xAOD::TauTrackContainer>();
326 std::unique_ptr<xAOD::TauTrackAuxContainer> outputTrackAuxContainer = std::make_unique<xAOD::TauTrackAuxContainer>();
327 outputTrackContainer->setStore(outputTrackAuxContainer.get());
328
330 ATH_CHECK(tauTrackHandle.record(std::move(outputTrackContainer), std::move(outputTrackAuxContainer)));
331
332
333
334
335
336
337
338
339
340
341
342
344
347
349 if(RoICaloClusterContainer) {
350 ATH_MSG_DEBUG(
"CaloCluster container found of size: " << RoICaloClusterContainer->
size());
351
352
354 } else {
357 return StatusCode::FAILURE;
358 }
359
360
361 std::unique_ptr<xAOD::JetContainer> jetContainer{std::make_unique<xAOD::JetContainer>()};
362 std::unique_ptr<xAOD::JetAuxContainer> jetAuxContainer{std::make_unique<xAOD::JetAuxContainer>()};
363 jetContainer->setStore(jetAuxContainer.get());
364
366 ATH_CHECK(outputTauSeedJetHandle.
record(std::move(jetContainer), std::move(jetAuxContainer)));
367
368
369 outputTauSeedJetHandle->push_back(std::make_unique<xAOD::Jet>());
370 xAOD::Jet *jet = outputTauSeedJetHandle->back();
371
372
373
374
375
377 TLorentzVector cluster_p4, barycenter;
379 ATH_MSG_DEBUG(
"Cluster (e, eta, phi): (" << cluster->e() <<
", " << cluster->eta() <<
", " << cluster->phi() <<
")");
380
381 if(cluster->e() < 0) {
383 continue;
384 }
385
386 cluster_p4.SetPtEtaPhiE(cluster->pt(), cluster->eta(), cluster->phi(), cluster->e());
388
389 barycenter += cluster_p4;
390 }
391
393 ATH_MSG_DEBUG(
"Built jet with eta: " << jet->
eta() <<
", phi: " << jet->
phi() <<
", pT: " << jet->
pt() <<
", E: "<< jet->
e() );
394
395
396
397
398 outputTauHandle->push_back(std::make_unique<xAOD::TauJet>());
399 tau = outputTauHandle->back();
401
402
403 tau->
setJet(outputTauSeedJetHandle.
ptr(), jet);
404
405
407 ATH_MSG_DEBUG(
"Changing (eta, phi) back to the RoI center due to negative energy: " << jet->
e());
408 tau->
setP4(tau->
pt(), roiDescriptor->
eta(), roiDescriptor->
phi(), tau->
m());
410 }
411 }
412
413
414
415
416
418
419 SG::ReadHandle<xAOD::TauJetContainer> tauInputHandle(
m_tauJetInputKey, ctx);
422
423
425
426
427
429
430 SG::ReadDecorHandle<xAOD::TauJetContainer, std::vector<ElementLink<xAOD::TrackMeasurementValidationContainer>>> hitsInputDecorHandle(
m_hitsInputDecorKey, ctx);
431 ATH_CHECK(hitsInputDecorHandle.isValid());
432 SG::WriteDecorHandle<xAOD::TauJetContainer, std::vector<ElementLink<xAOD::TrackMeasurementValidationContainer>>> hitsOutputDecorHandle(
m_hitsOutputDecorKey, ctx);
433 ATH_CHECK(hitsOutputDecorHandle.isValid());
434
435
436
437
438
439
440 static const SG::AuxElement::ConstAccessor<float>
x(
"HitsXRelToBeamspot");
441 static const SG::AuxElement::ConstAccessor<float>
y(
"HitsYRelToBeamspot");
442 static const SG::AuxElement::ConstAccessor<float>
z(
"HitsZRelToBeamspot");
443
444 for(
size_t i = 0;
i < inputTauContainer->
size(); ++
i) {
446 const auto& inputHits = hitsInputDecorHandle(*inputTau);
447
450 tauHits.push_back(ROOT::Math::XYZVector(
x(**el),
y(**el),
z(**el)));
451 }
452 }
453
455 hitsOutputDecorHandle(*outputTau) = inputHits;
456 }
457 }
458
459
460
466
467 for(
size_t j = 0;
j < inputTauContainer->
size(); ++
j) {
468 outputDecorHandle(*outputTauHandle->at(j)) = inputDecorHandle(*inputTauContainer->
at(j));
469 }
470 }
471
472
473
478
479
481 }
482
483
484
485 if(!outputTauHandle->empty()) {
486 tau = outputTauHandle->back();
487
488
490
491
492
493
495 }
496 }
497
498
499
500
501
505
506 if(!VertexContainerHandle.
isValid()) {
507 ATH_MSG_DEBUG(
"No VertexContainer retrieved for the trigger element");
509 } else {
510 RoIVxContainer = VertexContainerHandle.
get();
512 }
513 }
514
515
517
518
519
520
521
522 StatusCode processStatus = StatusCode::SUCCESS;
523
524
525
528
529 processStatus =
tool->executeVertexFinder(*tau, RoIVxContainer);
530
531 if(!processStatus.isFailure()) {
533 } else {
535 break;
536 }
537 }
538
541 else break;
542
543 processStatus =
tool->execute(*tau);
544
545 if(!processStatus.isFailure()) {
547 } else {
549 break;
550 }
551 }
552
555 else break;
556
557 processStatus =
tool->executeTrackFinder(*tau, *tauTrackHandle);
558
559 if(!processStatus.isFailure()) {
561 } else {
563 break;
564 }
565 }
566
569 else break;
570
571 processStatus =
tool->execute(*tau);
572
573 if(!processStatus.isFailure()) {
575 } else {
577 break;
578 }
579 }
580
581
585 else break;
586
587 processStatus =
tool->executeVertexVariables(*tau, dummyVxCont);
588
589 if(!processStatus.isFailure()) {
591 } else {
593 break;
594 }
595 }
596
599 else break;
600
601 processStatus =
tool->execute(*tau);
602
603 if(!processStatus.isFailure()) {
605 } else {
607 break;
608 }
609 }
610
612
613
614
615 if(!processStatus.isSuccess()) {
616 ATH_MSG_DEBUG(
"The tau object has NOT been registered in the tau container");
617
620 tauTrackHandle->erase(tauTrackHandle->end() - bad_tau->
nAllTracks(), tauTrackHandle->end());
621
622 outputTauHandle->pop_back();
623
625
626 } else {
627
628
629 float fJetEnergy = (*tau->
jetLink())->e();
631
632 if(fJetEnergy < 0.00001) {
633 ATH_MSG_DEBUG(
"Changing tau's (eta,phi) to RoI ones due to negative energy (PxPyPzE flips eta and phi)");
634 ATH_MSG_DEBUG(
"This is probably not needed anymore, method PxPyPzE has been corrected");
635
636
637 tau->
setP4(tau->
pt(), roiDescriptor->
eta(), roiDescriptor->
phi(), tau->
m());
638
639 ATH_MSG_DEBUG(
"Roi: " << roiDescriptor->
roiId() <<
", Tau eta: " << tau->
eta() <<
", phi: " << tau->
phi() <<
", pT: " << tau->
pt());
640 }
641
642
643
645
646 SG::ReadCondHandle<InDet::BeamSpotData> beamSpotHandle(
m_beamSpotKey, ctx);
648 const InDet::BeamSpotData*
beamSpot = *beamSpotHandle;
650
654
657
658 outputDecorHandle(*tau) = inputDecorHandle(*tau) + vtx_z;
659 }
660 }
661
662
663
664
665
666
667 pT = tau->
pt()/Gaudi::Units::GeV;
670
671
672 etaRoI = roiDescriptor->
eta();
673 phiRoI = roiDescriptor->
phi();
674 dEta_RoI =
eta - roiDescriptor->
eta();
675 dPhi_RoI =
phi - roiDescriptor->
phi();
676 if(dPhi_RoI < -
M_PI) dPhi_RoI += 2.0*
M_PI;
677 if(dPhi_RoI >
M_PI) dPhi_RoI -= 2.0*
M_PI;
678
679
680 float pre_mEflowApprox;
682 mEflowApprox = std::log10(std::max(pre_mEflowApprox, 140.0f));
683
684 float pre_ptRatioEflowApprox;
687
691 ptDetectorAxis_log = std::log10(std::min(tau->
ptDetectorAxis()/Gaudi::Units::GeV, 10000.0));
692
693
696 EtHad /= Gaudi::Units::GeV;
698 EtEm /= Gaudi::Units::GeV;
699
700 float Et_raw = EtEm + EtHad;
701 if(Et_raw != 0) EMFrac = EtEm / Et_raw;
702
705
706
707
710 if(test) clustersMeanCenterLambda =
tmp;
712 if(test) clustersMeanFirstEngDens =
tmp;
714 if(test) clustersMeanEMProbability =
tmp;
716 if(test) clustersMeanSecondLambda =
tmp;
718 if(test) clustersMeanPresamplerFrac =
tmp;
719
720
721
722 n_clusters = tau->
clusters().size();
723 for(
const auto& cluster : tau->
clusters()) {
725
726 cluster_et_log.push_back(std::log10(
cls->et()));
727 cluster_dEta.push_back(
cls->eta() - tau->
eta());
728 cluster_dPhi.push_back(
cls->p4().DeltaPhi(tau->
p4()));
729
730 double log_second_R = -999;
732 if(success_SECOND_R) log_second_R = std::log10(log_second_R + 0.1);
733 cluster_log_SECOND_R.push_back(log_second_R);
734
735 double second_lambda = -999;
737 if(success_SECOND_LAMBDA) second_lambda = std::log10(second_lambda + 0.1);
738 cluster_SECOND_LAMBDA.push_back(second_lambda);
739
740 double center_lambda = -999;
742 if(success_CENTER_LAMBDA) center_lambda = std::log10(center_lambda + 1e-6);
743 cluster_CENTER_LAMBDA.push_back(center_lambda);
744 }
745
746
747
762
767 }
768
769
770
773 track_pt_log.push_back(std::log10(
track->pt()));
774 track_dEta.push_back(
track->eta() - tau->
eta());
775 track_dPhi.push_back(
track->p4().DeltaPhi(tau->
p4()));
776 track_d0_abs_log.push_back(std::log10(std::abs(
track->track()->d0()) + 1e-6));
777 track_z0sinthetaTJVA_abs_log.push_back(
track->z0sinthetaTJVA());
778
779 uint8_t pixel_hits, pixel_dead;
782 float nPixelHitsPlusDeadSensor = -999;
783 if(success1_pixel_hits && success2_pixel_dead) nPixelHitsPlusDeadSensor = pixel_hits + pixel_dead;
784 track_nPixelHitsPlusDeadSensors.push_back(nPixelHitsPlusDeadSensor);
785
791 track_nSCTHitsPlusDeadSensors.push_back(nSCTHitsPlusDeadSensors);
792 }
793
794
795
797 n_hits = tauHits.size();
798 for(const ROOT::Math::XYZVector& hit : tauHits) {
799 hit_z.push_back(hit.z());
801 }
802 }
803
804
805
808
809 if(
score.isAvailable(*tau)) {
811 monitoredIdVariables.at(key +
"_TauJetScore_0p") =
score(*tau);
812 }
else if(tau->
nTracks() == 1) {
813 monitoredIdVariables.at(key +
"_TauJetScore_1p") =
score(*tau);
814 } else {
815 monitoredIdVariables.at(key +
"_TauJetScore_mp") =
score(*tau);
816 }
817 }
818
819 if(scoreTrans.isAvailable(*tau)) {
821 monitoredIdVariables.at(key + "_TauJetScoreTrans_0p") = scoreTrans(*tau);
822 }
else if(tau->
nTracks() == 1) {
823 monitoredIdVariables.at(key + "_TauJetScoreTrans_1p") = scoreTrans(*tau);
824 } else {
825 monitoredIdVariables.at(key + "_TauJetScoreTrans_mp") = scoreTrans(*tau);
826 }
827 }
828 }
829
830
831
834
835 if(
z0.isAvailable(*tau)) {
836 monitoredHitZVariables.at(key +
"_z0") =
z0(*tau);
837 }
838 if(
sigma.isAvailable(*tau)) {
839 monitoredHitZVariables.at(key +
"_z0_sigma") =
sigma(*tau);
840 }
841 }
842
843
844 ++n_taus;
845
846
848 <<
", Tau pT (GeV): " << pT <<
", Tau eta: " <<
eta <<
", Tau phi: " <<
phi
849 << ", wrt RoI dEta: " << dEta_RoI << ", dPhi: " << dPhi_RoI);
850 }
851
852
853
854
855
856 ATH_MSG_DEBUG(
"Output TauJetContainer size: " << outputTauHandle->size());
857 ATH_MSG_DEBUG(
"Output TauJetTrackContainer size: " << tauTrackHandle->size());
858
859 return StatusCode::SUCCESS;
860}
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
Gaudi::Property< std::map< std::string, std::string > > m_shiftToDetectorCoordinates
SG::WriteDecorHandleKeyArray< xAOD::TauJetContainer > m_shiftToDetectorCoordinatesOutDecorKeysArray
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_shiftToDetectorCoordinatesInDecorKeysArray
SG::ReadDecorHandleKeyArray< xAOD::TauJetContainer > m_tauJetInputDecorKeysArray
SG::ReadCondHandleKey< InDet::BeamSpotData > m_beamSpotKey
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)
AthConfigFlags beamSpot(AthConfigFlags flags, str instanceName, str recoMode)
@ 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.