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 Types | Private Member Functions | Private Attributes
HcalTrigPrimMonitor Class Reference

#include <HcalTrigPrimMonitor.h>

Inheritance diagram for HcalTrigPrimMonitor:
HcalBaseDQMonitor edm::EDAnalyzer

Public Member Functions

void analyze (const edm::Event &e, const edm::EventSetup &c)
 
void beginLuminosityBlock (const edm::LuminosityBlock &lumiSeg, const edm::EventSetup &c)
 
void beginRun (const edm::Run &run, const edm::EventSetup &c)
 
void cleanup ()
 
void endJob ()
 
void endLuminosityBlock (const edm::LuminosityBlock &lumiSeg, const edm::EventSetup &c)
 
 HcalTrigPrimMonitor (const edm::ParameterSet &ps)
 
void processEvent (const edm::Handle< HcalTrigPrimDigiCollection > &data_tp_col, const edm::Handle< HcalTrigPrimDigiCollection > &emul_tp_col)
 
void reset ()
 
void setup ()
 
 ~HcalTrigPrimMonitor ()
 
- Public Member Functions inherited from HcalBaseDQMonitor
 HcalBaseDQMonitor (const edm::ParameterSet &ps)
 
 HcalBaseDQMonitor ()
 
 ~HcalBaseDQMonitor ()
 
- Public Member Functions inherited from edm::EDAnalyzer
 EDAnalyzer ()
 
std::string workerType () const
 
virtual ~EDAnalyzer ()
 

Private Types

enum  ErrorFlag {
  kZeroTP =-1, kMatched = 0, kMismatchedEt = 1, kMismatchedFG = 2,
  kMissingData = 3, kMissingEmul = 4, kNErrorFlag = 5, kUnknown = kNErrorFlag
}
 

Private Member Functions

MonitorElementcreate_errorflag (const std::string &folder, const std::string &name)
 
MonitorElementcreate_et_histogram (const std::string &folder, const std::string &name)
 
MonitorElementcreate_fg_correlation (const std::string &folder, const std::string &name)
 
MonitorElementcreate_map (const std::string &folder, const std::string &name)
 
MonitorElementcreate_summary (const std::string &folder, const std::string &name)
 
MonitorElementcreate_tp_correlation (const std::string &folder, const std::string &name)
 

Private Attributes

MonitorElementbad_tps [2]
 
edm::InputTag dataLabel_
 
edm::InputTag emulLabel_
 
MonitorElementerrorflag [2]
 
MonitorElementfg_corr [2][2]
 
MonitorElementgood_tps [2]
 
int nBad_TP_per_LS_HB_
 
int nBad_TP_per_LS_HE_
 
int nBad_TP_per_LS_HF_
 
std::map< ErrorFlag,
MonitorElement * > 
problem_et [2][2]
 
std::map< ErrorFlag,
MonitorElement * > 
problem_map [2]
 
MonitorElementtp_corr [2][2]
 
MonitorElementTPOccupancy_
 
MonitorElementTPOccupancyEta_
 
MonitorElementTPOccupancyPhi_
 
MonitorElementTPOccupancyPhiHFM_
 
MonitorElementTPOccupancyPhiHFP_
 
std::vector< int > ZSAlarmThreshold_
 

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)
 
- Protected Member Functions inherited from HcalBaseDQMonitor
virtual void beginJob ()
 
virtual void endRun (const edm::Run &run, const edm::EventSetup &c)
 
bool IsAllowedCalibType ()
 
bool LumiInOrder (int lumisec)
 
void SetupEtaPhiHists (EtaPhiHists &hh, std::string Name, std::string Units)
 
- Protected Member Functions inherited from edm::EDAnalyzer
CurrentProcessingContext const * currentContext () const
 
- Protected Attributes inherited from HcalBaseDQMonitor
std::vector< int > AllowedCalibTypes_
 
int badChannelStatusMask_
 
int currentLS
 
int currenttype_
 
DQMStoredbe_
 
int debug_
 
bool enableCleanup_
 
bool eventAllowed_
 
bool HBpresent_
 
bool HEpresent_
 
bool HFpresent_
 
bool HOpresent_
 
int ievt_
 
std::map< unsigned int, int > KnownBadCells_
 
int levt_
 
bool makeDiagnostics_
 
MonitorElementmeIevt_
 
MonitorElementmeLevt_
 
bool mergeRuns_
 
MonitorElementmeTevt_
 
MonitorElementmeTevtHist_
 
int NLumiBlocks_
 
bool Online_
 
std::string prefixME_
 
MonitorElementProblemsCurrentLB
 
MonitorElementProblemsVsLB
 
MonitorElementProblemsVsLB_HB
 
MonitorElementProblemsVsLB_HBHEHF
 
MonitorElementProblemsVsLB_HE
 
MonitorElementProblemsVsLB_HF
 
MonitorElementProblemsVsLB_HO
 
bool skipOutOfOrderLS_
 
std::string subdir_
 
int tevt_
 

Detailed Description

Date:
2010/05/17 18:50:46
Revision:
1.23
Author
W. Fisher - FNAL

Definition at line 15 of file HcalTrigPrimMonitor.h.

Member Enumeration Documentation

