ATLAS Offline Software
TauTrackFinder.h
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2022 CERN for the benefit of the ATLAS collaboration
3 */
4 
5 #ifndef XAOD_ANALYSIS
6 #ifndef TAURECTOOLS_TAUTRACKFINDER_H
7 #define TAURECTOOLS_TAUTRACKFINDER_H
8 
10 #include "GaudiKernel/ToolHandle.h"
14 
15 #include "xAODTracking/Vertex.h"
17 #include "xAODJet/JetContainer.h"
18 
24 
25 #include <vector>
26 
28 
40 public:
41  //-------------------------------------------------------------
43  //-------------------------------------------------------------
44  TauTrackFinder(const std::string& name);
47 
48  //-------------------------------------------------------------
50  //-------------------------------------------------------------
52  {
56  NotTauTrack = 3
57  };
58 
59  //-------------------------------------------------------------
61  //-------------------------------------------------------------
62  virtual StatusCode initialize() override;
63  virtual StatusCode executeTrackFinder(xAOD::TauJet& pTau, xAOD::TauTrackContainer& tauTrackCon) const override;
64 
65 private:
66  //-------------------------------------------------------------
68  //-------------------------------------------------------------
70  xAOD::TauTrackContainer& tauTrackCon) const;
71 
72  TauTrackType tauTrackType( const xAOD::TauJet& tauJet,
73  const xAOD::TrackParticle& trackParticle,
74  const xAOD::Vertex* primaryVertex) const;
75 
76  void getTauTracksFromPV( const xAOD::TauJet& tauJet,
77  const std::vector<const xAOD::TrackParticle*>& vecTrackParticles,
78  const xAOD::Vertex* primaryVertex,
79  const bool& useGhostTracks,
81  std::vector<const xAOD::TrackParticle*> &tauTracks,
82  std::vector<const xAOD::TrackParticle*> &wideTracks,
83  std::vector<const xAOD::TrackParticle*> &otherTracks) const;
84 
85  // new xAOD version
86  void removeOffsideTracksWrtLeadTrk(std::vector<const xAOD::TrackParticle*> &tauTracks,
87  std::vector<const xAOD::TrackParticle*> &wideTracks,
88  std::vector<const xAOD::TrackParticle*> &otherTracks,
89  const xAOD::Vertex* tauOrigin,
90  double maxDeltaZ0) const;
91 
92  //-------------------------------------------------------------
94  //-------------------------------------------------------------
95  float getZ0(const xAOD::TrackParticle* track, const xAOD::Vertex* vertex) const; //xAOD version
96  bool isLargeD0Track(const xAOD::TrackParticle* track) const;
97 
98  //-------------------------------------------------------------
100  //-------------------------------------------------------------
101  ToolHandle<Trk::IParticleCaloExtensionTool> m_caloExtensionTool {this, "ParticleCaloExtensionTool", "Trk::ParticleCaloExtensionTool/ParticleCaloExtensionTool", "Tool for the extrapolation of charged tracks"};
102  ToolHandle<Trk::ITrackSelectorTool> m_trackSelectorTool_tau {this, "TrackSelectorToolTau", "", "Tool for track selection"};
103  ToolHandle<Reco::ITrackToVertex> m_trackToVertexTool {this, "TrackToVertexTool", "Reco::TrackToVertex"};
104  ToolHandle<Trk::ITrackToVertexIPEstimator> m_trackToVertexIPEstimator {this, "TrackToVertexIPEstimator", ""};
105 
106  Gaudi::Property<double> m_maxJetDr_tau {this, "MaxJetDrTau", 0.2};
107  Gaudi::Property<double> m_maxJetDr_wide {this, "MaxJetDrWide", 0.4};
108  Gaudi::Property<bool> m_applyZ0cut {this, "removeTracksOutsideZ0wrtLeadTrk", false};
109  Gaudi::Property<float> m_z0maxDelta {this, "maxDeltaZ0wrtLeadTrk", 1000.};
110  Gaudi::Property<bool> m_storeInOtherTrks {this, "StoreRemovedCoreWideTracksInOtherTracks", true};
111  Gaudi::Property<bool> m_removeDuplicateCoreTracks {this, "removeDuplicateCoreTracks", true};
112  Gaudi::Property<bool> m_bypassSelector {this, "BypassSelector", false};
113  Gaudi::Property<bool> m_bypassExtrapolator {this, "BypassExtrapolator", false};
114  Gaudi::Property<bool> m_useGhostTracks {this, "useGhostTracks", false};
115  Gaudi::Property<double> m_ghostTrackDR {this, "ghostTrackDR", 0.25};
116 
117  SG::ReadHandleKey<xAOD::TrackParticleContainer> m_trackPartInputContainer {this,"Key_trackPartInputContainer", "InDetTrackParticles", "input track particle container key"};
118  SG::ReadHandleKey<xAOD::TrackParticleContainer> m_largeD0TracksInputContainer {this,"Key_LargeD0TrackInputContainer", "", "input LRT particle container key"}; //Expecting InDetLargeD0TrackParticles (offline tracks) if using LRT used
119  SG::ReadHandleKey<xAOD::JetContainer> m_jetContainer {this,"Key_jetContainer", "", "Name of the seed jet container, when using ghost matching"};
120  SG::ReadHandleKey<CaloExtensionCollection> m_ParticleCacheKey {this,"tauParticleCache", "ParticleCaloExtension", "Name of the particle measurement extrapolation cache for TauTrackFinder"};
121 
122  SG::ReadCondHandleKey<InDet::BeamSpotData> m_beamSpotKey { this, "BeamSpotKey", "BeamSpotData", "SG key for beam spot" };
123 
124  std::set<CaloSampling::CaloSample> m_EMSamplings;
125  std::set<CaloSampling::CaloSample> m_HadSamplings;
126 };
127 
128 #endif // TAURECTOOLS_TAUTRACKFINDER_H
129 #endif // XAOD_ANALYSIS
ReadHandleKey.h
Property holding a SG store/key/clid from which a ReadHandle is made.
TauTrackFinder::extrapolateToCaloSurface
StatusCode extrapolateToCaloSurface(xAOD::TauJet &pTau, xAOD::TauTrackContainer &tauTrackCon) const
Extrapolate track eta and phi to the calorimeter middle surface.
Definition: TauTrackFinder.cxx:443
TauTrackFinder::TauTrackType
TauTrackType
Enumerator defining type of tau track.
Definition: TauTrackFinder.h:52
TauTrackFinder::m_trackPartInputContainer
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_trackPartInputContainer
Definition: TauTrackFinder.h:117
TauTrackFinder::ASG_TOOL_CLASS2
ASG_TOOL_CLASS2(TauTrackFinder, TauRecToolBase, ITauToolBase)
TauTrackFinder::m_largeD0TracksInputContainer
SG::ReadHandleKey< xAOD::TrackParticleContainer > m_largeD0TracksInputContainer
Definition: TauTrackFinder.h:118
TauRecToolBase.h
TauRecToolBase
The base class for all tau tools.
Definition: TauRecToolBase.h:21
TauTrackFinder::removeOffsideTracksWrtLeadTrk
void removeOffsideTracksWrtLeadTrk(std::vector< const xAOD::TrackParticle * > &tauTracks, std::vector< const xAOD::TrackParticle * > &wideTracks, std::vector< const xAOD::TrackParticle * > &otherTracks, const xAOD::Vertex *tauOrigin, double maxDeltaZ0) const
Definition: TauTrackFinder.cxx:560
TauTrackFinder::NotTauTrack
@ NotTauTrack
Definition: TauTrackFinder.h:56
TauTrackFinder::m_ghostTrackDR
Gaudi::Property< double > m_ghostTrackDR
Definition: TauTrackFinder.h:115
SG::ReadHandleKey< xAOD::TrackParticleContainer >
TauTrackFinder::getZ0
float getZ0(const xAOD::TrackParticle *track, const xAOD::Vertex *vertex) const
Some internally used functions.
Definition: TauTrackFinder.cxx:618
TauTrackFinder::m_z0maxDelta
Gaudi::Property< float > m_z0maxDelta
Definition: TauTrackFinder.h:109
TauTrackFinder::m_bypassExtrapolator
Gaudi::Property< bool > m_bypassExtrapolator
Definition: TauTrackFinder.h:113
TauTrackFinder::m_bypassSelector
Gaudi::Property< bool > m_bypassSelector
Definition: TauTrackFinder.h:112
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
xAOD::TauJet_v3
Class describing a tau jet.
Definition: TauJet_v3.h:41
TauTrackFinder::m_applyZ0cut
Gaudi::Property< bool > m_applyZ0cut
Definition: TauTrackFinder.h:108
TauTrackFinder::TauTrackFinder
TauTrackFinder(const std::string &name)
Constructor and Destructor.
Definition: TauTrackFinder.cxx:16
TauTrackFinder::m_storeInOtherTrks
Gaudi::Property< bool > m_storeInOtherTrks
Definition: TauTrackFinder.h:110
DataVector
Derived DataVector<T>.
Definition: DataVector.h:581
Vertex.h
IInDetTrackSelectionTool.h
TauTrackFinder::m_maxJetDr_tau
Gaudi::Property< double > m_maxJetDr_tau
Definition: TauTrackFinder.h:106
JetAnalysisAlgorithmsTest_EMTopo_eljob.jetContainer
string jetContainer
Definition: JetAnalysisAlgorithmsTest_EMTopo_eljob.py:36
ITrackToVertex.h
TauTrackFinder::m_caloExtensionTool
ToolHandle< Trk::IParticleCaloExtensionTool > m_caloExtensionTool
tools
Definition: TauTrackFinder.h:101
TauTrackFinder::tauTrackType
TauTrackType tauTrackType(const xAOD::TauJet &tauJet, const xAOD::TrackParticle &trackParticle, const xAOD::Vertex *primaryVertex) const
Definition: TauTrackFinder.cxx:348
TauTrackFinder::m_jetContainer
SG::ReadHandleKey< xAOD::JetContainer > m_jetContainer
Definition: TauTrackFinder.h:119
TauTrackFinder::TauTrackCore
@ TauTrackCore
Definition: TauTrackFinder.h:53
TauTrackFinder::m_trackSelectorTool_tau
ToolHandle< Trk::ITrackSelectorTool > m_trackSelectorTool_tau
Definition: TauTrackFinder.h:102
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
TauTrackFinder::m_trackToVertexIPEstimator
ToolHandle< Trk::ITrackToVertexIPEstimator > m_trackToVertexIPEstimator
Definition: TauTrackFinder.h:104
TauTrackFinder::isLargeD0Track
bool isLargeD0Track(const xAOD::TrackParticle *track) const
Definition: TauTrackFinder.cxx:638
TauTrackFinder::TauTrackOther
@ TauTrackOther
Definition: TauTrackFinder.h:55
ITauToolBase
The base class for all tau tools.
Definition: ITauToolBase.h:30
TauTrackFinder::m_useGhostTracks
Gaudi::Property< bool > m_useGhostTracks
Definition: TauTrackFinder.h:114
TauTrackFinder
Associate tracks to the tau candidate.
Definition: TauTrackFinder.h:39
CaloExtensionCollection.h
SG::ReadCondHandleKey< InDet::BeamSpotData >
IParticleCaloExtensionTool.h
Trk::vertex
@ vertex
Definition: MeasurementType.h:21
TauTrackFinder::initialize
virtual StatusCode initialize() override
Algorithm functions.
Definition: TauTrackFinder.cxx:27
TauTrackFinder::TauTrackWide
@ TauTrackWide
Definition: TauTrackFinder.h:54
xAOD::Vertex_v1
Class describing a Vertex.
Definition: Vertex_v1.h:42
JetContainer.h
TauTrackFinder::m_maxJetDr_wide
Gaudi::Property< double > m_maxJetDr_wide
Definition: TauTrackFinder.h:107
TauTrackFinder::executeTrackFinder
virtual StatusCode executeTrackFinder(xAOD::TauJet &pTau, xAOD::TauTrackContainer &tauTrackCon) const override
Definition: TauTrackFinder.cxx:58
ITrackToVertexIPEstimator.h
TauTrackFinder::getTauTracksFromPV
void getTauTracksFromPV(const xAOD::TauJet &tauJet, const std::vector< const xAOD::TrackParticle * > &vecTrackParticles, const xAOD::Vertex *primaryVertex, const bool &useGhostTracks, const xAOD::JetContainer *jetContainer, std::vector< const xAOD::TrackParticle * > &tauTracks, std::vector< const xAOD::TrackParticle * > &wideTracks, std::vector< const xAOD::TrackParticle * > &otherTracks) const
Definition: TauTrackFinder.cxx:370
BeamSpotData.h
TauTrackFinder::m_trackToVertexTool
ToolHandle< Reco::ITrackToVertex > m_trackToVertexTool
Definition: TauTrackFinder.h:103
TauTrackFinder::~TauTrackFinder
~TauTrackFinder()
Definition: TauTrackFinder.cxx:23
xAOD::track
@ track
Definition: TrackingPrimitives.h:512
xAOD::TrackParticle_v1
Class describing a TrackParticle.
Definition: TrackParticle_v1.h:43
ITrackSelectorTool.h
TauTrackFinder::m_beamSpotKey
SG::ReadCondHandleKey< InDet::BeamSpotData > m_beamSpotKey
Definition: TauTrackFinder.h:122
TauTrackFinder::m_EMSamplings
std::set< CaloSampling::CaloSample > m_EMSamplings
Definition: TauTrackFinder.h:124
TrackParticleContainer.h
TauTrackFinder::m_HadSamplings
std::set< CaloSampling::CaloSample > m_HadSamplings
Definition: TauTrackFinder.h:125
TauTrackFinder::m_removeDuplicateCoreTracks
Gaudi::Property< bool > m_removeDuplicateCoreTracks
Definition: TauTrackFinder.h:111
TauTrackFinder::m_ParticleCacheKey
SG::ReadHandleKey< CaloExtensionCollection > m_ParticleCacheKey
Definition: TauTrackFinder.h:120