File indexing completed on 2023-04-15 01:47:32
0001 #ifndef RecoTracker_PixelLowPtUtilities_ClusterShapeTrackFilter_h
0002 #define RecoTracker_PixelLowPtUtilities_ClusterShapeTrackFilter_h
0003
0004 #include "RecoTracker/PixelTrackFitting/interface/PixelTrackFilterBase.h"
0005
0006 #include "DataFormats/GeometryVector/interface/GlobalTag.h"
0007 #include "DataFormats/GeometryVector/interface/Vector2DBase.h"
0008 typedef Vector2DBase<float, GlobalTag> Global2DVector;
0009
0010
0011 #include "DataFormats/GeometryVector/interface/GlobalPoint.h"
0012 #include "DataFormats/GeometryVector/interface/GlobalVector.h"
0013
0014 #include <vector>
0015
0016 class TrackerGeometry;
0017 class TrackingRecHit;
0018 class ClusterShapeHitFilter;
0019 class TrackerTopology;
0020 class SiPixelClusterShapeCache;
0021
0022 class ClusterShapeTrackFilter : public PixelTrackFilterBase {
0023 public:
0024 ClusterShapeTrackFilter(const SiPixelClusterShapeCache *cache,
0025 double ptmin,
0026 double ptmax,
0027 const TrackerGeometry *tracker,
0028 const ClusterShapeHitFilter *shape,
0029 const TrackerTopology *ttopo);
0030 ~ClusterShapeTrackFilter() override;
0031 bool operator()(const reco::Track *, const std::vector<const TrackingRecHit *> &hits) const override;
0032
0033 private:
0034 float areaParallelogram(const Global2DVector &a, const Global2DVector &b) const;
0035 std::vector<GlobalVector> getGlobalDirs(const std::vector<GlobalPoint> &globalPoss) const;
0036 std::vector<GlobalPoint> getGlobalPoss(const std::vector<const TrackingRecHit *> &recHits) const;
0037
0038 const TrackerGeometry *theTracker;
0039 const ClusterShapeHitFilter *theFilter;
0040 const SiPixelClusterShapeCache *theClusterShapeCache;
0041 const TrackerTopology *tTopo;
0042
0043 const double ptMin;
0044 const double ptMax;
0045 };
0046
0047 #endif