Constructor & Destructor Documentation

HcalTrigPrimMonitor::HcalTrigPrimMonitor ( const edm::ParameterSet ps)

Definition at line 4 of file HcalTrigPrimMonitor.cc.

References HcalBaseDQMonitor::AllowedCalibTypes_, HcalBaseDQMonitor::debug_, HcalBaseDQMonitor::enableCleanup_, edm::ParameterSet::getUntrackedParameter(), HcalBaseDQMonitor::makeDiagnostics_, HcalBaseDQMonitor::mergeRuns_, HcalBaseDQMonitor::NLumiBlocks_, HcalBaseDQMonitor::Online_, HcalBaseDQMonitor::prefixME_, HcalBaseDQMonitor::skipOutOfOrderLS_, and HcalBaseDQMonitor::subdir_.

4  :
5  dataLabel_(ps.getParameter<edm::InputTag>("dataLabel")),
6  emulLabel_(ps.getParameter<edm::InputTag>("emulLabel")),
7  ZSAlarmThreshold_(ps.getParameter< std::vector<int> >("ZSAlarmThreshold"))
8 {
9  Online_ = ps.getUntrackedParameter<bool>("online",false);
10  mergeRuns_ = ps.getUntrackedParameter<bool>("mergeRuns",false);
11  enableCleanup_ = ps.getUntrackedParameter<bool>("enableCleanup",false);
12  debug_ = ps.getUntrackedParameter<int>("debug",false);
13  prefixME_ = ps.getUntrackedParameter<std::string>("subSystemFolder","Hcal/");
14  if (prefixME_.substr(prefixME_.size()-1,prefixME_.size())!="/")
15  prefixME_.append("/");
16  subdir_ = ps.getUntrackedParameter<std::string>("TaskFolder","TrigPrimMonitor_Hcal");
17  if (subdir_.size()>0 && subdir_.substr(subdir_.size()-1,subdir_.size())!="/")
18  subdir_.append("/");
19  subdir_=prefixME_+subdir_;
20  AllowedCalibTypes_ = ps.getUntrackedParameter<std::vector<int> > ("AllowedCalibTypes");
21  skipOutOfOrderLS_ = ps.getUntrackedParameter<bool>("skipOutOfOrderLS",true);
22  NLumiBlocks_ = ps.getUntrackedParameter<int>("NLumiBlocks",4000);
23  makeDiagnostics_ = ps.getUntrackedParameter<bool>("makeDiagnostics",false);
24 
25 }
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
std::vector< int > AllowedCalibTypes_
std::vector< int > ZSAlarmThreshold_
HcalTrigPrimMonitor::~HcalTrigPrimMonitor ( )

Definition at line 28 of file HcalTrigPrimMonitor.cc.

28  {
29 }

Member Function Documentation

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

Reimplemented from HcalBaseDQMonitor.

Definition at line 132 of file HcalTrigPrimMonitor.cc.

References HcalBaseDQMonitor::analyze(), dataLabel_, emulLabel_, edm::Event::getByLabel(), HcalBaseDQMonitor::IsAllowedCalibType(), HcalBaseDQMonitor::LumiInOrder(), edm::EventBase::luminosityBlock(), and processEvent().

132  {
133  if (!IsAllowedCalibType()) return;
134  if (LumiInOrder(e.luminosityBlock())==false) return;
135 
137  if (!e.getByLabel(dataLabel_, data_tp_col)) {
138  edm::LogWarning("HcalTrigPrimMonitor")<< dataLabel_<< " data TP not available";
139  return;
140  }
141 
143  if (!e.getByLabel(emulLabel_, emul_tp_col)) {
144  edm::LogWarning("HcalTrigPrimMonitor")<< emulLabel_<< " emul TP not available";
145  return;
146  }
147 
148  HcalBaseDQMonitor::analyze(e,s); // base class increments ievt_, etc. counters
149  processEvent(data_tp_col, emul_tp_col);
150 }
void processEvent(const edm::Handle< HcalTrigPrimDigiCollection > &data_tp_col, const edm::Handle< HcalTrigPrimDigiCollection > &emul_tp_col)
bool LumiInOrder(int lumisec)
virtual void analyze(const edm::Event &e, const edm::EventSetup &c)
edm::LuminosityBlockNumber_t luminosityBlock() const
Definition: EventBase.h:59
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:355
string s
Definition: asciidump.py:422
void HcalTrigPrimMonitor::beginLuminosityBlock ( const edm::LuminosityBlock lumiSeg,
const edm::EventSetup c 
)
virtual

Reimplemented from HcalBaseDQMonitor.

Definition at line 395 of file HcalTrigPrimMonitor.cc.

References HcalBaseDQMonitor::beginLuminosityBlock(), HcalBaseDQMonitor::LumiInOrder(), edm::LuminosityBlockBase::luminosityBlock(), nBad_TP_per_LS_HB_, nBad_TP_per_LS_HE_, nBad_TP_per_LS_HF_, HcalBaseDQMonitor::ProblemsCurrentLB, and MonitorElement::Reset().

