CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_6_2_5/src/L1Trigger/DTUtilities/interface/DTGeomSupplier.h

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