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( const HcalTopology* topology ); 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 int nPhiBinsHF = ( useUpgradeConfigurationHFTowers_ ? 36 : 18 ); 00027 return (abs(ieta) < firstHFTower()) ? 72 : nPhiBinsHF; 00028 } 00029 00030 int firstHFTower() const {return 29;} 00031 int nTowers() const {return 32;} 00032 00035 int hfTowerEtaSize(int ieta) const; 00036 00038 int firstHFRingInTower(int ietaTower) const; 00039 00041 void towerEtaBounds(int ieta, double & eta1, double & eta2) const; 00042 00043 void setUpgradeConfigurationHFTowers(bool value) { 00044 useUpgradeConfigurationHFTowers_ = value; 00045 } 00046 00047 private: 00048 const HcalTopology* theTopology; 00049 bool useShortFibers_; 00050 bool useHFQuadPhiRings_; 00051 bool useUpgradeConfigurationHFTowers_; 00052 }; 00053 00054 #endif 00055