ATLAS Offline Software
Loading...
Searching...
No Matches
TrackIsolationTool.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef ISOLATIONTOOL_TRACKISOLATIONTOOL_H
6#define ISOLATIONTOOL_TRACKISOLATIONTOOL_H
7
8#include "AsgTools/AsgTool.h"
10#include "AsgTools/ToolHandle.h"
14
15#ifndef XAOD_ANALYSIS
16// #include "GaudiKernel/ToolHandle.h"
18#endif // XAOD_STANDALONE
19
25#include "xAODTracking/Vertex.h"
26
28
29#include <set>
30#include <math.h>
31
32// namespace InDet{
33// class IInDetTrackSelectionTool;
34// }
35
36namespace xAOD {
37
39 virtual public ITrackIsolationTool {
42 public:
43 typedef std::vector< const TrackParticle* > TPVec;
44
45 // struct to cache inputs to simplify interfaces, for internal usage only
47 TrackIsolationInput(const IParticle* particle_,TrackCorrection corrections_,
48 const Vertex* vertex_,
49 const std::set<const TrackParticle*>* exclusionSet_, float maxRadius_=0.4) :
50 particle(particle_),
51 corrections(corrections_),
52 vertex(vertex_),
53 exclusionSet(exclusionSet_),
54 maxRadius(maxRadius_),
55 ptvarconeRadiusSquared(particle->pt() > 0 ? pow( 10000. / particle->pt() , 2 ) : maxRadius_*maxRadius_) // protection should not be needed... but at some point some 0 pt electrons have been seen...
56 {}
57
59 std::vector<float> coneSizesSquared;
61 const Vertex* vertex;
62 const std::set<const TrackParticle*>* exclusionSet;
63 float maxRadius;
65 };
66
67 public:
69 TrackIsolationTool(const std::string& name);
70
72 virtual ~TrackIsolationTool(void);
73
75 virtual StatusCode initialize() override;
76
78 virtual
80 const std::vector<Iso::IsolationType>& cones,
81 TrackCorrection corrections,
82 const Vertex* vertex = 0,
83 const std::set<const TrackParticle*>* exclusionSet = 0,
84 const TrackParticleContainer* indetTrackParticles = 0 ) const override;
85
86
87 private:
89 static constexpr float m_2PI = 2*M_PI;
90
92 inline float phiInRange(float phi) const {
93 while (phi >= M_PI) phi -= m_2PI;
94 while (phi < -M_PI) phi += m_2PI;
95 return phi;
96 }
97
99 bool simpleIsolation( TrackIsolationInput& input, TrackIsolation& result, const TrackParticleContainer* indetTrackParticles = 0 ) const;
100
102 bool binnedIsolation( TrackIsolationInput& input, TrackIsolation& result ) const;
103
105 void add( TrackIsolationInput& input, const TrackParticle& tp2, TrackIsolation& result ) const;
106
108 const IParticle* getReferenceParticle(const IParticle& particle) const;
109
111 static void initresult(TrackIsolation& result, TrackCorrection corrlist, unsigned int typesize) ;
112
113#ifdef XAOD_ANALYSIS // particlesInCone tool will not be avaible. Write our own...
114 bool getparticlesInCone( float eta, float phi, float dr, std::vector< const TrackParticle*>& output ) const;
115#endif // XAOD_STANDALONE
116
119 "TrackParticleLocation", "InDetTrackParticles"};
120
122 Gaudi::Property<bool> m_simpleIsolation{this, "SimpleIsolation", false};
123
124 Gaudi::Property<float> m_overlapCone{this, "OverlapCone", 0.1};
125
126 float m_overlapCone2 = 0.0F;
127
129 Gaudi::Property<float> m_coreTrackEtaRange{this,
130 "CoreTrackEtaRange", 0.0, "The maximum eta range to consider something a core track"};
131
133#ifndef XAOD_ANALYSIS
135 ToolHandle<ITrackParticlesInConeTool> m_tracksInConeTool {this,
136 "TracksInConeTool", "xAOD::TrackParticlesInConeTool/TrackParticlesInConeTool"};
137#endif // XAOD_STANDALONE
139 ToolHandle<InDet::IInDetTrackSelectionTool> m_trkselTool {this,
140 "TrackSelectionTool", "InDet::InDetTrackSelectionTool/TrackSelectionTool"};
141
143 ToolHandle<CP::ITrackVertexAssociationTool> m_ttvaTool{this,
144 "TTVATool", "", "Optional track to vertex association tool to filter tracks"};
145
146 bool m_useTTVATool{false};
147
149 "VertexLocation", "PrimaryVertices"};
150
152 const Vertex* retrieveIDBestPrimaryVertex(const VertexContainer* vtxC) const;
153
154 };
155
156} // end of namespace
157
158#endif
#define M_PI
Scalar eta() const
pseudorapidity method
#define ASG_TOOL_CLASS(CLASSNAME, INT1)
Property holding a SG store/key/clid from which a ReadHandle is made.
constexpr int pow(int base, int exp) noexcept
Property holding a SG store/key/clid from which a ReadHandle is made.
Base class for the dual-use tool implementation classes.
Definition AsgTool.h:47
Class providing the definition of the 4-vector interface.
interface for tools calculating track isolation
SG::ReadHandleKey< VertexContainer > m_vertexLocation
bool binnedIsolation(TrackIsolationInput &input, TrackIsolation &result) const
using TracksInConeTool
void add(TrackIsolationInput &input, const TrackParticle &tp2, TrackIsolation &result) const
add track particle to isolation calculation
virtual ~TrackIsolationTool(void)
destructor
Gaudi::Property< float > m_coreTrackEtaRange
overlap cone size squared
virtual StatusCode initialize() override
initialize
static constexpr float m_2PI
define 2*Pi
ToolHandle< ITrackParticlesInConeTool > m_tracksInConeTool
tracks in cone tool
virtual bool trackIsolation(TrackIsolation &result, const IParticle &tp, const std::vector< Iso::IsolationType > &cones, TrackCorrection corrections, const Vertex *vertex=0, const std::set< const TrackParticle * > *exclusionSet=0, const TrackParticleContainer *indetTrackParticles=0) const override
ITrackIsolationTool interface:
SG::ReadHandleKey< TrackParticleContainer > m_indetTrackParticleLocation
track particle location
bool simpleIsolation(TrackIsolationInput &input, TrackIsolation &result, const TrackParticleContainer *indetTrackParticles=0) const
simple isolation (loop)
bool m_useLooseTrackCore
Whether the loose core track eta range is used.
ToolHandle< CP::ITrackVertexAssociationTool > m_ttvaTool
Select tracks associated to the vertex.
float phiInRange(float phi) const
hepler function to ensure phi is within +-Pi
const IParticle * getReferenceParticle(const IParticle &particle) const
get reference particle
TrackIsolationTool(const std::string &name)
constructor
Gaudi::Property< float > m_overlapCone
static void initresult(TrackIsolation &result, TrackCorrection corrlist, unsigned int typesize)
init result struct
std::vector< const TrackParticle * > TPVec
Create a constructor for Athena.
Gaudi::Property< bool > m_simpleIsolation
flag to select calculation type
bool m_useTTVATool
Use the ttva tool. Set to true if one was provided.
ICaloAffectedTool is abstract interface for tools checking if 4 mom is in calo affected region.
setRcore setEtHad setFside pt
TrackParticle_v1 TrackParticle
Reference the current persistent version:
VertexContainer_v1 VertexContainer
Definition of the current "Vertex container version".
Vertex_v1 Vertex
Define the latest version of the vertex class.
TrackParticleContainer_v1 TrackParticleContainer
Definition of the current "TrackParticle container version".
TrackCorrection corrections
cone sizes squared
TrackIsolationInput(const IParticle *particle_, TrackCorrection corrections_, const Vertex *vertex_, const std::set< const TrackParticle * > *exclusionSet_, float maxRadius_=0.4)
std::vector< float > coneSizesSquared
input IParticle
const std::set< const TrackParticle * > * exclusionSet
vertex
float maxRadius
tracks exclused in isolation