Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2023-10-25 09:41:57

0001 #ifndef MESetBinningUtils_H
0002 #define MESetBinningUtils_H
0003 
0004 #include "DQMServices/Core/interface/DQMStore.h"
0005 #include "Geometry/EcalMapping/interface/EcalElectronicsMapping.h"
0006 
0007 #include <string>
0008 
0009 class DetId;
0010 class EcalElectronicsId;
0011 namespace edm {
0012   class ParameterSet;
0013   class ParameterSetDescription;
0014 }  // namespace edm
0015 
0016 namespace ecaldqm {
0017   namespace binning {
0018     enum ObjectType {
0019       kEB,
0020       kEE,
0021       kEEm,
0022       kEEp,
0023       kSM,
0024       kEBSM,
0025       kEESM,
0026       kSMMEM,
0027       kEBSMMEM,
0028       kEESMMEM,
0029       kEcal,
0030       kMEM,
0031       kEBMEM,
0032       kEEMEM,
0033       kEcal2P,
0034       kEcal3P,
0035       kEE2P,
0036       kMEM2P,
0037       kChannel,
0038       nObjType
0039     };
0040 
0041     enum BinningType {
0042       kCrystal,
0043       kTriggerTower,
0044       kSuperCrystal,
0045       kPseudoStrip,
0046       kTCC,
0047       kDCC,
0048       kProjEta,
0049       kProjPhi,
0050       kRCT,
0051       kUser,
0052       kReport,
0053       kTrend,
0054       nBinType
0055     };
0056 
0057     enum Constants {
0058       nPresetBinnings = kRCT + 1,
0059 
0060       nEBSMEta = 85,
0061       nEBSMPhi = 20,
0062       nEESMX = 40,
0063       nEESMXRed = 30,  // for EE+-01&05&09
0064       nEESMXExt = 45,  // for EE+-02&08
0065       nEESMY = 40,
0066       nEESMYRed = 35,  // for EE+-03&07
0067 
0068       nEBEtaBins = 34,
0069       nEEEtaBins = 20,
0070       nPhiBins = 36
0071     };
0072 
0073     struct AxisSpecs {
0074       int nbins;
0075       float low, high;
0076       std::vector<float> edges;
0077       std::vector<std::string> labels;
0078       std::string title;
0079       AxisSpecs() : nbins(0), low(0.), high(0.), edges(0), labels(0), title("") { ; };
0080     };
0081 
0082     AxisSpecs getBinning(EcalElectronicsMapping const *, ObjectType, BinningType, bool, int, unsigned);
0083 
0084     int findBin1D(EcalElectronicsMapping const *, ObjectType, BinningType, DetId const &);
0085     int findBin1D(EcalElectronicsMapping const *, ObjectType, BinningType, EcalElectronicsId const &);
0086     int findBin1D(EcalElectronicsMapping const *, ObjectType, BinningType, int);
0087 
0088     int findBin2D(EcalElectronicsMapping const *, ObjectType, BinningType, DetId const &);
0089     int findBin2D(EcalElectronicsMapping const *, ObjectType, BinningType, EcalElectronicsId const &);
0090     int findBin2D(EcalElectronicsMapping const *, ObjectType, BinningType, int);
0091 
0092     unsigned findPlotIndex(EcalElectronicsMapping const *, ObjectType, DetId const &);
0093     unsigned findPlotIndex(EcalElectronicsMapping const *, ObjectType, EcalElectronicsId const &);
0094     unsigned findPlotIndex(EcalElectronicsMapping const *, ObjectType, int, BinningType _btype = kDCC);
0095 
0096     ObjectType getObject(ObjectType, unsigned);
0097 
0098     unsigned getNObjects(ObjectType);
0099 
0100     bool isValidIdBin(EcalElectronicsMapping const *, ObjectType, BinningType, unsigned, int);
0101 
0102     std::string channelName(EcalElectronicsMapping const *, uint32_t, BinningType _btype = kDCC);
0103 
0104     uint32_t idFromName(std::string const &);
0105     uint32_t idFromBin(ObjectType, BinningType, unsigned, int);
0106 
0107     AxisSpecs formAxis(edm::ParameterSet const &);
0108     void fillAxisDescriptions(edm::ParameterSetDescription &);
0109 
0110     ObjectType translateObjectType(std::string const &);
0111     BinningType translateBinningType(std::string const &);
0112     dqm::legacy::MonitorElement::Kind translateKind(std::string const &);
0113 
0114     /* Functions used only internally within binning namespace */
0115 
0116     // used for SM binnings
0117     int xlow_(int);
0118     int ylow_(int);
0119 
0120     AxisSpecs getBinningEB_(BinningType, bool, int);
0121     AxisSpecs getBinningEE_(BinningType, bool, int, int);
0122     AxisSpecs getBinningSM_(BinningType, bool, unsigned, int, EcalElectronicsMapping const *);
0123     AxisSpecs getBinningSMMEM_(BinningType, bool, unsigned, int);
0124     AxisSpecs getBinningEcal_(BinningType, bool, int);
0125     AxisSpecs getBinningMEM_(BinningType, bool, int, int);
0126 
0127     int findBinCrystal_(EcalElectronicsMapping const *, ObjectType, DetId const &, int = -1);
0128     int findBinCrystal_(EcalElectronicsMapping const *, ObjectType, EcalElectronicsId const &);
0129     int findBinTriggerTower_(EcalElectronicsMapping const *, ObjectType, DetId const &);
0130     int findBinPseudoStrip_(EcalElectronicsMapping const *, ObjectType, DetId const &);
0131     int findBinRCT_(ObjectType, DetId const &);
0132     int findBinSuperCrystal_(EcalElectronicsMapping const *, ObjectType, DetId const &, int = -1);
0133     int findBinSuperCrystal_(EcalElectronicsMapping const *, ObjectType, EcalElectronicsId const &);
0134   }  // namespace binning
0135 }  // namespace ecaldqm
0136 
0137 #endif