Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:05:20

0001 #ifndef TKClonerRecHit_H
0002 #define TKClonerRecHit_H
0003 
0004 #include <memory>
0005 #include "DataFormats/TrackingRecHit/interface/TrackingRecHit.h"
0006 #include "FWCore/Utilities/interface/thread_safety_macros.h"
0007 
0008 class SiPixelRecHit;
0009 class SiStripRecHit2D;
0010 class SiStripRecHit1D;
0011 class SiStripMatchedRecHit2D;
0012 class ProjectedSiStripRecHit2D;
0013 class Phase2TrackerRecHit1D;
0014 class VectorHit;
0015 
0016 class TkCloner {
0017 public:
0018   TrackingRecHit* operator() CMS_THREAD_SAFE(TrackingRecHit const& hit, TrajectoryStateOnSurface const& tsos) const {
0019     return hit.clone_(*this, tsos);
0020   }
0021 
0022   virtual ~TkCloner() {}
0023 #ifndef __GCCXML__
0024   TrackingRecHit::ConstRecHitPointer makeShared(TrackingRecHit::ConstRecHitPointer const& hit,
0025                                                 TrajectoryStateOnSurface const& tsos) const {
0026     return hit->canImproveWithTrack() ? hit->cloneSH_(*this, tsos) : hit;
0027     // return  hit->cloneSH(*this, tsos);
0028   }
0029 #endif
0030 
0031   virtual std::unique_ptr<SiPixelRecHit> operator()(SiPixelRecHit const& hit,
0032                                                     TrajectoryStateOnSurface const& tsos) const = 0;
0033   virtual std::unique_ptr<SiStripRecHit2D> operator()(SiStripRecHit2D const& hit,
0034                                                       TrajectoryStateOnSurface const& tsos) const = 0;
0035   virtual std::unique_ptr<SiStripRecHit1D> operator()(SiStripRecHit1D const& hit,
0036                                                       TrajectoryStateOnSurface const& tsos) const = 0;
0037   virtual std::unique_ptr<SiStripMatchedRecHit2D> operator()(SiStripMatchedRecHit2D const& hit,
0038                                                              TrajectoryStateOnSurface const& tsos) const = 0;
0039   virtual std::unique_ptr<ProjectedSiStripRecHit2D> operator()(ProjectedSiStripRecHit2D const& hit,
0040                                                                TrajectoryStateOnSurface const& tsos) const = 0;
0041   virtual std::unique_ptr<Phase2TrackerRecHit1D> operator()(Phase2TrackerRecHit1D const& hit,
0042                                                             TrajectoryStateOnSurface const& tsos) const = 0;
0043   virtual std::unique_ptr<VectorHit> operator()(VectorHit const& hit, TrajectoryStateOnSurface const& tsos) const = 0;
0044 
0045 #ifndef __GCCXML__
0046   virtual TrackingRecHit::ConstRecHitPointer makeShared(SiPixelRecHit const& hit,
0047                                                         TrajectoryStateOnSurface const& tsos) const = 0;
0048   virtual TrackingRecHit::ConstRecHitPointer makeShared(SiStripRecHit2D const& hit,
0049                                                         TrajectoryStateOnSurface const& tsos) const = 0;
0050   virtual TrackingRecHit::ConstRecHitPointer makeShared(SiStripRecHit1D const& hit,
0051                                                         TrajectoryStateOnSurface const& tsos) const = 0;
0052   virtual TrackingRecHit::ConstRecHitPointer makeShared(SiStripMatchedRecHit2D const& hit,
0053                                                         TrajectoryStateOnSurface const& tsos) const = 0;
0054   virtual TrackingRecHit::ConstRecHitPointer makeShared(ProjectedSiStripRecHit2D const& hit,
0055                                                         TrajectoryStateOnSurface const& tsos) const = 0;
0056   virtual TrackingRecHit::ConstRecHitPointer makeShared(Phase2TrackerRecHit1D const& hit,
0057                                                         TrajectoryStateOnSurface const& tsos) const = 0;
0058   virtual TrackingRecHit::ConstRecHitPointer makeShared(VectorHit const& hit,
0059                                                         TrajectoryStateOnSurface const& tsos) const = 0;
0060 #endif
0061 };
0062 #endif