CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
DTResolutionAnalysisTest.cc
Go to the documentation of this file.
1 
2 
3 /*
4  * See header file for a description of this class.
5  *
6  * $Date: 2013/05/22 17:24:59 $
7  * $Revision: 1.25 $
8  * \author G. Mila - INFN Torino
9  */
10 
11 
13 
14 // Framework
18 
19 
20 // Geometry
23 
28 
29 #include <string>
30 #include <sstream>
31 #include <math.h>
32 
33 
34 using namespace edm;
35 using namespace std;
36 
37 
39 
40  LogTrace ("DTDQM|DTMonitorClient|DTResolutionAnalysisTest") << "[DTResolutionAnalysisTest]: Constructor";
41 
42  dbe = Service<DQMStore>().operator->();
43 
44  prescaleFactor = ps.getUntrackedParameter<int>("diagnosticPrescale", 1);
45  // permitted test range
46  maxGoodMeanValue = ps.getUntrackedParameter<double>("maxGoodMeanValue",0.02);
47  minBadMeanValue = ps.getUntrackedParameter<double>("minBadMeanValue",0.04);
48  maxGoodSigmaValue = ps.getUntrackedParameter<double>("maxGoodSigmaValue",0.08);
49  minBadSigmaValue = ps.getUntrackedParameter<double>("minBadSigmaValue",0.16);
50  // top folder for the histograms in DQMStore
51  topHistoFolder = ps.getUntrackedParameter<string>("topHistoFolder","DT/02-Segments");
52 
53  doCalibAnalysis = ps.getUntrackedParameter<bool>("doCalibAnalysis",false);
54 }
55 
56 
58 
59  LogTrace ("DTDQM|DTMonitorClient|DTResolutionAnalysisTest") << "DTResolutionAnalysisTest: analyzed " << nevents << " events";
60 
61 }
62 
63 
65 
66  LogTrace ("DTDQM|DTMonitorClient|DTResolutionAnalysisTest") <<"[DTResolutionAnalysisTest]: BeginJob";
67 
68  nevents = 0;
69 
70 }
71 
73 
74  LogTrace ("DTDQM|DTMonitorClient|DTResolutionAnalysisTest") <<"[DTResolutionAnalysisTest]: BeginRun";
75 
76  // Get the geometry
77  context.get<MuonGeometryRecord>().get(muonGeom);
78 
79 }
80 
81 
83 
84  LogTrace ("DTDQM|DTMonitorClient|DTResolutionAnalysisTest") <<"[DTResolutionAnalysisTest]: Begin of LS transition";
85 
86  // Get the run number
87  run = lumiSeg.run();
88 
89 }
90 
91 
92 
93 void DTResolutionAnalysisTest::analyze(const Event& e, const EventSetup& context){
94 
95  nevents++;
96 
97 }
98 
99 
100 
102 
103 }
104 
105 
107 
108  // global residual summary
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);
111 
112  // book summaries for mean and sigma
113  dbe->setCurrentFolder(topHistoFolder + "/00-MeanRes");
114  meanDistr[-2] = dbe->book1D("MeanDistr","Mean value of the residuals all (cm)",
115  100,-0.1,0.1);
116  meanDistr[-1] = dbe->book1D("MeanDistr_Phi","Mean value of the residuals #phi SL (cm)",
117  100,-0.1,0.1);
118  meanDistr[0] = dbe->book1D("MeanDistr_ThetaWh0","Mean values of the residuals #theta SL Wh 0 (cm)",
119  100,-0.1,0.1);
120  meanDistr[1] = dbe->book1D("MeanDistr_ThetaWh1","Mean value of the residuals #theta SL Wh +/-1 (cm)",
121  100,-0.1,0.1);
122  meanDistr[2] = dbe->book1D("MeanDistr_ThetaWh2","Mean value of the residuals #theta SL Wh +/-2 (cm)",
123  100,-0.1,0.1);
124 
125 
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);
130 
131 
132  dbe->setCurrentFolder(topHistoFolder + "/01-SigmaRes");
133  sigmaDistr[-2] = dbe->book1D("SigmaDistr","Sigma value of the residuals all (cm)",
134  50,0.0,0.2);
135  sigmaDistr[-1] = dbe->book1D("SigmaDistr_Phi","Sigma value of the residuals #phi SL (cm)",
136  50,0.0,0.2);
137  sigmaDistr[0] = dbe->book1D("SigmaDistr_ThetaWh0","Sigma value of the residuals #theta SL Wh 0 (cm)",
138  50,0.0,0.2);
139  sigmaDistr[1] = dbe->book1D("SigmaDistr_ThetaWh1","Sigma value of the residuals #theta SL Wh +/-1 (cm)",
140  50,0.0,0.2);
141  sigmaDistr[2] = dbe->book1D("SigmaDistr_ThetaWh2","Sigma value of the residuals #theta SL Wh +/-2 (cm)",
142  50,0.0,0.2);
143 
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);
148 
149 
150  // loop over all the CMS wheels, sectors & book the summary histos
151  for (int wheel=-2; wheel<=2; wheel++){
152  bookHistos(wheel);
153  for (int sector=1; sector<=12; sector++){
154  bookHistos(wheel, sector);
155  }
156  }
157 
158 }
159 
160 void DTResolutionAnalysisTest::endRun(Run const& run, EventSetup const& context) {
161 
162  if (!dbe->dirExists(topHistoFolder)) {
163  LogTrace ("DTDQM|DTMonitorClient|DTResolutionAnalysisTest")
164  <<"[DTResolutionAnalysisTest]: Base folder " << topHistoFolder
165  << " does not exist. Skipping client operation." << endl;
166  return;
167  }
168 
169  bookHistos(); // histos booked only if top histo folder exist
170  // as Standard/AlcaReco Harvest is performed in the same step
171 
172  LogTrace ("DTDQM|DTMonitorClient|DTResolutionAnalysisTest")
173  << "[DTResolutionAnalysisTest]: End of Run transition, performing the DQM client operation" << endl;
174 
175  // reset the ME with fixed scale
176  resetMEs();
177 
178  for (vector<DTChamber*>::const_iterator ch_it = muonGeom->chambers().begin();
179  ch_it != muonGeom->chambers().end(); ++ch_it) { // loop over the chambers
180 
181  DTChamberId chID = (*ch_it)->id();
182 
183  // Fill the test histos
184  for(vector<const DTSuperLayer*>::const_iterator sl_it = (*ch_it)->superLayers().begin();
185  sl_it != (*ch_it)->superLayers().end(); ++sl_it) { // loop over SLs
186 
187 
188  DTSuperLayerId slID = (*sl_it)->id();
189  MonitorElement * res_histo = dbe->get(getMEName(slID));
190 
191  if(res_histo) { // Gaussian Fit
192  float statMean = res_histo->getMean(1);
193  float statSigma = res_histo->getRMS(1);
194  double mean = -1;
195  double sigma = -1;
196  TH1F * histo_root = res_histo->getTH1F();
197 
198  // fill the summaries
199  int entry= (chID.station() - 1) * 3;
200  int binSect = slID.sector();
201  if(slID.sector() == 13) binSect = 4;
202  else if(slID.sector() == 14) binSect = 10;
203  int binSL = entry+slID.superLayer();
204  if(chID.station() == 4 && slID.superLayer() == 3) binSL--;
205  if((slID.sector()==13 || slID.sector()==14) && slID.superLayer()==1) binSL=12;
206  if((slID.sector()==13 || slID.sector()==14) && slID.superLayer()==3) binSL=13;
207 
208  if(histo_root->GetEntries()>20) {
209  TF1 *gfit = new TF1("Gaussian","gaus",(statMean-(2*statSigma)),(statMean+(2*statSigma)));
210  try {
211  histo_root->Fit(gfit, "Q0", "", -0.1, 0.1);
212  } catch (cms::Exception& iException) {
213  LogWarning ("DTDQM|DTMonitorModule|DTResolutionAnalysisTask")
214  << "[DTResolutionAnalysisTask]: Exception when fitting SL : " << slID;
215  // FIXME: the SL is set as OK in the summary
216  double weight = 1/11.;
217  if((binSect == 4 || binSect == 10) && slID.station() == 4) weight = 1/22.;
218  globalResSummary->Fill(binSect, slID.wheel(), weight);
219  continue;
220  }
221 
222  if(gfit){
223  // get the mean and the sigma of the distribution
224  mean = gfit->GetParameter(1);
225  sigma = gfit->GetParameter(2);
226 
227  // fill the distributions
228  meanDistr[-2]->Fill(mean);
229  sigmaDistr[-2]->Fill(sigma);
230  if(slID.superlayer() == 2) {
231  meanDistr[abs(slID.wheel())]->Fill(mean);
232  sigmaDistr[abs(slID.wheel())]->Fill(sigma);
233  } else {
234  meanDistr[-1]->Fill(mean);
235  sigmaDistr[-1]->Fill(sigma);
236  }
237 
238  // sector summaries
239  MeanHistos[make_pair(slID.wheel(),binSect)]->setBinContent(binSL, mean);
240  SigmaHistos[make_pair(slID.wheel(),binSect)]->setBinContent(binSL, sigma);
241 
242  if((slID.sector() == 13 || slID.sector() == 14) && binSL == 12) binSL=10;
243  if((slID.sector() == 13 || slID.sector() == 14) && binSL == 13) binSL=11;
244 
245 
246  if((slID.sector() == 13 || slID.sector() == 14) ) {
247 
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);
251 
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);
255 
256  } else {
257  wheelMeanHistos[slID.wheel()]->setBinContent(binSect,binSL,meanInRange(mean));
258  wheelSigmaHistos[slID.wheel()]->setBinContent(binSect,binSL,sigmaInRange(sigma));
259  }
260 
261  // set the weight
262  double weight = 1/11.;
263  if((binSect == 4 || binSect == 10) && slID.station() == 4) weight = 1/22.;
264 
265  // test the values of mean and sigma
266  if( (meanInRange(mean) > 0.85) && (sigmaInRange(sigma) > 0.85) ) { // sigma and mean ok
267  globalResSummary->Fill(binSect, slID.wheel(), weight);
268  wheelMeanHistos[3]->Fill(binSect,slID.wheel(),weight);
269  wheelSigmaHistos[3]->Fill(binSect,slID.wheel(),weight);
270  } else {
271  if( (meanInRange(mean) < 0.85) && (sigmaInRange(sigma) > 0.85) ) { // only sigma ok
272  wheelSigmaHistos[3]->Fill(binSect,slID.wheel(),weight);
273  }
274  if((meanInRange(mean) > 0.85) && (sigmaInRange(sigma) < 0.85) ) { // only mean ok
275  wheelMeanHistos[3]->Fill(binSect,slID.wheel(),weight);
276  }
277  }
278  }
279  delete gfit;
280  }
281  else{
282  LogVerbatim ("DTDQM|DTMonitorModule|DTResolutionAnalysisTask")
283  << "[DTResolutionAnalysisTask] Fit of " << slID
284  << " not performed because # entries < 20 ";
285  // FIXME: the SL is set as OK in the summary
286  double weight = 1/11.;
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.);
293  }
294  } else {
295  LogWarning ("DTDQM|DTMonitorModule|DTResolutionAnalysisTask")
296  << "[DTResolutionAnalysisTask] Histo: " << getMEName(slID) << " not found" << endl;
297  }
298  } // loop on SLs
299  } // Loop on Stations
300 
301 }
302 
303 
304 
306 
307  stringstream wheel; wheel <<wh;
308 
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);
325  // wheelMeanHistos[wh]->setBinLabel(12,"MB4_SL1",2);
326  // wheelMeanHistos[wh]->setBinLabel(13,"MB4_SL3",2);
327 
328 
329 
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);
346  // wheelSigmaHistos[wh]->setBinLabel(12,"MB4_SL1",2);
347  // wheelSigmaHistos[wh]->setBinLabel(13,"MB4_SL3",2);
348 
349 }
350 
351 
352 void DTResolutionAnalysisTest::bookHistos(int wh, int sect) {
353 
354  stringstream wheel; wheel << wh;
355  stringstream sector; sector << sect;
356 
357 
358  string MeanHistoName = "MeanTest_W" + wheel.str() + "_Sec" + sector.str();
359  string SigmaHistoName = "SigmaTest_W" + wheel.str() + "_Sec" + sector.str();
360 
361  string folder = topHistoFolder + "/Wheel" + wheel.str() + "/Sector" + sector.str();
362  dbe->setCurrentFolder(folder);
363 
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);
367  } else {
368  MeanHistos[make_pair(wh,sect)] =
369  dbe->book1D(MeanHistoName.c_str(),"Mean (from gaussian fit) of the residuals distribution",13,1,14);
370  }
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);
382  if(sect==4){
383  (MeanHistos[make_pair(wh,sect)])->setBinLabel(12,"MB4S13_SL1",1);
384  (MeanHistos[make_pair(wh,sect)])->setBinLabel(13,"MB4S13_SL3",1);
385  }
386  if(sect==10){
387  (MeanHistos[make_pair(wh,sect)])->setBinLabel(12,"MB4S14_SL1",1);
388  (MeanHistos[make_pair(wh,sect)])->setBinLabel(13,"MB4S14_SL3",1);
389  }
390 
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);
394  } else {
395  SigmaHistos[make_pair(wh,sect)] =
396  dbe->book1D(SigmaHistoName.c_str(),"Sigma (from gaussian fit) of the residuals distribution",13,1,14);
397  }
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);
409  if(sect==4){
410  (SigmaHistos[make_pair(wh,sect)])->setBinLabel(12,"MB4S13_SL1",1);
411  (SigmaHistos[make_pair(wh,sect)])->setBinLabel(13,"MB4S13_SL3",1);
412  }
413  if(sect==10){
414  (SigmaHistos[make_pair(wh,sect)])->setBinLabel(12,"MB4S14_SL1",1);
415  (SigmaHistos[make_pair(wh,sect)])->setBinLabel(13,"MB4S14_SL3",1);
416  }
417 
418 
419 }
420 
421 
423 
424  stringstream wheel; wheel << slID.wheel();
425  stringstream station; station << slID.station();
426  stringstream sector; sector << slID.sector();
427  stringstream superLayer; superLayer << slID.superlayer();
428 
429  string folderName =
430  topHistoFolder + "/Wheel" + wheel.str() +
431  "/Sector" + sector.str() +
432  "/Station" + station.str() + "/";
433 
434  if(doCalibAnalysis) folderName =
435  "DT/DTCalibValidation/Wheel" + wheel.str() +
436  "/Station" + station.str() + "/Sector" + sector.str() + "/";
437 
438  string histoname = folderName + "hResDist"
439  + "_W" + wheel.str()
440  + "_St" + station.str()
441  + "_Sec" + sector.str()
442  + "_SL" + superLayer.str();
443 
444  if(doCalibAnalysis) histoname = folderName + "hResDist_STEP3"
445  + "_W" + wheel.str()
446  + "_St" + station.str()
447  + "_Sec" + sector.str()
448  + "_SL" + superLayer.str();
449 
450  return histoname;
451 
452 }
453 
454 
455 
457  return (int) (bin /3.1)+1;
458 }
459 
460 
462  int ret = bin%3;
463  if(ret == 0 || bin == 11) ret = 3;
464 
465  return ret;
466 }
467 
469  double value(0.);
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;}
473  return value;
474 }
475 
476 double DTResolutionAnalysisTest::sigmaInRange(double sigma) const {
477  double value(0.);
478  if( sigma <= maxGoodSigmaValue ) {value = 1.;}
479  else if( sigma > maxGoodSigmaValue && sigma < minBadSigmaValue ) {value = 0.9;}
480  else if( sigma >= minBadSigmaValue ) {value = 0.1;}
481  return value;
482 }
483 
485  globalResSummary->Reset();
486  // Reset the summary histo
487  for(map<int, MonitorElement*> ::const_iterator histo = wheelMeanHistos.begin();
488  histo != wheelMeanHistos.end();
489  histo++) {
490  (*histo).second->Reset();
491  }
492  for(map<int, MonitorElement*> ::const_iterator histo = wheelSigmaHistos.begin();
493  histo != wheelSigmaHistos.end();
494  histo++) {
495  (*histo).second->Reset();
496  }
497 
498  for(int indx = -2; indx != 3; ++indx) {
499  meanDistr[indx]->Reset();
500  sigmaDistr[indx]->Reset();
501  }
502 }
503 
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.
#define abs(x)
Definition: mlp_lapack.h:159
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 bookHistos()
Definition: Histogram.h:33
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
std::pair< std::string, MonitorElement * > entry
Definition: ME_MAP.h:8
int superLayer() const
Return the superlayer number.
RunNumber_t run() const
int nevents
#define LogTrace(id)
int superlayer() const
Return the superlayer number (deprecated method name)
void bookHistos()
book the summary histograms
const T & get() const
Definition: EventSetup.h:55
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 sector() const
Definition: DTChamberId.h:63
int weight
Definition: histoStyle.py:50
int station() const
Return the station number.
Definition: DTChamberId.h:53
int wheel() const
Return the wheel number.
Definition: DTChamberId.h:47
void beginRun(const edm::Run &r, const edm::EventSetup &c)
BeginRun.
Definition: Run.h:36
void analyze(const edm::Event &e, const edm::EventSetup &c)
Analyze.
void endRun(edm::Run const &run, edm::EventSetup const &c)