File indexing completed on 2024-09-11 04:32:44
0001
0002 #ifndef ElectronDqmHarvesterBase_h
0003 #define ElectronDqmHarvesterBase_h
0004
0005 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0006 #include <Rtypes.h>
0007 #include <string>
0008 #include <vector>
0009
0010
0011 #include "FWCore/ServiceRegistry/interface/Service.h"
0012 #include "DQMServices/Core/interface/DQMEDHarvester.h"
0013 #include "DQMServices/Core/interface/DQMStore.h"
0014
0015 class ElectronDqmHarvesterBase : public DQMEDHarvester {
0016 protected:
0017 explicit ElectronDqmHarvesterBase(const edm::ParameterSet &conf);
0018 ~ElectronDqmHarvesterBase() override;
0019
0020
0021 void beginJob() override;
0022 void dqmEndLuminosityBlock(DQMStore::IBooker &,
0023 DQMStore::IGetter &,
0024 edm::LuminosityBlock const &,
0025 edm::EventSetup const &) override;
0026 void dqmEndJob(DQMStore::IBooker &, DQMStore::IGetter &) override;
0027
0028
0029 virtual void finalize(DQMStore::IBooker &iBooker, DQMStore::IGetter &iGetter) {
0030 }
0031
0032
0033 bool finalStepDone() { return finalDone_; }
0034 int verbosity() { return verbosity_; }
0035 MonitorElement *get(DQMStore::IGetter &iGetter, const std::string &name);
0036 void remove(DQMStore::IBooker &iBooker, DQMStore::IGetter &iGetter, const std::string &name);
0037
0038 void setBookPrefix(const std::string &);
0039 void setBookIndex(short);
0040 void setBookEfficiencyFlag(const bool &);
0041 void setBookStatOverflowFlag(const bool &);
0042
0043 MonitorElement *bookH1(DQMStore::IBooker &,
0044 const std::string &name,
0045 const std::string &title,
0046 int nchX,
0047 double lowX,
0048 double highX,
0049 const std::string &titleX = "",
0050 const std::string &titleY = "Events",
0051 Option_t *option = "E1 P");
0052
0053 MonitorElement *bookH1withSumw2(DQMStore::IBooker &,
0054 const std::string &name,
0055 const std::string &title,
0056 int nchX,
0057 double lowX,
0058 double highX,
0059 const std::string &titleX = "",
0060 const std::string &titleY = "Events",
0061 Option_t *option = "E1 P");
0062
0063 MonitorElement *bookH2(DQMStore::IBooker &,
0064 const std::string &name,
0065 const std::string &title,
0066 int nchX,
0067 double lowX,
0068 double highX,
0069 int nchY,
0070 double lowY,
0071 double highY,
0072 const std::string &titleX = "",
0073 const std::string &titleY = "",
0074 Option_t *option = "COLZ");
0075
0076 MonitorElement *bookH2withSumw2(DQMStore::IBooker &,
0077 const std::string &name,
0078 const std::string &title,
0079 int nchX,
0080 double lowX,
0081 double highX,
0082 int nchY,
0083 double lowY,
0084 double highY,
0085 const std::string &titleX = "",
0086 const std::string &titleY = "",
0087 Option_t *option = "COLZ");
0088
0089 MonitorElement *bookP1(DQMStore::IBooker &,
0090 const std::string &name,
0091 const std::string &title,
0092 int nchX,
0093 double lowX,
0094 double highX,
0095 double lowY,
0096 double highY,
0097 const std::string &titleX = "",
0098 const std::string &titleY = "",
0099 Option_t *option = "E1 P");
0100
0101 MonitorElement *bookH1andDivide(DQMStore::IBooker &iBooker,
0102 DQMStore::IGetter &,
0103 const std::string &name,
0104 MonitorElement *num,
0105 MonitorElement *denom,
0106 const std::string &titleX,
0107 const std::string &titleY,
0108 const std::string &title = "");
0109
0110 MonitorElement *bookH2andDivide(DQMStore::IBooker &iBooker,
0111 DQMStore::IGetter &,
0112 const std::string &name,
0113 MonitorElement *num,
0114 MonitorElement *denom,
0115 const std::string &titleX,
0116 const std::string &titleY,
0117 const std::string &title = "");
0118
0119 MonitorElement *cloneH1(DQMStore::IBooker &iBooker,
0120 DQMStore::IGetter &,
0121 const std::string &name,
0122 MonitorElement *original,
0123 const std::string &title = "");
0124
0125 MonitorElement *profileX(DQMStore::IBooker &iBooker,
0126 DQMStore::IGetter &iGetter,
0127 MonitorElement *me2d,
0128 const std::string &title = "",
0129 const std::string &titleX = "",
0130 const std::string &titleY = "",
0131 Double_t minimum = -1111,
0132 Double_t maximum = -1111);
0133
0134 MonitorElement *profileY(DQMStore::IBooker &iBooker,
0135 DQMStore::IGetter &iGetter,
0136 MonitorElement *me2d,
0137 const std::string &title = "",
0138 const std::string &titleX = "",
0139 const std::string &titleY = "",
0140 Double_t minimum = -1111,
0141 Double_t maximum = -1111);
0142
0143 MonitorElement *bookH1andDivide(DQMStore::IBooker &iBooker,
0144 DQMStore::IGetter &iGetter,
0145 const std::string &name,
0146 const std::string &num,
0147 const std::string &denom,
0148 const std::string &titleX,
0149 const std::string &titleY,
0150 const std::string &title = "");
0151
0152 MonitorElement *bookH2andDivide(DQMStore::IBooker &iBooker,
0153 DQMStore::IGetter &,
0154 const std::string &name,
0155 const std::string &num,
0156 const std::string &denom,
0157 const std::string &titleX,
0158 const std::string &titleY,
0159 const std::string &title = "");
0160
0161 MonitorElement *cloneH1(DQMStore::IBooker &iBooker,
0162 DQMStore::IGetter &,
0163 const std::string &name,
0164 const std::string &original,
0165 const std::string &title = "");
0166
0167 MonitorElement *profileX(DQMStore::IBooker &iBooker,
0168 DQMStore::IGetter &iGetter,
0169 const std::string &me2d,
0170 const std::string &title = "",
0171 const std::string &titleX = "",
0172 const std::string &titleY = "",
0173 Double_t minimum = -1111,
0174 Double_t maximum = -1111);
0175
0176 MonitorElement *profileY(DQMStore::IBooker &iBooker,
0177 DQMStore::IGetter &iGetter,
0178 const std::string &me2d,
0179 const std::string &title = "",
0180 const std::string &titleX = "",
0181 const std::string &titleY = "",
0182 Double_t minimum = -1111,
0183 Double_t maximum = -1111);
0184
0185 private:
0186 int verbosity_;
0187 std::string bookPrefix_;
0188 short bookIndex_;
0189 bool bookEfficiencyFlag_ = false;
0190 bool bookStatOverflowFlag_ = false;
0191 bool histoNamesReady;
0192 std::vector<std::string> histoNames_;
0193 std::string finalStep_;
0194 std::string inputFile_;
0195 std::string outputFile_;
0196 std::string inputInternalPath_;
0197 std::string outputInternalPath_;
0198 bool finalDone_;
0199
0200
0201 std::string newName(const std::string &name);
0202 const std::string *find(DQMStore::IGetter &iGetter, const std::string &name);
0203 };
0204
0205 #endif