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
DTChamberEfficiencyTest Class Reference

#include <DTChamberEfficiencyTest.h>

Inheritance diagram for DTChamberEfficiencyTest:
edm::EDAnalyzer

Public Member Functions

 DTChamberEfficiencyTest (const edm::ParameterSet &ps)
 Constructor. More...
 
virtual ~DTChamberEfficiencyTest ()
 Destructor. More...
 
- Public Member Functions inherited from edm::EDAnalyzer
 EDAnalyzer ()
 
std::string workerType () const
 
virtual ~EDAnalyzer ()
 

Protected 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 &run, const edm::EventSetup &setup)
 BeginRun. More...
 
void bookHistos (const DTChamberId &ch)
 book the new ME More...
 
void bookHistos ()
 book the report summary More...
 
void endJob ()
 Endjob. More...
 
void endLuminosityBlock (edm::LuminosityBlock const &lumiSeg, edm::EventSetup const &c)
 DQM Client Diagnostic. More...
 
std::string getMEName (std::string histoTag, const DTChamberId &chID)
 Get the ME name. More...
 
- Protected Member Functions inherited from edm::EDAnalyzer
CurrentProcessingContext const * currentContext () const
 

Private Attributes

DQMStoredbe
 
edm::ESHandle< DTGeometrymuonGeom
 
int nevents
 
unsigned int nLumiSegs
 
edm::ParameterSet parameters
 
int prescaleFactor
 
int run
 
std::map< int, MonitorElement * > summaryHistos
 
std::map< std::string,
MonitorElement * > 
xEfficiencyHistos
 
std::map< std::string,
MonitorElement * > 
xVSyEffHistos
 
std::map< std::string,
MonitorElement * > 
yEfficiencyHistos
 

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 &)
 

Detailed Description

Definition at line 42 of file DTChamberEfficiencyTest.h.

Constructor & Destructor Documentation

DTChamberEfficiencyTest::DTChamberEfficiencyTest ( const edm::ParameterSet ps)

Constructor.

Definition at line 36 of file DTChamberEfficiencyTest.cc.

References cppFunctionSkipper::operator, Parameters::parameters, and dtDQMClient_cfg::prescaleFactor.

36  {
37 
38  edm::LogVerbatim ("DTDQM|DTMonitorClient|DTChamberEfficiencyTest") << "[DTChamberEfficiencyTest]: Constructor";
39 
40  parameters = ps;
41 
43 
44  prescaleFactor = parameters.getUntrackedParameter<int>("diagnosticPrescale", 1);
45 
46 }
T getUntrackedParameter(std::string const &, T const &) const
DTChamberEfficiencyTest::~DTChamberEfficiencyTest ( )
virtual

Destructor.

Definition at line 50 of file DTChamberEfficiencyTest.cc.

References nevents.

50  {
51 
52  edm::LogVerbatim ("DTDQM|DTMonitorClient|DTChamberEfficiencyTest") << "DTChamberEfficiencyTest: analyzed " << nevents << " events";
53 
54 }

Member Function Documentation

void DTChamberEfficiencyTest::analyze ( const edm::Event e,
const edm::EventSetup c 
)
protectedvirtual

Analyze.

Implements edm::EDAnalyzer.

Definition at line 93 of file DTChamberEfficiencyTest.cc.

References nevents.

93  {
94 
95  nevents++;
96  edm::LogVerbatim ("DTDQM|DTMonitorClient|DTChamberEfficiencyTest") << "[DTChamberEfficiencyTest]: "<<nevents<<" events";
97 
98 }
void DTChamberEfficiencyTest::beginJob ( void  )
protectedvirtual

BeginJob.

Reimplemented from edm::EDAnalyzer.

Definition at line 57 of file DTChamberEfficiencyTest.cc.

References nevents.

57  {
58 
59  edm::LogVerbatim ("DTDQM|DTMonitorClient|DTChamberEfficiencyTest") <<"[DTChamberEfficiencyTest]: BeginJob";
60 
61  nevents = 0;
62 
63 }
void DTChamberEfficiencyTest::beginLuminosityBlock ( edm::LuminosityBlock const &  lumiSeg,
edm::EventSetup const &  context 
)
protectedvirtual

