Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:07:28

0001 #ifndef TrigTowerQuantity_h
0002 #define TrigTowerQuantity_h
0003 
0004 /**
0005  *  file:       TrigTowerQuantity.h
0006  *  Author:     Viktor Khristenko
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   }  // namespace quantity
0092 }  // namespace hcaldqm
0093 
0094 #endif