40 LogTrace (
"DTDQM|DTMonitorClient|DTResolutionAnalysisTest") <<
"[DTResolutionAnalysisTest]: Constructor";
59 LogTrace (
"DTDQM|DTMonitorClient|DTResolutionAnalysisTest") <<
"DTResolutionAnalysisTest: analyzed " <<
nevents <<
" events";
66 LogTrace (
"DTDQM|DTMonitorClient|DTResolutionAnalysisTest") <<
"[DTResolutionAnalysisTest]: BeginJob";
74 LogTrace (
"DTDQM|DTMonitorClient|DTResolutionAnalysisTest") <<
"[DTResolutionAnalysisTest]: BeginRun";
84 LogTrace (
"DTDQM|DTMonitorClient|DTResolutionAnalysisTest") <<
"[DTResolutionAnalysisTest]: Begin of LS transition";
109 dbe->setCurrentFolder(topHistoFolder);
110 globalResSummary = dbe->book2D(
"ResidualsGlbSummary",
"# of SLs with good mean and good sigma of residuals",12,1,13,5,-2,3);
113 dbe->setCurrentFolder(topHistoFolder +
"/00-MeanRes");
114 meanDistr[-2] = dbe->book1D(
"MeanDistr",
"Mean value of the residuals all (cm)",
116 meanDistr[-1] = dbe->book1D(
"MeanDistr_Phi",
"Mean value of the residuals #phi SL (cm)",
118 meanDistr[0] = dbe->book1D(
"MeanDistr_ThetaWh0",
"Mean values of the residuals #theta SL Wh 0 (cm)",
120 meanDistr[1] = dbe->book1D(
"MeanDistr_ThetaWh1",
"Mean value of the residuals #theta SL Wh +/-1 (cm)",
122 meanDistr[2] = dbe->book1D(
"MeanDistr_ThetaWh2",
"Mean value of the residuals #theta SL Wh +/-2 (cm)",
126 string histoTitle =
"# of SLs with good mean of residuals";
127 wheelMeanHistos[3] = dbe->book2D(
"MeanResGlbSummary",histoTitle.c_str(),12,1,13,5,-2,3);
128 wheelMeanHistos[3]->setAxisTitle(
"Sector",1);
129 wheelMeanHistos[3]->setAxisTitle(
"Wheel",2);
132 dbe->setCurrentFolder(topHistoFolder +
"/01-SigmaRes");
133 sigmaDistr[-2] = dbe->book1D(
"SigmaDistr",
"Sigma value of the residuals all (cm)",
135 sigmaDistr[-1] = dbe->book1D(
"SigmaDistr_Phi",
"Sigma value of the residuals #phi SL (cm)",
137 sigmaDistr[0] = dbe->book1D(
"SigmaDistr_ThetaWh0",
"Sigma value of the residuals #theta SL Wh 0 (cm)",
139 sigmaDistr[1] = dbe->book1D(
"SigmaDistr_ThetaWh1",
"Sigma value of the residuals #theta SL Wh +/-1 (cm)",
141 sigmaDistr[2] = dbe->book1D(
"SigmaDistr_ThetaWh2",
"Sigma value of the residuals #theta SL Wh +/-2 (cm)",
144 histoTitle =
"# of SLs with good sigma of residuals";
145 wheelSigmaHistos[3] = dbe->book2D(
"SigmaResGlbSummary",histoTitle.c_str(),12,1,13,5,-2,3);
146 wheelSigmaHistos[3]->setAxisTitle(
"Sector",1);
147 wheelSigmaHistos[3]->setAxisTitle(
"Wheel",2);
151 for (
int wheel=-2; wheel<=2; wheel++){
153 for (
int sector=1; sector<=12; sector++){
162 if (!dbe->dirExists(topHistoFolder)) {
163 LogTrace (
"DTDQM|DTMonitorClient|DTResolutionAnalysisTest")
164 <<
"[DTResolutionAnalysisTest]: Base folder " << topHistoFolder
165 <<
" does not exist. Skipping client operation." << endl;
172 LogTrace (
"DTDQM|DTMonitorClient|DTResolutionAnalysisTest")
173 <<
"[DTResolutionAnalysisTest]: End of Run transition, performing the DQM client operation" << endl;
178 for (vector<DTChamber*>::const_iterator ch_it = muonGeom->chambers().begin();
179 ch_it != muonGeom->chambers().end(); ++ch_it) {
184 for(vector<const DTSuperLayer*>::const_iterator sl_it = (*ch_it)->superLayers().begin();
185 sl_it != (*ch_it)->superLayers().end(); ++sl_it) {
192 float statMean = res_histo->
getMean(1);
193 float statSigma = res_histo->
getRMS(1);
196 TH1F * histo_root = res_histo->
getTH1F();
200 int binSect = slID.
sector();
201 if(slID.
sector() == 13) binSect = 4;
202 else if(slID.
sector() == 14) binSect = 10;
208 if(histo_root->GetEntries()>20) {
209 TF1 *gfit =
new TF1(
"Gaussian",
"gaus",(statMean-(2*statSigma)),(statMean+(2*statSigma)));
211 histo_root->Fit(gfit,
"Q0",
"", -0.1, 0.1);
213 LogWarning (
"DTDQM|DTMonitorModule|DTResolutionAnalysisTask")
214 <<
"[DTResolutionAnalysisTask]: Exception when fitting SL : " << slID;
217 if((binSect == 4 || binSect == 10) && slID.
station() == 4) weight = 1/22.;
218 globalResSummary->Fill(binSect, slID.
wheel(),
weight);
224 mean = gfit->GetParameter(1);
225 sigma = gfit->GetParameter(2);
228 meanDistr[-2]->Fill(mean);
229 sigmaDistr[-2]->Fill(sigma);
234 meanDistr[-1]->Fill(mean);
235 sigmaDistr[-1]->Fill(sigma);
239 MeanHistos[make_pair(slID.
wheel(),binSect)]->setBinContent(binSL, mean);
240 SigmaHistos[make_pair(slID.
wheel(),binSect)]->setBinContent(binSL, sigma);
242 if((slID.
sector() == 13 || slID.
sector() == 14) && binSL == 12) binSL=10;
243 if((slID.
sector() == 13 || slID.
sector() == 14) && binSL == 13) binSL=11;
248 double MeanVal = wheelMeanHistos[slID.
wheel()]->getBinContent(binSect,binSL);
249 double MeanBinVal = (MeanVal > 0. && MeanVal < meanInRange(mean)) ? MeanVal : meanInRange(mean);
250 wheelMeanHistos[slID.
wheel()]->setBinContent(binSect,binSL,MeanBinVal);
252 double SigmaVal = wheelSigmaHistos[slID.
wheel()]->getBinContent(binSect,binSL);
253 double SigmaBinVal = (SigmaVal > 0. && SigmaVal < sigmaInRange(sigma)) ? SigmaVal : sigmaInRange(sigma);
254 wheelSigmaHistos[slID.
wheel()]->setBinContent(binSect,binSL,SigmaBinVal);
257 wheelMeanHistos[slID.
wheel()]->setBinContent(binSect,binSL,meanInRange(mean));
258 wheelSigmaHistos[slID.
wheel()]->setBinContent(binSect,binSL,sigmaInRange(sigma));
263 if((binSect == 4 || binSect == 10) && slID.
station() == 4) weight = 1/22.;
266 if( (meanInRange(mean) > 0.85) && (sigmaInRange(sigma) > 0.85) ) {
267 globalResSummary->Fill(binSect, slID.
wheel(),
weight);
268 wheelMeanHistos[3]->Fill(binSect,slID.
wheel(),
weight);
269 wheelSigmaHistos[3]->Fill(binSect,slID.
wheel(),
weight);
271 if( (meanInRange(mean) < 0.85) && (sigmaInRange(sigma) > 0.85) ) {
272 wheelSigmaHistos[3]->Fill(binSect,slID.
wheel(),
weight);
274 if((meanInRange(mean) > 0.85) && (sigmaInRange(sigma) < 0.85) ) {
275 wheelMeanHistos[3]->Fill(binSect,slID.
wheel(),
weight);
282 LogVerbatim (
"DTDQM|DTMonitorModule|DTResolutionAnalysisTask")
283 <<
"[DTResolutionAnalysisTask] Fit of " << slID
284 <<
" not performed because # entries < 20 ";
287 if((binSect == 4 || binSect == 10) && slID.
station() == 4) weight = 1/22.;
288 globalResSummary->Fill(binSect, slID.
wheel(),
weight);
289 wheelMeanHistos[3]->Fill(binSect,slID.
wheel(),
weight);
290 wheelSigmaHistos[3]->Fill(binSect,slID.
wheel(),
weight);
291 wheelMeanHistos[slID.
wheel()]->setBinContent(binSect,binSL,1.);
292 wheelSigmaHistos[slID.
wheel()]->setBinContent(binSect,binSL,1.);
295 LogWarning (
"DTDQM|DTMonitorModule|DTResolutionAnalysisTask")
296 <<
"[DTResolutionAnalysisTask] Histo: " << getMEName(slID) <<
" not found" << endl;
307 stringstream wheel; wheel <<wh;
309 dbe->setCurrentFolder(topHistoFolder +
"/00-MeanRes");
310 string histoName =
"MeanSummaryRes_W" + wheel.str();
311 string histoTitle =
"# of SLs with wrong mean of residuals (Wheel " + wheel.str() +
")";
312 wheelMeanHistos[wh] = dbe->book2D(histoName.c_str(),histoTitle.c_str(),12,1,13,11,1,12);
313 wheelMeanHistos[wh]->setAxisTitle(
"Sector",1);
314 wheelMeanHistos[wh]->setBinLabel(1,
"MB1_SL1",2);
315 wheelMeanHistos[wh]->setBinLabel(2,
"MB1_SL2",2);
316 wheelMeanHistos[wh]->setBinLabel(3,
"MB1_SL3",2);
317 wheelMeanHistos[wh]->setBinLabel(4,
"MB2_SL1",2);
318 wheelMeanHistos[wh]->setBinLabel(5,
"MB2_SL2",2);
319 wheelMeanHistos[wh]->setBinLabel(6,
"MB2_SL3",2);
320 wheelMeanHistos[wh]->setBinLabel(7,
"MB3_SL1",2);
321 wheelMeanHistos[wh]->setBinLabel(8,
"MB3_SL2",2);
322 wheelMeanHistos[wh]->setBinLabel(9,
"MB3_SL3",2);
323 wheelMeanHistos[wh]->setBinLabel(10,
"MB4_SL1",2);
324 wheelMeanHistos[wh]->setBinLabel(11,
"MB4_SL3",2);
330 dbe->setCurrentFolder(topHistoFolder +
"/01-SigmaRes");
331 histoName =
"SigmaSummaryRes_W" + wheel.str();
332 histoTitle =
"# of SLs with wrong sigma of residuals (Wheel " + wheel.str() +
")";
333 wheelSigmaHistos[wh] = dbe->book2D(histoName.c_str(),histoTitle.c_str(),12,1,13,11,1,12);
334 wheelSigmaHistos[wh]->setAxisTitle(
"Sector",1);
335 wheelSigmaHistos[wh]->setBinLabel(1,
"MB1_SL1",2);
336 wheelSigmaHistos[wh]->setBinLabel(2,
"MB1_SL2",2);
337 wheelSigmaHistos[wh]->setBinLabel(3,
"MB1_SL3",2);
338 wheelSigmaHistos[wh]->setBinLabel(4,
"MB2_SL1",2);
339 wheelSigmaHistos[wh]->setBinLabel(5,
"MB2_SL2",2);
340 wheelSigmaHistos[wh]->setBinLabel(6,
"MB2_SL3",2);
341 wheelSigmaHistos[wh]->setBinLabel(7,
"MB3_SL1",2);
342 wheelSigmaHistos[wh]->setBinLabel(8,
"MB3_SL2",2);
343 wheelSigmaHistos[wh]->setBinLabel(9,
"MB3_SL3",2);
344 wheelSigmaHistos[wh]->setBinLabel(10,
"MB4_SL1",2);
345 wheelSigmaHistos[wh]->setBinLabel(11,
"MB4_SL3",2);
354 stringstream wheel; wheel << wh;
355 stringstream sector; sector << sect;
358 string MeanHistoName =
"MeanTest_W" + wheel.str() +
"_Sec" + sector.str();
359 string SigmaHistoName =
"SigmaTest_W" + wheel.str() +
"_Sec" + sector.str();
361 string folder = topHistoFolder +
"/Wheel" + wheel.str() +
"/Sector" + sector.str();
362 dbe->setCurrentFolder(folder);
364 if(sect!=4 && sect!=10) {
365 MeanHistos[make_pair(wh,sect)] =
366 dbe->book1D(MeanHistoName.c_str(),
"Mean (from gaussian fit) of the residuals distribution",11,1,12);
368 MeanHistos[make_pair(wh,sect)] =
369 dbe->book1D(MeanHistoName.c_str(),
"Mean (from gaussian fit) of the residuals distribution",13,1,14);
371 (MeanHistos[make_pair(wh,sect)])->setBinLabel(1,
"MB1_SL1",1);
372 (MeanHistos[make_pair(wh,sect)])->setBinLabel(2,
"MB1_SL2",1);
373 (MeanHistos[make_pair(wh,sect)])->setBinLabel(3,
"MB1_SL3",1);
374 (MeanHistos[make_pair(wh,sect)])->setBinLabel(4,
"MB2_SL1",1);
375 (MeanHistos[make_pair(wh,sect)])->setBinLabel(5,
"MB2_SL2",1);
376 (MeanHistos[make_pair(wh,sect)])->setBinLabel(6,
"MB2_SL3",1);
377 (MeanHistos[make_pair(wh,sect)])->setBinLabel(7,
"MB3_SL1",1);
378 (MeanHistos[make_pair(wh,sect)])->setBinLabel(8,
"MB3_SL2",1);
379 (MeanHistos[make_pair(wh,sect)])->setBinLabel(9,
"MB3_SL3",1);
380 (MeanHistos[make_pair(wh,sect)])->setBinLabel(10,
"MB4_SL1",1);
381 (MeanHistos[make_pair(wh,sect)])->setBinLabel(11,
"MB4_SL3",1);
383 (MeanHistos[make_pair(wh,sect)])->setBinLabel(12,
"MB4S13_SL1",1);
384 (MeanHistos[make_pair(wh,sect)])->setBinLabel(13,
"MB4S13_SL3",1);
387 (MeanHistos[make_pair(wh,sect)])->setBinLabel(12,
"MB4S14_SL1",1);
388 (MeanHistos[make_pair(wh,sect)])->setBinLabel(13,
"MB4S14_SL3",1);
391 if(sect!=4 && sect!=10) {
392 SigmaHistos[make_pair(wh,sect)] =
393 dbe->book1D(SigmaHistoName.c_str(),
"Sigma (from gaussian fit) of the residuals distribution",11,1,12);
395 SigmaHistos[make_pair(wh,sect)] =
396 dbe->book1D(SigmaHistoName.c_str(),
"Sigma (from gaussian fit) of the residuals distribution",13,1,14);
398 (SigmaHistos[make_pair(wh,sect)])->setBinLabel(1,
"MB1_SL1",1);
399 (SigmaHistos[make_pair(wh,sect)])->setBinLabel(2,
"MB1_SL2",1);
400 (SigmaHistos[make_pair(wh,sect)])->setBinLabel(3,
"MB1_SL3",1);
401 (SigmaHistos[make_pair(wh,sect)])->setBinLabel(4,
"MB2_SL1",1);
402 (SigmaHistos[make_pair(wh,sect)])->setBinLabel(5,
"MB2_SL2",1);
403 (SigmaHistos[make_pair(wh,sect)])->setBinLabel(6,
"MB2_SL3",1);
404 (SigmaHistos[make_pair(wh,sect)])->setBinLabel(7,
"MB3_SL1",1);
405 (SigmaHistos[make_pair(wh,sect)])->setBinLabel(8,
"MB3_SL2",1);
406 (SigmaHistos[make_pair(wh,sect)])->setBinLabel(9,
"MB3_SL3",1);
407 (SigmaHistos[make_pair(wh,sect)])->setBinLabel(10,
"MB4_SL1",1);
408 (SigmaHistos[make_pair(wh,sect)])->setBinLabel(11,
"MB4_SL3",1);
410 (SigmaHistos[make_pair(wh,sect)])->setBinLabel(12,
"MB4S13_SL1",1);
411 (SigmaHistos[make_pair(wh,sect)])->setBinLabel(13,
"MB4S13_SL3",1);
414 (SigmaHistos[make_pair(wh,sect)])->setBinLabel(12,
"MB4S14_SL1",1);
415 (SigmaHistos[make_pair(wh,sect)])->setBinLabel(13,
"MB4S14_SL3",1);
424 stringstream wheel; wheel << slID.
wheel();
426 stringstream sector; sector << slID.
sector();
427 stringstream superLayer; superLayer << slID.
superlayer();
430 topHistoFolder +
"/Wheel" + wheel.str() +
431 "/Sector" + sector.str() +
432 "/Station" + station.str() +
"/";
434 if(doCalibAnalysis) folderName =
435 "DT/DTCalibValidation/Wheel" + wheel.str() +
436 "/Station" + station.str() +
"/Sector" + sector.str() +
"/";
438 string histoname = folderName +
"hResDist"
440 +
"_St" + station.str()
441 +
"_Sec" + sector.str()
442 +
"_SL" + superLayer.str();
444 if(doCalibAnalysis) histoname = folderName +
"hResDist_STEP3"
446 +
"_St" + station.str()
447 +
"_Sec" + sector.str()
448 +
"_SL" + superLayer.str();
457 return (
int) (bin /3.1)+1;
463 if(ret == 0 || bin == 11) ret = 3;
470 if( fabs(mean) <= maxGoodMeanValue ) {value = 1.;}
471 else if( fabs(mean) > maxGoodMeanValue && fabs(mean) < minBadMeanValue ) {value = 0.9;}
472 else if( fabs(mean) >= minBadMeanValue ) {value = 0.1;}
478 if( sigma <= maxGoodSigmaValue ) {value = 1.;}
479 else if( sigma > maxGoodSigmaValue && sigma < minBadSigmaValue ) {value = 0.9;}
480 else if( sigma >= minBadSigmaValue ) {value = 0.1;}
485 globalResSummary->Reset();
487 for(map<int, MonitorElement*> ::const_iterator
histo = wheelMeanHistos.begin();
488 histo != wheelMeanHistos.end();
490 (*histo).second->Reset();
492 for(map<int, MonitorElement*> ::const_iterator
histo = wheelSigmaHistos.begin();
493 histo != wheelSigmaHistos.end();
495 (*histo).second->Reset();
498 for(
int indx = -2; indx != 3; ++indx) {
499 meanDistr[indx]->Reset();
500 sigmaDistr[indx]->Reset();
T getUntrackedParameter(std::string const &, T const &) const
double meanInRange(double mean) const
DTResolutionAnalysisTest(const edm::ParameterSet &ps)
Constructor.
void endLuminosityBlock(edm::LuminosityBlock const &lumiSeg, edm::EventSetup const &c)
DQM Client Diagnostic.
void beginLuminosityBlock(edm::LuminosityBlock const &lumiSeg, edm::EventSetup const &context)
std::string getMEName(const DTSuperLayerId &slID)
Get the ME name.
virtual ~DTResolutionAnalysisTest()
Destructor.
double getMean(int axis=1) const
get mean value of histogram along x, y or z axis (axis=1, 2, 3 respectively)
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
std::pair< std::string, MonitorElement * > entry
int superLayer() const
Return the superlayer number.
int superlayer() const
Return the superlayer number (deprecated method name)
void bookHistos()
book the summary histograms
int slFromBin(int bin) const
int stationFromBin(int bin) const
TH1F * getTH1F(void) const
double getRMS(int axis=1) const
get RMS of histogram along x, y or z axis (axis=1, 2, 3 respectively)
double sigmaInRange(double sigma) const
int station() const
Return the station number.
int wheel() const
Return the wheel number.
void beginRun(const edm::Run &r, const edm::EventSetup &c)
BeginRun.
void analyze(const edm::Event &e, const edm::EventSetup &c)
Analyze.
void endRun(edm::Run const &run, edm::EventSetup const &c)