File indexing completed on 2024-04-06 12:29:01
0001 #ifndef TKClonerImplRecHit_H
0002 #define TKClonerImplRecHit_H
0003
0004 #include <memory>
0005 #include "DataFormats/TrackerRecHit2D/interface/TkCloner.h"
0006 #include "RecoLocalTracker/Phase2TrackerRecHits/interface/Phase2StripCPE.h"
0007
0008 class PixelClusterParameterEstimator;
0009 class StripClusterParameterEstimator;
0010 class SiStripRecHitMatcher;
0011
0012 class TkClonerImpl final : public TkCloner {
0013 public:
0014 TkClonerImpl() {}
0015 TkClonerImpl(const PixelClusterParameterEstimator* ipixelCPE,
0016 const StripClusterParameterEstimator* istripCPE,
0017 const SiStripRecHitMatcher* iMatcher)
0018 : pixelCPE(ipixelCPE), stripCPE(istripCPE), theMatcher(iMatcher), phase2TrackerCPE(nullptr) {}
0019 TkClonerImpl(const PixelClusterParameterEstimator* ipixelCPE,
0020 const ClusterParameterEstimator<Phase2TrackerCluster1D>* iPhase2OTCPE)
0021 : pixelCPE(ipixelCPE), stripCPE(nullptr), theMatcher(nullptr), phase2TrackerCPE(iPhase2OTCPE) {}
0022
0023 using TkCloner::operator();
0024 std::unique_ptr<SiPixelRecHit> operator()(SiPixelRecHit const& hit,
0025 TrajectoryStateOnSurface const& tsos) const override;
0026 std::unique_ptr<SiStripRecHit2D> operator()(SiStripRecHit2D const& hit,
0027 TrajectoryStateOnSurface const& tsos) const override;
0028 std::unique_ptr<SiStripRecHit1D> operator()(SiStripRecHit1D const& hit,
0029 TrajectoryStateOnSurface const& tsos) const override;
0030 std::unique_ptr<SiStripMatchedRecHit2D> operator()(SiStripMatchedRecHit2D const& hit,
0031 TrajectoryStateOnSurface const& tsos) const override;
0032 std::unique_ptr<ProjectedSiStripRecHit2D> operator()(ProjectedSiStripRecHit2D const& hit,
0033 TrajectoryStateOnSurface const& tsos) const override;
0034 std::unique_ptr<Phase2TrackerRecHit1D> operator()(Phase2TrackerRecHit1D const& hit,
0035 TrajectoryStateOnSurface const& tsos) const override;
0036 std::unique_ptr<VectorHit> operator()(VectorHit const& hit, TrajectoryStateOnSurface const& tsos) const override;
0037
0038 using TkCloner::makeShared;
0039 TrackingRecHit::ConstRecHitPointer makeShared(SiPixelRecHit const& hit,
0040 TrajectoryStateOnSurface const& tsos) const override;
0041 TrackingRecHit::ConstRecHitPointer makeShared(SiStripRecHit2D const& hit,
0042 TrajectoryStateOnSurface const& tsos) const override;
0043 TrackingRecHit::ConstRecHitPointer makeShared(SiStripRecHit1D const& hit,
0044 TrajectoryStateOnSurface const& tsos) const override;
0045 TrackingRecHit::ConstRecHitPointer makeShared(SiStripMatchedRecHit2D const& hit,
0046 TrajectoryStateOnSurface const& tsos) const override;
0047 TrackingRecHit::ConstRecHitPointer makeShared(ProjectedSiStripRecHit2D const& hit,
0048 TrajectoryStateOnSurface const& tsos) const override;
0049 TrackingRecHit::ConstRecHitPointer makeShared(Phase2TrackerRecHit1D const& hit,
0050 TrajectoryStateOnSurface const& tsos) const override;
0051 TrackingRecHit::ConstRecHitPointer makeShared(VectorHit const& hit,
0052 TrajectoryStateOnSurface const& tsos) const override;
0053
0054 std::unique_ptr<ProjectedSiStripRecHit2D> project(SiStripMatchedRecHit2D const& hit,
0055 bool mono,
0056 TrajectoryStateOnSurface const& tsos) const;
0057
0058 private:
0059 const PixelClusterParameterEstimator* pixelCPE;
0060 const StripClusterParameterEstimator* stripCPE;
0061 const SiStripRecHitMatcher* theMatcher;
0062 const ClusterParameterEstimator<Phase2TrackerCluster1D>* phase2TrackerCPE;
0063 };
0064 #endif