Reimplemented from edm::EDAnalyzer.

Definition at line 66 of file DTChamberEfficiencyTest.cc.

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

66  {
67 
68  edm::LogVerbatim ("DTDQM|DTMonitorClient|DTChamberEfficiencyTest") <<"[DTChamberEfficiencyTest]: Begin of LS transition";
69 
70  // Get the run number
71  run = lumiSeg.run();
72 
73 }
void DTChamberEfficiencyTest::beginRun ( const edm::Run run,
const edm::EventSetup setup 
)
protectedvirtual

BeginRun.

Reimplemented from edm::EDAnalyzer.

Definition at line 76 of file DTChamberEfficiencyTest.cc.

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

76  {
77 
78  // Get the DT Geometry
79  setup.get<MuonGeometryRecord>().get(muonGeom);
80 
81  // Loop over all the chambers
82  vector<DTChamber*>::const_iterator ch_it = muonGeom->chambers().begin();
83  vector<DTChamber*>::const_iterator ch_end = muonGeom->chambers().end();
84  for (; ch_it != ch_end; ++ch_it) {
85  // histo booking
86  bookHistos((*ch_it)->id());
87  }
88 
89  //summary histo booking
90  bookHistos();
91 }
void bookHistos()
book the report summary
const T & get() const
Definition: EventSetup.h:55
edm::ESHandle< DTGeometry > muonGeom
void DTChamberEfficiencyTest::bookHistos ( const DTChamberId ch)
protected

book the new ME

Definition at line 259 of file DTChamberEfficiencyTest.cc.

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

259  {
260 
261  stringstream wheel; wheel << chId.wheel();
262  stringstream station; station << chId.station();
263  stringstream sector; sector << chId.sector();
264 
265  string HistoName = "W" + wheel.str() + "_St" + station.str() + "_Sec" + sector.str();
266  string xEfficiencyHistoName = "xEfficiency_" + HistoName;
267  string yEfficiencyHistoName = "yEfficiency_" + HistoName;
268  string xVSyEffHistoName = "xVSyEff_" + HistoName;
269 
270  dbe->setCurrentFolder("DT/01-DTChamberEfficiency/Wheel" + wheel.str() +
271  "/Sector" + sector.str() +
272  "/Station" + station.str());
273 
274  xEfficiencyHistos[HistoName] = dbe->book1D(xEfficiencyHistoName.c_str(),xEfficiencyHistoName.c_str(),25,-250.,250.);
275  yEfficiencyHistos[HistoName] = dbe->book1D(yEfficiencyHistoName.c_str(),yEfficiencyHistoName.c_str(),25,-250.,250.);
276  xVSyEffHistos[HistoName] = dbe->book2D(xVSyEffHistoName.c_str(),xVSyEffHistoName.c_str(),25,-250.,250., 25,-250.,250.);
277 
278 }
std::map< std::string, MonitorElement * > yEfficiencyHistos
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
Definition: DQMStore.cc:717
std::map< std::string, MonitorElement * > xEfficiencyHistos
std::string HistoName
std::map< std::string, MonitorElement * > xVSyEffHistos
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:845
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:429
void DTChamberEfficiencyTest::bookHistos ( )
protected

book the report summary

Definition at line 281 of file DTChamberEfficiencyTest.cc.

281  {
282 
283  for(int wh=-2; wh<=2; wh++){
284  stringstream wheel; wheel << wh;
285  string histoName = "chEfficiencySummary_W" + wheel.str();
286  dbe->setCurrentFolder("DT/01-DTChamberEfficiency");
287  summaryHistos[wh] = dbe->book2D(histoName.c_str(),histoName.c_str(),12,1,13,4,1,5);
288  summaryHistos[wh]->setAxisTitle("Sector",1);
289  summaryHistos[wh]->setBinLabel(1,"MB1",2);
290  summaryHistos[wh]->setBinLabel(2,"MB2",2);
291  summaryHistos[wh]->setBinLabel(3,"MB3",2);
292  summaryHistos[wh]->setBinLabel(4,"MB4",2);
293  }
294 
295 }
std::map< int, MonitorElement * > summaryHistos
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:845
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:429
void DTChamberEfficiencyTest::endJob ( void  )
protectedvirtual