395  {
396  if (LumiInOrder(lumiSeg.luminosityBlock())==false) return;
399  // Rest counter
400  nBad_TP_per_LS_HB_ = 0;
401  nBad_TP_per_LS_HE_ = 0;
402  nBad_TP_per_LS_HF_ = 0;
403 }
bool LumiInOrder(int lumisec)
MonitorElement * ProblemsCurrentLB
LuminosityBlockNumber_t luminosityBlock() const
virtual void beginLuminosityBlock(const edm::LuminosityBlock &lumiSeg, const edm::EventSetup &c)
void Reset(void)
reset ME (ie. contents, errors, etc)
void HcalTrigPrimMonitor::beginRun ( const edm::Run run,
const edm::EventSetup c 
)
virtual

Reimplemented from HcalBaseDQMonitor.

Definition at line 123 of file HcalTrigPrimMonitor.cc.

References HcalBaseDQMonitor::beginRun(), HcalBaseDQMonitor::mergeRuns_, reset(), setup(), and HcalBaseDQMonitor::tevt_.

124 {
126  if (mergeRuns_ && tevt_>0) return; // don't reset counters if merging runs
127  if (tevt_==0) this->setup(); // create all histograms; not necessary if merging runs together
128  if (mergeRuns_==false) this->reset(); // call reset at start of all runs
129 } // void HcalTrigPrimMonitor::beginRun()
virtual void beginRun(const edm::Run &run, const edm::EventSetup &c)
void HcalTrigPrimMonitor::cleanup ( void  )
virtual

Reimplemented from HcalBaseDQMonitor.

Definition at line 371 of file HcalTrigPrimMonitor.cc.

References HcalBaseDQMonitor::dbe_, HcalBaseDQMonitor::enableCleanup_, DQMStore::removeContents(), DQMStore::setCurrentFolder(), and HcalBaseDQMonitor::subdir_.

Referenced by endJob().

371  {
372  if (!enableCleanup_) return;
373  if (dbe_) {
375  dbe_->removeContents();
376 
377  dbe_->setCurrentFolder(subdir_ + "noZS/Problem TPs/TP Values");
378  dbe_->removeContents();
379  dbe_->setCurrentFolder(subdir_ + "noZS/Problem TPs");
380  dbe_->removeContents();
381  dbe_->setCurrentFolder(subdir_ + "noZS");
382 
383  dbe_->setCurrentFolder(subdir_ + "Problem TPs/TP Values");
384  dbe_->removeContents();
385  dbe_->setCurrentFolder(subdir_ + "Problem TPs");
386  dbe_->removeContents();
387  }
388 }
void removeContents(void)
erase all monitoring elements in current directory (not including subfolders);
Definition: DQMStore.cc:2345
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:232
MonitorElement * HcalTrigPrimMonitor::create_errorflag ( const std::string &  folder,
const std::string &  name 
)
private

Definition at line 429 of file HcalTrigPrimMonitor.cc.

References DQMStore::book2D(), HcalBaseDQMonitor::dbe_, MonitorElement::setBinLabel(), and DQMStore::setCurrentFolder().

Referenced by setup().

429  {
430  edm::LogInfo("HcalTrigPrimMonitor") << "Creating MonitorElement " << name << " in folder " << folder << "\n";
431 
432  dbe_->setCurrentFolder(folder);
433  MonitorElement* element = dbe_->book2D(name, name, 4, 1, 5, 2, 0, 2);
434  element->setBinLabel(1, "Mismatched E");
435  element->setBinLabel(2, "Mismatched FG");
436  element->setBinLabel(3, "Missing Data");
437  element->setBinLabel(4, "Missing Emul");
438  element->setBinLabel(1, "HBHE", 2);
439  element->setBinLabel(2, "HF", 2);
440  return element;
441 }
void setBinLabel(int bin, const std::string &label, int axis=1)
set bin label for x, y or z axis (axis=1, 2, 3 respectively)
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:642
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:232
MonitorElement * HcalTrigPrimMonitor::create_et_histogram ( const std::string &  folder,
const std::string &  name 
)
private

Definition at line 475 of file HcalTrigPrimMonitor.cc.

References DQMStore::book1D(), HcalBaseDQMonitor::dbe_, and DQMStore::setCurrentFolder().

Referenced by setup().

475  {
476  edm::LogInfo("HcalTrigPrimMonitor") << "Creating MonitorElement " << name << " in folder " << folder << "\n";
477 
478  dbe_->setCurrentFolder(folder);
479  return dbe_->book1D(name, name, 256, 0, 256);
480 }
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
Definition: DQMStore.cc:514
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:232
MonitorElement * HcalTrigPrimMonitor::create_fg_correlation ( const std::string &  folder,
const std::string &  name 
)
private

Definition at line 455 of file HcalTrigPrimMonitor.cc.

References DQMStore::book2D(), HcalBaseDQMonitor::dbe_, MonitorElement::setAxisTitle(), and DQMStore::setCurrentFolder().

Referenced by setup().

455  {
456  edm::LogInfo("HcalTrigPrimMonitor") << "Creating MonitorElement " << name << " in folder " << folder << "\n";
457 
458  dbe_->setCurrentFolder(folder);
459  MonitorElement* element = dbe_->book2D(name, name, 2, 0, 2, 2, 0, 2);
460  element->setAxisTitle("data FG", 1);
461  element->setAxisTitle("emul FG", 2);
462  return element;
463 }
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:642
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:232
MonitorElement * HcalTrigPrimMonitor::create_map ( const std::string &  folder,
const std::string &  name 
)
private

