00001 #ifndef DetLayers_MuRodBarrelLayer_H 00002 #define DetLayers_MuRodBarrelLayer_H 00003 00012 #include "TrackingTools/DetLayers/interface/RodBarrelLayer.h" 00013 #include "Utilities/BinningTools/interface/BaseBinFinder.h" 00014 00015 class DetRod; 00016 class DetRodBuilder; 00017 class GeomDet; 00018 00019 class MuRodBarrelLayer : public RodBarrelLayer { 00020 public: 00021 00023 MuRodBarrelLayer(std::vector<const DetRod*>& rods); 00024 00025 virtual ~MuRodBarrelLayer(); 00026 00027 // GeometricSearchDet interface 00028 00029 virtual const std::vector<const GeomDet*>& basicComponents() const {return theBasicComps;} 00030 00031 virtual const std::vector<const GeometricSearchDet*>& components() const; 00032 00033 virtual std::vector<DetWithState> 00034 compatibleDets( const TrajectoryStateOnSurface& startingState, 00035 const Propagator& prop, 00036 const MeasurementEstimator& est) const; 00037 00038 virtual std::vector<DetGroup> 00039 groupedCompatibleDets( const TrajectoryStateOnSurface& startingState, 00040 const Propagator& prop, 00041 const MeasurementEstimator& est) const; 00042 00043 00044 virtual bool hasGroups() const; 00045 00046 00047 // DetLayer interface 00048 virtual SubDetector subDetector() const; 00049 00050 // Extension of the interface 00051 00053 virtual const std::vector<const DetRod*>& rods() const {return theRods;} 00054 00055 00056 private: 00057 00058 float xError(const TrajectoryStateOnSurface& tsos, 00059 const MeasurementEstimator& est) const; 00060 00061 std::vector<const DetRod*> theRods; 00062 std::vector <const GeometricSearchDet*> theComponents; // duplication of the above 00063 std::vector<const GeomDet*> theBasicComps; // All chambers 00064 BaseBinFinder<double> * theBinFinder; 00065 bool isOverlapping; 00066 }; 00067 00068 #endif