38 LogTrace (
"DTDQM|DTMonitorClient|DTResolutionAnalysisTest") <<
"[DTResolutionAnalysisTest]: Constructor";
57 LogTrace (
"DTDQM|DTMonitorClient|DTResolutionAnalysisTest") <<
"DTResolutionAnalysisTest: analyzed " <<
nevents <<
" events";
64 LogTrace (
"DTDQM|DTMonitorClient|DTResolutionAnalysisTest") <<
"[DTResolutionAnalysisTest]: BeginJob";
72 LogTrace (
"DTDQM|DTMonitorClient|DTResolutionAnalysisTest") <<
"[DTResolutionAnalysisTest]: BeginRun";
82 LogTrace (
"DTDQM|DTMonitorClient|DTResolutionAnalysisTest") <<
"[DTResolutionAnalysisTest]: Begin of LS transition";
107 dbe->setCurrentFolder(topHistoFolder);
108 globalResSummary = dbe->book2D(
"ResidualsGlbSummary",
"# of SLs with good mean and good sigma of residuals",12,1,13,5,-2,3);
111 dbe->setCurrentFolder(topHistoFolder +
"/00-MeanRes");
112 meanDistr[-2] = dbe->book1D(
"MeanDistr",
"Mean value of the residuals all (cm)",
114 meanDistr[-1] = dbe->book1D(
"MeanDistr_Phi",
"Mean value of the residuals #phi SL (cm)",
116 meanDistr[0] = dbe->book1D(
"MeanDistr_ThetaWh0",
"Mean values of the residuals #theta SL Wh 0 (cm)",
118 meanDistr[1] = dbe->book1D(
"MeanDistr_ThetaWh1",
"Mean value of the residuals #theta SL Wh +/-1 (cm)",
120 meanDistr[2] = dbe->book1D(
"MeanDistr_ThetaWh2",
"Mean value of the residuals #theta SL Wh +/-2 (cm)",
124 string histoTitle =
"# of SLs with good mean of residuals";
125 wheelMeanHistos[3] = dbe->book2D(
"MeanResGlbSummary",histoTitle.c_str(),12,1,13,5,-2,3);
126 wheelMeanHistos[3]->setAxisTitle(
"Sector",1);
127 wheelMeanHistos[3]->setAxisTitle(
"Wheel",2);
130 dbe->setCurrentFolder(topHistoFolder +
"/01-SigmaRes");
131 sigmaDistr[-2] = dbe->book1D(
"SigmaDistr",
"Sigma value of the residuals all (cm)",
133 sigmaDistr[-1] = dbe->book1D(
"SigmaDistr_Phi",
"Sigma value of the residuals #phi SL (cm)",
135 sigmaDistr[0] = dbe->book1D(
"SigmaDistr_ThetaWh0",
"Sigma value of the residuals #theta SL Wh 0 (cm)",
137 sigmaDistr[1] = dbe->book1D(
"SigmaDistr_ThetaWh1",
"Sigma value of the residuals #theta SL Wh +/-1 (cm)",
139 sigmaDistr[2] = dbe->book1D(
"SigmaDistr_ThetaWh2",
"Sigma value of the residuals #theta SL Wh +/-2 (cm)",
142 histoTitle =
"# of SLs with good sigma of residuals";
143 wheelSigmaHistos[3] = dbe->book2D(
"SigmaResGlbSummary",histoTitle.c_str(),12,1,13,5,-2,3);
144 wheelSigmaHistos[3]->setAxisTitle(
"Sector",1);
145 wheelSigmaHistos[3]->setAxisTitle(
"Wheel",2);
149 for (
int wheel=-2; wheel<=2; wheel++){
151 for (
int sector=1; sector<=12; sector++){
160 if (!dbe->dirExists(topHistoFolder)) {
161 LogTrace (
"DTDQM|DTMonitorClient|DTResolutionAnalysisTest")
162 <<
"[DTResolutionAnalysisTest]: Base folder " << topHistoFolder
163 <<
" does not exist. Skipping client operation." << endl;
170 LogTrace (
"DTDQM|DTMonitorClient|DTResolutionAnalysisTest")
171 <<
"[DTResolutionAnalysisTest]: End of Run transition, performing the DQM client operation" << endl;
176 for (vector<const DTChamber*>::const_iterator ch_it = muonGeom->chambers().begin();
177 ch_it != muonGeom->chambers().end(); ++ch_it) {
182 for(vector<const DTSuperLayer*>::const_iterator sl_it = (*ch_it)->superLayers().begin();
183 sl_it != (*ch_it)->superLayers().end(); ++sl_it) {
190 float statMean = res_histo->
getMean(1);
191 float statSigma = res_histo->
getRMS(1);
194 TH1F * histo_root = res_histo->
getTH1F();
197 int entry= (chID.
station() - 1) * 3;
198 int binSect = slID.
sector();
199 if(slID.
sector() == 13) binSect = 4;
200 else if(slID.
sector() == 14) binSect = 10;
206 if(histo_root->GetEntries()>20) {
207 TF1 *gfit =
new TF1(
"Gaussian",
"gaus",(statMean-(2*statSigma)),(statMean+(2*statSigma)));
209 histo_root->Fit(gfit,
"Q0",
"", -0.1, 0.1);
211 LogWarning (
"DTDQM|DTMonitorModule|DTResolutionAnalysisTask")
212 <<
"[DTResolutionAnalysisTask]: Exception when fitting SL : " << slID;
215 if((binSect == 4 || binSect == 10) && slID.
station() == 4) weight = 1/22.;
216 globalResSummary->Fill(binSect, slID.
wheel(),
weight);
222 mean = gfit->GetParameter(1);
223 sigma = gfit->GetParameter(2);
226 meanDistr[-2]->Fill(mean);
227 sigmaDistr[-2]->Fill(sigma);
232 meanDistr[-1]->Fill(mean);
233 sigmaDistr[-1]->Fill(sigma);
237 MeanHistos[make_pair(slID.
wheel(),binSect)]->setBinContent(binSL, mean);
238 SigmaHistos[make_pair(slID.
wheel(),binSect)]->setBinContent(binSL, sigma);
240 if((slID.
sector() == 13 || slID.
sector() == 14) && binSL == 12) binSL=10;
241 if((slID.
sector() == 13 || slID.
sector() == 14) && binSL == 13) binSL=11;
246 double MeanVal = wheelMeanHistos[slID.
wheel()]->getBinContent(binSect,binSL);
247 double MeanBinVal = (MeanVal > 0. && MeanVal < meanInRange(mean)) ? MeanVal : meanInRange(mean);
248 wheelMeanHistos[slID.
wheel()]->setBinContent(binSect,binSL,MeanBinVal);
250 double SigmaVal = wheelSigmaHistos[slID.
wheel()]->getBinContent(binSect,binSL);
251 double SigmaBinVal = (SigmaVal > 0. && SigmaVal < sigmaInRange(sigma)) ? SigmaVal : sigmaInRange(sigma);
252 wheelSigmaHistos[slID.
wheel()]->setBinContent(binSect,binSL,SigmaBinVal);
255 wheelMeanHistos[slID.
wheel()]->setBinContent(binSect,binSL,meanInRange(mean));
256 wheelSigmaHistos[slID.
wheel()]->setBinContent(binSect,binSL,sigmaInRange(sigma));
261 if((binSect == 4 || binSect == 10) && slID.
station() == 4) weight = 1/22.;
264 if( (meanInRange(mean) > 0.85) && (sigmaInRange(sigma) > 0.85) ) {
265 globalResSummary->Fill(binSect, slID.
wheel(),
weight);
266 wheelMeanHistos[3]->Fill(binSect,slID.
wheel(),
weight);
267 wheelSigmaHistos[3]->Fill(binSect,slID.
wheel(),
weight);
269 if( (meanInRange(mean) < 0.85) && (sigmaInRange(sigma) > 0.85) ) {
270 wheelSigmaHistos[3]->Fill(binSect,slID.
wheel(),
weight);
272 if((meanInRange(mean) > 0.85) && (sigmaInRange(sigma) < 0.85) ) {
273 wheelMeanHistos[3]->Fill(binSect,slID.
wheel(),
weight);
280 LogVerbatim (
"DTDQM|DTMonitorModule|DTResolutionAnalysisTask")
281 <<
"[DTResolutionAnalysisTask] Fit of " << slID
282 <<
" not performed because # entries < 20 ";
285 if((binSect == 4 || binSect == 10) && slID.
station() == 4) weight = 1/22.;
286 globalResSummary->Fill(binSect, slID.
wheel(),
weight);
287 wheelMeanHistos[3]->Fill(binSect,slID.
wheel(),
weight);
288 wheelSigmaHistos[3]->Fill(binSect,slID.
wheel(),
weight);
289 wheelMeanHistos[slID.
wheel()]->setBinContent(binSect,binSL,1.);
290 wheelSigmaHistos[slID.
wheel()]->setBinContent(binSect,binSL,1.);
293 LogWarning (
"DTDQM|DTMonitorModule|DTResolutionAnalysisTask")
294 <<
"[DTResolutionAnalysisTask] Histo: " << getMEName(slID) <<
" not found" << endl;
305 stringstream wheel; wheel <<wh;
307 dbe->setCurrentFolder(topHistoFolder +
"/00-MeanRes");
308 string histoName =
"MeanSummaryRes_W" + wheel.str();
309 string histoTitle =
"# of SLs with wrong mean of residuals (Wheel " + wheel.str() +
")";
310 wheelMeanHistos[wh] = dbe->book2D(histoName.c_str(),histoTitle.c_str(),12,1,13,11,1,12);
311 wheelMeanHistos[wh]->setAxisTitle(
"Sector",1);
312 wheelMeanHistos[wh]->setBinLabel(1,
"MB1_SL1",2);
313 wheelMeanHistos[wh]->setBinLabel(2,
"MB1_SL2",2);
314 wheelMeanHistos[wh]->setBinLabel(3,
"MB1_SL3",2);
315 wheelMeanHistos[wh]->setBinLabel(4,
"MB2_SL1",2);
316 wheelMeanHistos[wh]->setBinLabel(5,
"MB2_SL2",2);
317 wheelMeanHistos[wh]->setBinLabel(6,
"MB2_SL3",2);
318 wheelMeanHistos[wh]->setBinLabel(7,
"MB3_SL1",2);
319 wheelMeanHistos[wh]->setBinLabel(8,
"MB3_SL2",2);
320 wheelMeanHistos[wh]->setBinLabel(9,
"MB3_SL3",2);
321 wheelMeanHistos[wh]->setBinLabel(10,
"MB4_SL1",2);
322 wheelMeanHistos[wh]->setBinLabel(11,
"MB4_SL3",2);
328 dbe->setCurrentFolder(topHistoFolder +
"/01-SigmaRes");
329 histoName =
"SigmaSummaryRes_W" + wheel.str();
330 histoTitle =
"# of SLs with wrong sigma of residuals (Wheel " + wheel.str() +
")";
331 wheelSigmaHistos[wh] = dbe->book2D(histoName.c_str(),histoTitle.c_str(),12,1,13,11,1,12);
332 wheelSigmaHistos[wh]->setAxisTitle(
"Sector",1);
333 wheelSigmaHistos[wh]->setBinLabel(1,
"MB1_SL1",2);
334 wheelSigmaHistos[wh]->setBinLabel(2,
"MB1_SL2",2);
335 wheelSigmaHistos[wh]->setBinLabel(3,
"MB1_SL3",2);
336 wheelSigmaHistos[wh]->setBinLabel(4,
"MB2_SL1",2);
337 wheelSigmaHistos[wh]->setBinLabel(5,
"MB2_SL2",2);
338 wheelSigmaHistos[wh]->setBinLabel(6,
"MB2_SL3",2);
339 wheelSigmaHistos[wh]->setBinLabel(7,
"MB3_SL1",2);
340 wheelSigmaHistos[wh]->setBinLabel(8,
"MB3_SL2",2);
341 wheelSigmaHistos[wh]->setBinLabel(9,
"MB3_SL3",2);
342 wheelSigmaHistos[wh]->setBinLabel(10,
"MB4_SL1",2);
343 wheelSigmaHistos[wh]->setBinLabel(11,
"MB4_SL3",2);
352 stringstream wheel; wheel << wh;
353 stringstream sector; sector << sect;
356 string MeanHistoName =
"MeanTest_W" + wheel.str() +
"_Sec" + sector.str();
357 string SigmaHistoName =
"SigmaTest_W" + wheel.str() +
"_Sec" + sector.str();
359 string folder = topHistoFolder +
"/Wheel" + wheel.str() +
"/Sector" + sector.str();
360 dbe->setCurrentFolder(folder);
362 if(sect!=4 && sect!=10) {
363 MeanHistos[make_pair(wh,sect)] =
364 dbe->book1D(MeanHistoName.c_str(),
"Mean (from gaussian fit) of the residuals distribution",11,1,12);
366 MeanHistos[make_pair(wh,sect)] =
367 dbe->book1D(MeanHistoName.c_str(),
"Mean (from gaussian fit) of the residuals distribution",13,1,14);
369 (MeanHistos[make_pair(wh,sect)])->setBinLabel(1,
"MB1_SL1",1);
370 (MeanHistos[make_pair(wh,sect)])->setBinLabel(2,
"MB1_SL2",1);
371 (MeanHistos[make_pair(wh,sect)])->setBinLabel(3,
"MB1_SL3",1);
372 (MeanHistos[make_pair(wh,sect)])->setBinLabel(4,
"MB2_SL1",1);
373 (MeanHistos[make_pair(wh,sect)])->setBinLabel(5,
"MB2_SL2",1);
374 (MeanHistos[make_pair(wh,sect)])->setBinLabel(6,
"MB2_SL3",1);
375 (MeanHistos[make_pair(wh,sect)])->setBinLabel(7,
"MB3_SL1",1);
376 (MeanHistos[make_pair(wh,sect)])->setBinLabel(8,
"MB3_SL2",1);
377 (MeanHistos[make_pair(wh,sect)])->setBinLabel(9,
"MB3_SL3",1);
378 (MeanHistos[make_pair(wh,sect)])->setBinLabel(10,
"MB4_SL1",1);
379 (MeanHistos[make_pair(wh,sect)])->setBinLabel(11,
"MB4_SL3",1);
381 (MeanHistos[make_pair(wh,sect)])->setBinLabel(12,
"MB4S13_SL1",1);
382 (MeanHistos[make_pair(wh,sect)])->setBinLabel(13,
"MB4S13_SL3",1);
385 (MeanHistos[make_pair(wh,sect)])->setBinLabel(12,
"MB4S14_SL1",1);
386 (MeanHistos[make_pair(wh,sect)])->setBinLabel(13,
"MB4S14_SL3",1);
389 if(sect!=4 && sect!=10) {
390 SigmaHistos[make_pair(wh,sect)] =
391 dbe->book1D(SigmaHistoName.c_str(),
"Sigma (from gaussian fit) of the residuals distribution",11,1,12);
393 SigmaHistos[make_pair(wh,sect)] =
394 dbe->book1D(SigmaHistoName.c_str(),
"Sigma (from gaussian fit) of the residuals distribution",13,1,14);
396 (SigmaHistos[make_pair(wh,sect)])->setBinLabel(1,
"MB1_SL1",1);
397 (SigmaHistos[make_pair(wh,sect)])->setBinLabel(2,
"MB1_SL2",1);
398 (SigmaHistos[make_pair(wh,sect)])->setBinLabel(3,
"MB1_SL3",1);
399 (SigmaHistos[make_pair(wh,sect)])->setBinLabel(4,
"MB2_SL1",1);
400 (SigmaHistos[make_pair(wh,sect)])->setBinLabel(5,
"MB2_SL2",1);
401 (SigmaHistos[make_pair(wh,sect)])->setBinLabel(6,
"MB2_SL3",1);
402 (SigmaHistos[make_pair(wh,sect)])->setBinLabel(7,
"MB3_SL1",1);
403 (SigmaHistos[make_pair(wh,sect)])->setBinLabel(8,
"MB3_SL2",1);
404 (SigmaHistos[make_pair(wh,sect)])->setBinLabel(9,
"MB3_SL3",1);
405 (SigmaHistos[make_pair(wh,sect)])->setBinLabel(10,
"MB4_SL1",1);
406 (SigmaHistos[make_pair(wh,sect)])->setBinLabel(11,
"MB4_SL3",1);
408 (SigmaHistos[make_pair(wh,sect)])->setBinLabel(12,
"MB4S13_SL1",1);
409 (SigmaHistos[make_pair(wh,sect)])->setBinLabel(13,
"MB4S13_SL3",1);
412 (SigmaHistos[make_pair(wh,sect)])->setBinLabel(12,
"MB4S14_SL1",1);
413 (SigmaHistos[make_pair(wh,sect)])->setBinLabel(13,
"MB4S14_SL3",1);
422 stringstream wheel; wheel << slID.
wheel();
424 stringstream sector; sector << slID.
sector();
425 stringstream superLayer; superLayer << slID.
superlayer();
428 topHistoFolder +
"/Wheel" + wheel.str() +
429 "/Sector" + sector.str() +
430 "/Station" + station.str() +
"/";
432 if(doCalibAnalysis) folderName =
433 "DT/DTCalibValidation/Wheel" + wheel.str() +
434 "/Station" + station.str() +
"/Sector" + sector.str() +
"/";
436 string histoname = folderName +
"hResDist"
438 +
"_St" + station.str()
439 +
"_Sec" + sector.str()
440 +
"_SL" + superLayer.str();
442 if(doCalibAnalysis) histoname = folderName +
"hResDist_STEP3"
444 +
"_St" + station.str()
445 +
"_Sec" + sector.str()
446 +
"_SL" + superLayer.str();
455 return (
int) (bin /3.1)+1;
461 if(ret == 0 || bin == 11) ret = 3;
468 if( fabs(mean) <= maxGoodMeanValue ) {value = 1.;}
469 else if( fabs(mean) > maxGoodMeanValue && fabs(mean) < minBadMeanValue ) {value = 0.9;}
470 else if( fabs(mean) >= minBadMeanValue ) {value = 0.1;}
476 if( sigma <= maxGoodSigmaValue ) {value = 1.;}
477 else if( sigma > maxGoodSigmaValue && sigma < minBadSigmaValue ) {value = 0.9;}
478 else if( sigma >= minBadSigmaValue ) {value = 0.1;}
483 globalResSummary->Reset();
485 for(map<int, MonitorElement*> ::const_iterator
histo = wheelMeanHistos.begin();
486 histo != wheelMeanHistos.end();
488 (*histo).second->Reset();
490 for(map<int, MonitorElement*> ::const_iterator
histo = wheelSigmaHistos.begin();
491 histo != wheelSigmaHistos.end();
493 (*histo).second->Reset();
496 for(
int indx = -2; indx != 3; ++indx) {
497 meanDistr[indx]->Reset();
498 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)
Abs< T >::type abs(const T &t)
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)