Back to home page

Project CMSSW displayed by LXR

 
 

    


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   // project either mono or stero hit...
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