ATLAS Offline Software
Loading...
Searching...
No Matches
TauxAODHelpers.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3*/
4
6
8
9// ==================================================================
11{
12 return getLink<xAOD::TruthParticle>(particle, "truthParticleLink", debug);
13}
14
15// ==================================================================
16std::vector< ElementLink< xAOD::TrackParticleContainer > > xAOD::TauHelpers::trackParticleLinks(const xAOD::TauJet* tau, xAOD::TauJetParameters::TauTrackFlag flag/*=xAOD::TauJetParameters::TauTrackFlag::classifiedCharged*/){
18 return trackParticleLinksWithMask(tau, mask);
19}
20
21// ==================================================================
22std::vector< ElementLink< xAOD::TrackParticleContainer > > xAOD::TauHelpers::trackParticleLinksWithMask(const xAOD::TauJet* tau, xAOD::TauTrack::TrackFlagType mask){
23 std::vector< ElementLink< xAOD::TrackParticleContainer > > links;
24 std::vector< const xAOD::TauTrack* > allTracks = tau->allTracks();
25 for ( const xAOD::TauTrack* trk : allTracks ){
26 if(trk->trackLinks().empty()) continue;
27 if(trk->flagWithMask(mask))
28 links.push_back(trk->trackLinks()[0]);
29 }
30 return links;
31}
32
33// ==================================================================
35 std::vector<xAOD::TauTrack*> v;
37 if(link.isValid() && (*link)->flagWithMask(mask) && dynamic_cast<const xAOD::TauTrackContainer*> (link.getStorableObjectPointer()) == trackCont) v.push_back( trackCont->at(link.index()));
38 }
39 return v;
40}
41
42// ==================================================================
43std::vector<xAOD::TauTrack*> xAOD::TauHelpers::allTauTracksNonConst( const xAOD::TauJet* tau, xAOD::TauTrackContainer* trackCont ){
45 return tauTracksNonConstWithMask(tau, trackCont, mask);
46}
47
48
49
50std::vector<const xAOD::IParticle*>
51xAOD::TauHelpers::clusters(const xAOD::TauJet& tau, double dRMax) {
52 auto vertexedClusterList = xAOD::TauHelpers::vertexedClusters(tau, dRMax);
53
54 std::vector<const xAOD::IParticle*> clusterList;
55 for (const auto& vertexedCluster : vertexedClusterList) {
56 const xAOD::CaloCluster& cluster = vertexedCluster.clust();
57 clusterList.push_back(&cluster);
58 }
59
60 return clusterList;
61}
62
63
64
65std::vector<xAOD::CaloVertexedTopoCluster>
67 TLorentzVector tauAxis;
68 if (tau.vertexLink().isValid()) {
70 }
71 else {
73 }
74
75 auto vertexedClusterList = tau.vertexedClusters();
76
77 std::vector<xAOD::CaloVertexedTopoCluster> selectedList;
78 for (const auto& vertexedCluster : vertexedClusterList) {
79 TLorentzVector clusterP4 = vertexedCluster.p4();
80
81 double dR = clusterP4.DeltaR(tauAxis);
82 if (dR > dRMax) continue;
83
84 selectedList.push_back(vertexedCluster);
85 }
86
87 return selectedList;
88}
const bool debug
ElementLink< xAOD::TruthParticleContainer > TruthLink_t
const T * at(size_type n) const
Access an element, as an rvalue.
Class providing the definition of the 4-vector interface.
std::vector< xAOD::CaloVertexedTopoCluster > vertexedClusters() const
virtual FourMom_t p4() const
The full 4-momentum of the particle.
Definition TauJet_v3.cxx:96
const VertexLink_t & vertexLink() const
std::vector< const TauTrack * > allTracks() const
Get the v<const pointer> to all tracks associated with this tau, regardless of classification.
const TauTrackLinks_t & allTauTrackLinks() const
uint16_t TrackFlagType
Definition TauTrack_v1.h:61
std::vector< const xAOD::IParticle * > clusters(const xAOD::TauJet &tau, double dRMax)
std::vector< ElementLink< xAOD::TrackParticleContainer > > trackParticleLinks(const xAOD::TauJet *tau, xAOD::TauJetParameters::TauTrackFlag flag=xAOD::TauJetParameters::TauTrackFlag::classifiedCharged)
const xAOD::TruthParticle * getTruthParticle(const xAOD::IParticle *, bool debug=false)
return the truthParticle associated to the given IParticle (if any)
std::vector< xAOD::TauTrack * > tauTracksNonConstWithMask(const xAOD::TauJet *tau, xAOD::TauTrackContainer *trackCont, xAOD::TauTrack::TrackFlagType mask)
std::vector< xAOD::CaloVertexedTopoCluster > vertexedClusters(const xAOD::TauJet &tau, double dRMax)
std::vector< xAOD::TauTrack * > allTauTracksNonConst(const xAOD::TauJet *tau, xAOD::TauTrackContainer *trackCont)
std::vector< ElementLink< xAOD::TrackParticleContainer > > trackParticleLinksWithMask(const xAOD::TauJet *tau, xAOD::TauTrack::TrackFlagType mask)
const T * getLink(const xAOD::IParticle *, const std::string &, bool debug=false)
TauTrackFlag
Enum for tau track flags.
Definition TauDefs.h:400
CaloCluster_v1 CaloCluster
Define the latest version of the calorimeter cluster class.
TauTrack_v1 TauTrack
Definition of the current version.
Definition TauTrack.h:16
TauJet_v3 TauJet
Definition of the current "tau version".
TruthParticle_v1 TruthParticle
Typedef to implementation.
TauTrackContainer_v1 TauTrackContainer
Definition of the current TauTrack container version.