7 #include "GaudiKernel/SystemOfUnits.h"
45 return StatusCode::FAILURE;
83 return StatusCode::SUCCESS;
91 std::vector<unsigned char> calo_errors(0);
92 std::vector<unsigned char> track_errors(0);
94 std::vector<float> cluster_et_log(0);
95 std::vector<float> cluster_dEta(0);
96 std::vector<float> cluster_dPhi(0);
97 std::vector<float> cluster_log_SECOND_R(0);
98 std::vector<float> cluster_SECOND_LAMBDA(0);
99 std::vector<float> cluster_CENTER_LAMBDA(0);
100 std::vector<float> track_pt_log(0);
101 std::vector<float> track_dEta(0);
102 std::vector<float> track_dPhi(0);
103 std::vector<float> track_z0sinthetaTJVA_abs_log(0);
104 std::vector<float> track_d0_abs_log(0);
105 std::vector<float> track_nIBLHitsAndExp(0);
106 std::vector<float> track_nPixelHitsPlusDeadSensors(0);
107 std::vector<float> track_nSCTHitsPlusDeadSensors(0);
171 auto Track_z0sinthetaTJVA_abs_log =
Monitored::Collection(
"track_z0sinthetaTJVA_abs_log", track_z0sinthetaTJVA_abs_log);
174 auto Track_nPixelHitsPlusDeadSensors =
Monitored::Collection(
"track_nPixelHitsPlusDeadSensors", track_nPixelHitsPlusDeadSensors);
175 auto Track_nSCTHitsPlusDeadSensors =
Monitored::Collection(
"track_nSCTHitsPlusDeadSensors", track_nSCTHitsPlusDeadSensors);
184 EtFinal, Et, EtHad, EtEm, EMFrac, IsoFrac,
centFrac, nWideTrk,
ipSigLeadTrk,
trFlightPathSig,
massTrkSys,
187 ptDetectorAxis, etaDetectorAxis, ptDetectorAxis_log, RNN_clusternumber, RNNJetScore_0p, RNNJetScoreSigTrans_0p,
188 RNNJetScore_1p, RNNJetScoreSigTrans_1p,RNNJetScore_mp,RNNJetScoreSigTrans_mp,Cluster_et_log, Cluster_dEta, Cluster_dPhi, Cluster_log_SECOND_R,
189 Cluster_SECOND_LAMBDA, Cluster_CENTER_LAMBDA, RNN_tracknumber, EF_vertex_x, EF_vertex_y, EF_vertex_z, EF_calo_errors, EF_track_errors, Track_pt_log, Track_dEta, Track_dPhi, Track_z0sinthetaTJVA_abs_log, Track_d0_abs_log, Track_nIBLHitsAndExp,
190 Track_nPixelHitsPlusDeadSensors, Track_nSCTHitsPlusDeadSensors, clustersMeanCenterLambda, clustersMeanFirstEngDens, clustersMeanEMProbability, clustersMeanSecondLambda, clustersMeanPresamplerFrac);
198 if ( not roisHandle.
isValid() ) {
200 return StatusCode::FAILURE;
203 if(roisHandle->
empty()){
205 return StatusCode::FAILURE;
209 if ( roiDescriptor !=
nullptr ) {
215 return StatusCode::FAILURE;
224 pTauContainer = tauInputHandle.
cptr();
230 pTauTrackContainer = tauTrackInputHandle.
cptr();
235 std::unique_ptr<xAOD::TauJetContainer> pContainer = std::make_unique<xAOD::TauJetContainer>();
236 std::unique_ptr<xAOD::TauJetAuxContainer> pAuxContainer = std::make_unique<xAOD::TauJetAuxContainer>();
237 pContainer->setStore(pAuxContainer.get());
241 ATH_CHECK(outputTauHandle.
record(std::move(pContainer),std::move(pAuxContainer)));
247 if(!outputTauHandle->
empty()) p_tau = outputTauHandle->
back();
249 std::unique_ptr<xAOD::TauTrackContainer> pTrackContainer = std::make_unique<xAOD::TauTrackContainer>();
250 std::unique_ptr<xAOD::TauTrackAuxContainer> pTrackAuxContainer = std::make_unique<xAOD::TauTrackAuxContainer>();
251 pTrackContainer->setStore(pTrackAuxContainer.get());
255 ATH_CHECK(tauTrackHandle.
record(std::move(pTrackContainer), std::move(pTrackAuxContainer)));
272 RoICaloClusterContainer = CCContainerHandle.
get();
274 if(RoICaloClusterContainer !=
nullptr) {
275 ATH_MSG_DEBUG(
"CaloCluster container found of size: " << RoICaloClusterContainer->
size());
277 if(RoICaloClusterContainer->
empty()) {
284 return StatusCode::FAILURE;
293 std::unique_ptr<xAOD::JetContainer> theJetContainer{std::make_unique<xAOD::JetContainer>()};
294 std::unique_ptr<xAOD::JetAuxContainer> theJetAuxContainer{std::make_unique<xAOD::JetAuxContainer>()};
296 theJetContainer->setStore(theJetAuxContainer.get());
300 theJetContainer->push_back(aJet);
308 TLorentzVector myCluster;
309 TLorentzVector TauBarycenter(0., 0., 0., 0.);
312 for (clusterIt=RoICaloClusterContainer->
begin(); clusterIt != RoICaloClusterContainer->
end(); ++clusterIt) {
313 ATH_MSG_DEBUG(
" Cluster (e, eta, phi) : ("<< (*clusterIt)->e() <<
" , " <<(*clusterIt)->eta()<<
" , "<<(*clusterIt)->phi()<<
" )");
315 if((*clusterIt)->e() < 0)
321 myCluster.SetPtEtaPhiE((*clusterIt)->pt(), (*clusterIt)->eta(), (*clusterIt)->phi(), (*clusterIt)->e());
324 TauBarycenter += myCluster;
329 ATH_MSG_DEBUG(
"jet formed"<< aJet->
eta() <<
" , " << aJet->
phi() <<
" , " << aJet->
pt() <<
" , "<< aJet->
e() );
336 p_tau->
setJet(theJetContainer.get(), aJet);
340 p_tau->
setP4(p_tau->
pt(), roiDescriptor->
eta(), roiDescriptor->
phi(), p_tau->
m());
346 CHECK( outTauSeedHandle.
record( std::move( theJetContainer ), std::move( theJetAuxContainer ) ) );
358 if ( !TPContainerHandle.
isValid() ) {
363 RoITrackParticleContainer = TPContainerHandle.
get();
364 ATH_MSG_DEBUG(
" Size of vector Track container is " << RoITrackParticleContainer->
size());
365 if(RoITrackParticleContainer !=
nullptr) nTracks = RoITrackParticleContainer->
size();
375 if( !VertexContainerHandle.
isValid() ) {
376 ATH_MSG_DEBUG(
" No VxContainers retrieved for the trigger element");
380 RoIVxContainer = VertexContainerHandle.
get();
391 StatusCode processStatus = StatusCode::SUCCESS;
399 processStatus =
tool->executeVertexFinder(*p_tau,RoIVxContainer);
401 if ( !processStatus.isFailure() ) {
410 if ( !processStatus.isFailure() ) {
417 if( !processStatus.isFailure() )
ATH_MSG_DEBUG(
"Starting Tool: " <<
tool->name() );
420 processStatus =
tool->executeTrackFinder(*p_tau, *tauTrackHandle);
422 if ( !processStatus.isFailure() ) {
438 if ( !processStatus.isFailure() ) {
449 if( !processStatus.isFailure() )
ATH_MSG_DEBUG(
"Starting Tool: " <<
tool->name() );
452 processStatus =
tool->executeVertexVariables(*p_tau, dummyVxCont);
454 if ( !processStatus.isFailure() ) {
465 if( !processStatus.isFailure() )
ATH_MSG_DEBUG(
"Starting Tool: " <<
tool->name() );
468 processStatus =
tool->execute(*p_tau);
470 if ( !processStatus.isFailure() ) {
482 if ( !processStatus.isSuccess() ) {
483 ATH_MSG_DEBUG(
"The tau object has NOT been registered in the tau container");
495 float fJetEnergy = (*p_tau->
jetLink())->
e();
498 if( fJetEnergy < 0.00001 ) {
499 ATH_MSG_DEBUG(
"Roi: changing eta phi to L1 ones due to energy negative (PxPyPzE flips eta and phi)");
500 ATH_MSG_DEBUG(
"Roi: this is probably not needed anymore, method PxPyPzE has been corrected");
502 p_tau->
setP4(p_tau->
pt(), roiDescriptor->
eta(), roiDescriptor->
phi(), p_tau->
m());
505 <<
" Tau eta: " << p_tau->
eta()
506 <<
" Tau phi: " << p_tau->
phi()
507 <<
" Tau pT : "<< p_tau->
pt());
541 EtaEF = p_tau->
eta();
542 PhiEF = p_tau->
phi();
544 if( Et !=0) EMFrac = EtEm/ Et ;
546 EtaL1 = roiDescriptor->
eta();
547 PhiL1 = roiDescriptor->
phi();
548 dEta = EtaEF - roiDescriptor->
eta();
549 dPhi = PhiEF - roiDescriptor->
phi();
554 float pre_mEflowApprox;
558 float pre_ptRatioEflowApprox;
576 RNN_tracknumber += 1;
577 track_pt_log.push_back(std::log10(
track->pt()));
578 track_dEta.push_back(
track->eta()- p_tau->
eta());
579 track_dPhi.push_back(
track->p4().DeltaPhi(p_tau->
p4()));
580 track_z0sinthetaTJVA_abs_log.push_back(
track->z0sinthetaTJVA());
581 track_d0_abs_log.push_back(std::log10( std::abs(
track->track()->d0()) + 1
e-6));
583 uint8_t inner_pixel_hits, inner_pixel_exp;
587 if (success1_innerPixel_hits && success2_innerPixel_exp) {
nIBLHitsAndExp=inner_pixel_exp ? inner_pixel_hits : 1.;};
590 uint8_t pixel_hits, pixel_dead;
593 float nPixelHitsPlusDeadSensor = -999;
594 if (success1_pixel_hits && success2_pixel_dead) {nPixelHitsPlusDeadSensor=pixel_hits + pixel_dead;};
595 track_nPixelHitsPlusDeadSensors.push_back(nPixelHitsPlusDeadSensor);
605 RNN_clusternumber = p_tau->
clusters().size();
608 for (
auto cluster : p_tau->
clusters()){
612 cluster_et_log.push_back(std::log10(
cls->et()));
613 cluster_dEta.push_back(
cls->eta()- p_tau->
eta());
614 cluster_dPhi.push_back(
cls ->p4().DeltaPhi(p_tau->
p4()));
616 double log_second_R = -999.;
618 if (success_SECOND_R) log_second_R = std::log10(log_second_R + 0.1);
619 cluster_log_SECOND_R.push_back(log_second_R);
621 double second_lambda = -999.;
623 if (success_SECOND_LAMBDA) second_lambda = std::log10(second_lambda + 0.1);
624 cluster_SECOND_LAMBDA.push_back(second_lambda);
626 double center_lambda = -999.;
628 if (success_CENTER_LAMBDA) center_lambda = std::log10(center_lambda + 1
e-6);
629 cluster_CENTER_LAMBDA.push_back(center_lambda);
634 EF_vertex_x = p_tau->
vertex()->
x();
635 EF_vertex_y = p_tau->
vertex()->
y();
636 EF_vertex_z = p_tau->
vertex()->
z();
640 <<
" Tau being saved eta: " << EtaEF <<
" Tau phi: " << PhiEF
641 <<
" wrt L1 dEta "<<
dEta<<
" dPhi "<<
dPhi
642 <<
" Tau Et (GeV): "<< EtFinal);
648 }
else if (p_tau->
nTracks() == 1) {
658 }
else if (p_tau->
nTracks() == 1){
668 float avariable = 0.;
671 if(
test) clustersMeanCenterLambda = avariable;
674 if(
test) clustersMeanFirstEngDens = avariable;
677 if(
test) clustersMeanEMProbability = avariable;
680 if(
test) clustersMeanSecondLambda = avariable;
683 if(
test) clustersMeanPresamplerFrac = avariable;
696 ATH_MSG_DEBUG(
"Recorded a tau container: HLT_TrigTauRecMerged");
697 ATH_MSG_DEBUG(
"the tau object has been registered in the tau container");
699 return StatusCode::SUCCESS;