ATLAS Offline Software
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 
36 namespace 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"};
132  bool m_useLooseTrackCore{false};
133 #ifndef XAOD_ANALYSIS
134  ToolHandle<ITrackParticlesInConeTool> m_tracksInConeTool {this,
136  "TracksInConeTool", "xAOD::TrackParticlesInConeTool/TrackParticlesInConeTool"};
137 #endif // XAOD_STANDALONE
138  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"};
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
xAOD::TrackIsolationTool::TrackIsolationInput::particle
const IParticle * particle
Definition: TrackIsolationTool.h:58
xAOD::ITrackIsolationTool
interface for tools calculating track isolation
Definition: ITrackIsolationTool.h:26
xAOD::name
name
Definition: TriggerMenuJson_v1.cxx:29
asg::AsgTool
Base class for the dual-use tool implementation classes.
Definition: AsgTool.h:47
PropertyWrapper.h
xAOD::TrackIsolationTool::binnedIsolation
bool binnedIsolation(TrackIsolationInput &input, TrackIsolation &result) const
using TracksInConeTool
Definition: TrackIsolationTool.cxx:176
xAOD::TrackIsolationTool::retrieveIDBestPrimaryVertex
const Vertex * retrieveIDBestPrimaryVertex(const VertexContainer *vtxC) const
retrieve pvx if not given
Definition: TrackIsolationTool.cxx:72
Trk::ParticleSwitcher::particle
constexpr ParticleHypothesis particle[PARTICLEHYPOTHESES]
the array of masses
Definition: ParticleHypothesis.h:79
get_generator_info.result
result
Definition: get_generator_info.py:21
xAOD::TrackIsolationTool::m_overlapCone
Gaudi::Property< float > m_overlapCone
Definition: TrackIsolationTool.h:124
xAOD::TrackCorrection
Definition: IsolationCommon.h:18
xAOD::TrackIsolationTool::m_vertexLocation
SG::ReadHandleKey< VertexContainer > m_vertexLocation
Definition: TrackIsolationTool.h:148
xAOD::TrackIsolationTool::m_ttvaTool
ToolHandle< CP::ITrackVertexAssociationTool > m_ttvaTool
Select tracks associated to the vertex.
Definition: TrackIsolationTool.h:143
xAOD::TrackIsolationTool::m_useTTVATool
bool m_useTTVATool
Use the ttva tool. Set to true if one was provided.
Definition: TrackIsolationTool.h:146
eta
Scalar eta() const
pseudorapidity method
Definition: AmgMatrixBasePlugin.h:83
IsolationType.h
xAOD::TrackIsolationTool::m_trkselTool
ToolHandle< InDet::IInDetTrackSelectionTool > m_trkselTool
selection of tracks
Definition: TrackIsolationTool.h:139
xAOD::TrackIsolationTool::TrackIsolationInput::exclusionSet
const std::set< const TrackParticle * > * exclusionSet
vertex
Definition: TrackIsolationTool.h:62
M_PI
#define M_PI
Definition: ActiveFraction.h:11
xAOD::TrackIsolationTool::m_tracksInConeTool
ToolHandle< ITrackParticlesInConeTool > m_tracksInConeTool
tracks in cone tool
Definition: TrackIsolationTool.h:135
ParticleTest.tp
tp
Definition: ParticleTest.py:25
xAOD::TrackIsolationTool::TrackIsolationInput::corrections
TrackCorrection corrections
cone sizes squared
Definition: TrackIsolationTool.h:60
xAOD
ICaloAffectedTool is abstract interface for tools checking if 4 mom is in calo affected region.
Definition: ICaloAffectedTool.h:24
python.TurnDataReader.dr
dr
Definition: TurnDataReader.py:111
xAOD::pt
setRcore setEtHad setFside pt
Definition: TrigPhoton_v1.cxx:106
SG::ReadHandleKey
Property holding a SG store/key/clid from which a ReadHandle is made.
Definition: StoreGate/StoreGate/ReadHandleKey.h:39
xAOD::IParticle
Class providing the definition of the 4-vector interface.
Definition: Event/xAOD/xAODBase/xAODBase/IParticle.h:41
xAOD::TrackIsolationTool
Definition: TrackIsolationTool.h:39
xAOD::TrackIsolationTool::TPVec
std::vector< const TrackParticle * > TPVec
Create a constructor for Athena.
Definition: TrackIsolationTool.h:43
xAOD::TrackIsolationTool::TrackIsolationInput::vertex
const Vertex * vertex
corrections
Definition: TrackIsolationTool.h:61
xAOD::phi
setEt phi
Definition: TrigEMCluster_v1.cxx:29
xAOD::TrackIsolationTool::TrackIsolationInput::TrackIsolationInput
TrackIsolationInput(const IParticle *particle_, TrackCorrection corrections_, const Vertex *vertex_, const std::set< const TrackParticle * > *exclusionSet_, float maxRadius_=0.4)
Definition: TrackIsolationTool.h:47
xAOD::TrackIsolationTool::trackIsolation
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:
Definition: TrackIsolationTool.cxx:104
xAOD::TrackIsolationTool::getReferenceParticle
const IParticle * getReferenceParticle(const IParticle &particle) const
get reference particle
Definition: TrackIsolationTool.cxx:88
xAOD::TrackIsolationTool::m_indetTrackParticleLocation
SG::ReadHandleKey< TrackParticleContainer > m_indetTrackParticleLocation
track particle location
Definition: TrackIsolationTool.h:118
xAOD::TrackIsolationTool::m_2PI
static constexpr float m_2PI
define 2*Pi
Definition: TrackIsolationTool.h:89
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ReadHandleKey.h
Property holding a SG store/key/clid from which a ReadHandle is made.
ITrackParticlesInConeTool.h
IsolationCommon.h
xAOD::TrackIsolationTool::TrackIsolationTool
TrackIsolationTool(const std::string &name)
constructor
Definition: TrackIsolationTool.cxx:27
xAOD::TrackIsolationTool::initialize
virtual StatusCode initialize() override
initialize
Definition: TrackIsolationTool.cxx:40
ITrackVertexAssociationTool.h
DataVector
Derived DataVector<T>.
Definition: DataVector.h:794
Vertex.h
xAOD::TrackIsolationTool::TrackIsolationInput::coneSizesSquared
std::vector< float > coneSizesSquared
input IParticle
Definition: TrackIsolationTool.h:59
IInDetTrackSelectionTool.h
xAOD::TrackIsolationTool::phiInRange
float phiInRange(float phi) const
hepler function to ensure phi is within +-Pi
Definition: TrackIsolationTool.h:92
xAOD::TrackIsolation
Definition: IsolationCommon.h:33
xAOD::TrackIsolationTool::add
void add(TrackIsolationInput &input, const TrackParticle &tp2, TrackIsolation &result) const
add track particle to isolation calculation
Definition: TrackIsolationTool.cxx:235
xAOD::TrackIsolationTool::m_coreTrackEtaRange
Gaudi::Property< float > m_coreTrackEtaRange
overlap cone size squared
Definition: TrackIsolationTool.h:129
xAOD::TrackIsolationTool::TrackIsolationInput::maxRadius
float maxRadius
tracks exclused in isolation
Definition: TrackIsolationTool.h:63
TrackParticle.h
Trk::vertex
@ vertex
Definition: MeasurementType.h:21
ITrackIsolationTool.h
VertexContainer.h
xAOD::Vertex_v1
Class describing a Vertex.
Definition: Vertex_v1.h:42
xAOD::TrackIsolationTool::initresult
static void initresult(TrackIsolation &result, TrackCorrection corrlist, unsigned int typesize)
init result struct
Definition: TrackIsolationTool.cxx:283
ASG_TOOL_CLASS
#define ASG_TOOL_CLASS(CLASSNAME, INT1)
Definition: AsgToolMacros.h:68
xAOD::TrackIsolationTool::simpleIsolation
bool simpleIsolation(TrackIsolationInput &input, TrackIsolation &result, const TrackParticleContainer *indetTrackParticles=0) const
simple isolation (loop)
Definition: TrackIsolationTool.cxx:203
xAOD::TrackIsolationTool::m_overlapCone2
float m_overlapCone2
Definition: TrackIsolationTool.h:126
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
xAOD::TrackIsolationTool::TrackIsolationInput
Definition: TrackIsolationTool.h:46
ToolHandle.h
xAOD::TrackIsolationTool::m_simpleIsolation
Gaudi::Property< bool > m_simpleIsolation
flag to select calculation type
Definition: TrackIsolationTool.h:122
AsgTool.h
xAOD::TrackIsolationTool::TrackIsolationInput::ptvarconeRadiusSquared
float ptvarconeRadiusSquared
maximum cone size
Definition: TrackIsolationTool.h:64
pow
constexpr int pow(int base, int exp) noexcept
Definition: ap_fixedTest.cxx:15
xAOD::TrackIsolationTool::m_useLooseTrackCore
bool m_useLooseTrackCore
Whether the loose core track eta range is used.
Definition: TrackIsolationTool.h:132
TrackParticleContainer.h
xAOD::TrackIsolationTool::~TrackIsolationTool
virtual ~TrackIsolationTool(void)
destructor