Definition at line 466 of file HcalTrigPrimMonitor.cc.

References DQMStore::book2D(), HcalBaseDQMonitor::dbe_, DQMStore::setCurrentFolder(), and indexGen::title.

Referenced by setup().

466  {
467  edm::LogInfo("HcalTrigPrimMonitor") << "Creating MonitorElement " << name << " in folder " << folder << "\n";
468 
469  dbe_->setCurrentFolder(folder);
470  std::string title = name +";ieta;iphi";
471  return dbe_->book2D(name, title, 65, -32.5, 32.5, 72, 0.5, 72.5);
472 }
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:642
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:232
MonitorElement * HcalTrigPrimMonitor::create_summary ( const std::string &  folder,
const std::string &  name 
)
private

Definition at line 421 of file HcalTrigPrimMonitor.cc.

References DQMStore::book2D(), HcalBaseDQMonitor::dbe_, and DQMStore::setCurrentFolder().

421  {
422  edm::LogInfo("HcalTrigPrimMonitor") << "Creating MonitorElement " << name << " in folder " << folder << "\n";
423 
424  dbe_->setCurrentFolder(folder);
425  return dbe_->book2D(name, name, 65, -32.5, 32.5, 72, 0.5, 72.5);
426 }
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:642
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:232
MonitorElement * HcalTrigPrimMonitor::create_tp_correlation ( const std::string &  folder,
const std::string &  name 
)
private

Definition at line 444 of file HcalTrigPrimMonitor.cc.

References DQMStore::book2D(), HcalBaseDQMonitor::dbe_, MonitorElement::setAxisTitle(), and DQMStore::setCurrentFolder().

Referenced by setup().

444  {
445  edm::LogInfo("HcalTrigPrimMonitor") << "Creating MonitorElement " << name << " in folder " << folder << "\n";
446 
447  dbe_->setCurrentFolder(folder);
448  MonitorElement* element = dbe_->book2D(name, name, 50, 0, 256, 50, 0, 256);
449  element->setAxisTitle("data TP", 1);
450  element->setAxisTitle("emul TP", 2);
451  return element;
452 }
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:642
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:232
void HcalTrigPrimMonitor::endJob ( void  )
virtual

Reimplemented from HcalBaseDQMonitor.

Definition at line 390 of file HcalTrigPrimMonitor.cc.

References cleanup(), and HcalBaseDQMonitor::enableCleanup_.

391 {
392  if (enableCleanup_) cleanup();
393 }
void HcalTrigPrimMonitor::endLuminosityBlock ( const edm::LuminosityBlock lumiSeg,
const edm::EventSetup c 
)
virtual

Reimplemented from HcalBaseDQMonitor.

Definition at line 405 of file HcalTrigPrimMonitor.cc.

References HcalBaseDQMonitor::currentLS, MonitorElement::Fill(), HcalBaseDQMonitor::levt_, HcalBaseDQMonitor::LumiInOrder(), edm::LuminosityBlockBase::luminosityBlock(), nBad_TP_per_LS_HB_, nBad_TP_per_LS_HE_, nBad_TP_per_LS_HF_, HcalBaseDQMonitor::ProblemsCurrentLB, HcalBaseDQMonitor::ProblemsVsLB, HcalBaseDQMonitor::ProblemsVsLB_HB, HcalBaseDQMonitor::ProblemsVsLB_HE, and HcalBaseDQMonitor::ProblemsVsLB_HF.

405  {
406  if (LumiInOrder(lumiSeg.luminosityBlock())==false) return;
407  // Fill histograms for this LS
412 
413  ProblemsCurrentLB->Fill(-1,-1,levt_);
417 }
bool LumiInOrder(int lumisec)
MonitorElement * ProblemsCurrentLB
MonitorElement * ProblemsVsLB_HF
void Fill(long long x)
LuminosityBlockNumber_t luminosityBlock() const
MonitorElement * ProblemsVsLB_HB
MonitorElement * ProblemsVsLB_HE
MonitorElement * ProblemsVsLB
void HcalTrigPrimMonitor::processEvent ( const edm::Handle< HcalTrigPrimDigiCollection > &  data_tp_col,
const edm::Handle< HcalTrigPrimDigiCollection > &  emul_tp_col 
)

Definition at line 154 of file HcalTrigPrimMonitor.cc.

References abs, bad_tps, HcalBaseDQMonitor::dbe_, diffTreeTool::diff, errorflag, fg_corr, MonitorElement::Fill(), good_tps, i, HcalBaseDQMonitor::ievt_, isHF(), kMismatchedEt, kMismatchedFG, kMissingData, kMissingEmul, kNErrorFlag, nBad_TP_per_LS_HB_, nBad_TP_per_LS_HE_, nBad_TP_per_LS_HF_, problem_et, problem_map, MonitorElement::setBinContent(), tp_corr, TPOccupancy_, TPOccupancyEta_, TPOccupancyPhi_, TPOccupancyPhiHFM_, TPOccupancyPhiHFP_, and ZSAlarmThreshold_.

