ATLAS Offline Software
Loading...
Searching...
No Matches
TauCommonCalcVars.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3*/
4
5//-----------------------------------------------------------------------------
6// file: TauCommonCalcVars.cxx
7// package: Reconstruction/tauRec
8// authors: Stan Lai
9// date: 2008-05-18
10//
11// This class calculates tau variables after core seed reconstruction
12//-----------------------------------------------------------------------------
14#include <vector>
15
16//-----------------------------------------------------------------------------
17// Constructor
18//-----------------------------------------------------------------------------
19
20TauCommonCalcVars::TauCommonCalcVars(const std::string &name) :
21 TauRecToolBase(name) {
22}
23
24//-----------------------------------------------------------------------------
25// Destructor
26//-----------------------------------------------------------------------------
27
30
31//-----------------------------------------------------------------------------
32// Execution
33//-----------------------------------------------------------------------------
35 const EventContext& /*ctx*/) const {
36
38 // Calculate variables that are always valid
40
41 //init some vars
43
44 // Leading track pT and et/pt(lead track)
45 if (pTau.nTracks() > 0) {
46 pTau.setDetail( xAOD::TauJetParameters::leadTrkPt, static_cast<float>( pTau.track(0)->pt() ) );
47
48 float emscale_ptEM = 0.;
49 float emscale_ptHad = 0.;
50
51 if ( !pTau.detail( xAOD::TauJetParameters::etEMAtEMScale, emscale_ptEM ) ||
52 !pTau.detail( xAOD::TauJetParameters::etHadAtEMScale, emscale_ptHad ) )
53 {
54 ATH_MSG_DEBUG("retrieval of tau detail failed. Will set etOverPtLeadTrk to 0");
56 }
57 else {
58 pTau.setDetail( xAOD::TauJetParameters::etOverPtLeadTrk, static_cast<float>( (emscale_ptEM + emscale_ptHad) / pTau.track(0)->pt() ) );
59 }
60 }
61
62 std::vector<const xAOD::TauTrack*> tauTracks = pTau.tracks(xAOD::TauJetParameters::TauTrackFlag::classifiedCharged);
63 for( const xAOD::TauTrack* trk : pTau.tracks((xAOD::TauJetParameters::TauTrackFlag) m_isolationTrackType.value()) ) tauTracks.push_back(trk);
64 if (!tauTracks.empty()) {
65
66 TLorentzVector sumOfTrackVector;
67 double ptSum = 0;
68 double innerPtSum = 0;
69 double sumWeightedDR_tautrack = 0;
70 double innerSumWeightedDR = 0;
71
72 for (const xAOD::TauTrack* tauTrk : tauTracks){
73 sumOfTrackVector += tauTrk->p4();
74
75 double deltaR_tautrack = 0;
76 if( inTrigger() || m_doRun4){
77 deltaR_tautrack = pTau.p4().DeltaR(tauTrk->p4());
78 } else {
79 deltaR_tautrack = pTau.p4(xAOD::TauJetParameters::IntermediateAxis).DeltaR(tauTrk->p4());
80 }
81
82 ptSum += tauTrk->pt();
83 sumWeightedDR_tautrack += deltaR_tautrack * tauTrk->pt();
84
85 //add calculation of innerTrkAvgDist
87 innerPtSum += tauTrk->pt();
88 innerSumWeightedDR += deltaR_tautrack * tauTrk->pt();
89 }
90 }
91 // invariant mass of track system
92 pTau.setDetail( xAOD::TauJetParameters::massTrkSys, static_cast<float>( sumOfTrackVector.M() ) );
93
94 if (ptSum > 0.) {
95 // seedCalo_trkAvgDist
96 pTau.setDetail( xAOD::TauJetParameters::trkAvgDist, static_cast<float>( sumWeightedDR_tautrack / ptSum ) );
97
98 // SumPtTrkFrac
99 pTau.setDetail( xAOD::TauJetParameters::SumPtTrkFrac, static_cast<float>( 1. - innerPtSum/ptSum ) );
100 }
101 else {
104 }
105
106 if (innerPtSum > 0.) {
107 // InnerTrkAvgDist
108 pTau.setDetail( xAOD::TauJetParameters::innerTrkAvgDist, static_cast<float>( innerSumWeightedDR / innerPtSum ) );
109 }
110 else {
112 }
113 }
114
115 return StatusCode::SUCCESS;
116}
#define ATH_MSG_DEBUG(x,...)
Gaudi::Property< int > m_isolationTrackType
Gaudi::Property< bool > m_doRun4
virtual StatusCode executeTool(xAOD::TauJet &pTau, const EventContext &ctx) const override
Execute - called for each tau candidate.
TauCommonCalcVars(const std::string &name="TauCommonCalcVars")
TauRecToolBase(const std::string &name)
bool inTrigger() const
virtual FourMom_t p4() const
The full 4-momentum of the particle.
Definition TauJet_v3.cxx:96
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...
void setDetail(TauJetParameters::Detail detail, int value)
size_t nTracks(TauJetParameters::TauTrackFlag flag=TauJetParameters::TauTrackFlag::classifiedCharged) const
std::vector< const TauTrack * > tracks(TauJetParameters::TauTrackFlag flag=TauJetParameters::TauTrackFlag::classifiedCharged) const
Get the v<const pointer> to a given tauTrack collection associated with this tau.
virtual double pt() const
The transverse momentum ( ) of the particle.
TauTrackFlag
Enum for tau track flags.
Definition TauDefs.h:400
@ etHadAtEMScale
Get Hadronic energy at EM scale.
Definition TauDefs.h:196
@ trkAvgDist
Get calibrated EM transverse energy (DEPRECATED since r19).
Definition TauDefs.h:214
@ etEMAtEMScale
Get EM energy at EM scale.
Definition TauDefs.h:194
TauTrack_v1 TauTrack
Definition of the current version.
Definition TauTrack.h:16
TauJet_v3 TauJet
Definition of the current "tau version".
Definition TauJet.h:17