Go to the documentation of this file.00001 #ifndef TrackerSingleRecHit_H
00002 #define TrackerSingleRecHit_H
00003
00004
00005 #include "DataFormats/TrackerRecHit2D/interface/BaseTrackerRecHit.h"
00006 #include "DataFormats/TrackerRecHit2D/interface/OmniClusterRef.h"
00007
00008
00009
00010
00011
00012 class TrackerSingleRecHit : public BaseTrackerRecHit {
00013 public:
00014
00015 typedef BaseTrackerRecHit Base;
00016
00017 TrackerSingleRecHit(){}
00018
00019
00020 typedef OmniClusterRef::ClusterPixelRef ClusterPixelRef;
00021 typedef OmniClusterRef::ClusterStripRef ClusterStripRef;
00022 typedef OmniClusterRef::ClusterRegionalRef ClusterRegionalRef;
00023
00024
00025
00026 TrackerSingleRecHit(DetId id,
00027 OmniClusterRef const& clus) :
00028 Base(id, trackerHitRTTI::single), cluster_(clus){}
00029
00030 TrackerSingleRecHit(const LocalPoint& p, const LocalError& e,
00031 DetId id,
00032 OmniClusterRef const& clus) : Base(p,e,id, trackerHitRTTI::single), cluster_(clus){}
00033
00034 TrackerSingleRecHit(const LocalPoint& p, const LocalError& e,
00035 DetId id,
00036 ClusterPixelRef const& clus) : Base(p,e,id, trackerHitRTTI::single), cluster_(clus){}
00037
00038 TrackerSingleRecHit(const LocalPoint& p, const LocalError& e,
00039 DetId id,
00040 ClusterStripRef const& clus) : Base(p,e,id, trackerHitRTTI::single), cluster_(clus){}
00041
00042 TrackerSingleRecHit(const LocalPoint& p, const LocalError& e,
00043 DetId id,
00044 ClusterRegionalRef const& clus) : Base(p,e,id, trackerHitRTTI::single), cluster_(clus){}
00045
00046
00047 virtual OmniClusterRef const & firstClusterRef() const { return cluster_;}
00048
00049 OmniClusterRef const & omniClusterRef() const { return cluster_;}
00050 OmniClusterRef const & omniCluster() const { return cluster_;}
00051
00052 OmniClusterRef & omniClusterRef() { return cluster_;}
00053 OmniClusterRef & omniCluster() { return cluster_;}
00054
00055 ClusterPixelRef cluster_pixel() const {
00056 return cluster_.cluster_pixel();
00057 }
00058
00059 ClusterStripRef cluster_strip() const {
00060 return cluster_.cluster_strip();
00061 }
00062
00063 ClusterRegionalRef cluster_regional() const {
00064 return cluster_.cluster_regional();
00065 }
00066
00067 SiStripCluster const & stripCluster() const {
00068 return cluster_.stripCluster();
00069 }
00070
00071
00072 void setClusterPixelRef(ClusterPixelRef const & ref) { cluster_ = OmniClusterRef(ref); }
00073 void setClusterStripRef(ClusterStripRef const & ref) { cluster_ = OmniClusterRef(ref); }
00074 void setClusterRegionalRef(ClusterRegionalRef const & ref) { cluster_ = OmniClusterRef(ref); }
00075
00076
00077
00078 virtual bool sharesInput( const TrackingRecHit* other, SharedInputType what) const;
00079
00080
00081 bool sharesInput(TrackerSingleRecHit const & other) const {
00082 return cluster_== other.cluster_;
00083 }
00084
00085 bool sameCluster( OmniClusterRef const & oh) const {
00086 return oh == cluster_;
00087 }
00088
00089 virtual std::vector<const TrackingRecHit*> recHits() const;
00090 virtual std::vector<TrackingRecHit*> recHits();
00091
00092 private:
00093
00094
00095 OmniClusterRef cluster_;
00096
00097 };
00098
00099 #endif