Referenced by analyze().

156  {
157 
158  if(dbe_ == 0)
159  return;
160 
161  std::vector<int> errorflag_per_event[2][2];
162  for (int isZS = 0; isZS <= 1; ++isZS) {
163  for (int isHF = 0; isHF <= 1; ++isHF) {
164  errorflag_per_event[isZS][isHF] = std::vector<int>(kNErrorFlag, 0);
165  }//for isHF
166  }//for isZS
167 
168  good_tps[0]->setBinContent(-1,-1,ievt_);
169  bad_tps[0]->setBinContent(-1,-1,ievt_);
170  good_tps[1]->setBinContent(-1,-1,ievt_);
171  bad_tps[1]->setBinContent(-1,-1,ievt_);
172 
173  for (HcalTrigPrimDigiCollection::const_iterator data_tp = data_tp_col->begin();
174  data_tp != data_tp_col->end();
175  ++data_tp) {
176  int ieta = data_tp->id().ieta();
177  int iphi = data_tp->id().iphi();
178  int isHF = data_tp->id().ietaAbs() >= 29 ? 1 : 0;
179 
180 
181  //
182  if (data_tp->SOI_compressedEt() > 0) {
183  TPOccupancy_->Fill(ieta, iphi);
184  TPOccupancyEta_->Fill(ieta);
185  TPOccupancyPhi_->Fill(iphi);
186 
187  if (isHF) {
188  if (ieta > 0) {
189  TPOccupancyPhiHFP_->Fill(iphi);
190  }
191  else {
192  TPOccupancyPhiHFM_->Fill(iphi);
193  }
194  }
195  }
196 
197  //check missing from emulator
198  HcalTrigPrimDigiCollection::const_iterator emul_tp = emul_tp_col->find(data_tp->id());
199  if (emul_tp == emul_tp_col->end()) {
200  bool pass_ZS = true;
201 
202  for (int i=0; i<data_tp->size(); ++i) {
203  int dataEt(data_tp->sample(i).compressedEt());
204  problem_et[0][isHF][kMissingEmul]->Fill(dataEt);
205 
206  if (dataEt > ZSAlarmThreshold_[abs(ieta)]) {
207  problem_et[1][isHF][kMissingEmul]->Fill(dataEt);
208  pass_ZS = false;
209  }
210  }//for tp sample
211 
212  problem_map[0][kMissingEmul]->Fill(ieta, iphi);
213  ++errorflag_per_event[0][isHF][kMissingEmul];
214  bad_tps[0]->Fill(ieta, iphi);
215 
216  if (!pass_ZS) {
217  problem_map[1][kMissingEmul]->Fill(ieta, iphi);
218  ++errorflag_per_event[1][isHF][kMissingEmul];
219  bad_tps[1]->Fill(ieta, iphi);
220 
221  // counts per LS
222  if (abs(ieta) <= 16)
224  else if(abs(ieta) <= 28)
226  else
228  }
229  } //emul tp not found
230  else {
231  bool mismatchedEt_noZS = false;
232  bool mismatchedEt_ZS = false;
233  bool mismatchedFG_noZS = false;
234  bool mismatchedFG_ZS = false;
235 
236  for (int i=0; i<data_tp->size(); ++i) {
237  int dataEt(data_tp->sample(i).compressedEt());
238  int dataFG(data_tp->sample(i).fineGrain());
239  int emulEt(emul_tp->sample(i).compressedEt());
240  int emulFG(emul_tp->sample(i).fineGrain());
241 
242  int diff = abs(dataEt - emulEt);
243  bool fill_corr_ZS = true;
244 
245  if (diff == 0) {
246  if (dataFG != emulFG) {
247  mismatchedFG_noZS = true;
248  problem_et[0][isHF][kMismatchedFG]->Fill(dataEt);
249 
250  // exclude mismatched FG when HF TP < ZS_AlarmThreshold
251  if (isHF == 1 && dataEt <= ZSAlarmThreshold_.at(abs(ieta))) {
252  // Do not fill ZS correlation plots.
253  fill_corr_ZS = false;
254  }
255  else {
256  mismatchedFG_ZS = true;
257  problem_et[1][isHF][kMismatchedFG]->Fill(dataEt);
258  }
259  } // matched et but not fg
260  }
261  else {
262  mismatchedEt_noZS = true;
263  if (diff > ZSAlarmThreshold_.at(abs(ieta))) {
264  mismatchedEt_ZS = true;
265  fill_corr_ZS = false;
266  }
267  } // mismatche et
268 
269  // Correlation plots
270  tp_corr[0][isHF]->Fill(dataEt, emulEt);
271  fg_corr[0][isHF]->Fill(dataFG, emulFG);
272 
273  if (fill_corr_ZS) {
274  tp_corr[1][isHF]->Fill(dataEt, emulEt);
275  fg_corr[1][isHF]->Fill(dataFG, emulFG);
276  }
277  }//for tp sample
278 
279  // Fill Problem Map and error counts
280  if (mismatchedEt_noZS) {
281  problem_map[0][kMismatchedEt]->Fill(ieta, iphi);
282  ++errorflag_per_event[0][isHF][kMismatchedEt];
283  }
284  if (mismatchedEt_ZS) {
285  problem_map[1][kMismatchedEt]->Fill(ieta, iphi);
286  ++errorflag_per_event[1][isHF][kMismatchedEt];
287  }
288  if (mismatchedFG_noZS) {
289  problem_map[0][kMismatchedFG]->Fill(ieta, iphi);
290  ++errorflag_per_event[0][isHF][kMismatchedFG];
291  }
292  if (mismatchedFG_ZS) {
293  problem_map[1][kMismatchedFG]->Fill(ieta, iphi);
294  ++errorflag_per_event[1][isHF][kMismatchedFG];
295  }
296  if (mismatchedEt_noZS || mismatchedFG_noZS)
297  bad_tps[0]->Fill(ieta, iphi);
298  else
299  good_tps[0]->Fill(ieta, iphi);
300  if (mismatchedEt_ZS || mismatchedFG_ZS) {
301  bad_tps[1]->Fill(ieta, iphi);
302 
303  // counts per LS
304  if (abs(ieta) <= 16)
306  else if(abs(ieta) <= 28)
308  else
310  }
311  else
312  good_tps[1]->Fill(ieta, iphi);
313  }//emul tp found
314  }//for data_tp_col
315 
316 
317  //check missing from data
318  for (HcalTrigPrimDigiCollection::const_iterator emul_tp = emul_tp_col->begin();
319  emul_tp != emul_tp_col->end();
320  ++emul_tp) {
321  int ieta(emul_tp->id().ieta());
322  int iphi(emul_tp->id().iphi());
323  int isHF = emul_tp->id().ietaAbs() >= 29 ? 1 : 0;
324 
325  HcalTrigPrimDigiCollection::const_iterator data_tp = data_tp_col->find(emul_tp->id());
326  if (data_tp == data_tp_col->end()) {
327  bool pass_ZS = true;
328 
329  for (int i=0; i<emul_tp->size(); ++i) {
330  int emulEt(emul_tp->sample(i).compressedEt());
331  problem_et[0][isHF][kMissingData]->Fill(emulEt);
332 
333  if (emulEt > ZSAlarmThreshold_[abs(ieta)]) {
334  problem_et[1][isHF][kMissingData]->Fill(emulEt);
335  pass_ZS = false;
336  }
337  }//for tp sample
338 
339  problem_map[0][kMissingData]->Fill(ieta, iphi);
340  ++errorflag_per_event[0][isHF][kMissingData];
341  bad_tps[0]->Fill(ieta, iphi);
342 
343  if (!pass_ZS) {
344  problem_map[1][kMissingData]->Fill(ieta, iphi);
345  ++errorflag_per_event[1][isHF][kMissingData];
346  bad_tps[1]->Fill(ieta, iphi);
347 
348  // counts per LS
349  if (abs(ieta) <= 16)
351  else if(abs(ieta) <= 28)
353  else
355  }
356  } //data tp not found
357  } //for emul_tp_col
358 
359  // Fill error flag per event
360  for (int isZS = 0; isZS <= 1; ++isZS) {
361  for (int isHF = 0; isHF <= 1; ++isHF) {
362  for (int i=0; i<kNErrorFlag; ++i) {
363  if (errorflag_per_event[isZS][isHF][i] > 0)
364  errorflag[isZS]->Fill(i, isHF);
365  }//for i
366  }//for isHF
367  }//for isZS
368 }
MonitorElement * TPOccupancy_
int i
Definition: DBlmapReader.cc:9
void setBinContent(int binx, double content)
set content of bin (1-D)
MonitorElement * TPOccupancyPhiHFM_
std::vector< T >::const_iterator const_iterator
MonitorElement * TPOccupancyEta_
#define abs(x)
Definition: mlp_lapack.h:159
void Fill(long long x)
std::map< ErrorFlag, MonitorElement * > problem_et[2][2]
MonitorElement * good_tps[2]
MonitorElement * TPOccupancyPhiHFP_
MonitorElement * fg_corr[2][2]
bool isHF(int etabin, int depth)
MonitorElement * bad_tps[2]
MonitorElement * TPOccupancyPhi_
MonitorElement * errorflag[2]
std::vector< int > ZSAlarmThreshold_
std::map< ErrorFlag, MonitorElement * > problem_map[2]
MonitorElement * tp_corr[2][2]
void HcalTrigPrimMonitor::reset ( void  )
virtual

