CMS 3D CMS Logo

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

#include <DTSegmentAnalysisTest.h>

Inheritance diagram for DTSegmentAnalysisTest:
DQMEDHarvester edm::one::EDAnalyzer< edm::one::WatchRuns, edm::one::WatchLuminosityBlocks, edm::one::SharedResources > edm::one::EDAnalyzerBase edm::EDConsumerBase

Public Member Functions

void beginRun (const edm::Run &, const edm::EventSetup &)
 
void bookHistos (DQMStore::IBooker &)
 
 DTSegmentAnalysisTest (const edm::ParameterSet &ps)
 Constructor. More...
 
void endRun (edm::Run const &run, edm::EventSetup const &c)
 
std::string getMEName (const DTChamberId &chID, std::string histoTag)
 Get the ME name. More...
 
void performClientDiagnostic (DQMStore::IGetter &)
 Perform client diagnostic operations. More...
 
virtual ~DTSegmentAnalysisTest ()
 Destructor. More...
 
- Public Member Functions inherited from DQMEDHarvester
virtual void analyze (edm::Event const &, edm::EventSetup const &) final
 
virtual void beginLuminosityBlock (edm::LuminosityBlock const &, edm::EventSetup const &) final
 
 DQMEDHarvester (void)
 
virtual void endJob () final
 
virtual void endLuminosityBlock (edm::LuminosityBlock const &, edm::EventSetup const &) final
 
- Public Member Functions inherited from edm::one::EDAnalyzer< edm::one::WatchRuns, edm::one::WatchLuminosityBlocks, edm::one::SharedResources >
 EDAnalyzer ()=default
 
- Public Member Functions inherited from edm::one::EDAnalyzerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 EDAnalyzerBase ()
 
ModuleDescription const & moduleDescription () const
 
virtual ~EDAnalyzerBase ()
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
 EDConsumerBase ()
 
ProductHolderIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
std::vector
< ProductHolderIndexAndSkipBit >
const & 
itemsToGetFromEvent () const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesDependentUpon (const std::string &iProcessName, std::vector< const char * > &oModuleLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
bool registeredToConsume (ProductHolderIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void updateLookup (BranchType iBranchType, ProductHolderIndexHelper const &)
 
virtual ~EDConsumerBase ()
 

Protected Member Functions

void dqmEndJob (DQMStore::IBooker &, DQMStore::IGetter &)
 
void dqmEndLuminosityBlock (DQMStore::IBooker &, DQMStore::IGetter &, edm::LuminosityBlock const &, edm::EventSetup 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)
 

Private Attributes

bool bookingdone
 
std::map< std::pair< int, int >
, MonitorElement * > 
chi2Histos
 
bool detailedAnalysis
 
bool hltDQMMode
 
int maxPhiHit
 
int maxPhiZHit
 
edm::ESHandle< DTGeometrymuonGeom
 
int nevents
 
unsigned int nLumiSegs
 
int nMinEvts
 
bool normalizeHistoPlots
 
edm::ParameterSet parameters
 
bool runOnline
 
std::map< std::pair< int, int >
, MonitorElement * > 
segmRecHitHistos
 
std::map< int, MonitorElement * > summaryHistos
 
std::string topHistoFolder
 

Additional Inherited Members

- Public Types inherited from edm::one::EDAnalyzerBase
typedef EDAnalyzerBase ModuleType
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from edm::one::EDAnalyzerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 

Detailed Description

Definition at line 43 of file DTSegmentAnalysisTest.h.

Constructor & Destructor Documentation

DTSegmentAnalysisTest::DTSegmentAnalysisTest ( const edm::ParameterSet ps)

Constructor.

Definition at line 44 of file DTSegmentAnalysisTest.cc.

References edm::ParameterSet::getUntrackedParameter(), LogTrace, cmsHarvester::nevents, and Parameters::parameters.

44  {
45 
46  LogTrace ("DTDQM|DTMonitorClient|DTSegmentAnalysisTest") << "[DTSegmentAnalysisTest]: Constructor";
47  parameters = ps;
48 
49  // get the cfi parameters
50  detailedAnalysis = parameters.getUntrackedParameter<bool>("detailedAnalysis",false);
51  normalizeHistoPlots = parameters.getUntrackedParameter<bool>("normalizeHistoPlots",false);
52  runOnline = parameters.getUntrackedParameter<bool>("runOnline",true);
53  // top folder for the histograms in DQMStore
54  topHistoFolder = ps.getUntrackedParameter<string>("topHistoFolder","DT/02-Segments");
55  // hlt DQM mode
56 
57  hltDQMMode = ps.getUntrackedParameter<bool>("hltDQMMode",false);
58  nMinEvts = ps.getUntrackedParameter<int>("nEventsCert", 5000);
59  maxPhiHit = ps.getUntrackedParameter<int>("maxPhiHit", 7);
60  maxPhiZHit = ps.getUntrackedParameter<int>("maxPhiZHit", 11);
61 
62  nevents = 0;
63 
64  bookingdone = 0;
65 
66 }
T getUntrackedParameter(std::string const &, T const &) const
edm::ParameterSet parameters
#define LogTrace(id)
DTSegmentAnalysisTest::~DTSegmentAnalysisTest ( )
virtual

Destructor.

Definition at line 69 of file DTSegmentAnalysisTest.cc.

References LogTrace, and cmsHarvester::nevents.

69  {
70 
71  LogTrace ("DTDQM|DTMonitorClient|DTSegmentAnalysisTest") << "DTSegmentAnalysisTest: analyzed " << nevents << " events";
72 }
#define LogTrace(id)

Member Function Documentation

void DTSegmentAnalysisTest::beginRun ( const edm::Run run,
const edm::EventSetup context 
)
virtual

Reimplemented from DQMEDHarvester.

Definition at line 74 of file DTSegmentAnalysisTest.cc.

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

74  {
75 
76  LogTrace ("DTDQM|DTMonitorClient|DTSegmentAnalysisTest") <<"[DTSegmentAnalysisTest]: BeginRun";
77 
78  context.get<MuonGeometryRecord>().get(muonGeom);
79 }
#define LogTrace(id)
edm::ESHandle< DTGeometry > muonGeom
const T & get() const
Definition: EventSetup.h:55
void DTSegmentAnalysisTest::bookHistos ( DQMStore::IBooker ibooker)

Definition at line 321 of file DTSegmentAnalysisTest.cc.

References DQMStore::IBooker::book1D(), DQMStore::IBooker::book2D(), MonitorElement::setAxisTitle(), MonitorElement::setBinLabel(), and DQMStore::IBooker::setCurrentFolder().

321  {
322 
323  for(int wh=-2; wh<=2; wh++){
324  stringstream wheel; wheel << wh;
325  string histoName = "segmentSummary_W" + wheel.str();
326 
328 
329  summaryHistos[wh] = ibooker.book2D(histoName.c_str(),histoName.c_str(),12,1,13,4,1,5);
330  summaryHistos[wh]->setAxisTitle("Sector",1);
331  summaryHistos[wh]->setBinLabel(1,"MB1",2);
332  summaryHistos[wh]->setBinLabel(2,"MB2",2);
333  summaryHistos[wh]->setBinLabel(3,"MB3",2);
334  summaryHistos[wh]->setBinLabel(4,"MB4",2);
335 
336  if(detailedAnalysis){
337  for(int sect=1; sect<=14; sect++){
338  stringstream sector; sector << sect;
339  string chi2HistoName = "chi2BadSegmPercentual_W" + wheel.str() + "_Sec" + sector.str();
340  ibooker.setCurrentFolder(topHistoFolder + "/Wheel" + wheel.str() + "/Tests");
341  chi2Histos[make_pair(wh,sect)] = ibooker.book1D(chi2HistoName.c_str(),chi2HistoName.c_str(),4,1,5);
342  chi2Histos[make_pair(wh,sect)]->setBinLabel(1,"MB1");
343  chi2Histos[make_pair(wh,sect)]->setBinLabel(2,"MB2");
344  chi2Histos[make_pair(wh,sect)]->setBinLabel(3,"MB3");
345  chi2Histos[make_pair(wh,sect)]->setBinLabel(4,"MB4");
346 
347  string segmHistoName = "residualsOnSegmRecHitNumber_W" + wheel.str() + "_Sec" + sector.str();
348  segmRecHitHistos[make_pair(wh,sect)] = ibooker.book1D(segmHistoName.c_str(),segmHistoName.c_str(),4,1,5);
349  segmRecHitHistos[make_pair(wh,sect)]->setBinLabel(1,"MB1");
350  segmRecHitHistos[make_pair(wh,sect)]->setBinLabel(2,"MB2");
351  segmRecHitHistos[make_pair(wh,sect)]->setBinLabel(3,"MB3");
352  segmRecHitHistos[make_pair(wh,sect)]->setBinLabel(4,"MB4");
353 
354  }
355  }
356  }
357 
358  string histoName = "segmentSummary";
359 
361 
362  summaryHistos[3] = ibooker.book2D(histoName.c_str(),histoName.c_str(),12,1,13,5,-2,3);
363  summaryHistos[3]->setAxisTitle("Sector",1);
364  summaryHistos[3]->setAxisTitle("Wheel",2);
365 
366  summaryHistos[4] = ibooker.book2D("SegmentGlbSummary",histoName.c_str(),12,1,13,5,-2,3);
367  summaryHistos[4]->setAxisTitle("Sector",1);
368  summaryHistos[4]->setAxisTitle("Wheel",2);
369 
370 
371 }
std::map< std::pair< int, int >, MonitorElement * > segmRecHitHistos
MonitorElement * book1D(Args &&...args)
Definition: DQMStore.h:115
std::map< std::pair< int, int >, MonitorElement * > chi2Histos
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:274
MonitorElement * book2D(Args &&...args)
Definition: DQMStore.h:133
std::map< int, MonitorElement * > summaryHistos
void DTSegmentAnalysisTest::dqmEndJob ( DQMStore::IBooker ibooker,
DQMStore::IGetter igetter 
)
protectedvirtual

Implements DQMEDHarvester.

Definition at line 106 of file DTSegmentAnalysisTest.cc.

References DQMStore::IGetter::get(), LogTrace, and DTTimeEvolutionHisto::normalizeTo().

106  {
107 
108  if (!runOnline) {
109 
110  LogTrace ("DTDQM|DTMonitorClient|DTSegmentAnalysisTest")
111  <<"[DTSegmentAnalysisTest]: endJob. Client called in offline mode , perform DQM client operation";
112 
113  performClientDiagnostic(igetter);
114  }
115 
116  if(normalizeHistoPlots) {
117  LogTrace ("DTDQM|DTMonitorClient|DTSegmentAnalysisTest") << " Performing time-histo normalization" << endl;
118  MonitorElement* hNevtPerLS = 0;
119 
120  if(hltDQMMode) hNevtPerLS = igetter.get(topHistoFolder + "/NevtPerLS");
121  else hNevtPerLS = igetter.get("DT/EventInfo/NevtPerLS");
122 
123  if(hNevtPerLS != 0) {
124  for(int wheel = -2; wheel != 3; ++wheel) { // loop over wheels
125  for(int sector = 1; sector <= 12; ++sector) { // loop over sectors
126  stringstream wheelstr; wheelstr << wheel;
127  stringstream sectorstr; sectorstr << sector;
128  string sectorHistoName = topHistoFolder + "/Wheel" + wheelstr.str() +
129  "/Sector" + sectorstr.str() +
130  "/NSegmPerEvent_W" + wheelstr.str() +
131  "_Sec" + sectorstr.str();
132 
133  //FR get the histo from here (igetter available!) ...
134  MonitorElement* histoGot=igetter.get(sectorHistoName);
135 
136  //FR ...and just make with it a DTTimeEvolutionHisto
137  DTTimeEvolutionHisto hNSegmPerLS(histoGot);
138 
139  hNSegmPerLS.normalizeTo(hNevtPerLS);
140  }
141  }
142  } else {
143  LogError ("DTDQM|DTMonitorClient|DTSegmentAnalysisTest") << "Histo NevtPerLS not found!" << endl;
144  }
145  }
146 }
MonitorElement * get(const std::string &path)
Definition: DQMStore.cc:302
#define LogTrace(id)
void performClientDiagnostic(DQMStore::IGetter &)
Perform client diagnostic operations.
void DTSegmentAnalysisTest::dqmEndLuminosityBlock ( DQMStore::IBooker ibooker,
DQMStore::IGetter igetter,
edm::LuminosityBlock const &  lumiSeg,
edm::EventSetup const &  context 
)
protectedvirtual

Reimplemented from DQMEDHarvester.

Definition at line 82 of file DTSegmentAnalysisTest.cc.

References bookHistos(), edm::LuminosityBlockBase::id(), LogTrace, and edm::LuminosityBlockID::luminosityBlock().

83  {
84 
85  // book the histos
86 
87  if (!bookingdone) bookHistos(ibooker);
88  bookingdone = 1;
89 
90  // counts number of lumiSegs
91  nLumiSegs = lumiSeg.id().luminosityBlock();
92 
93  if (runOnline) {
94  LogTrace ("DTDQM|DTMonitorClient|DTSegmentAnalysisTest")
95  <<"[DTSegmentAnalysisTest]: End of LS " << nLumiSegs
96  << ". Client called in online mode , perform DQM client operation";
97 
98  performClientDiagnostic(igetter);
99  }
100 
101 }
void bookHistos(DQMStore::IBooker &)
#define LogTrace(id)
void performClientDiagnostic(DQMStore::IGetter &)
Perform client diagnostic operations.
void DTSegmentAnalysisTest::endRun ( edm::Run const &  run,
edm::EventSetup const &  c 
)
virtual

Reimplemented from DQMEDHarvester.

Definition at line 103 of file DTSegmentAnalysisTest.cc.

103  {
104 }
string DTSegmentAnalysisTest::getMEName ( const DTChamberId chID,
std::string  histoTag 
)

Get the ME name.

Definition at line 296 of file DTSegmentAnalysisTest.cc.

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

296  {
297 
298  stringstream wheel; wheel << chID.wheel();
299  stringstream station; station << chID.station();
300  stringstream sector; sector << chID.sector();
301 
302  string folderName =
303  topHistoFolder + "/Wheel" + wheel.str() +
304  "/Sector" + sector.str() +
305  "/Station" + station.str() + "/";
306 
307  string histoname = folderName + histoTag
308  + "_W" + wheel.str()
309  + "_St" + station.str()
310  + "_Sec" + sector.str();
311 
312  if(histoTag == "numberOfSegments")
313  histoname =
314  topHistoFolder + "/Wheel" + wheel.str() + "/" +
315  histoTag + + "_W" + wheel.str();
316 
317  return histoname;
318 
319 }
int sector() const
Definition: DTChamberId.h:61
int station() const
Return the station number.
Definition: DTChamberId.h:51
int wheel() const
Return the wheel number.
Definition: DTChamberId.h:45
void DTSegmentAnalysisTest::performClientDiagnostic ( DQMStore::IGetter igetter)

Perform client diagnostic operations.

Definition at line 148 of file DTSegmentAnalysisTest.cc.

References funct::abs(), newFWLiteAna::bin, HcalObjRepresent::Fill(), DQMStore::IGetter::get(), QReport::getBadChannels(), MonitorElement::getFloatValue(), MonitorElement::getTH1F(), MonitorElement::getTH2F(), timingPdfMaker::histo, python.multivaluedict::map(), pileupCalc::nbins, Parameters::parameters, DTChamberId::sector(), DTChamberId::station(), dtDQMClient_cfg::threshold, histoStyle::weight, and DTChamberId::wheel().

148  {
149 
150  summaryHistos[3]->Reset();
151  summaryHistos[4]->Reset();
152  vector<const DTChamber*>::const_iterator ch_it = muonGeom->chambers().begin();
153  vector<const DTChamber*>::const_iterator ch_end = muonGeom->chambers().end();
154 
155  for (; ch_it != ch_end; ++ch_it) {
156  DTChamberId chID = (*ch_it)->id();
157 
158  MonitorElement * hNHits = igetter.get(getMEName(chID, "h4DSegmNHits"));
159  MonitorElement * hSegmOcc = igetter.get(getMEName(chID, "numberOfSegments"));
160 
161  if (hNHits && hSegmOcc) {
162 
163  TH1F * hNHits_root = hNHits->getTH1F();
164  TH2F * hSegmOcc_root = hSegmOcc->getTH2F();
165  TH2F * summary_histo_root = summaryHistos[3]->getTH2F();
166 
167  int sector = chID.sector();
168  if(sector == 13) sector=4;
169  if(sector == 14) sector=10;
170 
171 
172  if((chID.station()!=4 && hNHits_root->GetMaximumBin() < maxPhiZHit)||
173  (chID.station()==4 && hNHits_root->GetMaximumBin() < maxPhiHit)){
174  summaryHistos[chID.wheel()]->setBinContent(sector, chID.station(),1);
175  if(summary_histo_root->GetBinContent(sector, chID.wheel()+3)<1)
176  summaryHistos[3]->setBinContent(sector, chID.wheel()+3,1);
177  }
178  else
179  summaryHistos[chID.wheel()]->setBinContent(sector, chID.station(),0);
180 
181  if(detailedAnalysis) {
182  if(chID.station()!=4)
183  segmRecHitHistos[make_pair(chID.wheel(),chID.sector())]->Fill(chID.station(),abs(12-hNHits_root->GetMaximumBin()));
184  else
185  segmRecHitHistos[make_pair(chID.wheel(),chID.sector())]->Fill(chID.station(),abs(8-hNHits_root->GetMaximumBin()));
186  }
187 
188  TH2F * summary2_histo_root = summaryHistos[3]->getTH2F();
189 
190  if(hSegmOcc_root->GetBinContent(sector,chID.station())==0){
191  summaryHistos[chID.wheel()]->setBinContent(sector, chID.station(),2);
192  if(summary2_histo_root->GetBinContent(sector, chID.wheel()+3)<2)
193  summaryHistos[3]->setBinContent(sector, chID.wheel()+3,2);
194  } else {
195  // Fill the percentage of segment occupancy
196  float weight = 1./4.;
197  if((sector == 4 || sector == 10) && chID.station() == 4) weight = 1./8.;
198  summaryHistos[4]->Fill(sector, chID.wheel(),weight);
199  }
200 
201  } else {
202  LogVerbatim ("DTDQM|DTMonitorClient|DTSegmentAnalysisTest")
203  << "[DTSegmentAnalysisTest]: histos not found!!"; // FIXME
204  }
205 
206  if(detailedAnalysis){ // switch on detailed analysis
207 
208  //test on chi2 segment quality
209 
210  MonitorElement * chi2_histo = igetter.get(getMEName(chID, "h4DChi2"));
211  if(chi2_histo) {
212  TH1F * chi2_histo_root = chi2_histo->getTH1F();
213  double threshold = parameters.getUntrackedParameter<double>("chi2Threshold", 5);
214  double maximum = chi2_histo_root->GetXaxis()->GetXmax();
215  double minimum = chi2_histo_root->GetXaxis()->GetXmin();
216  int nbins = chi2_histo_root->GetXaxis()->GetNbins();
217  int thresholdBin = int(threshold/((maximum-minimum)/nbins));
218 
219  double badSegments=0;
220  for(int bin=thresholdBin; bin<=nbins; bin++){
221  badSegments+=chi2_histo_root->GetBinContent(bin);
222  }
223 
224  if(chi2_histo_root->GetEntries()!=0){
225  double badSegmentsPercentual= badSegments/double(chi2_histo_root->GetEntries());
226  chi2Histos[make_pair(chID.wheel(),chID.sector())]->Fill(chID.station(),badSegmentsPercentual);
227  }
228  } else {
229  LogVerbatim ("DTDQM|DTMonitorClient|DTSegmentAnalysisTest")
230  <<"[DTSegmentAnalysisTest]: Histo: " << getMEName(chID, "h4DChi2") << " not found!" << endl;
231  }
232  } // end of switch for detailed analysis
233 
234  } //loop over all the chambers
235 
236  string nEvtsName = "DT/EventInfo/Counters/nProcessedEventsSegment";
237 
238  MonitorElement * meProcEvts = igetter.get(nEvtsName);
239 
240  if (meProcEvts) {
241  int nProcEvts = meProcEvts->getFloatValue();
242  summaryHistos[4]->setEntries(nProcEvts < nMinEvts ? 10. : nProcEvts);
243  } else {
244  summaryHistos[4]->setEntries(nMinEvts + 1);
245  LogVerbatim ("DTDQM|DTMonitorClient|DTOccupancyTest") << "[DTOccupancyTest] ME: "
246  << nEvtsName << " not found!" << endl;
247  }
248 
249  if(detailedAnalysis){
250 
251  string chi2CriterionName = parameters.getUntrackedParameter<string>("chi2TestName","chi2InRange");
252  for(map<pair<int, int>, MonitorElement*> ::const_iterator histo = chi2Histos.begin();
253  histo != chi2Histos.end();
254  histo++) {
255 
256  const QReport * theChi2QReport = (*histo).second->getQReport(chi2CriterionName);
257  if(theChi2QReport) {
258  vector<dqm::me_util::Channel> badChannels = theChi2QReport->getBadChannels();
259  for (vector<dqm::me_util::Channel>::iterator channel = badChannels.begin();
260  channel != badChannels.end(); channel++) {
261 
262  LogError ("DTDQM|DTMonitorClient|DTSegmentAnalysisTest") << "Wheel: "<<(*histo).first.first
263  << " Sector: "<<(*histo).first.second
264  << " Bad stations: "<<(*channel).getBin()
265  <<" Contents : "<<(*channel).getContents();
266  }
267  }
268  }
269 
270 
271  string segmRecHitCriterionName = parameters.getUntrackedParameter<string>("segmRecHitTestName","segmRecHitInRange");
272  for(map<pair<int, int>, MonitorElement*> ::const_iterator histo = segmRecHitHistos.begin();
273  histo != segmRecHitHistos.end();
274  histo++) {
275 
276  const QReport * theSegmRecHitQReport = (*histo).second->getQReport(segmRecHitCriterionName);
277  if(theSegmRecHitQReport) {
278  vector<dqm::me_util::Channel> badChannels = theSegmRecHitQReport->getBadChannels();
279  for (vector<dqm::me_util::Channel>::iterator channel = badChannels.begin();
280  channel != badChannels.end(); channel++) {
281 
282  LogError ("DTDQM|DTMonitorClient|DTSegmentAnalysisTest") << "Wheel: "<<(*histo).first.first
283  << " Sector: "<<(*histo).first.second
284  << " Bad stations on recHit number: "
285  <<(*channel).getBin()
286  <<" Contents : "
287  <<(*channel).getContents();
288  }
289  }
290  }
291 
292  } // end of detailedAnalysis
293 }
T getUntrackedParameter(std::string const &, T const &) const
edm::ParameterSet parameters
MonitorElement * get(const std::string &path)
Definition: DQMStore.cc:302
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
std::map< std::pair< int, int >, MonitorElement * > segmRecHitHistos
double getFloatValue(void) const
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
const std::vector< DQMChannel > & getBadChannels(void) const
Definition: QReport.h:33
std::string getMEName(const DTChamberId &chID, std::string histoTag)
Get the ME name.
std::map< std::pair< int, int >, MonitorElement * > chi2Histos
edm::ESHandle< DTGeometry > muonGeom
TH1F * getTH1F(void) const
int sector() const
Definition: DTChamberId.h:61
std::map< int, MonitorElement * > summaryHistos
int weight
Definition: histoStyle.py:50
int station() const
Return the station number.
Definition: DTChamberId.h:51
TH2F * getTH2F(void) const
int wheel() const
Return the wheel number.
Definition: DTChamberId.h:45

Member Data Documentation

bool DTSegmentAnalysisTest::bookingdone
private

Definition at line 83 of file DTSegmentAnalysisTest.h.

std::map< std::pair<int,int>, MonitorElement* > DTSegmentAnalysisTest::chi2Histos
private

Definition at line 89 of file DTSegmentAnalysisTest.h.

bool DTSegmentAnalysisTest::detailedAnalysis
private

Definition at line 75 of file DTSegmentAnalysisTest.h.

bool DTSegmentAnalysisTest::hltDQMMode
private

Definition at line 96 of file DTSegmentAnalysisTest.h.

int DTSegmentAnalysisTest::maxPhiHit
private

Definition at line 78 of file DTSegmentAnalysisTest.h.

int DTSegmentAnalysisTest::maxPhiZHit
private

Definition at line 79 of file DTSegmentAnalysisTest.h.

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

Definition at line 86 of file DTSegmentAnalysisTest.h.

int DTSegmentAnalysisTest::nevents
private

Definition at line 72 of file DTSegmentAnalysisTest.h.

unsigned int DTSegmentAnalysisTest::nLumiSegs
private

Definition at line 73 of file DTSegmentAnalysisTest.h.

int DTSegmentAnalysisTest::nMinEvts
private

Definition at line 76 of file DTSegmentAnalysisTest.h.

bool DTSegmentAnalysisTest::normalizeHistoPlots
private

Definition at line 92 of file DTSegmentAnalysisTest.h.

edm::ParameterSet DTSegmentAnalysisTest::parameters
private
bool DTSegmentAnalysisTest::runOnline
private

Definition at line 81 of file DTSegmentAnalysisTest.h.

std::map< std::pair<int,int>, MonitorElement* > DTSegmentAnalysisTest::segmRecHitHistos
private

Definition at line 90 of file DTSegmentAnalysisTest.h.

std::map< int, MonitorElement* > DTSegmentAnalysisTest::summaryHistos
private

Definition at line 91 of file DTSegmentAnalysisTest.h.

std::string DTSegmentAnalysisTest::topHistoFolder
private

Definition at line 94 of file DTSegmentAnalysisTest.h.