ATLAS Offline Software
Loading...
Searching...
No Matches
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
12
14
15#include "GaudiKernel/IAlgTool.h"
17#include "GaudiKernel/ToolHandle.h"
18
19#include "TrkTrack/Track.h"
21
22
23class TRT_ID;
24class SCT_ID;
25
26class IInDetTrackSplitterTool;
27
28namespace Trk {
29 class ITrackFitter ;
31 class RIO_OnTrack;
32 class MeasurementBase;
36}
37
38
39namespace InDet{
40
80
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
149 Trk::Track* stripSiFromTrack(Trk::Track const& input) const;
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
DataVector< Trk::Track > TrackCollection
This typedef represents a collection of Trk::Track objects.
AthAlgTool(const std::string &type, const std::string &name, const IInterface *parent)
Constructor with parameters:
std::string const LowerTracksKey() const
bool m_keepmaterial
Do we use the material on the input track.
Trk::PseudoMeasurementOnTrack const * makePConstraint(Trk::Perigee const *originialPerigee, Trk::StraightLineSurface const *trtSurf) const
Make the qOverP constraint.
SG::WriteHandleKey< TrackCollection > m_outputUpperTracksName
Output track collection names recorded in storgate.
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...
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...
Trk::Track * stripSiFromTrack(Trk::Track const &input) const
Strip the Si hits, fit the remaining with a theta, z0 constraint.
std::vector< Trk::MeasurementBase const * > getSCTHits(Trk::Track const &input) const
Return a vector of the SCT hits on track.
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.
virtual StatusCode initialize()
standard Athena-Algorithm methods
std::vector< Trk::MeasurementBaseconst * >::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.
InDetTrackSplitterTool(std::string const &, std::string const &, IInterface const *)
default constructor
Trk::Track * stripTRTFromTrack(Trk::Track const &input, bool applyConstraint=true) const
Strip the TRT hits, fit the remaining with a qOverP constraint.
virtual void splitTracks(TrackCollection const *inputTracks) const
Takes a trackCollection, splits them according to upper and lower parts and fills two track collectio...
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.
std::string const UpperTracksKey() const
Return the names of the track collections stored in storeGate.
SG::WriteHandleKey< TrackCollection > m_outputLowerTracksName
Trk::PseudoMeasurementOnTrack const * makeThetaZ0Constraint(Trk::Perigee const *originialPerigee) const
Make the theta and z0 constraint.
ToolHandle< Trk::ITrackFitter > m_trkfitter
Helper Functions.
virtual ~InDetTrackSplitterTool()
default destructor
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)
This is an Identifier helper class for the SCT subdetector.
Definition SCT_ID.h:68
Property holding a SG store/key/clid from which a WriteHandle is made.
This is an Identifier helper class for the TRT subdetector.
Definition TRT_ID.h:82
Provides the abstract interface for track fitting in the common ATLAS Tracking EDM.
The abstract interface base class for track selector tools.
Class implementing a comparison function for sorting MeasurementBase objects.
This class is the pure abstract base class for all fittable tracking measurements.
Class to handle pseudo-measurements in fitters and on track objects.
Class to handle RIO On Tracks ROT) for InDet and Muons, it inherits from the common MeasurementBase.
Definition RIO_OnTrack.h:70
Class for a StraightLineSurface in the ATLAS detector to describe dirft tube and straw like detectors...
Primary Vertex Finder.
Ensure that the ATLAS eigen extensions are properly loaded.
ParametersT< TrackParametersDim, Charged, PerigeeSurface > Perigee