Reimplemented from HcalBaseDQMonitor.

Definition at line 33 of file HcalTrigPrimMonitor.cc.

Referenced by beginRun().

33  {
34 }
void HcalTrigPrimMonitor::setup ( void  )
virtual

Reimplemented from HcalBaseDQMonitor.

Definition at line 38 of file HcalTrigPrimMonitor.cc.

References bad_tps, DQMStore::book1D(), DQMStore::bookProfile(), create_errorflag(), create_et_histogram(), create_fg_correlation(), create_map(), create_tp_correlation(), HcalBaseDQMonitor::dbe_, errorflag, fg_corr, MonitorElement::getTProfile(), good_tps, isHF(), kMismatchedEt, kMismatchedFG, kMissingData, kMissingEmul, HcalBaseDQMonitor::NLumiBlocks_, problem_et, problem_map, HcalBaseDQMonitor::ProblemsVsLB, HcalBaseDQMonitor::ProblemsVsLB_HB, HcalBaseDQMonitor::ProblemsVsLB_HE, HcalBaseDQMonitor::ProblemsVsLB_HF, HcalBaseDQMonitor::ProblemsVsLB_HO, DQMStore::setCurrentFolder(), HcalBaseDQMonitor::setup(), HcalBaseDQMonitor::subdir_, tp_corr, TPOccupancy_, TPOccupancyEta_, TPOccupancyPhi_, TPOccupancyPhiHFM_, and TPOccupancyPhiHFP_.