Endjob.

Reimplemented from edm::EDAnalyzer.

Definition at line 228 of file DTChamberEfficiencyTest.cc.

228  {
229 
230  edm::LogVerbatim ("DTDQM|DTMonitorClient|DTChamberEfficiencyTest") << "[DTChamberEfficiencyTest] endjob called!";
231 
232 }
void DTChamberEfficiencyTest::endLuminosityBlock ( edm::LuminosityBlock const &  lumiSeg,
edm::EventSetup const &  c 
)
protectedvirtual

DQM Client Diagnostic.

Reimplemented from edm::EDAnalyzer.

Definition at line 101 of file DTChamberEfficiencyTest.cc.

References QReport::getBadChannels(), MonitorElement::getTH2F(), edm::LuminosityBlockBase::id(), edm::LuminosityBlockID::luminosityBlock(), Parameters::parameters, dtDQMClient_cfg::prescaleFactor, DTChamberId::sector(), DTChamberId::station(), relativeConstraints::station, and DTChamberId::wheel().

101  {
102 
103  // counts number of updats (online mode) or number of events (standalone mode)
104  //nevents++;
105  // if running in standalone perform diagnostic only after a reasonalbe amount of events
106  //if ( parameters.getUntrackedParameter<bool>("runningStandalone", false) &&
107  // nevents%parameters.getUntrackedParameter<int>("diagnosticPrescale", 1000) != 0 ) return;
108  //edm::LogVerbatim ("DTDQM|DTMonitorClient|DTChamberEfficiencyTest") << "[DTChamberEfficiencyTest]: "<<nevents<<" updates";
109 
110  edm::LogVerbatim ("DTDQM|DTMonitorClient|DTChamberEfficiencyTest") <<"[DTChamberEfficiencyTest]: End of LS transition, performing the DQM client operation";
111 
112  // counts number of lumiSegs
113  nLumiSegs = lumiSeg.id().luminosityBlock();
114 
115  // prescale factor
116  if ( nLumiSegs%prescaleFactor != 0 ) return;
117 
118  edm::LogVerbatim ("DTDQM|DTMonitorClient|DTChamberEfficiencyTest") <<"[DTChamberEfficiencyTest]: "<<nLumiSegs<<" updates";
119 
120 
121  vector<DTChamber*>::const_iterator ch_it = muonGeom->chambers().begin();
122  vector<DTChamber*>::const_iterator ch_end = muonGeom->chambers().end();
123 
124  edm::LogVerbatim ("DTDQM|DTMonitorClient|DTChamberEfficiencyTest") << "[DTChamberEfficiencyTest]: ChamberEfficiency tests results";
125 
126  // Loop over the chambers
127  for (; ch_it != ch_end; ++ch_it) {
128  DTChamberId chID = (*ch_it)->id();
129 
130  stringstream wheel; wheel << chID.wheel();
131  stringstream station; station << chID.station();
132  stringstream sector; sector << chID.sector();
133 
134  string HistoName = "W" + wheel.str() + "_St" + station.str() + "_Sec" + sector.str();
135 
136  // Get the ME produced by EfficiencyTask Source
137  MonitorElement * GoodSegDen_histo = dbe->get(getMEName("hEffGoodSegVsPosDen", chID));
138  MonitorElement * GoodCloseSegNum_histo = dbe->get(getMEName("hEffGoodCloseSegVsPosNum", chID));
139 
140  // ME -> TH1F
141  if(GoodSegDen_histo && GoodCloseSegNum_histo) {
142  TH2F * GoodSegDen_histo_root = GoodSegDen_histo->getTH2F();
143  TH2F * GoodCloseSegNum_histo_root = GoodCloseSegNum_histo->getTH2F();
144 
145  int lastBinX=(*GoodSegDen_histo_root).GetNbinsX();
146  TH1D* proxN=GoodCloseSegNum_histo_root->ProjectionX();
147  TH1D* proxD=GoodSegDen_histo_root->ProjectionX();
148 
149  int lastBinY=(*GoodSegDen_histo_root).GetNbinsY();
150  TH1D* proyN=GoodCloseSegNum_histo_root->ProjectionY();
151  TH1D* proyD=GoodSegDen_histo_root->ProjectionY();
152 
153  for(int xBin=1; xBin<=lastBinX; xBin++) {
154  if(proxD->GetBinContent(xBin)!=0){
155  float Xefficiency = proxN->GetBinContent(xBin) / proxD->GetBinContent(xBin);
156  xEfficiencyHistos.find(HistoName)->second->setBinContent(xBin, Xefficiency);
157  }
158 
159  for(int yBin=1; yBin<=lastBinY; yBin++) {
160  if(GoodSegDen_histo_root->GetBinContent(xBin, yBin)!=0){
161  float XvsYefficiency = GoodCloseSegNum_histo_root->GetBinContent(xBin, yBin) / GoodSegDen_histo_root->GetBinContent(xBin, yBin);
162  xVSyEffHistos.find(HistoName)->second->setBinContent(xBin, yBin, XvsYefficiency);
163  }
164  }
165 
166  }
167 
168  for(int yBin=1; yBin<=lastBinY; yBin++) {
169  if(proyD->GetBinContent(yBin)!=0){
170  float Yefficiency = proyN->GetBinContent(yBin) / proyD->GetBinContent(yBin);
171  yEfficiencyHistos.find(HistoName)->second->setBinContent(yBin, Yefficiency);
172  }
173  }
174  }
175  } // loop on chambers
176 
177 
178  // ChamberEfficiency test on X axis
179  string XEfficiencyCriterionName = parameters.getUntrackedParameter<string>("XEfficiencyTestName","ChEfficiencyInRangeX");
180  for(map<string, MonitorElement*>::const_iterator hXEff = xEfficiencyHistos.begin();
181  hXEff != xEfficiencyHistos.end();
182  hXEff++) {
183  const QReport * theXEfficiencyQReport = (*hXEff).second->getQReport(XEfficiencyCriterionName);
184  if(theXEfficiencyQReport) {
185  vector<dqm::me_util::Channel> badChannels = theXEfficiencyQReport->getBadChannels();
186  for (vector<dqm::me_util::Channel>::iterator channel = badChannels.begin();
187  channel != badChannels.end(); channel++) {
188  edm::LogError ("DTDQM|DTMonitorClient|DTChamberEfficiencyTest") << "Chamber : " << (*hXEff).first << " Bad XChamberEfficiency channels: "<<(*channel).getBin()<<" Contents : "<<(*channel).getContents();
189  }
190  // FIXME: getMessage() sometimes returns and invalid string (null pointer inside QReport data member)
191  // edm::LogWarning ("DTDQM|DTMonitorClient|DTChamberEfficiencyTest") << "-------- Chamber : "<<(*hXEff).first<<" "<<theXEfficiencyQReport->getMessage()<<" ------- "<<theXEfficiencyQReport->getStatus();
192  }
193  }
194 
195 
196  // ChamberEfficiency test on Y axis
197  string YEfficiencyCriterionName = parameters.getUntrackedParameter<string>("YEfficiencyTestName","ChEfficiencyInRangeY");
198  for(map<string, MonitorElement*>::const_iterator hYEff = yEfficiencyHistos.begin();
199  hYEff != yEfficiencyHistos.end();
200  hYEff++) {
201  const QReport * theYEfficiencyQReport = (*hYEff).second->getQReport(YEfficiencyCriterionName);
202  if(theYEfficiencyQReport) {
203  vector<dqm::me_util::Channel> badChannels = theYEfficiencyQReport->getBadChannels();
204  for (vector<dqm::me_util::Channel>::iterator channel = badChannels.begin();
205  channel != badChannels.end(); channel++) {
206  edm::LogError ("DTDQM|DTMonitorClient|DTChamberEfficiencyTest") << "Chamber : " << (*hYEff).first <<" Bad YChamberEfficiency channels: "<<(*channel).getBin()<<" Contents : "<<(*channel).getContents();
207  }
208  // FIXME: getMessage() sometimes returns and invalid string (null pointer inside QReport data member)
209  // edm::LogWarning ("DTDQM|DTMonitorClient|DTChamberEfficiencyTest") << "-------- Chamber : "<<(*hYEff).first<<" "<<theYEfficiencyQReport->getMessage()<<" ------- "<<theYEfficiencyQReport->getStatus();
210  }
211  }
212 
213  //Fill the report summary histos
214  for(int wh=-2; wh<=2; wh++){
215  for(int sec=1; sec<=12; sec++){
216  for(int st=1; st<=4; st++){
217 
218  summaryHistos[wh]->Fill(sec,st,1);
219 
220  }
221  }
222  }
223 
224 }
std::map< std::string, MonitorElement * > yEfficiencyHistos
T getUntrackedParameter(std::string const &, T const &) const
std::map< std::string, MonitorElement * > xEfficiencyHistos
std::map< int, MonitorElement * > summaryHistos
std::string getMEName(std::string histoTag, const DTChamberId &chID)
Get the ME name.
MonitorElement * get(const std::string &path) const
get ME from full pathname (e.g. &quot;my/long/dir/my_histo&quot;)
Definition: DQMStore.cc:1468
const std::vector< DQMChannel > & getBadChannels(void) const
Definition: QReport.h:33
std::string HistoName
int sector() const
Definition: DTChamberId.h:63
std::map< std::string, MonitorElement * > xVSyEffHistos
int station() const
Return the station number.
Definition: DTChamberId.h:53
TH2F * getTH2F(void) const
int wheel() const
Return the wheel number.
Definition: DTChamberId.h:47
edm::ESHandle< DTGeometry > muonGeom
string DTChamberEfficiencyTest::getMEName ( std::string  histoTag,
const DTChamberId chID 
)
protected

