CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Member Functions | Private Attributes
DTResolutionAnalysisTest Class Reference

#include <DTResolutionAnalysisTest.h>

Inheritance diagram for DTResolutionAnalysisTest:
edm::EDAnalyzer edm::EDConsumerBase

Public Member Functions

void analyze (const edm::Event &e, const edm::EventSetup &c)
 Analyze. More...
 
void beginJob ()
 BeginJob. More...
 
void beginLuminosityBlock (edm::LuminosityBlock const &lumiSeg, edm::EventSetup const &context)
 
void beginRun (const edm::Run &r, const edm::EventSetup &c)
 BeginRun. More...
 
void bookHistos ()
 book the summary histograms More...
 
void bookHistos (int wh)
 
void bookHistos (int wh, int sect)
 
 DTResolutionAnalysisTest (const edm::ParameterSet &ps)
 Constructor. More...
 
void endLuminosityBlock (edm::LuminosityBlock const &lumiSeg, edm::EventSetup const &c)
 DQM Client Diagnostic. More...
 
void endRun (edm::Run const &run, edm::EventSetup const &c)
 
std::string getMEName (const DTSuperLayerId &slID)
 Get the ME name. More...
 
virtual ~DTResolutionAnalysisTest ()
 Destructor. More...
 
- Public Member Functions inherited from edm::EDAnalyzer
 EDAnalyzer ()
 
std::string workerType () const
 
virtual ~EDAnalyzer ()
 
- Public Member Functions inherited from edm::EDConsumerBase
 EDConsumerBase ()
 
ProductHolderIndex indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductHolderIndex > &) const
 
void itemsToGet (BranchType, std::vector< ProductHolderIndex > &) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void updateLookup (BranchType iBranchType, ProductHolderIndexHelper const &)
 
virtual ~EDConsumerBase ()
 

Private Member Functions

double meanInRange (double mean) const
 
void resetMEs ()
 
double sigmaInRange (double sigma) const
 
int slFromBin (int bin) const
 
int stationFromBin (int bin) const
 

Private Attributes

DQMStoredbe
 
bool doCalibAnalysis
 
MonitorElementglobalResSummary
 
double maxGoodMeanValue
 
double maxGoodSigmaValue
 
std::map< int, MonitorElement * > meanDistr
 
std::map< std::pair< int, int >
, MonitorElement * > 
MeanHistos
 
double minBadMeanValue
 
double minBadSigmaValue
 
edm::ESHandle< DTGeometrymuonGeom
 
int nevents
 
unsigned int nLumiSegs
 
int percentual
 
int prescaleFactor
 
int run
 
std::map< int, MonitorElement * > sigmaDistr
 
std::map< std::pair< int, int >
, MonitorElement * > 
SigmaHistos
 
std::string topHistoFolder
 
std::map< int, MonitorElement * > wheelMeanHistos
 
std::map< int, MonitorElement * > wheelSigmaHistos
 

Additional Inherited Members

- Public Types inherited from edm::EDAnalyzer
typedef EDAnalyzer ModuleType
 
typedef WorkerT< EDAnalyzerWorkerType
 
- Static Public Member Functions inherited from edm::EDAnalyzer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &)
 
- Protected Member Functions inherited from edm::EDAnalyzer
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
CurrentProcessingContext const * currentContext () const
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 

Detailed Description

Definition at line 31 of file DTResolutionAnalysisTest.h.

Constructor & Destructor Documentation

DTResolutionAnalysisTest::DTResolutionAnalysisTest ( const edm::ParameterSet ps)

Constructor.

Definition at line 38 of file DTResolutionAnalysisTest.cc.

References edm::ParameterSet::getUntrackedParameter(), LogTrace, cppFunctionSkipper::operator, and dtDQMClient_cfg::prescaleFactor.

38  {
39 
40  LogTrace ("DTDQM|DTMonitorClient|DTResolutionAnalysisTest") << "[DTResolutionAnalysisTest]: Constructor";
41 
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 }
T getUntrackedParameter(std::string const &, T const &) const
#define LogTrace(id)
DTResolutionAnalysisTest::~DTResolutionAnalysisTest ( )
virtual

Destructor.

Definition at line 57 of file DTResolutionAnalysisTest.cc.

References LogTrace, and nevents.

57  {
58 
59  LogTrace ("DTDQM|DTMonitorClient|DTResolutionAnalysisTest") << "DTResolutionAnalysisTest: analyzed " << nevents << " events";
60 
61 }
#define LogTrace(id)

Member Function Documentation

void DTResolutionAnalysisTest::analyze ( const edm::Event e,
const edm::EventSetup c 
)
virtual

Analyze.

Implements edm::EDAnalyzer.

Definition at line 93 of file DTResolutionAnalysisTest.cc.

References nevents.

93  {
94 
95  nevents++;
96 
97 }
void DTResolutionAnalysisTest::beginJob ( void  )
virtual

BeginJob.

Reimplemented from edm::EDAnalyzer.

Definition at line 64 of file DTResolutionAnalysisTest.cc.

References LogTrace, and nevents.

