00001 #ifndef GlobalTrackingGeometry_h 00002 #define GlobalTrackingGeometry_h 00003 00018 #include <Geometry/CommonDetUnit/interface/TrackingGeometry.h> 00019 #include <vector> 00020 00021 class GlobalTrackingGeometry : public TrackingGeometry { 00022 public: 00024 GlobalTrackingGeometry(std::vector<const TrackingGeometry*>& geos); 00025 00027 virtual ~GlobalTrackingGeometry(); 00028 00029 // Return a vector of all det types. 00030 virtual const DetTypeContainer& detTypes() const; 00031 00032 // Returm a vector of all GeomDetUnit 00033 virtual const DetUnitContainer& detUnits() const; 00034 00035 // Returm a vector of all GeomDet (including all GeomDetUnits) 00036 virtual const DetContainer& dets() const; 00037 00038 // Returm a vector of all GeomDetUnit DetIds 00039 virtual const DetIdContainer& detUnitIds() const; 00040 00041 // Returm a vector of all GeomDet DetIds (including those of GeomDetUnits) 00042 virtual const DetIdContainer& detIds() const; 00043 00044 // Return the pointer to the GeomDetUnit corresponding to a given DetId 00045 virtual const GeomDetUnit* idToDetUnit(DetId) const; 00046 00047 // Return the pointer to the GeomDet corresponding to a given DetId 00048 // (valid also for GeomDetUnits) 00049 virtual const GeomDet* idToDet(DetId) const; 00050 00052 const TrackingGeometry* slaveGeometry(DetId id) const; 00053 00054 private: 00055 00056 std::vector<const TrackingGeometry*> theGeometries; 00057 }; 00058 #endif 00059