00001 #ifndef REGIONS_H
00002 #define REGIONS_H
00003
00004 #include <vector>
00005 #include <map>
00006 #include <string>
00007
00008 class Regions{
00009 bool m_loadNames;
00010
00011 int m_nb_regions;
00012
00013 std::vector<float> m_eta_min;
00014 std::vector<float> m_eta_max;
00015
00016 std::vector<float> m_phi_min;
00017 std::vector<float> m_phi_max;
00018 std::vector<std::string> m_names;
00019
00020 bool m_doMacroRegions, m_useAbsEta;
00021 void collectMacroRegionsSL();
00022 void collectMacroRegionsSL_UpDn();
00023 void collectMacroRegionsSL_SplitBAR();
00024 void useSectors();
00025
00026 std::map<int, int> m_macroRegionIdxMap;
00027
00028 std::vector<std::string> m_macroRegionName;
00029 std::vector<double> m_macroRegionInnerEta, m_macroRegionDeltaEta;
00030 public:
00031 static
00032 #if __cplusplus < 201100
00033 const
00034 #else
00035 constexpr
00036 #endif // C++11
00037 double EtaTanLimit = 2.0;
00038 void PrintRegions() const;
00039 unsigned int GetNRegions() const;
00040 bool verb;
00041 Regions(std::string inRegionFile, int doMacroRegionsFlag = 0);
00042 int GetRegion(double eta, const double phi) const;
00043 float GetRegionDeltaEta(const int r_i) const;
00044 float GetRegionInnerEta(const int r_i) const;
00045 std::string GetRegionName(const int r_i) const;
00046 std::string GetRegionName(const double eta, const double phi) const;
00047 };
00048
00049 #endif