CMS 3D CMS Logo

/data/refman/pasoursint/CMSSW_4_1_8_patch13/src/Geometry/CommonDetUnit/interface/TrackingGeometry.h

Go to the documentation of this file.
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