28 const EventContext& )
const {
31 acc_absipSigLeadTrk(tau) = (tau.nTracks()>0) ? std::abs(tau.track(0)->d0SigTJVA()) : 0.;
33 if(
inTrigger())
return StatusCode::SUCCESS;
40 static const SG::Accessor<float> acc_etHotShotWinOverPtLeadTrk(
"etHotShotWinOverPtLeadTrk");
46 std::vector<CaloSampling::CaloSample> EMSamps = {
47 CaloSampling::PreSamplerB, CaloSampling::PreSamplerE,
48 CaloSampling::EMB1, CaloSampling::EME1,
49 CaloSampling::EMB2, CaloSampling::EME2 };
51 std::vector<CaloSampling::CaloSample> HadSamps = {
52 CaloSampling::HEC0, CaloSampling::HEC1, CaloSampling::HEC2, CaloSampling::HEC3,
53 CaloSampling::TileBar0, CaloSampling::TileBar1, CaloSampling::TileBar2,
54 CaloSampling::TileGap1, CaloSampling::TileGap2, CaloSampling::TileGap3,
55 CaloSampling::TileExt0, CaloSampling::TileExt1, CaloSampling::TileExt2};
57 std::vector<CaloSampling::CaloSample> Had1Samps = {
58 CaloSampling::HEC0, CaloSampling::TileBar0, CaloSampling::TileGap1, CaloSampling::TileExt0};
60 float eEMAtEMScaleFixed = 0.;
61 float eHadAtEMScaleFixed = 0.;
62 float eHad1AtEMScaleFixed = 0.;
66 std::vector<xAOD::CaloVertexedTopoCluster> vertexedClusterList = tau.vertexedClusters();
68 TLorentzVector clusterP4 = vertexedCluster.p4();
70 if( clusterP4.DeltaR(tau_mom) > 0.2 )
continue;
73 for(
auto samp : EMSamps )
74 eEMAtEMScaleFixed += cluster.
eSample(samp);
75 for(
auto samp : HadSamps )
76 eHadAtEMScaleFixed += cluster.
eSample(samp);
77 for(
auto samp : Had1Samps )
78 eHad1AtEMScaleFixed += cluster.
eSample(samp);
80 acc_EMFracFixed(tau) = ( eEMAtEMScaleFixed + eHadAtEMScaleFixed ) != 0. ?
81 eEMAtEMScaleFixed / ( eEMAtEMScaleFixed + eHadAtEMScaleFixed ) :
LOW_NUMBER;
83 if(tau.nTracks() > 0){
85 acc_absEtaLead(tau) = std::abs( track->eta() );
88 acc_hadLeakFracFixed(tau) = (track->p4().
P() != 0.) ? eHad1AtEMScaleFixed / track->p4().P() :
LOW_NUMBER;
94 float etaCalo = -10.0;
95 float phiCalo = -10.0;
100 ATH_MSG_DEBUG(
"track EM " <<
", eta: " << etaCalo <<
", phi: " << phiCalo );
103 float etHotShotWin = 0.;
104 for(
const auto& shotLink : tau.shotPFOLinks() ){
105 if( not shotLink.isValid() ){
116 if(std::abs(shot->
eta() - etaCalo) > 0.012 )
continue;
118 if(etShot > etHotShotWin) etHotShotWin = etShot;
120 acc_etHotShotWin(tau) = etHotShotWin;
121 acc_etHotShotWinOverPtLeadTrk(tau) = (track->pt() != 0.) ? etHotShotWin / track->pt() :
LOW_NUMBER;
128 acc_etHotShotWinOverPtLeadTrk(tau) =
LOW_NUMBER;
131 return StatusCode::SUCCESS;