ATLAS Offline Software
InDetTrackSplitterTool.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 INDETINDETTRACKSPLITTERTOOL_H
6 #define INDETINDETTRACKSPLITTERTOOL_H
7 
14 
15 #include "GaudiKernel/IAlgTool.h"
17 #include "GaudiKernel/ToolHandle.h"
18 
19 #include "TrkTrack/Track.h"
21 
22 
23 class TRT_ID;
24 class SCT_ID;
25 
26 class IInDetTrackSplitterTool;
27 
28 namespace Trk {
29  class ITrackFitter ;
30  class ITrackSelectorTool;
31  class RIO_OnTrack;
32  class MeasurementBase;
33  class MeasurementBaseComparisonFunction;
35  class StraightLineSurface;
36 }
37 
38 
39 namespace InDet{
40 
82  {
83 
84  public:
86  InDetTrackSplitterTool(std::string const&, std::string const&,IInterface const *);
87 
90 
92  virtual StatusCode initialize();
93  virtual StatusCode finalize();
94 
101  virtual void splitTracks(TrackCollection const* inputTracks) const;
102 
105  virtual std::pair<Trk::Track*, Trk::Track*> splitInUpperLowerTrack(Trk::Track const& input, bool siliconHitsOnly = false) const;
106 
117  virtual Trk::Track* stripTrack(Trk::Track const& input, bool removeSilicon = true, bool applyConstraint = true) const;
118 
121  virtual std::pair<Trk::Track*, Trk::Track*> splitInOddEvenHitsTrack(Trk::Track const& input) const;
122 
125  std::string const inline UpperTracksKey() const {return m_outputUpperTracksName.key();}
126  std::string const inline LowerTracksKey() const {return m_outputLowerTracksName.key();}
127 
128  private:
129 
133  bool trackIsCandidate(Trk::Track const& inputTrack) const;
134 
137  std::vector<Trk::MeasurementBase const*> getSCTHits(Trk::Track const& input) const;
138 
141  std::vector<Trk::MeasurementBase const*>::iterator findSCTHitsFromSameSpacePoint(Trk::MeasurementBase const* sctHit, std::vector<Trk::MeasurementBase const*>& listOfSCTHits) const;
142 
145  bool isConstrained(unsigned int nPixelHits, unsigned int nSCTHits, unsigned int nTRTHits, unsigned int nPseudomeasurements) const;
146 
150 
153  Trk::PseudoMeasurementOnTrack const* makeThetaZ0Constraint(Trk::Perigee const* originialPerigee) const;
154 
157  Trk::Track* stripTRTFromTrack(Trk::Track const& input, bool applyConstraint = true) const;
158 
161  Trk::PseudoMeasurementOnTrack const* makePConstraint(Trk::Perigee const* originialPerigee
162  ,Trk::StraightLineSurface const* trtSurf) const;
163 
168 
170  ToolHandle<Trk::ITrackFitter> m_trkfitter;
171  TRT_ID const* m_trtid{} ;
172  SCT_ID const* m_sctid{} ;
173 
177 
178  };
179 }
180 
181 
182 #endif
xAOD::iterator
JetConstituentVector::iterator iterator
Definition: JetConstituentVector.cxx:68
InDet::InDetTrackSplitterTool::stripTRTFromTrack
Trk::Track * stripTRTFromTrack(Trk::Track const &input, bool applyConstraint=true) const
Strip the TRT hits, fit the remaining with a qOverP constraint.
Definition: InDetTrackSplitterTool.cxx:451
InDet::InDetTrackSplitterTool::splitTracks
virtual void splitTracks(TrackCollection const *inputTracks) const
Takes a trackCollection, splits them according to upper and lower parts and fills two track collectio...
Definition: InDetTrackSplitterTool.cxx:794
Trk::Track
The ATLAS Track class.
Definition: Tracking/TrkEvent/TrkTrack/TrkTrack/Track.h:73
InDet::InDetTrackSplitterTool::splitInOddEvenHitsTrack
virtual std::pair< Trk::Track *, Trk::Track * > splitInOddEvenHitsTrack(Trk::Track const &input) const
Splits a single input track into odd and even parts (with logic to aviod splitting SCT space points)
Definition: InDetTrackSplitterTool.cxx:595
Trk::ParametersT
Dummy class used to allow special convertors to be called for surfaces owned by a detector element.
Definition: EMErrorDetail.h:25
InDet
Primary Vertex Finder.
Definition: VP1ErrorUtils.h:36
InDet::InDetTrackSplitterTool::stripTrack
virtual Trk::Track * stripTrack(Trk::Track const &input, bool removeSilicon=true, bool applyConstraint=true) const
Takes a combined ID track and either 1) if removeSilicon = true Strips off the Si hits.
Definition: InDetTrackSplitterTool.cxx:362
InDet::InDetTrackSplitterTool::m_trkfitter
ToolHandle< Trk::ITrackFitter > m_trkfitter
Helper Functions.
Definition: InDetTrackSplitterTool.h:170
InDet::InDetTrackSplitterTool::initialize
virtual StatusCode initialize()
standard Athena-Algorithm methods
Definition: InDetTrackSplitterTool.cxx:98
IDTPM::nPixelHits
float nPixelHits(const U &p)
Definition: TrackParametersHelper.h:354
InDet::IInDetTrackSplitterTool
Definition: IInDetTrackSplitterTool.h:18
InDet::InDetTrackSplitterTool::finalize
virtual StatusCode finalize()
Definition: InDetTrackSplitterTool.cxx:133
InDet::InDetTrackSplitterTool::isConstrained
bool isConstrained(unsigned int nPixelHits, unsigned int nSCTHits, unsigned int nTRTHits, unsigned int nPseudomeasurements) const
Logic to check if the track is constrained given the number of various types of hits.
Definition: InDetTrackSplitterTool.cxx:940
InDet::InDetTrackSplitterTool::makePConstraint
Trk::PseudoMeasurementOnTrack const * makePConstraint(Trk::Perigee const *originialPerigee, Trk::StraightLineSurface const *trtSurf) const
Make the qOverP constraint.
Definition: InDetTrackSplitterTool.cxx:533
Track.h
Trk::PseudoMeasurementOnTrack
Class to handle pseudo-measurements in fitters and on track objects.
Definition: PseudoMeasurementOnTrack.h:44
InDet::InDetTrackSplitterTool::m_sctid
SCT_ID const * m_sctid
Definition: InDetTrackSplitterTool.h:172
InDet::InDetTrackSplitterTool::m_outputLowerTracksName
SG::WriteHandleKey< TrackCollection > m_outputLowerTracksName
Definition: InDetTrackSplitterTool.h:167
InDet::InDetTrackSplitterTool::splitInUpperLowerTrack
virtual std::pair< Trk::Track *, Trk::Track * > splitInUpperLowerTrack(Trk::Track const &input, bool siliconHitsOnly=false) const
Splits a single input track into upper and lower parts (based on global y) returns a pair of track th...
Definition: InDetTrackSplitterTool.cxx:142
SG::WriteHandleKey
Property holding a SG store/key/clid from which a WriteHandle is made.
Definition: StoreGate/StoreGate/WriteHandleKey.h:40
InDet::InDetTrackSplitterTool::getSCTHits
std::vector< Trk::MeasurementBase const * > getSCTHits(Trk::Track const &input) const
Return a vector of the SCT hits on track.
Definition: InDetTrackSplitterTool.cxx:877
python.TrigInDetConfig.inputTracks
inputTracks
Definition: TrigInDetConfig.py:183
InDet::InDetTrackSplitterTool::UpperTracksKey
std::string const UpperTracksKey() const
Return the names of the track collections stored in storeGate.
Definition: InDetTrackSplitterTool.h:125
IDTPM::nSCTHits
float nSCTHits(const U &p)
Definition: TrackParametersHelper.h:393
IDTPM::nTRTHits
float nTRTHits(const U &p)
Definition: TrackParametersHelper.h:446
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
PlotPulseshapeFromCool.input
input
Definition: PlotPulseshapeFromCool.py:106
AthAlgTool.h
TrackCollection.h
InDet::InDetTrackSplitterTool::InDetTrackSplitterTool
InDetTrackSplitterTool(std::string const &, std::string const &, IInterface const *)
default constructor
Definition: InDetTrackSplitterTool.cxx:81
InDet::InDetTrackSplitterTool::m_trtid
TRT_ID const * m_trtid
Definition: InDetTrackSplitterTool.h:171
InDet::InDetTrackSplitterTool::m_outputUpperTracksName
SG::WriteHandleKey< TrackCollection > m_outputUpperTracksName
Output track collection names recorded in storgate.
Definition: InDetTrackSplitterTool.h:166
DataVector< Trk::Track >
InDet::InDetTrackSplitterTool::m_keepmaterial
bool m_keepmaterial
Do we use the material on the input track.
Definition: InDetTrackSplitterTool.h:176
Trk::MeasurementBase
Definition: MeasurementBase.h:58
Trk
Ensure that the ATLAS eigen extensions are properly loaded.
Definition: FakeTrackBuilder.h:9
InDet::InDetTrackSplitterTool::findSCTHitsFromSameSpacePoint
std::vector< Trk::MeasurementBase const * >::iterator findSCTHitsFromSameSpacePoint(Trk::MeasurementBase const *sctHit, std::vector< Trk::MeasurementBase const * > &listOfSCTHits) const
Logic to check if there is another SCT hit associated with the input hit, which forms a space point.
Definition: InDetTrackSplitterTool.cxx:908
Trk::MeasurementBaseType::RIO_OnTrack
@ RIO_OnTrack
Definition: MeasurementBase.h:49
IInDetTrackSplitterTool.h
TRT_ID
Definition: TRT_ID.h:84
SCT_ID
Definition: SCT_ID.h:68
InDet::InDetTrackSplitterTool::~InDetTrackSplitterTool
virtual ~InDetTrackSplitterTool()
default destructor
Trk::MeasurementBaseType::PseudoMeasurementOnTrack
@ PseudoMeasurementOnTrack
Definition: MeasurementBase.h:51
AthAlgTool
Definition: AthAlgTool.h:26
InDet::InDetTrackSplitterTool
Definition: InDetTrackSplitterTool.h:82
InDet::InDetTrackSplitterTool::trackIsCandidate
bool trackIsCandidate(Trk::Track const &inputTrack) const
Track selection applied in the splitTracks method (for the moment this is just a d0 cut requiring the...
Definition: InDetTrackSplitterTool.cxx:847
InDet::InDetTrackSplitterTool::makeThetaZ0Constraint
Trk::PseudoMeasurementOnTrack const * makeThetaZ0Constraint(Trk::Perigee const *originialPerigee) const
Make the theta and z0 constraint.
Definition: InDetTrackSplitterTool.cxx:555
Trk::StraightLineSurface
Definition: StraightLineSurface.h:51
InDet::InDetTrackSplitterTool::LowerTracksKey
std::string const LowerTracksKey() const
Definition: InDetTrackSplitterTool.h:126
InDet::InDetTrackSplitterTool::stripSiFromTrack
Trk::Track * stripSiFromTrack(Trk::Track const &input) const
Strip the Si hits, fit the remaining with a theta, z0 constraint.
Definition: InDetTrackSplitterTool.cxx:384