00001 #ifndef Geometry_TrackerGeometryBuilder_TrackerGeometry_H 00002 #define Geometry_TrackerGeometryBuilder_TrackerGeometry_H 00003 00004 #include "Geometry/CommonDetUnit/interface/TrackingGeometry.h" 00005 00006 class GeometricDet; 00007 00008 #include "Geometry/TrackerGeometryBuilder/interface/trackerHierarchy.h" 00009 00010 #include "DataFormats/Common/interface/Trie.h" 00011 00012 // FIXME here just to allow prototyping... 00013 namespace trackerTrie { 00014 typedef GeomDet const* PDet; 00015 typedef edm::Trie<PDet> DetTrie; 00016 typedef edm::TrieNode<PDet> Node; 00017 typedef Node const * node_pointer; // sigh.... 00018 typedef edm::TrieNodeIter<PDet> node_iterator; 00019 } 00020 00021 00026 class TrackerGeometry : public TrackingGeometry { 00027 public: 00028 00029 explicit TrackerGeometry(GeometricDet const* gd=0); 00030 00031 virtual const DetTypeContainer& detTypes() const; 00032 virtual const DetUnitContainer& detUnits() const; 00033 virtual const DetContainer& dets() const; 00034 virtual const DetIdContainer& detUnitIds() const; 00035 virtual const DetIdContainer& detIds() const; 00036 virtual const GeomDetUnit* idToDetUnit(DetId) const; 00037 virtual const GeomDet* idToDet(DetId) const; 00038 00039 00040 void addType(GeomDetType* p); 00041 void addDetUnit(GeomDetUnit* p); 00042 void addDetUnitId(DetId p); 00043 void addDet(GeomDet* p); 00044 void addDetId(DetId p); 00045 00046 00047 00048 00049 GeometricDet const * trackerDet() const; 00050 00051 const DetContainer& detsPXB() const; 00052 const DetContainer& detsPXF() const; 00053 const DetContainer& detsTIB() const; 00054 const DetContainer& detsTID() const; 00055 const DetContainer& detsTOB() const; 00056 const DetContainer& detsTEC() const; 00057 00058 private: 00059 00060 GeometricDet const * theTrackerDet; 00061 00063 friend class GeometryAligner; 00064 00065 DetTypeContainer theDetTypes; 00066 DetUnitContainer theDetUnits; 00067 DetContainer theDets; 00068 DetIdContainer theDetUnitIds; 00069 DetIdContainer theDetIds; 00070 mapIdToDetUnit theMapUnit; 00071 mapIdToDet theMap; 00072 00073 DetContainer thePXBDets; 00074 DetContainer thePXFDets; 00075 DetContainer theTIBDets; 00076 DetContainer theTIDDets; 00077 DetContainer theTOBDets; 00078 DetContainer theTECDets; 00079 00080 00081 }; 00082 00083 #endif