00001 #ifndef DTRecHit_DTRecHit1DPair_H 00002 #define DTRecHit_DTRecHit1DPair_H 00003 00020 #include "DataFormats/DTRecHit/interface/DTRecHit1D.h" 00021 #include "DataFormats/MuonDetId/interface/DTWireId.h" 00022 00023 #include <utility> 00024 00025 class DTLayer; 00026 class DTDigi; 00027 00028 class DTRecHit1DPair : public RecHit1D { 00029 public: 00031 DTRecHit1DPair(const DTWireId& wireId, 00032 const DTDigi& digi); 00033 00035 DTRecHit1DPair(); 00036 00037 00039 virtual ~DTRecHit1DPair(); 00040 00041 // Operations 00042 00043 virtual DTRecHit1DPair * clone() const; 00044 00045 00049 virtual LocalPoint localPosition() const; 00050 00051 00055 virtual LocalError localPositionError() const; 00056 00057 00060 virtual std::vector<const TrackingRecHit*> recHits() const; 00061 00062 00065 virtual std::vector<TrackingRecHit*> recHits(); 00066 00067 00069 virtual DetId geographicalId() const; 00070 00071 00073 float digiTime() const { 00074 return theLeftHit.digiTime(); 00075 } 00076 00077 00079 bool operator==(const DTRecHit1DPair& hit) const; 00080 00081 00084 bool operator!=(const DTRecHit1DPair& hit) const { 00085 return !(*this==hit); 00086 } 00087 00088 00091 LocalPoint localPosition(DTEnums::DTCellSide lrside) const; 00092 00093 00096 LocalError localPositionError(DTEnums::DTCellSide lrside) const; 00097 00098 00101 void setPosition(DTEnums::DTCellSide lrside, const LocalPoint& point); 00102 00103 00106 void setPositionAndError(DTEnums::DTCellSide lrside, 00107 const LocalPoint& point, 00108 const LocalError& err); 00109 00110 00111 // Return the wireId 00112 DTWireId wireId() const { 00113 return theLeftHit.wireId(); 00114 } 00115 00116 00118 const DTRecHit1D* componentRecHit(DTEnums::DTCellSide lrSide) const; 00119 00120 00122 std::pair<const DTRecHit1D*, const DTRecHit1D*> componentRecHits() const; 00123 00124 00125 private: 00126 00128 DTRecHit1D* componentRecHit(DTEnums::DTCellSide lrSide); 00129 00130 // The two rechits 00131 DTRecHit1D theLeftHit; 00132 DTRecHit1D theRightHit; 00133 00134 }; 00135 00136 00138 std::ostream& operator<<(std::ostream& os, const DTRecHit1DPair& hit); 00139 00140 #endif