Referenced by beginRun().

38  {
40 
41  if (dbe_ == 0)
42  return;
43 
44  dbe_->setCurrentFolder(subdir_ + "TP Occupancy");
45  TPOccupancyEta_ = dbe_->book1D("TPOccupancyVsEta", "TPOccupancyVsEta", 65, -32.5, 32.5);
46  TPOccupancyPhi_ = dbe_->book1D("TPOccupancyVsPhi", "TPOccupancyVsPhi", 72, 0.5, 72.5);
47  TPOccupancyPhiHFP_ = dbe_->book1D("TPOccupancyHFPVsPhi", "TPOccupancyHFPVsPhi", 72, 0.5, 72.5);
48  TPOccupancyPhiHFM_ = dbe_->book1D("TPOccupancyHFMVsPhi", "TPOccupancyHFMVsPhi", 72, 0.5, 72.5);
49  TPOccupancy_ = create_map(subdir_ + "TP Occupancy", "TPOccupancy");
50 
51  for (int isZS = 0; isZS <= 1; ++isZS) {
52 
53  std::string folder(subdir_);
54  std::string zsname="_ZS";
55  if (isZS == 0)
56  {
57  folder += "noZS/";
58  zsname="_noZS";
59  }
60 
61  std::string problem_folder(folder);
62  problem_folder += "Problem TPs/";
63 
64  good_tps[isZS] = create_map(folder, "Good TPs"+zsname);
65  bad_tps[isZS] = create_map(folder, "Bad TPs"+zsname);
66 
67  errorflag[isZS] = create_errorflag(folder, "Error Flag"+zsname);
68  problem_map[isZS][kMismatchedEt] = create_map(problem_folder, "Mismatched Et"+zsname);
69  problem_map[isZS][kMismatchedFG] = create_map(problem_folder, "Mismatched FG"+zsname);
70  problem_map[isZS][kMissingData] = create_map(problem_folder, "Missing Data"+zsname);
71  problem_map[isZS][kMissingEmul] = create_map(problem_folder, "Missing Emul"+zsname);
72 
73  for (int isHF = 0; isHF <= 1; ++isHF) {
74  std::string subdet = (isHF == 0 ? "HBHE " : "HF ");
75  tp_corr[isZS][isHF] = create_tp_correlation(folder, subdet + "TP Correlation"+zsname);
76  fg_corr[isZS][isHF] = create_fg_correlation(folder, subdet + "FG Correlation"+zsname);
77 
79  = create_et_histogram(problem_folder + "TP Values/", subdet + "Mismatched FG"+zsname);
80 
82  = create_et_histogram(problem_folder + "TP Values/", subdet + "Missing Data"+zsname);
83 
85  = create_et_histogram(problem_folder + "TP Values/", subdet + "Missing Emul"+zsname);
86  }//isHF
87  }//isZS
88 
89  // Number of bad cells vs. luminosity block
91  "TotalBadTPs_HCAL_vs_LS",
92  "Total Number of Bad HCAL TPs vs lumi section",
93  NLumiBlocks_,0.5,NLumiBlocks_+0.5,100,0,10000);
94 
96  "TotalBadTPs_HB_vs_LS",
97  "Total Number of Bad HB TPs vs lumi section",
98  NLumiBlocks_,0.5,NLumiBlocks_+0.5,100,0,3000);
99 
101  "TotalBadTPs_HE_vs_LS",
102  "Total Number of Bad HE TPs vs lumi section",
103  NLumiBlocks_,0.5,NLumiBlocks_+0.5,100,0,3000);
104 
106  "TotalBadTPs_HF_vs_LS",
107  "Total Number of Bad HF TPs vs lumi section",
108  NLumiBlocks_,0.5,NLumiBlocks_+0.5,100,0,3000);
109 
110  // No TPs for HO, DO NOT fill this histogram
112  "TotalBadTPs_HO_vs_LS",
113  "Total Number of Bad HO TPs vs lumi section",
114  NLumiBlocks_,0.5,NLumiBlocks_+0.5,100,0,3000);
115 
116  ProblemsVsLB->getTProfile()->SetMarkerStyle(20);
117  ProblemsVsLB_HB->getTProfile()->SetMarkerStyle(20);
118  ProblemsVsLB_HE->getTProfile()->SetMarkerStyle(20);
119  ProblemsVsLB_HO->getTProfile()->SetMarkerStyle(20);
120  ProblemsVsLB_HF->getTProfile()->SetMarkerStyle(20);
121 }
MonitorElement * TPOccupancy_
MonitorElement * TPOccupancyPhiHFM_
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
Definition: DQMStore.cc:514
MonitorElement * ProblemsVsLB_HF
MonitorElement * TPOccupancyEta_
MonitorElement * create_fg_correlation(const std::string &folder, const std::string &name)
MonitorElement * create_tp_correlation(const std::string &folder, const std::string &name)
std::map< ErrorFlag, MonitorElement * > problem_et[2][2]
MonitorElement * ProblemsVsLB_HB
MonitorElement * good_tps[2]
MonitorElement * bookProfile(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, const char *option="s")
Definition: DQMStore.cc:828
MonitorElement * create_et_histogram(const std::string &folder, const std::string &name)
MonitorElement * create_errorflag(const std::string &folder, const std::string &name)
MonitorElement * TPOccupancyPhiHFP_
MonitorElement * fg_corr[2][2]
bool isHF(int etabin, int depth)
MonitorElement * ProblemsVsLB_HE
TProfile * getTProfile(void) const
MonitorElement * create_map(const std::string &folder, const std::string &name)
MonitorElement * bad_tps[2]
MonitorElement * TPOccupancyPhi_
MonitorElement * ProblemsVsLB_HO
MonitorElement * ProblemsVsLB
virtual void setup(void)
MonitorElement * errorflag[2]
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:232
std::map< ErrorFlag, MonitorElement * > problem_map[2]
MonitorElement * tp_corr[2][2]

