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
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