TkCloner

Macros

Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
#ifndef TKClonerRecHit_H
#define TKClonerRecHit_H

#include <memory>
#include "DataFormats/TrackingRecHit/interface/TrackingRecHit.h"
#include "FWCore/Utilities/interface/thread_safety_macros.h"

class SiPixelRecHit;
class SiStripRecHit2D;
class SiStripRecHit1D;
class SiStripMatchedRecHit2D;
class ProjectedSiStripRecHit2D;
class Phase2TrackerRecHit1D;
class VectorHit;

class TkCloner {
public:
  TrackingRecHit* operator() CMS_THREAD_SAFE(TrackingRecHit const& hit, TrajectoryStateOnSurface const& tsos) const {
    return hit.clone_(*this, tsos);
  }

  virtual ~TkCloner() {}
#ifndef __GCCXML__
  TrackingRecHit::ConstRecHitPointer makeShared(TrackingRecHit::ConstRecHitPointer const& hit,
                                                TrajectoryStateOnSurface const& tsos) const {
    return hit->canImproveWithTrack() ? hit->cloneSH_(*this, tsos) : hit;
    // return  hit->cloneSH(*this, tsos);
  }
#endif

  virtual std::unique_ptr<SiPixelRecHit> operator()(SiPixelRecHit const& hit,
                                                    TrajectoryStateOnSurface const& tsos) const = 0;
  virtual std::unique_ptr<SiStripRecHit2D> operator()(SiStripRecHit2D const& hit,
                                                      TrajectoryStateOnSurface const& tsos) const = 0;
  virtual std::unique_ptr<SiStripRecHit1D> operator()(SiStripRecHit1D const& hit,
                                                      TrajectoryStateOnSurface const& tsos) const = 0;
  virtual std::unique_ptr<SiStripMatchedRecHit2D> operator()(SiStripMatchedRecHit2D const& hit,
                                                             TrajectoryStateOnSurface const& tsos) const = 0;
  virtual std::unique_ptr<ProjectedSiStripRecHit2D> operator()(ProjectedSiStripRecHit2D const& hit,
                                                               TrajectoryStateOnSurface const& tsos) const = 0;
  virtual std::unique_ptr<Phase2TrackerRecHit1D> operator()(Phase2TrackerRecHit1D const& hit,
                                                            TrajectoryStateOnSurface const& tsos) const = 0;
  virtual std::unique_ptr<VectorHit> operator()(VectorHit const& hit, TrajectoryStateOnSurface const& tsos) const = 0;

#ifndef __GCCXML__
  virtual TrackingRecHit::ConstRecHitPointer makeShared(SiPixelRecHit const& hit,
                                                        TrajectoryStateOnSurface const& tsos) const = 0;
  virtual TrackingRecHit::ConstRecHitPointer makeShared(SiStripRecHit2D const& hit,
                                                        TrajectoryStateOnSurface const& tsos) const = 0;
  virtual TrackingRecHit::ConstRecHitPointer makeShared(SiStripRecHit1D const& hit,
                                                        TrajectoryStateOnSurface const& tsos) const = 0;
  virtual TrackingRecHit::ConstRecHitPointer makeShared(SiStripMatchedRecHit2D const& hit,
                                                        TrajectoryStateOnSurface const& tsos) const = 0;
  virtual TrackingRecHit::ConstRecHitPointer makeShared(ProjectedSiStripRecHit2D const& hit,
                                                        TrajectoryStateOnSurface const& tsos) const = 0;
  virtual TrackingRecHit::ConstRecHitPointer makeShared(Phase2TrackerRecHit1D const& hit,
                                                        TrajectoryStateOnSurface const& tsos) const = 0;
  virtual TrackingRecHit::ConstRecHitPointer makeShared(VectorHit const& hit,
                                                        TrajectoryStateOnSurface const& tsos) const = 0;
#endif
};
#endif