File indexing completed on 2024-04-06 12:07:28
0001 #ifndef TrigTowerQuantity_h
0002 #define TrigTowerQuantity_h
0003
0004
0005
0006
0007
0008
0009 #include "DQM/HcalCommon/interface/Quantity.h"
0010
0011 namespace hcaldqm {
0012 namespace quantity {
0013 enum TrigTowerQuantityType {
0014 fTTiphi = 0,
0015 fTTieta = 1,
0016 fTTdepth = 2,
0017 fTTSubdet = 3,
0018 fTTSubdetPM = 4,
0019 fTTieta2x3 = 5,
0020 nTrigTowerQuantityType = 6
0021 };
0022
0023 int getValue_TTiphi(HcalTrigTowerDetId const &);
0024 int getValue_TTieta(HcalTrigTowerDetId const &);
0025 int getValue_TTdepth(HcalTrigTowerDetId const &);
0026 int getValue_TTSubdet(HcalTrigTowerDetId const &);
0027 int getValue_TTSubdetPM(HcalTrigTowerDetId const &);
0028 int getValue_TTieta2x3(HcalTrigTowerDetId const &);
0029 uint32_t getBin_TTiphi(HcalTrigTowerDetId const &);
0030 uint32_t getBin_TTieta(HcalTrigTowerDetId const &);
0031 uint32_t getBin_TTdepth(HcalTrigTowerDetId const &);
0032 uint32_t getBin_TTSubdet(HcalTrigTowerDetId const &);
0033 uint32_t getBin_TTSubdetPM(HcalTrigTowerDetId const &);
0034 uint32_t getBin_TTieta2x3(HcalTrigTowerDetId const &);
0035 HcalTrigTowerDetId getTid_TTiphi(int);
0036 HcalTrigTowerDetId getTid_TTieta(int);
0037 HcalTrigTowerDetId getTid_TTdepth(int);
0038 HcalTrigTowerDetId getTid_TTSubdet(int);
0039 HcalTrigTowerDetId getTid_TTSubdetPM(int);
0040 HcalTrigTowerDetId getTid_TTieta2x3(int);
0041 std::vector<std::string> getLabels_TTiphi();
0042 std::vector<std::string> getLabels_TTieta();
0043 std::vector<std::string> getLabels_TTdepth();
0044 std::vector<std::string> getLabels_TTSubdet();
0045 std::vector<std::string> getLabels_TTSubdetPM();
0046 std::vector<std::string> getLabels_TTieta2x3();
0047
0048 typedef int (*getValueType_tid)(HcalTrigTowerDetId const &);
0049 typedef uint32_t (*getBinType_tid)(HcalTrigTowerDetId const &);
0050 typedef HcalTrigTowerDetId (*getTid_tid)(int);
0051 typedef std::vector<std::string> (*getLabels_tid)();
0052 getValueType_tid const getValue_functions_tid[nTrigTowerQuantityType] = {
0053 getValue_TTiphi, getValue_TTieta, getValue_TTdepth, getValue_TTSubdet, getValue_TTSubdetPM, getValue_TTieta2x3};
0054 getBinType_tid const getBin_functions_tid[nTrigTowerQuantityType] = {
0055 getBin_TTiphi, getBin_TTieta, getBin_TTdepth, getBin_TTSubdet, getBin_TTSubdetPM, getBin_TTieta2x3};
0056 getTid_tid const getTid_functions_tid[nTrigTowerQuantityType] = {
0057 getTid_TTiphi, getTid_TTieta, getTid_TTdepth, getTid_TTSubdet, getTid_TTSubdetPM, getTid_TTieta2x3};
0058 getLabels_tid const getLabels_functions_tid[nTrigTowerQuantityType] = {getLabels_TTiphi,
0059 getLabels_TTieta,
0060 getLabels_TTdepth,
0061 getLabels_TTSubdet,
0062 getLabels_TTSubdetPM,
0063 getLabels_TTieta2x3};
0064 std::string const name_tid[nTrigTowerQuantityType] = {
0065 "TTiphi", "TTieta", "TTdepth", "TTSubdet", "TTSubdetPM", "TTieta"};
0066 double const min_tid[nTrigTowerQuantityType] = {0.5, 0, -0.5, 0, 0, 0};
0067 double const max_tid[nTrigTowerQuantityType] = {72.5, 82, 0.5, 2, 4, 8};
0068 int const nbins_tid[nTrigTowerQuantityType] = {72, 82, 1, 2, 4, 8};
0069
0070 class TrigTowerQuantity : public Quantity {
0071 public:
0072 TrigTowerQuantity() {}
0073 TrigTowerQuantity(TrigTowerQuantityType type, bool isLog = false)
0074 : Quantity(name_tid[type], isLog), _type(type) {}
0075 ~TrigTowerQuantity() override {}
0076 TrigTowerQuantity *makeCopy() override { return new TrigTowerQuantity(_type, _isLog); }
0077
0078 int getValue(HcalTrigTowerDetId const &tid) override { return getValue_functions_tid[_type](tid); }
0079 uint32_t getBin(HcalTrigTowerDetId const &tid) override { return getBin_functions_tid[_type](tid); }
0080
0081 QuantityType type() override { return fTrigTowerQuantity; }
0082 int nbins() override { return nbins_tid[_type]; }
0083 double min() override { return min_tid[_type]; }
0084 double max() override { return max_tid[_type]; }
0085 bool isCoordinate() override { return true; }
0086 std::vector<std::string> getLabels() override { return getLabels_functions_tid[_type](); }
0087
0088 protected:
0089 TrigTowerQuantityType _type;
0090 };
0091 }
0092 }
0093
0094 #endif