Get the ME name.

Definition at line 237 of file DTChamberEfficiencyTest.cc.

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

237  {
238 
239  stringstream wheel; wheel << chID.wheel();
240  stringstream station; station << chID.station();
241  stringstream sector; sector << chID.sector();
242 
243  string folderRoot = parameters.getUntrackedParameter<string>("folderRoot", "Collector/FU0/");
244  string folderName =
245  folderRoot + "DT/01-DTChamberEfficiency/Task/Wheel" + wheel.str() +
246  "/Sector" + sector.str() +
247  "/Station" + station.str() + "/";
248 
249  string histoname = folderName + histoTag
250  + "_W" + wheel.str()
251  + "_St" + station.str()
252  + "_Sec" + sector.str();
253 
254  return histoname;
255 
256 }
T getUntrackedParameter(std::string const &, T const &) const
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

Member Data Documentation

DQMStore* DTChamberEfficiencyTest::dbe
private

Definition at line 91 of file DTChamberEfficiencyTest.h.

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

Definition at line 94 of file DTChamberEfficiencyTest.h.

int DTChamberEfficiencyTest::nevents
private

Definition at line 86 of file DTChamberEfficiencyTest.h.

unsigned int DTChamberEfficiencyTest::nLumiSegs
private

Definition at line 87 of file DTChamberEfficiencyTest.h.

edm::ParameterSet DTChamberEfficiencyTest::parameters
private
int DTChamberEfficiencyTest::prescaleFactor
private

Definition at line 88 of file DTChamberEfficiencyTest.h.

int DTChamberEfficiencyTest::run
private
std::map< int, MonitorElement* > DTChamberEfficiencyTest::summaryHistos
private

Definition at line 99 of file DTChamberEfficiencyTest.h.

std::map< std::string , MonitorElement* > DTChamberEfficiencyTest::xEfficiencyHistos
private

Definition at line 96 of file DTChamberEfficiencyTest.h.

std::map< std::string , MonitorElement* > DTChamberEfficiencyTest::xVSyEffHistos
private

Definition at line 98 of file DTChamberEfficiencyTest.h.

std::map< std::string , MonitorElement* > DTChamberEfficiencyTest::yEfficiencyHistos
private

Definition at line 97 of file DTChamberEfficiencyTest.h.