00001 #ifndef DetLayers_BarrelDetLayer_H 00002 #define DetLayers_BarrelDetLayer_H 00003 00016 #include "TrackingTools/DetLayers/interface/DetLayer.h" 00017 00018 #include "DataFormats/GeometrySurface/interface/ReferenceCounted.h" 00019 #include "DataFormats/GeometrySurface/interface/BoundCylinder.h" 00020 00021 #include <vector> 00022 #include <algorithm> 00023 00024 00025 class BarrelDetLayer : public DetLayer { 00026 public: 00027 00028 BarrelDetLayer() : 00029 theCylinder(0){} 00030 00031 virtual ~BarrelDetLayer(); 00032 00034 virtual const BoundSurface& surface() const { return *theCylinder;} 00035 00036 virtual std::pair<bool, TrajectoryStateOnSurface> 00037 compatible( const TrajectoryStateOnSurface& ts, const Propagator&, 00038 const MeasurementEstimator&) const; 00039 00041 virtual Location location() const {return GeomDetEnumerators::barrel;} 00042 00043 00045 virtual const BoundCylinder& specificSurface() const { return *theCylinder;} 00046 00047 bool contains( const Local3DPoint& p) const; 00048 00049 00050 00051 protected: 00052 void setSurface( BoundCylinder* cp); 00053 00054 virtual void initialize(); 00055 00056 virtual BoundCylinder* computeSurface(); 00057 00058 00059 private: 00060 //float theRmin, theRmax, theZmin, theZmax; 00061 ReferenceCountingPointer<BoundCylinder> theCylinder; 00062 00063 }; 00064 00065 #endif