00001 #ifndef HcalTrigTowerGeometry_h 00002 #define HcalTrigTowerGeometry_h 00003 00004 #include "Geometry/CaloTopology/interface/HcalTopology.h" 00005 #include "DataFormats/DetId/interface/DetId.h" 00006 #include <vector> 00007 class HcalTrigTowerDetId; 00008 class HcalDetId; 00009 00010 class HcalTrigTowerGeometry { 00011 public: 00012 00013 HcalTrigTowerGeometry(); 00014 00015 void setupHF(bool useShortFibers, bool useQuadRings); 00016 00018 std::vector<HcalTrigTowerDetId> towerIds(const HcalDetId & cellId) const; 00019 std::vector<HcalDetId> detIds(const HcalTrigTowerDetId &) const; 00020 00022 //std::vector<DetId> getValidDetIds(DetId::Detector det, int subdet) const; 00023 00025 int nPhiBins(int ieta) const { 00026 return (abs(ieta) < firstHFTower()) ? 72 : 18; 00027 } 00028 00029 int firstHFTower() const {return 29;} 00030 int nTowers() const {return 32;} 00031 00034 int hfTowerEtaSize(int ieta) const; 00035 00037 int firstHFRingInTower(int ietaTower) const; 00038 00040 void towerEtaBounds(int ieta, double & eta1, double & eta2) const; 00041 00042 private: 00043 HcalTopology theTopology; 00044 bool useShortFibers_; 00045 bool useHFQuadPhiRings_; 00046 }; 00047 00048 #endif 00049