CMS 3D CMS Logo

/afs/cern.ch/work/a/aaltunda/public/www/CMSSW_6_2_7/src/Geometry/HcalTowerAlgo/interface/HcalTrigTowerGeometry.h

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