00001 #ifndef CommonDet_GeomDetUnit_H 00002 #define CommonDet_GeomDetUnit_H 00003 00004 #include "DataFormats/GeometrySurface/interface/Plane.h" 00005 #include "Geometry/CommonDetUnit/interface/GeomDet.h" 00006 #include "DataFormats/DetId/interface/DetId.h" 00007 00008 class Topology; 00009 //class Readout; 00010 class GeomDetType; 00011 class SurfaceDeformation; 00012 00013 class GeomDetUnit : public GeomDet { 00014 public: 00015 00016 explicit GeomDetUnit( Plane* sp); 00017 explicit GeomDetUnit( const ReferenceCountingPointer<Plane>& plane); 00018 00019 virtual ~GeomDetUnit(); 00020 00021 virtual const Topology& topology() const = 0; 00022 00023 virtual const GeomDetType& type() const = 0; 00024 00026 virtual std::vector< const GeomDet*> components() const { 00027 return std::vector< const GeomDet*>(); 00028 } 00029 00030 virtual const GeomDet* component(DetId /*id*/) const {return 0;} 00031 00032 // Which subdetector 00033 virtual SubDetector subDetector() const; 00034 00037 virtual const SurfaceDeformation* surfaceDeformation() const { return 0; } 00038 00039 private: 00040 00042 friend class DetPositioner; 00043 00047 virtual void setSurfaceDeformation(const SurfaceDeformation * deformation); 00048 }; 00049 00050 #endif 00051 00052 00053 00054