CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_6_2_5/src/DataFormats/DTRecHit/interface/DTRecHit1DPair.h

Go to the documentation of this file.
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