00001 #ifndef TrackingGeometry_h 00002 #define TrackingGeometry_h 00003 00023 #include "DataFormats/DetId/interface/DetId.h" 00024 #include <vector> 00025 // #include <map> 00026 #include <ext/hash_map> 00027 00028 class GeomDetType; 00029 class GeomDetUnit; 00030 class GeomDet; 00031 00032 class TrackingGeometry 00033 { 00034 public: 00035 typedef std::vector<GeomDetType*> DetTypeContainer; 00036 typedef std::vector<GeomDet*> DetContainer; 00037 typedef std::vector<GeomDetUnit*> DetUnitContainer; 00038 typedef std::vector<DetId> DetIdContainer; 00039 // typedef std::map<DetId,GeomDetUnit*> mapIdToDetUnit; 00040 // typedef std::map<DetId,GeomDet*> mapIdToDet; 00041 typedef __gnu_cxx::hash_map< unsigned int, GeomDetUnit*> mapIdToDetUnit; 00042 typedef __gnu_cxx::hash_map< unsigned int, GeomDet*> mapIdToDet; 00043 00044 // Default constructor 00045 // virtual TrackingGeometry() {} 00046 00048 virtual ~TrackingGeometry() {} 00049 00051 virtual const DetTypeContainer& detTypes() const = 0; 00052 00054 virtual const DetUnitContainer& detUnits() const = 0; 00055 00057 virtual const DetContainer& dets() const = 0; 00058 00060 virtual const DetIdContainer& detUnitIds() const = 0; 00061 00063 virtual const DetIdContainer& detIds() const = 0; 00064 00066 virtual const GeomDetUnit* idToDetUnit(DetId) const = 0; 00067 00070 virtual const GeomDet* idToDet(DetId) const = 0; 00071 00072 }; 00073 00074 #endif