text: #include "DQM/HcalCommon/interface/TrigTowerQuantity.h"
  
  namespace hcaldqm {
    namespace quantity {
      int getValue_TTiphi(HcalTrigTowerDetId const &tid) { return tid.iphi(); }
  
      int getValue_TTieta(HcalTrigTowerDetId const &tid) { return tid.ieta() < 0 ? tid.ieta() + 41 : tid.ieta() + 40; }
  
      int getValue_TTdepth(HcalTrigTowerDetId const &tid) { return tid.depth(); }
  
      int getValue_TTSubdet(HcalTrigTowerDetId const &tid) { return tid.ietaAbs() < 29 ? 0 : 1; }
  
      int getValue_TTSubdetPM(HcalTrigTowerDetId const &tid) {
        int x = tid.ietaAbs() < 29 ? 0 : 2;
        return tid.ieta() > 0 ? x + 1 : x;
      }
  
      int getValue_TTieta2x3(HcalTrigTowerDetId const &tid) {
        return tid.ieta() < 0 ? tid.ieta() + 32 : tid.ieta() - 29 + 4;
      }
  
      uint32_t getBin_TTiphi(HcalTrigTowerDetId const &tid) { return (uint32_t)(getValue_TTiphi(tid)); }
  
      uint32_t getBin_TTieta(HcalTrigTowerDetId const &tid) { return (uint32_t)(getValue_TTieta(tid) + 1); }
  
      uint32_t getBin_TTdepth(HcalTrigTowerDetId const &tid) { return (uint32_t)(getValue_TTdepth(tid) + 1); }
  
      uint32_t getBin_TTSubdet(HcalTrigTowerDetId const &tid) { return (uint32_t)(getValue_TTSubdet(tid) + 1); }
  
      uint32_t getBin_TTSubdetPM(HcalTrigTowerDetId const &tid) { return (uint32_t)(getValue_TTSubdetPM(tid) + 1); }
  
      uint32_t getBin_TTieta2x3(HcalTrigTowerDetId const &tid) { return (uint32_t)(getValue_TTieta2x3(tid) + 1); }
  
      HcalTrigTowerDetId getTid_TTiphi(int v) { return HcalTrigTowerDetId(1, v); }
  
      HcalTrigTowerDetId getTid_TTieta(int v) { return HcalTrigTowerDetId(v < 41 ? v - 41 : v - 40, 1); }
  
      HcalTrigTowerDetId getTid_TTdepth(int v) { return HcalTrigTowerDetId(1, 1, v); }
  
      HcalTrigTowerDetId getTid_TTSubdet(int v) { return HcalTrigTowerDetId(v == 0 ? 1 : 29, 1); }
  
      HcalTrigTowerDetId getTid_TTSubdetPM(int v) {
        return HcalTrigTowerDetId(v % 2 == 0 ? -(v >= 2 ? 29 : 1) : (v >= 2 ? 29 : 1), 1);
      }
  
      HcalTrigTowerDetId getTid_TTieta2x3(int v) {
        //	since numbering goes as
        //	-32 -29 29 32
        //	0   3   4   7
        return HcalTrigTowerDetId(v < 4 ? -(3 - v + 29) : (v - 4) + 29, 1);
      }
  
      std::vector<std::string> getLabels_TTiphi() { return std::vector<std::string>(); }
      std::vector<std::string> getLabels_TTieta() {
        char name[10];
        std::vector<std::string> labels;
        for (int i = 0; i < 82; i++) {
          sprintf(name, "%d", getTid_TTieta(i).ieta());
          labels.push_back(name);
        }
        return labels;
      }
  
      std::vector<std::string> getLabels_TTieta2x3() {
        char name[10];
        std::vector<std::string> labels;
        for (int i = 0; i < 8; i++) {
          sprintf(name, "%d", getTid_TTieta2x3(i).ieta());
          labels.push_back(name);
        }
        return labels;
      }
  
      std::vector<std::string> getLabels_TTdepth() { return std::vector<std::string>(); }
  
      std::vector<std::string> getLabels_TTSubdet() {
        std::vector<std::string> labels;
        labels.reserve(2);
        for (int i = 0; i < 2; i++)
          labels.push_back(constants::TPSUBDET_NAME[getTid_TTSubdet(i).ietaAbs() < 29 ? 0 : 1]);
        return labels;
      }
  
      std::vector<std::string> getLabels_TTSubdetPM() {
        std::vector<std::string> labels;
        for (int i = 0; i < 4; i++) {
          HcalTrigTowerDetId tid = getTid_TTSubdetPM(i);
          int x = tid.ietaAbs() < 29 ? 0 : 2;
          labels.push_back(constants::TPSUBDETPM_NAME[tid.ieta() > 0 ? x + 1 : x]);
          return labels;
        }
        return labels;
      }
    }  // namespace quantity
  }  // namespace hcaldqm
  