00001 //------------------------------------------------- 00002 // 00012 // 00013 //-------------------------------------------------- 00014 #ifndef DT_GEOM_SUPPLIER_H 00015 #define DT_GEOM_SUPPLIER_H 00016 00017 //------------------------------------ 00018 // Collaborating Class Declarations -- 00019 //------------------------------------ 00020 00021 //---------------------- 00022 // Base Class Headers -- 00023 //---------------------- 00024 #include "DataFormats/GeometryVector/interface/GlobalPoint.h" 00025 #include "DataFormats/GeometryVector/interface/GlobalVector.h" 00026 #include "DataFormats/GeometryVector/interface/LocalPoint.h" 00027 #include "DataFormats/GeometryVector/interface/LocalVector.h" 00028 #include "DataFormats/MuonDetId/interface/DTChamberId.h" 00029 #include "DataFormats/MuonDetId/interface/DTSuperLayerId.h" 00030 #include "DataFormats/MuonDetId/interface/DTLayerId.h" 00031 #include "DataFormats/MuonDetId/interface/DTWireId.h" 00032 #include "Geometry/DTGeometry/interface/DTChamber.h" 00033 #include "L1Trigger/DTUtilities/interface/DTTrigGeom.h" 00034 #include "L1Trigger/DTUtilities/interface/DTTrigData.h" 00035 00036 00037 //--------------- 00038 // C++ Headers -- 00039 //--------------- 00040 00041 // --------------------- 00042 // -- Class Interface -- 00043 // --------------------- 00044 00045 class DTGeomSupplier { 00046 00047 public: 00048 00050 DTGeomSupplier(DTTrigGeom* geom) : _geom(geom) {} 00051 00053 virtual ~DTGeomSupplier() {} 00054 00056 inline DTTrigGeom* geom() const { return _geom; } 00057 00059 inline const DTChamber* stat() const { return _geom->stat(); } 00060 00062 inline DTChamberId ChamberId() const { return _geom->statId(); } 00063 00065 inline int wheel() const { return _geom->wheel(); } 00066 00068 inline int station() const { return _geom->station(); } 00069 00071 inline int sector() const { return _geom->sector(); } 00072 00074 virtual LocalPoint localPosition(const DTTrigData*) const = 0; 00075 00077 virtual LocalVector localDirection(const DTTrigData*) const = 0; 00078 00080 inline GlobalPoint CMSPosition(const DTTrigData* trig) const { 00081 return _geom->toGlobal(localPosition(trig)); 00082 } 00083 00085 inline GlobalVector CMSDirection(const DTTrigData* trig) const { 00086 return _geom->toGlobal(localDirection(trig)); 00087 } 00088 00090 virtual void print(const DTTrigData* trig) const; 00091 00092 protected: 00093 00094 DTTrigGeom* _geom; 00095 00096 }; 00097 00098 #endif