19 #include <TDirectoryFile.h>
42 std::vector<std::string> &listLayers);
59 std::string strName, Int_t nIdxX, Int_t nIdxY, Float_t fAll, Float_t fNumOcc, Float_t fNumWarn, Float_t fNumErr);
81 desc.
add<
double>(
"cutErr", 0.05);
82 desc.
add<
double>(
"cutLowErr", 0.00);
83 desc.
add<
double>(
"cutWarn", 0.05);
84 descriptions.
add(
"GEMDQMHarvester", desc);
92 drawSummaryHistogram(store);
96 Float_t fReportSummary = -1.0;
98 std::string strSrcDigiOcc =
"GEM/Digis/summaryOccDigi";
99 std::string strSrcStatusA =
"GEM/DAQStatus/chamberAllStatus";
100 std::string strSrcStatusW =
"GEM/DAQStatus/chamberWarnings";
101 std::string strSrcStatusE =
"GEM/DAQStatus/chamberErrors";
104 std::string strSrcVFATStatusW =
"GEM/DAQStatus/vfat_statusWarnSum";
105 std::string strSrcVFATStatusE =
"GEM/DAQStatus/vfat_statusErrSum";
116 if (h2SrcDigiOcc !=
nullptr && h2SrcStatusA !=
nullptr && h2SrcStatusW !=
nullptr && h2SrcStatusE !=
nullptr) {
118 createSummaryHist(store, h2SrcStatusE, h2Sum, listLayer_);
120 refineSummaryHistogram(strTitleSummary, h2Sum, h2SrcDigiOcc, h2SrcStatusA, h2SrcStatusE, h2SrcStatusW);
122 for (
const auto &strSuffix : listLayer_) {
126 if (h2SrcVFATOcc ==
nullptr || h2SrcVFATStatusW ==
nullptr || h2SrcVFATStatusE ==
nullptr)
130 createSummaryVFAT(store, h2SrcVFATStatusE, strSuffix, h2SumVFAT);
131 refineSummaryVFAT(strSuffix, h2SumVFAT, h2SrcVFATOcc, h2SrcVFATStatusE, h2SrcVFATStatusW);
132 TString strNewTitle = h2SrcVFATStatusE->
getTitle();
133 h2SumVFAT->
setTitle((
const char *)strNewTitle.ReplaceAll(
"errors",
"errors/warnings"));
145 for (Int_t
i = 1;
i <= nBinX;
i++) {
148 for (Int_t
i = 1;
i <= nBinY;
i++) {
159 std::vector<std::string> &listLayers) {
163 h2Sum = store->
book2D(
"reportSummaryMap",
"", nBinX, 0.5, nBinX + 0.5, nBinY, 0.5, nBinY + 0.5);
169 for (Int_t
i = 1;
i <= nBinX;
i++)
171 for (Int_t
i = 1;
i <= nBinY;
i++) {
173 auto nPos = strLabelFull.find(
';');
174 auto strLabel = strLabelFull.substr(0, nPos);
175 listLayers.push_back(strLabelFull.substr(nPos + 1));
188 h2Sum = store->
book2D(
"vfat_statusSummary" + strSuffix,
"", nBinX, 0.5, nBinX + 0.5, nBinY, -0.5, nBinY - 0.5);
189 copyLabels(h2Src, h2Sum);
193 std::string strName, Int_t nIdxX, Int_t nIdxY, Float_t fAll, Float_t fNumOcc, Float_t fNumWarn, Float_t fNumErr) {
194 if (fNumErr > fCutErr_ * fAll)
196 else if (fNumErr > fCutLowErr_ * fAll)
198 else if (fNumWarn > fCutWarn_ * fAll)
200 else if (fNumOcc > 0)
214 Int_t nAllBin = 0, nFineBin = 0;
215 for (Int_t
j = 1;
j <= nBinY;
j++) {
218 for (Int_t
i = 1;
i <= nBinX;
i++) {
224 Int_t nRes = assessOneBin(strName,
i,
j, fStatusAll, fOcc, fStatusWarn, fStatusErr);
233 return ((Float_t)nFineBin) / nAllBin;
242 for (Int_t
j = 1;
j <= nBinY;
j++) {
244 for (Int_t
i = 1;
i <= nBinX;
i++) {
248 Float_t fStatusAll = fOcc + fStatusWarn + fStatusErr;
250 Int_t nRes = assessOneBin(strName,
i,
j, fStatusAll, fOcc, fStatusWarn, fStatusErr);
virtual std::string getTitle() const
get MonitorElement title
virtual void setTitle(const std::string &title)
set (ie. change) histogram/profile title
virtual TH2F * getTH2F() const
MonitorElement * bookFloat(TString const &name, FUNC onbooking=NOOP())
void createSummaryVFAT(edm::Service< DQMStore > &store, MonitorElement *h2Src, std::string strSuffix, MonitorElement *&h2Sum)
virtual int getNbinsY() const
get # of bins in Y-axis
void createSummaryHist(edm::Service< DQMStore > &store, MonitorElement *h2Src, MonitorElement *&h2Sum, std::vector< std::string > &listLayers)
Int_t refineSummaryVFAT(std::string strName, MonitorElement *h2Sum, MonitorElement *h2SrcOcc, MonitorElement *h2SrcStatusE, MonitorElement *h2SrcStatusW)
#define DEFINE_FWK_MODULE(type)
void setCurrentFolder(std::string const &fullpath) override
~GEMDQMHarvester() override
virtual std::string getAxisTitle(int axis=1) const
get x-, y- or z-axis title (axis=1, 2, 3 respectively)
void copyLabels(MonitorElement *h2Src, MonitorElement *h2Dst)
std::vector< std::string > listLayer_
virtual void setXTitle(std::string const &title)
virtual int getNbinsX() const
get # of bins in X-axis
std::vector< std::vector< Float_t > > TableStatusOcc
Float_t refineSummaryHistogram(std::string strName, MonitorElement *h2Sum, MonitorElement *h2SrcOcc, MonitorElement *h2SrcAllNum, MonitorElement *h2SrcStatusE, MonitorElement *h2SrcStatusW)
void dqmEndLuminosityBlock(DQMStore::IBooker &, DQMStore::IGetter &, edm::LuminosityBlock const &, edm::EventSetup const &) override
virtual MonitorElement * get(std::string const &fullpath) const
ParameterDescriptionBase * add(U const &iLabel, T const &value)
virtual void setBinLabel(int bin, const std::string &label, int axis=1)
set bin label for x, y or z axis (axis=1, 2, 3 respectively)
virtual double getBinContent(int binx) const
get content of bin (1-D)
void drawSummaryHistogram(edm::Service< DQMStore > &store)
Int_t assessOneBin(std::string strName, Int_t nIdxX, Int_t nIdxY, Float_t fAll, Float_t fNumOcc, Float_t fNumWarn, Float_t fNumErr)
virtual void setYTitle(std::string const &title)
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
virtual void setBinContent(int binx, double content)
set content of bin (1-D)
MonitorElement * book2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, FUNC onbooking=NOOP())
T getParameter(std::string const &) const
GEMDQMHarvester(const edm::ParameterSet &)
void add(std::string const &label, ParameterSetDescription const &psetDescription)
std::vector< std::vector< Int_t > > TableStatusNum
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
void dqmEndJob(DQMStore::IBooker &, DQMStore::IGetter &) override