30 LogVerbatim(
"DTDQM|DTMonitorClient|DTChamberEfficiencyClient") <<
"DTChamberEfficiencyClient: Constructor called";
36 LogVerbatim(
"DTDQM|DTMonitorClient|DTChamberEfficiencyClient") <<
"DTChamberEfficiencyClient: Destructor called";
48 LogVerbatim(
"DTDQM|DTMonitorClient|DTChamberEfficiencyClient") <<
"DTChamberEfficiencyClient: endluminosityBlock";
52 LogVerbatim(
"DTDQM|DTMonitorClient|DTChamberEfficiencyClient") <<
"DTChamberEfficiencyClient: endRun";
61 stringstream wheel_str;
67 MonitorElement* MECountAll = igetter.
get(
"DT/05-ChamberEff/Task/hCountSectVsChamb_All_W" + wheel_str.str());
68 MonitorElement* MECountQual = igetter.
get(
"DT/05-ChamberEff/Task/hCountSectVsChamb_Qual_W" + wheel_str.str());
69 MonitorElement* MEExtrap = igetter.
get(
"DT/05-ChamberEff/Task/hExtrapSectVsChamb_W" + wheel_str.str());
72 if (!MECountAll || !(MECountAll->
getTH2F())) {
73 edm::LogWarning(
"DTChamberEfficiencyClient") <<
"ME not available" << std::endl;
77 TH2F* hCountAll = MECountAll->
getTH2F();
78 TH2F* hCountQual = MECountQual->
getTH2F();
79 TH2F* hExtrap = MEExtrap->
getTH2F();
89 const float numerAll = hCountAll->GetBinContent(
j,
k);
90 const float numerQual = hCountQual->GetBinContent(
j,
k);
91 const float denom = hExtrap->GetBinContent(
j,
k);
94 const float effAll = numerAll /
denom;
95 const float eff_error_All =
sqrt((effAll + effAll * effAll) /
denom);
97 const float effQual = numerQual /
denom;
98 const float eff_error_Qual =
sqrt((effQual + effQual * effQual) /
denom);
119 if (segmentWheelSummary !=
nullptr) {
120 for (
int sector = 1; sector <= 12; sector++) {
121 float nFailingChambers = 0.;
124 double errorsum = 0.;
131 if (tmpefficiency < 0.2 || tmpvariance == 0) {
136 meaneff += tmpefficiency / tmpvariance;
137 errorsum += 1. / tmpvariance;
139 LogTrace(
"DTDQM|DTMonitorClient|DTChamberEfficiencyClient")
140 <<
"Wheel: " <<
wheel <<
" Stat: " <<
station <<
" Sect: " << sector <<
" status: " << meaneff / errorsum
144 if (sector == 4 || sector == 10) {
145 int whichSector = (sector == 4) ? 13 : 14;
147 const double tmpefficiency = segmentWheelSummary->
getBinContent(whichSector, 4);
148 const double tmpvariance =
pow(segmentWheelSummary->
getBinError(whichSector, 4), 2);
150 if (tmpefficiency > 0.2 && tmpvariance != 0) {
151 meaneff += tmpefficiency / tmpvariance;
152 errorsum += 1. / tmpvariance;
157 double eff_result = 0;
159 eff_result = meaneff / errorsum;
161 if (nFailingChambers != 0) {
162 if (sector != 4 && sector != 10)
163 eff_result = eff_result * (4. - nFailingChambers) / 4.;
165 eff_result = eff_result * (5. - nFailingChambers) / 5.;
168 if (eff_result > 0.7)
170 else if (eff_result < 0.7 && eff_result > 0.5)
172 else if (eff_result < 0.5 && eff_result > 0.3)
174 else if (eff_result < 0.3 && eff_result > 0.)
194 for (
int wh = -2; wh <= 2; wh++) {
197 string histoNameAll =
"EfficiencyMap_All_W" +
wheel.str();
198 string histoTitleAll =
"Efficiency map for all segments for wheel " +
wheel.str();
200 string histoNameQual =
"EfficiencyMap_Qual_W" +
wheel.str();
201 string histoTitleQual =
"Efficiency map for quality segments for wheel " +
wheel.str();
203 string histoNameEff =
"Efficiency_W" +
wheel.str();
204 string histoTitleEff =
"Segment efficiency, wheel " +
wheel.str();
208 summaryHistos[wh + 2][0] = ibooker.
book2D(histoNameAll.c_str(), histoTitleAll.c_str(), 14, 1., 15., 4, 1., 5.);
215 EffDistrPerWh[wh + 2] = ibooker.
book1D(histoNameEff.c_str(), histoTitleEff.c_str(), 51, 0., 1.02);
220 summaryHistos[wh + 2][1] = ibooker.
book2D(histoNameQual.c_str(), histoTitleQual.c_str(), 14, 1., 15., 4, 1., 5.);
Log< level::Info, true > LogVerbatim
virtual void setCurrentFolder(std::string const &fullpath)
std::map< int, MonitorElement * > EffDistrPerWh
T getUntrackedParameter(std::string const &, T const &) const
virtual TH2F * getTH2F() const
virtual void Reset()
Remove all data from the ME, keept the empty histogram with all its settings.
void beginRun(const edm::Run &, const edm::EventSetup &) override
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)
void dqmEndLuminosityBlock(DQMStore::IBooker &, DQMStore::IGetter &, edm::LuminosityBlock const &, edm::EventSetup const &) override
virtual int getNbinsY() const
get # of bins in Y-axis
void dqmEndJob(DQMStore::IBooker &, DQMStore::IGetter &) override
void bookHistos(DQMStore::IBooker &)
book the report summary
virtual void setBinContent(int binx, double content)
set content of bin (1-D)
MonitorElement * summaryHistos[5][2]
MonitorElement * book2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, FUNC onbooking=NOOP())
virtual MonitorElement * get(std::string const &fullpath) const
const DTGeometry * muonGeom
MonitorElement * globalEffSummary
virtual int getNbinsX() const
get # of bins in X-axis
virtual double getBinError(int binx) const
get uncertainty on content of bin (1-D) - See TH1::GetBinError for details
~DTChamberEfficiencyClient() override
Destructor.
virtual void setBinError(int binx, double error)
set uncertainty on content of bin (1-D)
Log< level::Warning, false > LogWarning
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
edm::ESGetToken< DTGeometry, MuonGeometryRecord > muonGeomToken_
DTChamberEfficiencyClient(const edm::ParameterSet &ps)
Constructor.
MonitorElement * globalEffDistr
Power< A, B >::type pow(const A &a, const B &b)
virtual double getBinContent(int binx) const
get content of bin (1-D)
virtual void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)