CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_5_2_9/src/TrackingTools/MeasurementDet/interface/MeasurementDet.h

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