00001 #ifndef HcalGeometry_h 00002 #define HcalGeometry_h 00003 00004 #include "DataFormats/DetId/interface/DetId.h" 00005 #include "Geometry/CaloGeometry/interface/CaloSubdetectorGeometry.h" 00006 #include "Geometry/CaloTopology/interface/HcalTopology.h" 00007 00008 class HcalGeometry : public CaloSubdetectorGeometry { 00009 public: 00010 00011 explicit HcalGeometry(const HcalTopology * topology); 00013 virtual ~HcalGeometry(); 00014 00015 virtual std::vector<DetId> const & getValidDetIds(DetId::Detector det, int subdet) const; 00016 virtual DetId getClosestCell(const GlobalPoint& r) const ; 00017 00018 private: 00020 int etaRing(HcalSubdetector bc, double abseta) const; 00021 int phiBin(double phi, int etaring) const; 00022 00023 const HcalTopology * theTopology; 00024 mutable DetId::Detector lastReqDet_; 00025 mutable int lastReqSubdet_; 00026 }; 00027 00028 00029 #endif 00030