64  {
65 
66  LogTrace ("DTDQM|DTMonitorClient|DTResolutionAnalysisTest") <<"[DTResolutionAnalysisTest]: BeginJob";
67 
68  nevents = 0;
69 
70 }
#define LogTrace(id)
void DTResolutionAnalysisTest::beginLuminosityBlock ( edm::LuminosityBlock const &  lumiSeg,
edm::EventSetup const &  context 
)
virtual

Reimplemented from edm::EDAnalyzer.

Definition at line 82 of file DTResolutionAnalysisTest.cc.

References LogTrace, edm::LuminosityBlockBase::run(), and DTTTrigCorrFirst::run.

82  {
83 
84  LogTrace ("DTDQM|DTMonitorClient|DTResolutionAnalysisTest") <<"[DTResolutionAnalysisTest]: Begin of LS transition";
85 
86  // Get the run number
87  run = lumiSeg.run();
88 
89 }
#define LogTrace(id)
void DTResolutionAnalysisTest::beginRun ( const edm::Run r,
const edm::EventSetup c 
)
virtual

BeginRun.

Reimplemented from edm::EDAnalyzer.

Definition at line 72 of file DTResolutionAnalysisTest.cc.

References edm::EventSetup::get(), and LogTrace.

72  {
73 
74  LogTrace ("DTDQM|DTMonitorClient|DTResolutionAnalysisTest") <<"[DTResolutionAnalysisTest]: BeginRun";
75 
76  // Get the geometry
77  context.get<MuonGeometryRecord>().get(muonGeom);
78 
79 }
edm::ESHandle< DTGeometry > muonGeom
#define LogTrace(id)
void DTResolutionAnalysisTest::bookHistos ( )

book the summary histograms

Definition at line 106 of file DTResolutionAnalysisTest.cc.

References bookHistos().

106  {
107 
108  // global residual summary
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 }
std::map< int, MonitorElement * > sigmaDistr
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
Definition: DQMStore.cc:722
void bookHistos()
book the summary histograms
std::map< int, MonitorElement * > wheelMeanHistos
std::map< int, MonitorElement * > wheelSigmaHistos
MonitorElement * book2D(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY)
Book 2D histogram.
Definition: DQMStore.cc:850
std::map< int, MonitorElement * > meanDistr
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:434
void DTResolutionAnalysisTest::bookHistos ( int  wh)

Definition at line 305 of file DTResolutionAnalysisTest.cc.

305  {
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 }
std::map< int, MonitorElement * > wheelMeanHistos
std::map< int, MonitorElement * > wheelSigmaHistos
MonitorElement * book2D(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY)
Book 2D histogram.
Definition: DQMStore.cc:850
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:434
void DTResolutionAnalysisTest::bookHistos ( int  wh,
int  sect 
)

Definition at line 352 of file DTResolutionAnalysisTest.cc.

352  {
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 }
std::map< std::pair< int, int >, MonitorElement * > SigmaHistos
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
Definition: DQMStore.cc:722
std::map< std::pair< int, int >, MonitorElement * > MeanHistos
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:434
void DTResolutionAnalysisTest::endLuminosityBlock ( edm::LuminosityBlock const &  lumiSeg,
edm::EventSetup const &  c 
)
virtual

DQM Client Diagnostic.

Reimplemented from edm::EDAnalyzer.

Definition at line 101 of file DTResolutionAnalysisTest.cc.

101  {
102 
103 }
void DTResolutionAnalysisTest::endRun ( edm::Run const &  run,
edm::EventSetup const &  c 
)
virtual

Reimplemented from edm::EDAnalyzer.

Definition at line 160 of file DTResolutionAnalysisTest.cc.

References abs, bookHistos(), HcalObjRepresent::Fill(), MonitorElement::getMean(), MonitorElement::getRMS(), MonitorElement::getTH1F(), LogTrace, timingPdfMaker::mean, DTChamberId::sector(), DTChamberId::station(), DTSuperLayerId::superLayer(), DTSuperLayerId::superlayer(), histoStyle::weight, and DTChamberId::wheel().

160  {
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 }
std::map< std::pair< int, int >, MonitorElement * > SigmaHistos
double meanInRange(double mean) const
std::map< int, MonitorElement * > sigmaDistr
#define abs(x)
Definition: mlp_lapack.h:159
std::string getMEName(const DTSuperLayerId &slID)
Get the ME name.
double getMean(int axis=1) const
get mean value of histogram along x, y or z axis (axis=1, 2, 3 respectively)
void Fill(long long x)
edm::ESHandle< DTGeometry > muonGeom
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
std::pair< std::string, MonitorElement * > entry
Definition: ME_MAP.h:8
std::map< std::pair< int, int >, MonitorElement * > MeanHistos
int superLayer() const
Return the superlayer number.
MonitorElement * get(const std::string &path) const
get ME from full pathname (e.g. &quot;my/long/dir/my_histo&quot;)
Definition: DQMStore.cc:1473
#define LogTrace(id)
bool dirExists(const std::string &path) const
true if directory exists
Definition: DQMStore.cc:498
int superlayer() const
Return the superlayer number (deprecated method name)
void bookHistos()
book the summary histograms
TH1F * getTH1F(void) const
std::map< int, MonitorElement * > wheelMeanHistos
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
std::map< int, MonitorElement * > wheelSigmaHistos
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
std::map< int, MonitorElement * > meanDistr
string DTResolutionAnalysisTest::getMEName ( const DTSuperLayerId slID)

