 |
ATLAS Offline Software
|
Go to the documentation of this file.
14 #include "CaloGeoHelpers/CaloSampling.h"
17 #include "TLorentzVector.h"
31 if(
inTrigger())
return StatusCode::SUCCESS;
41 static const SG::Accessor<float> acc_etHotShotWinOverPtLeadTrk(
"etHotShotWinOverPtLeadTrk");
47 std::vector<CaloSampling::CaloSample> EMSamps = {
52 std::vector<CaloSampling::CaloSample> HadSamps = {
58 std::vector<CaloSampling::CaloSample> Had1Samps = {
61 float eEMAtEMScaleFixed = 0.;
62 float eHadAtEMScaleFixed = 0.;
63 float eHad1AtEMScaleFixed = 0.;
67 std::vector<xAOD::CaloVertexedTopoCluster> vertexedClusterList = tau.
vertexedClusters();
69 TLorentzVector clusterP4 = vertexedCluster.p4();
71 if( clusterP4.DeltaR(tauAxis) > 0.2 )
continue;
74 for(
auto samp : EMSamps )
75 eEMAtEMScaleFixed += cluster.
eSample(samp);
76 for(
auto samp : HadSamps )
77 eHadAtEMScaleFixed += cluster.
eSample(samp);
78 for(
auto samp : Had1Samps )
79 eHad1AtEMScaleFixed += cluster.
eSample(samp);
81 acc_EMFracFixed(tau) = ( eEMAtEMScaleFixed + eHadAtEMScaleFixed ) != 0. ?
82 eEMAtEMScaleFixed / ( eEMAtEMScaleFixed + eHadAtEMScaleFixed ) :
LOW_NUMBER;
86 acc_absEtaLead(tau) = std::abs(
track->eta() );
89 acc_hadLeakFracFixed(tau) = (
track->p4().P() != 0.) ? eHad1AtEMScaleFixed /
track->p4().P() :
LOW_NUMBER;
95 float etaCalo = -10.0;
96 float phiCalo = -10.0;
101 ATH_MSG_DEBUG(
"track EM " <<
", eta: " << etaCalo <<
", phi: " << phiCalo );
104 float etHotShotWin = 0.;
106 if( not shotLink.isValid() ){
115 if(std::abs(shot->
eta() - etaCalo) > 0.012 )
continue;
117 if(etShot > etHotShotWin) etHotShotWin = etShot;
119 acc_etHotShotWin(tau) = etHotShotWin;
120 acc_etHotShotWinOverPtLeadTrk(tau) = (
track->pt() != 0.) ? etHotShotWin /
track->pt() :
LOW_NUMBER;
127 acc_etHotShotWinOverPtLeadTrk(tau) =
LOW_NUMBER;
130 return StatusCode::SUCCESS;
virtual StatusCode execute(xAOD::TauJet &) const override
Execute - called for each tau candidate.
bool attribute(PFODetails::PFOAttributes AttributeType, T &anAttribute) const
get a PFO Variable via enum
virtual double eta() const
The pseudorapidity ( ) of the particle.
size_t nTracks(TauJetParameters::TauTrackFlag flag=TauJetParameters::TauTrackFlag::classifiedCharged) const
double deltaPhi(double phiA, double phiB)
delta Phi in range [-pi,pi[
TauIDVarCalculator(const std::string &name="TauIDVarCalculator")
bool detail(TauJetParameters::TrackDetail detail, float &value) const
Description of a calorimeter cluster.
const PFOLinks_t & shotPFOLinks() const
::StatusCode StatusCode
StatusCode definition for legacy code.
Gaudi::Property< bool > m_doVertexCorrection
Class describing a tau jet.
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...
virtual double phi() const
The azimuthal angle ( ) of the particle.
Class describing a particle flow object.
std::vector< xAOD::CaloVertexedTopoCluster > vertexedClusters() const
static const float LOW_NUMBER
Tau ID input variable calculator tool.
float eSample(const CaloSample sampling) const
#define ATH_MSG_WARNING(x)
const TrackParticle * track() const
Class describing a TrackParticle.
Evaluate cluster kinematics with a different vertex / signal state.