00001 #ifndef MeasurementDet_H 00002 #define MeasurementDet_H 00003 00004 #include <vector> 00005 00006 #include "Geometry/CommonDetUnit/interface/GeomDet.h" 00007 #include "TrackingTools/TransientTrackingRecHit/interface/TransientTrackingRecHit.h" 00008 00009 class TrajectoryStateOnSurface; 00010 class TrajectoryMeasurement; 00011 class GeomDet; 00012 class Propagator; 00013 class MeasurementEstimator; 00014 class TransientTrackingRecHit; 00015 class BoundSurface; 00016 00017 class MeasurementDet { 00018 public: 00019 00020 typedef TransientTrackingRecHit::ConstRecHitContainer RecHitContainer; 00021 00022 MeasurementDet( const GeomDet* gdet) : theGeomDet(gdet) {} 00023 00024 virtual RecHitContainer recHits( const TrajectoryStateOnSurface&) const = 0; 00025 00032 virtual std::vector<TrajectoryMeasurement> 00033 fastMeasurements( const TrajectoryStateOnSurface& stateOnThisDet, 00034 const TrajectoryStateOnSurface& startingState, 00035 const Propagator&, 00036 const MeasurementEstimator&) const = 0; 00037 00038 00039 const GeomDet& fastGeomDet() const { return *theGeomDet;} 00040 virtual const GeomDet& geomDet() const { return *theGeomDet;} 00041 00042 const BoundSurface& surface() const {return geomDet().surface();} 00043 00044 const Surface::PositionType& position() const {return geomDet().position();} 00045 00046 virtual bool isActive() const=0; 00047 virtual bool hasBadComponents(const TrajectoryStateOnSurface &tsos) const=0; 00048 00049 private: 00050 00051 const GeomDet* theGeomDet; 00052 00053 }; 00054 00055 00056 #endif