Get the ME name.

Definition at line 422 of file DTResolutionAnalysisTest.cc.

References DTChamberId::sector(), DTChamberId::station(), relativeConstraints::station, DTSuperLayerId::superlayer(), and DTChamberId::wheel().

422  {
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 }
int superlayer() const
Return the superlayer number (deprecated method name)
int sector() const
Definition: DTChamberId.h:63
int station() const
Return the station number.
Definition: DTChamberId.h:53
int wheel() const
Return the wheel number.
Definition: DTChamberId.h:47
double DTResolutionAnalysisTest::meanInRange ( double  mean) const
private

Definition at line 468 of file DTResolutionAnalysisTest.cc.

References relativeConstraints::value.

468  {
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 }
void DTResolutionAnalysisTest::resetMEs ( )
private

Definition at line 484 of file DTResolutionAnalysisTest.cc.

References timingPdfMaker::histo.

484  {
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 }
std::map< int, MonitorElement * > sigmaDistr
std::map< int, MonitorElement * > wheelMeanHistos
std::map< int, MonitorElement * > wheelSigmaHistos
void Reset(void)
reset ME (ie. contents, errors, etc)
std::map< int, MonitorElement * > meanDistr
double DTResolutionAnalysisTest::sigmaInRange ( double  sigma) const
private

Definition at line 476 of file DTResolutionAnalysisTest.cc.

References relativeConstraints::value.

476  {
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 }
int DTResolutionAnalysisTest::slFromBin ( int  bin) const
private

Definition at line 461 of file DTResolutionAnalysisTest.cc.

References run_regression::ret.

461  {
462  int ret = bin%3;
463  if(ret == 0 || bin == 11) ret = 3;
464 
465  return ret;
466 }
int DTResolutionAnalysisTest::stationFromBin ( int  bin) const
private

Definition at line 456 of file DTResolutionAnalysisTest.cc.

456  {
457  return (int) (bin /3.1)+1;
458 }

Member Data Documentation

DQMStore* DTResolutionAnalysisTest::dbe
private

Definition at line 75 of file DTResolutionAnalysisTest.h.

bool DTResolutionAnalysisTest::doCalibAnalysis
private

Definition at line 83 of file DTResolutionAnalysisTest.h.

MonitorElement* DTResolutionAnalysisTest::globalResSummary
private

Definition at line 106 of file DTResolutionAnalysisTest.h.

double DTResolutionAnalysisTest::maxGoodMeanValue
private

Definition at line 78 of file DTResolutionAnalysisTest.h.

double DTResolutionAnalysisTest::maxGoodSigmaValue
private

Definition at line 80 of file DTResolutionAnalysisTest.h.

std::map< int, MonitorElement* > DTResolutionAnalysisTest::meanDistr
private

Definition at line 94 of file DTResolutionAnalysisTest.h.

std::map< std::pair<int,int> , MonitorElement* > DTResolutionAnalysisTest::MeanHistos
private

Definition at line 88 of file DTResolutionAnalysisTest.h.

double DTResolutionAnalysisTest::minBadMeanValue
private

Definition at line 79 of file DTResolutionAnalysisTest.h.

double DTResolutionAnalysisTest::minBadSigmaValue
private

Definition at line 81 of file DTResolutionAnalysisTest.h.

edm::ESHandle<DTGeometry> DTResolutionAnalysisTest::muonGeom
private

Definition at line 85 of file DTResolutionAnalysisTest.h.

int DTResolutionAnalysisTest::nevents
private

Definition at line 69 of file DTResolutionAnalysisTest.h.

unsigned int DTResolutionAnalysisTest::nLumiSegs
private

Definition at line 70 of file DTResolutionAnalysisTest.h.

int DTResolutionAnalysisTest::percentual
private

Definition at line 73 of file DTResolutionAnalysisTest.h.

int DTResolutionAnalysisTest::prescaleFactor
private

Definition at line 71 of file DTResolutionAnalysisTest.h.

int DTResolutionAnalysisTest::run
private
std::map< int, MonitorElement* > DTResolutionAnalysisTest::sigmaDistr
private

Definition at line 95 of file DTResolutionAnalysisTest.h.

std::map< std::pair<int,int> , MonitorElement* > DTResolutionAnalysisTest::SigmaHistos
private

Definition at line 89 of file DTResolutionAnalysisTest.h.

std::string DTResolutionAnalysisTest::topHistoFolder
private

Definition at line 109 of file DTResolutionAnalysisTest.h.

std::map< int, MonitorElement* > DTResolutionAnalysisTest::wheelMeanHistos
private

Definition at line 91 of file DTResolutionAnalysisTest.h.

std::map< int, MonitorElement* > DTResolutionAnalysisTest::wheelSigmaHistos
private

Definition at line 92 of file DTResolutionAnalysisTest.h.