Member Data Documentation

MonitorElement* HcalTrigPrimMonitor::bad_tps[2]
private

Definition at line 56 of file HcalTrigPrimMonitor.h.

Referenced by processEvent(), and setup().

edm::InputTag HcalTrigPrimMonitor::dataLabel_
private

Definition at line 32 of file HcalTrigPrimMonitor.h.

Referenced by analyze().

edm::InputTag HcalTrigPrimMonitor::emulLabel_
private

Definition at line 33 of file HcalTrigPrimMonitor.h.

Referenced by analyze().

MonitorElement* HcalTrigPrimMonitor::errorflag[2]
private

Definition at line 57 of file HcalTrigPrimMonitor.h.

Referenced by processEvent(), and setup().

MonitorElement* HcalTrigPrimMonitor::fg_corr[2][2]
private

Definition at line 62 of file HcalTrigPrimMonitor.h.

Referenced by processEvent(), and setup().

MonitorElement* HcalTrigPrimMonitor::good_tps[2]
private

Definition at line 55 of file HcalTrigPrimMonitor.h.

Referenced by processEvent(), and setup().

int HcalTrigPrimMonitor::nBad_TP_per_LS_HB_
private

Definition at line 71 of file HcalTrigPrimMonitor.h.

Referenced by beginLuminosityBlock(), endLuminosityBlock(), and processEvent().

int HcalTrigPrimMonitor::nBad_TP_per_LS_HE_
private

Definition at line 72 of file HcalTrigPrimMonitor.h.

Referenced by beginLuminosityBlock(), endLuminosityBlock(), and processEvent().

int HcalTrigPrimMonitor::nBad_TP_per_LS_HF_
private

Definition at line 73 of file HcalTrigPrimMonitor.h.

Referenced by beginLuminosityBlock(), endLuminosityBlock(), and processEvent().

std::map<ErrorFlag, MonitorElement*> HcalTrigPrimMonitor::problem_et[2][2]
private

Definition at line 63 of file HcalTrigPrimMonitor.h.

Referenced by processEvent(), and setup().

std::map<ErrorFlag, MonitorElement*> HcalTrigPrimMonitor::problem_map[2]
private

Definition at line 58 of file HcalTrigPrimMonitor.h.

Referenced by processEvent(), and setup().

MonitorElement* HcalTrigPrimMonitor::tp_corr[2][2]
private

Definition at line 61 of file HcalTrigPrimMonitor.h.

Referenced by processEvent(), and setup().

MonitorElement* HcalTrigPrimMonitor::TPOccupancy_
private

Definition at line 65 of file HcalTrigPrimMonitor.h.

Referenced by processEvent(), and setup().

MonitorElement* HcalTrigPrimMonitor::TPOccupancyEta_
private

Definition at line 66 of file HcalTrigPrimMonitor.h.

Referenced by processEvent(), and setup().

MonitorElement* HcalTrigPrimMonitor::TPOccupancyPhi_
private

Definition at line 67 of file HcalTrigPrimMonitor.h.

Referenced by processEvent(), and setup().

MonitorElement* HcalTrigPrimMonitor::TPOccupancyPhiHFM_
private

Definition at line 69 of file HcalTrigPrimMonitor.h.

Referenced by processEvent(), and setup().

MonitorElement* HcalTrigPrimMonitor::TPOccupancyPhiHFP_
private

Definition at line 68 of file HcalTrigPrimMonitor.h.

Referenced by processEvent(), and setup().

std::vector<int> HcalTrigPrimMonitor::ZSAlarmThreshold_
private

Definition at line 34 of file HcalTrigPrimMonitor.h.

Referenced by processEvent().