Go to the documentation of this file.00001 #ifndef SiStripRecHit1D_H
00002 #define SiStripRecHit1D_H
00003
00004 #include "DataFormats/TrackingRecHit/interface/RecHit1D.h"
00005 #include "DataFormats/TrackerRecHit2D/interface/SiStripRecHit2D.h"
00006 #include "DataFormats/SiStripCluster/interface/SiStripCluster.h"
00007 #include "DataFormats/Common/interface/DetSetVector.h"
00008 #include "DataFormats/Common/interface/DetSetVectorNew.h"
00009 #include "DataFormats/Common/interface/RefGetter.h"
00010
00011 #include "float.h"
00012
00013 class SiStripRecHit1D : public RecHit1D{
00014 public:
00015
00016 SiStripRecHit1D(): RecHit1D(),cluster_(),clusterRegional_(),
00017 sigmaPitch_(-1.){}
00018
00019 ~SiStripRecHit1D() {}
00020
00021 typedef edm::Ref<edmNew::DetSetVector<SiStripCluster>,SiStripCluster > ClusterRef;
00022 SiStripRecHit1D( const LocalPoint&, const LocalError&,
00023 const DetId&,
00024 ClusterRef const& cluster);
00025
00026 typedef edm::Ref< edm::LazyGetter<SiStripCluster>, SiStripCluster, edm::FindValue<SiStripCluster> > ClusterRegionalRef;
00027 SiStripRecHit1D( const LocalPoint&, const LocalError&,
00028 const DetId&,
00029 ClusterRegionalRef const& cluster);
00030
00032 SiStripRecHit1D(const SiStripRecHit2D*);
00033
00034 virtual SiStripRecHit1D * clone() const {return new SiStripRecHit1D( * this); }
00035
00036 ClusterRegionalRef const& cluster_regional() const { return clusterRegional_;}
00037
00038 ClusterRef const& cluster() const { return cluster_;}
00039
00040 virtual void getKfComponents( KfComponentsHolder & holder ) const ;
00041
00042 virtual LocalPoint localPosition() const;
00043
00044 virtual LocalError localPositionError() const;
00045
00046 bool hasPositionAndError() const ;
00047
00048
00049
00050 void setClusterRef(ClusterRef const & ref) { cluster_ = ref; }
00051 void setClusterRegionalRef(ClusterRegionalRef const & ref) { clusterRegional_ = ref; }
00052
00053 virtual bool sharesInput( const TrackingRecHit* other, SharedInputType what) const;
00054
00055 double sigmaPitch() const { return sigmaPitch_;}
00056 void setSigmaPitch(double sigmap) const { sigmaPitch_=sigmap;}
00057
00058
00059 virtual std::vector<const TrackingRecHit*> recHits() const;
00060 virtual std::vector<TrackingRecHit*> recHits();
00061
00062
00063 private:
00064 void throwExceptionUninitialized(const char *where) const;
00065
00066 LocalPoint pos_;
00067 LocalError err_;
00068
00069
00070 ClusterRef cluster_;
00071
00072
00073 ClusterRegionalRef clusterRegional_;
00074
00076 mutable double sigmaPitch_;
00077
00078 };
00079
00080
00081 inline bool operator<( const SiStripRecHit1D& one, const SiStripRecHit1D& other) {
00082 if ( one.geographicalId() < other.geographicalId() ) {
00083 return true;
00084 } else {
00085 return false;
00086 }
00087 }
00088
00089 #endif