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

#include <HcalDigiMonitor.h>

Inheritance diagram for HcalDigiMonitor:
HcalBaseDQMonitor edm::EDAnalyzer edm::EDConsumerBase

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)
 
void endRun (const edm::Run &run, const edm::EventSetup &c)
 
 HcalDigiMonitor (const edm::ParameterSet &ps)
 
template<class DIGI >
int process_Digi (DIGI &digi, DigiHists &h, int &firstcap)
 
void processEvent (const HBHEDigiCollection &hbhe, const HODigiCollection &ho, const HFDigiCollection &hf, const HcalDbService &cond, const HcalUnpackerReport &report, int orN, int bcN)
 
void reset ()
 
void setup ()
 
 ~HcalDigiMonitor ()
 
- Public Member Functions inherited from HcalBaseDQMonitor
 HcalBaseDQMonitor (const edm::ParameterSet &ps)
 
 HcalBaseDQMonitor ()
 
virtual ~HcalBaseDQMonitor ()
 
- 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

void fill_Nevents ()
 
template<class T >
int process_Digi (T &digi, DigiHists &hist, int &firstcap)
 
void setupSubdetHists (DigiHists &hist, std::string subdet)
 
void UpdateHists (DigiHists &h)
 
void zeroCounters ()
 

Private Attributes

int alarmer_counter_
 
int badcapID [85][72][4]
 
int baddigis [85][72][4]
 
int baddigisize [85][72][4]
 
int badFibBCNOff [85][72][4]
 
int badunpackerreport [85][72][4]
 
edm::ESHandle< HcalDbServiceconditions_
 
bool digi_checkadcsum_
 
bool digi_checkcapid_
 
bool digi_checkdigisize_
 
bool digi_checkdverr_
 
bool digi_checkoccupancy_
 
MonitorElementDigiBQ
 
MonitorElementDigiBQFrac
 
EtaPhiHists DigiErrorOccupancyByDepth
 
EtaPhiHists DigiErrorsBadADCSum
 
EtaPhiHists DigiErrorsBadCapID
 
EtaPhiHists DigiErrorsBadDigiSize
 
EtaPhiHists DigiErrorsBadFibBCNOff
 
EtaPhiHists DigiErrorsByDepth
 
EtaPhiHists DigiErrorsDVErr
 
int digierrorsdverr [85][72][4]
 
MonitorElementDigiErrorSpigot
 
EtaPhiHists DigiErrorsUnpacker
 
MonitorElementDigiErrorVME
 
MonitorElementDigiExpectedSize
 
edm::InputTag digiLabel_
 
int DigiMonitor_ExpectedOrbitMessageTime_
 
MonitorElementDigiNum
 
int diginum [DIGI_NUM]
 
EtaPhiHists DigiOccupancyByDepth
 
MonitorElementDigiOccupancyEta
 
MonitorElementDigiOccupancyPhi
 
MonitorElementDigiOccupancySpigot
 
MonitorElementDigiOccupancyVME
 
MonitorElementDigiSize
 
int digisize [20][4]
 
MonitorElementDigiUnpackerErrorCount
 
MonitorElementDigiUnpackerErrorFrac
 
bool doFCpeds_
 
int errorSpigot [15][36]
 
int errorVME [40][18]
 
bool excludeBadQPLLs_
 
bool excludeHO1P02_
 
bool excludeHORing2_
 
edm::InputTag FEDRawDataCollection_
 
MonitorElementh_invalid_bcn
 
MonitorElementh_invalid_orbitnumMod103
 
MonitorElementh_valid_digis
 
int hbcount_
 
bool hbhedcsON
 
DigiHists hbHists
 
MonitorElementHBocc_vs_LB
 
int hecount_
 
DigiHists heHists
 
MonitorElementHEocc_vs_LB
 
int hfcount_
 
bool hfdcsON
 
DigiHists hfHists
 
int HFlumibad
 
MonitorElementHFM_shape
 
MonitorElementHFocc_vs_LB
 
MonitorElementHFP_shape
 
edm::InputTag hfRechitLabel_
 
MonitorElementHFtiming_etaProfile
 
MonitorElementHFtiming_occupancy2D
 
MonitorElementHFtiming_totaltime2D
 
edm::InputTag hltresultsLabel_
 
int HO0bad
 
int HO12bad
 
int hocount_
 
DigiHists hoHists
 
MonitorElementHOocc_vs_LB
 
double HT_HFM_
 
double HT_HFP_
 
int knownbadQPLLs
 
int maxdigisizeHBHE_
 
int maxdigisizeHF_
 
int maxdigisizeHO_
 
std::vector< std::string > MinBiasHLTBits_
 
int mindigisizeHBHE_
 
int mindigisizeHF_
 
int mindigisizeHO_
 
int occupancyErrorEta [85]
 
int occupancyErrorEtaPhi [85][72][4]
 
int occupancyErrorPhi [72]
 
int occupancyEta [85]
 
int occupancyEtaPhi [85][72][4]
 
int occupancyPhi [72]
 
int occupancySpigot [40][36]
 
int occupancyVME [40][18]
 
bool passedMinBiasHLT_
 Methods, variables accessible only within class code. More...
 
std::map< HcalDetId,
std::vector< double > > 
PedestalsByCapId_
 
double pedSubtractedADC_ [10]
 
MonitorElementProblemDigisInLastNLB_HBHEHF_alarm
 
bool setupDone_
 
int shapeThresh_
 
int shapeThreshHB_
 
int shapeThreshHE_
 
int shapeThreshHF_
 
int shapeThreshHO_
 
bool shutOffOrbitTest_
 
uint64_t uniqcounter [ETABINS][PHIBINS][DEPTHBINS]
 
uint64_t uniqcounter2 [ETABINS][PHIBINS][DEPTHBINS]
 

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 HcalBaseDQMonitor
virtual void beginJob ()
 
void getLogicalMap (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
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)
 
- 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_
 
HcalLogicalMaplogicalMap_
 
bool makeDiagnostics_
 
MonitorElementmeIevt_
 
MonitorElementmeLevt_
 
bool mergeRuns_
 
MonitorElementmeTevt_
 
MonitorElementmeTevtHist_
 
bool needLogicalMap_
 
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:
2012/06/27 13:20:29
Revision:
1.71
Author
J. Temple - Univ. of Maryland

Definition at line 68 of file HcalDigiMonitor.h.

Constructor & Destructor Documentation

HcalDigiMonitor::HcalDigiMonitor ( const edm::ParameterSet ps)

Definition at line 14 of file HcalDigiMonitor.cc.

References HcalBaseDQMonitor::AllowedCalibTypes_, HcalBaseDQMonitor::badChannelStatusMask_, gather_cfg::cout, HcalBaseDQMonitor::debug_, digi_checkadcsum_, digi_checkcapid_, digi_checkdigisize_, digi_checkdverr_, digi_checkoccupancy_, digiLabel_, DigiMonitor_ExpectedOrbitMessageTime_, HcalBaseDQMonitor::enableCleanup_, excludeBadQPLLs_, excludeHO1P02_, excludeHORing2_, FEDRawDataCollection_, edm::ParameterSet::getUntrackedParameter(), HcalChannelStatus::HcalCellDead, HFM_shape, HFP_shape, hfRechitLabel_, HFtiming_etaProfile, HFtiming_occupancy2D, HFtiming_totaltime2D, hltresultsLabel_, HcalBaseDQMonitor::makeDiagnostics_, maxdigisizeHBHE_, maxdigisizeHF_, maxdigisizeHO_, HcalBaseDQMonitor::mergeRuns_, MinBiasHLTBits_, mindigisizeHBHE_, mindigisizeHF_, mindigisizeHO_, HcalBaseDQMonitor::NLumiBlocks_, HcalBaseDQMonitor::Online_, HcalBaseDQMonitor::prefixME_, setupDone_, shapeThresh_, shapeThreshHB_, shapeThreshHE_, shapeThreshHF_, shapeThreshHO_, shutOffOrbitTest_, HcalBaseDQMonitor::skipOutOfOrderLS_, AlCaHLTBitMon_QueryRunRegistry::string, and HcalBaseDQMonitor::subdir_.

15 {
16  Online_ = ps.getUntrackedParameter<bool>("online",false);
17  mergeRuns_ = ps.getUntrackedParameter<bool>("mergeRuns",false);
18  enableCleanup_ = ps.getUntrackedParameter<bool>("enableCleanup",false);
19  debug_ = ps.getUntrackedParameter<int>("debug",0);
20  prefixME_ = ps.getUntrackedParameter<std::string>("subSystemFolder","Hcal/");
21  if (prefixME_.substr(prefixME_.size()-1,prefixME_.size())!="/")
22  prefixME_.append("/");
23  subdir_ = ps.getUntrackedParameter<std::string>("TaskFolder","DigiMonitor_Hcal");
24  if (subdir_.size()>0 && subdir_.substr(subdir_.size()-1,subdir_.size())!="/")
25  subdir_.append("/");
26  subdir_=prefixME_+subdir_;
27  AllowedCalibTypes_ = ps.getUntrackedParameter<std::vector<int> > ("AllowedCalibTypes");
28  skipOutOfOrderLS_ = ps.getUntrackedParameter<bool>("skipOutOfOrderLS",true);
29  NLumiBlocks_ = ps.getUntrackedParameter<int>("NLumiBlocks",4000);
30  makeDiagnostics_ = ps.getUntrackedParameter<bool>("makeDiagnostics",false);
32  FEDRawDataCollection_ = ps.getUntrackedParameter<edm::InputTag>("FEDRawDataCollection");
33  hfRechitLabel_ = ps.getUntrackedParameter<edm::InputTag>("hfRechitLabel");
34  shapeThresh_ = ps.getUntrackedParameter<int>("shapeThresh",20);
35  //shapeThresh_ is used for plotting pulse shapes for all digis with pedestal-subtracted ADC sum > shapeThresh_;
36  shapeThreshHB_ = ps.getUntrackedParameter<int>("shapeThreshHB",shapeThresh_);
37  shapeThreshHE_ = ps.getUntrackedParameter<int>("shapeThreshHE",shapeThresh_);
38  shapeThreshHF_ = ps.getUntrackedParameter<int>("shapeThreshHF",shapeThresh_);
39  shapeThreshHO_ = ps.getUntrackedParameter<int>("shapeThreshHO",shapeThresh_);
40 
41  hltresultsLabel_ = ps.getUntrackedParameter<edm::InputTag>("HLTResultsLabel");
42  MinBiasHLTBits_ = ps.getUntrackedParameter<std::vector<std::string> >("MinBiasHLTBits");
43  excludeHORing2_ = ps.getUntrackedParameter<bool>("excludeHORing2",false);
44  excludeHO1P02_ = ps.getUntrackedParameter<bool>("excludeHO1P02",false);
45  excludeBadQPLLs_ = ps.getUntrackedParameter<bool>("excludeBadQPLL",false);
46 
47  if (debug_>0)
48  std::cout <<"<HcalDigiMonitor> Digi shape ADC threshold set to: >" << shapeThresh_ <<" counts above nominal pedestal (3*10)"<< std::endl;
49 
50  // Specify which tests to run when looking for problem digis
51  digi_checkoccupancy_ = ps.getUntrackedParameter<bool>("checkForMissingDigis",false); // off by default -- checked by dead cell monitor
52  digi_checkcapid_ = ps.getUntrackedParameter<bool>("checkCapID",true);
53  digi_checkdigisize_ = ps.getUntrackedParameter<bool>("checkDigiSize",true);
54  digi_checkadcsum_ = ps.getUntrackedParameter<bool>("checkADCsum",true);
55  digi_checkdverr_ = ps.getUntrackedParameter<bool>("checkDVerr",true);
56  mindigisizeHBHE_ = ps.getUntrackedParameter<int>("minDigiSizeHBHE",1);
57  maxdigisizeHBHE_ = ps.getUntrackedParameter<int>("maxDigiSizeHBHE",10);
58  mindigisizeHO_ = ps.getUntrackedParameter<int>("minDigiSizeHO",1);
59  maxdigisizeHO_ = ps.getUntrackedParameter<int>("maxDigiSizeHO",10);
60  mindigisizeHF_ = ps.getUntrackedParameter<int>("minDigiSizeHF",1);
61  maxdigisizeHF_ = ps.getUntrackedParameter<int>("maxDigiSizeHF",10);
62 
63 
64  badChannelStatusMask_ = ps.getUntrackedParameter<int>("BadChannelStatusMask",
65  ps.getUntrackedParameter<int>("BadChannelStatusMask",
66  (1<<HcalChannelStatus::HcalCellDead))); // identify channel status values to mask
67  if (debug_>1)
68  {
69  std::cout <<"<HcalDigiMonitor> Checking for the following problems:"<<std::endl;
70  if (digi_checkcapid_) std::cout <<"\tChecking that cap ID rotation is correct;"<<std::endl;
72  {
73  std::cout <<"\tChecking that HBHE digi size is between ["<<mindigisizeHBHE_<<" - "<<maxdigisizeHBHE_<<"];"<<std::endl;
74  std::cout <<"\tChecking that HO digi size is between ["<<mindigisizeHO_<<" - "<<maxdigisizeHO_<<"];"<<std::endl;
75  std::cout <<"\tChecking that HF digi size is between ["<<mindigisizeHF_<<" - "<<maxdigisizeHF_<<"];"<<std::endl;
76  }
77  if (digi_checkadcsum_) std::cout <<"\tChecking that ADC sum of digi is greater than 0;"<<std::endl;
78  if (digi_checkdverr_) std::cout <<"\tChecking that data valid bit is true and digi error bit is false;\n"<<std::endl;
79  }
80 
81  shutOffOrbitTest_ = ps.getUntrackedParameter<bool>("shutOffOrbitTest",false);
82  DigiMonitor_ExpectedOrbitMessageTime_=ps.getUntrackedParameter<int>("ExpectedOrbitMessageTime",3559); // -1 means that orbit mismatches won't be checked
83 
87  HFP_shape=0;
88  HFM_shape=0;
89  setupDone_=false;
90 }
T getUntrackedParameter(std::string const &, T const &) const
MonitorElement * HFtiming_occupancy2D
edm::InputTag digiLabel_
std::vector< std::string > MinBiasHLTBits_
MonitorElement * HFP_shape
MonitorElement * HFtiming_totaltime2D
std::vector< int > AllowedCalibTypes_
MonitorElement * HFM_shape
edm::InputTag hfRechitLabel_
int DigiMonitor_ExpectedOrbitMessageTime_
edm::InputTag hltresultsLabel_
MonitorElement * HFtiming_etaProfile
edm::InputTag FEDRawDataCollection_
tuple cout
Definition: gather_cfg.py:121
HcalDigiMonitor::~HcalDigiMonitor ( )

Definition at line 93 of file HcalDigiMonitor.cc.

93 {}

Member Function Documentation

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

Reimplemented from HcalBaseDQMonitor.

Definition at line 443 of file HcalDigiMonitor.cc.

References abs, HcalBaseDQMonitor::analyze(), edm::EventBase::bunchCrossing(), conditions_, gather_cfg::cout, FEDRawData::data(), HcalBaseDQMonitor::debug_, DigiExpectedSize, digiLabel_, FEDRawDataCollection_, MonitorElement::Fill(), edm::Event::getByLabel(), HcalHTRData::getNDD(), HcalDCCHeader::getSourceId(), HcalDCCHeader::getSpigotData(), HcalDCCHeader::getSpigotPresent(), DcsStatus::HBHEa, DcsStatus::HBHEb, DcsStatus::HBHEc, hbhedcsON, DcsStatus::HF, hfdcsON, hfRechitLabel_, hltresultsLabel_, HT_HFM_, HT_HFP_, i, edm::HandleBase::id(), HcalBaseDQMonitor::ievt_, HcalBaseDQMonitor::IsAllowedCalibType(), edm::HandleBase::isValid(), gen::k, HcalBaseDQMonitor::LumiInOrder(), edm::EventBase::luminosityBlock(), maxdigisizeHBHE_, maxdigisizeHF_, maxdigisizeHO_, FEDNumbering::MAXHCALFEDID, MinBiasHLTBits_, mindigisizeHBHE_, mindigisizeHF_, mindigisizeHO_, FEDNumbering::MINHCALFEDID, edm::EventBase::orbitNumber(), passedMinBiasHLT_, processEvent(), zeeHLT_cff::report, FEDRawData::size(), edm::TriggerNames::size(), HcalDCCHeader::SPIGOT_COUNT, theHFEtaBounds, edm::TriggerNames::triggerName(), and edm::Event::triggerNames().

444 {
445  if (!IsAllowedCalibType()) return;
446  if (LumiInOrder(e.luminosityBlock())==false) return;
447 
448  // Get HLT trigger information for HF timing study
449  passedMinBiasHLT_=false;
450 
452  // check if detectors whether they were ON
454  e.getByLabel("scalersRawToDigi", dcsStatus);
455 
456  if (dcsStatus.isValid() && dcsStatus->size() != 0)
457  {
458  if ((*dcsStatus)[0].ready(DcsStatus::HBHEa) &&
459  (*dcsStatus)[0].ready(DcsStatus::HBHEb) &&
460  (*dcsStatus)[0].ready(DcsStatus::HBHEc))
461  {
462  hbhedcsON = true;
463  if (debug_) std::cout << "hbhe on" << std::endl;
464  }
465  else hbhedcsON = false;
466 
467  if ((*dcsStatus)[0].ready(DcsStatus::HF))
468  {
469  hfdcsON = true;
470  if (debug_) std::cout << "hf on" << std::endl;
471  }
472  else hfdcsON = false;
473  }
475 
477  if (!(e.getByLabel(hltresultsLabel_,hltRes)))
478  {
479  if (debug_>0) edm::LogWarning("HcalDigiMonitor")<<" Could not get HLT results with tag "<<hltresultsLabel_<<std::endl;
480  }
481  else
482  {
483  const edm::TriggerNames & triggerNames = e.triggerNames(*hltRes);
484  const unsigned int nTrig(triggerNames.size());
485  for (unsigned int i=0;i<nTrig;++i){
486  // repeat for minbias triggers
487  for (unsigned int k=0;k<MinBiasHLTBits_.size();++k)
488  {
489  // if (triggerNames.triggerName(i)==MinBiasHLTBits_[k] && hltRes->accept(i))
490  if (triggerNames.triggerName(i).find(MinBiasHLTBits_[k])!=std::string::npos && hltRes->accept(i))
491  {
492  passedMinBiasHLT_=true;
493  break;
494  }
495  }
496  }
497  } //else
498 
499  // Now get collections we need
500  HT_HFP_=0;
501  HT_HFM_=0;
502  // bool rechitsFound=false;
504  if (e.getByLabel(hfRechitLabel_,hf_rechit))
505  {
506  // rechitsFound=true;
507  for (HFRecHitCollection::const_iterator HF=hf_rechit->begin();HF!=hf_rechit->end();++HF)
508  {
509  float en=HF->energy();
510  int ieta=HF->id().ieta();
511  // ieta for HF starts at 29, so subtract away 29 when computing fEta
512  double fEta=fabs(0.5*(theHFEtaBounds[abs(ieta)-28]+theHFEtaBounds[abs(ieta)-29]));
513  ieta>0 ? HT_HFP_+=en/cosh(fEta) : HT_HFM_+=en/cosh(fEta);
514  }
515  }
516  else
517  {
518  // if no rechits found, form above-threshold plots based only on digi comparison to ADC threshold
519  HT_HFP_=999;
520  HT_HFM_=999;
521  }
522 
523  // try to get digis
527 
528  if (!(e.getByLabel(digiLabel_,hbhe_digi)))
529  {
530  edm::LogWarning("HcalDigiMonitor")<< digiLabel_<<" hbhe_digi not available";
531  return;
532  }
533 
534  if (!(e.getByLabel(digiLabel_,hf_digi)))
535  {
536  edm::LogWarning("HcalDigiMonitor")<< digiLabel_<<" hf_digi not available";
537  return;
538  }
539  if (!(e.getByLabel(digiLabel_,ho_digi)))
540  {
541  edm::LogWarning("HcalDigiMonitor")<< digiLabel_<<" ho_digi not available";
542  return;
543  }
545  if (!(e.getByLabel(digiLabel_,report)))
546  {
547  edm::LogWarning("HcalDigiMonitor")<< digiLabel_<<" unpacker report not available";
548  return;
549  }
550  // try to get Raw Data
552  if (!(e.getByLabel(FEDRawDataCollection_,rawraw)))
553  {
554  edm::LogWarning("HcalRawDataMonitor")<<" raw data with label "<<FEDRawDataCollection_<<" not available";
555  return;
556  }
557 
558  // get the DCC header & trailer (or bail out)
559  // this needs to be done better, for now basically getting only one number per HBHE/HO/HF
560  // will create a map (dccid, spigot) -> DetID to be used in process_Digi later
562  const FEDRawData& fed = rawraw->FEDData(i);
563  if (fed.size()<12) continue; //At least the size of headers and trailers of a DCC.
564 
565  const HcalDCCHeader* dccHeader=(const HcalDCCHeader*)(fed.data());
566  if(!dccHeader) return;
567 
568  HcalHTRData htr;
569  for (int spigot=0; spigot<HcalDCCHeader::SPIGOT_COUNT; spigot++) {
570  if (!dccHeader->getSpigotPresent(spigot)) continue;
571 
572  // Load the given decoder with the pointer and length from this spigot.
573  // i.e. initialize htr, within dcc raw data size.
574  dccHeader->getSpigotData(spigot, htr, fed.size());
575 
576  int NTS = htr.getNDD(); //number time slices, in precision channels
577  int dccid=dccHeader->getSourceId();
578 
579  if(dccid==720 && (spigot==12 || spigot==13)) continue; // calibration HTR
580  if(dccid==722 && (spigot==12 || spigot==13)) continue; // ZDC HTR
581 
582  int subdet = -1;
583 
584  if(dccid >= 700 && dccid<=717) { subdet = 0; mindigisizeHBHE_ = NTS; maxdigisizeHBHE_ = NTS; } // HBHE
585  if(dccid >= 718 && dccid<=723) { subdet = 2; mindigisizeHF_ = NTS; maxdigisizeHF_ = NTS; } // HF
586  if(dccid >= 724 && dccid<=731) { subdet = 1; mindigisizeHO_ = NTS; maxdigisizeHO_ = NTS; } // HO
587 
588  DigiExpectedSize->Fill(subdet,int(NTS),1);
589  }
590  }
591 
592  // all objects grabbed; event is good
593  if (debug_>1) std::cout <<"\t<HcalDigiMonitor::analyze> Processing good event! event # = "<<ievt_<<std::endl;
594 
595  HcalBaseDQMonitor::analyze(e,s); // base class increments ievt_, etc. counters
596 
597  // Digi collection was grabbed successfully; process the Event
598  processEvent(*hbhe_digi, *ho_digi, *hf_digi, *conditions_,
599  *report, e.orbitNumber(),e.bunchCrossing());
600 
601 } //void HcalDigiMonitor::analyze(...)
bool passedMinBiasHLT_
Methods, variables accessible only within class code.
int i
Definition: DBlmapReader.cc:9
bool LumiInOrder(int lumisec)
int getNDD() const
Get the number of daq data samples per channel when not zero-suppressed.
Definition: HcalHTRData.cc:390
virtual edm::TriggerNames const & triggerNames(edm::TriggerResults const &triggerResults) const
Definition: Event.cc:207
edm::InputTag digiLabel_
std::vector< std::string > MinBiasHLTBits_
virtual void analyze(const edm::Event &e, const edm::EventSetup &c)
ProductID id() const
Definition: HandleBase.cc:15
std::vector< T >::const_iterator const_iterator
int bunchCrossing() const
Definition: EventBase.h:62
#define abs(x)
Definition: mlp_lapack.h:159
edm::LuminosityBlockNumber_t luminosityBlock() const
Definition: EventBase.h:59
Strings::size_type size() const
Definition: TriggerNames.cc:39
int getSpigotData(int nspigot, HcalHTRData &decodeTool, int validSize) const
size_t size() const
Lenght of the data buffer in bytes.
Definition: FEDRawData.h:49
void Fill(long long x)
tuple report
Definition: zeeHLT_cff.py:9
edm::InputTag hfRechitLabel_
bool getSpigotPresent(unsigned int nspigot) const
Read the &quot;PRESENT&quot; bit for this spigot.
int orbitNumber() const
Definition: EventBase.h:63
bool isValid() const
Definition: HandleBase.h:76
bool getByLabel(InputTag const &tag, Handle< PROD > &result) const
Definition: Event.h:361
int k[5][pyjets_maxn]
int getSourceId() const
Definition: HcalDCCHeader.h:34
static const double theHFEtaBounds[]
std::string const & triggerName(unsigned int index) const
Definition: TriggerNames.cc:27
edm::InputTag hltresultsLabel_
edm::InputTag FEDRawDataCollection_
static const int SPIGOT_COUNT
Definition: HcalDCCHeader.h:21
const unsigned char * data() const
Return a const pointer to the beginning of the data buffer.
Definition: FEDRawData.cc:29
tuple cout
Definition: gather_cfg.py:121
MonitorElement * DigiExpectedSize
void processEvent(const HBHEDigiCollection &hbhe, const HODigiCollection &ho, const HFDigiCollection &hf, const HcalDbService &cond, const HcalUnpackerReport &report, int orN, int bcN)
edm::ESHandle< HcalDbService > conditions_
void HcalDigiMonitor::beginLuminosityBlock ( const edm::LuminosityBlock lumiSeg,
const edm::EventSetup c 
)
virtual

Reimplemented from HcalBaseDQMonitor.

Definition at line 1151 of file HcalDigiMonitor.cc.

References HcalBaseDQMonitor::beginLuminosityBlock(), HcalBaseDQMonitor::ProblemsCurrentLB, and MonitorElement::Reset().

1153 {
1156 }
MonitorElement * ProblemsCurrentLB
virtual void beginLuminosityBlock(const edm::LuminosityBlock &lumiSeg, const edm::EventSetup &c)
void Reset(void)
reset ME (ie. contents, errors, etc)
void HcalDigiMonitor::beginRun ( const edm::Run run,
const edm::EventSetup c 
)
virtual

Reimplemented from HcalBaseDQMonitor.

Definition at line 333 of file HcalDigiMonitor.cc.

References HcalQIECoder::adc(), HcalBaseDQMonitor::badChannelStatusMask_, HcalBaseDQMonitor::beginRun(), conditions_, gather_cfg::cout, HcalBaseDQMonitor::debug_, edm::EventSetup::get(), HcalCondObjectContainer< Item >::getAllChannels(), reco::JetExtendedAssociation::getValue(), HcalCondObjectContainer< Item >::getValues(), DetId::Hcal, i, HcalBaseDQMonitor::KnownBadCells_, HcalBaseDQMonitor::mergeRuns_, AlCaHLTBitMon_ParallelJobs::p, HcalCalibrations::pedestal(), PedestalsByCapId_, edm::ESHandle< class >::product(), reset(), setup(), ntuplemaker::status, and HcalBaseDQMonitor::tevt_.

334 {
336  if (mergeRuns_ && tevt_>0) return; // don't reset counters if merging runs
337 
338  if (debug_>1) std::cout <<"\t<HcalDigiMonitor::setup> Getting conditions from DB!"<<std::endl;
339  c.get<HcalDbRecord>().get(conditions_);
340 
341  // Get all pedestals by Cap ID
343  c.get<HcalChannelQualityRcd>().get(p);
344  HcalChannelQuality *chanquality= new HcalChannelQuality(*p.product());
345  std::vector<DetId> mydetids = chanquality->getAllChannels();
346  PedestalsByCapId_.clear();
347 
348  for (std::vector<DetId>::const_iterator chan = mydetids.begin();chan!=mydetids.end();++chan)
349  {
350  if (chan->det()!=DetId::Hcal) continue; // not hcal
351  std::vector <double> peds; // could be ints, right?
352  peds.clear();
353  HcalCalibrations calibs=conditions_->getHcalCalibrations(*chan);
354  const HcalQIECoder* channelCoder = conditions_->getHcalCoder(*chan);
355  const HcalQIEShape* shape = conditions_->getHcalShape(channelCoder);
356  //double total=0; // use this is we want to calculate average pedestal value
357  for (int capid=0;capid<4;++capid)
358  {
359  // temp_ADC should be an int, right?
360  double temp_ADC=channelCoder->adc(*shape,(float)calibs.pedestal(capid),capid);
361  peds.push_back(temp_ADC);
362  //total=total+temp_ADC;
363  }
364  //for (int capid=0;capid<4;++capid) peds.push_back(total/4.); // use this if we just want to use average value
365  PedestalsByCapId_[*chan]=peds;
366  } // loop on DetIds
367 
368  if (tevt_==0) this->setup(); // create all histograms; not necessary if merging runs together
369  if (mergeRuns_==false) this->reset(); // call reset at start of all runs
370  delete chanquality;
371 
372  // Get known dead cells for this run
373  KnownBadCells_.clear();
374  if (badChannelStatusMask_>0)
375  {
377  c.get<HcalChannelQualityRcd>().get(p);
378  HcalChannelQuality* chanquality= new HcalChannelQuality(*p.product());
379  std::vector<DetId> mydetids = chanquality->getAllChannels();
380  for (std::vector<DetId>::const_iterator i = mydetids.begin();
381  i!=mydetids.end();
382  ++i)
383  {
384  if (i->det()!=DetId::Hcal) continue; // not an hcal cell
385  HcalDetId id=HcalDetId(*i);
386  int status=(chanquality->getValues(id))->getValue();
387  if ((status & badChannelStatusMask_))
388  {
389  KnownBadCells_[id.rawId()]=status;
390  }
391  }
392  delete chanquality;
393  } // if (badChannelStatusMask_>0)
394 
395 } // void HcalDigiMonitor::beginRun()
int i
Definition: DBlmapReader.cc:9
std::map< unsigned int, int > KnownBadCells_
double pedestal(int fCapId) const
get pedestal for capid=0..3
const Item * getValues(DetId fId, bool throwOnFail=true) const
std::map< HcalDetId, std::vector< double > > PedestalsByCapId_
virtual void beginRun(const edm::Run &run, const edm::EventSetup &c)
std::vector< DetId > getAllChannels() const
const T & get() const
Definition: EventSetup.h:55
T const * product() const
Definition: ESHandle.h:62
unsigned adc(const HcalQIEShape &fShape, float fCharge, unsigned fCapId) const
fC + capid [0..3] -&gt; ADC conversion
Definition: HcalQIECoder.cc:27
const JetExtendedData & getValue(const Container &, const reco::JetBaseRef &)
get value for the association. Throw exception if no association found
tuple cout
Definition: gather_cfg.py:121
tuple status
Definition: ntuplemaker.py:245
edm::ESHandle< HcalDbService > conditions_
void HcalDigiMonitor::cleanup ( void  )
virtual

Reimplemented from HcalBaseDQMonitor.

Definition at line 104 of file HcalDigiMonitor.cc.

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

Referenced by endJob().

105 {
106  // Need to add code to clear out subfolders as well?
107  if (debug_>0) std::cout <<"HcalDigiMonitor::cleanup()"<<std::endl;
108  if (!enableCleanup_) return;
109  if (dbe_)
110  {
111  // removeContents doesn't remove subdirectories
113  dbe_->removeContents();
114  dbe_->setCurrentFolder(subdir_+"digi_parameters"); dbe_->removeContents();
115  dbe_->setCurrentFolder(subdir_+"bad_digis/bad_digi_occupancy"); dbe_->removeContents();
116  dbe_->setCurrentFolder(subdir_+"bad_digis/1D_digi_plots"); dbe_->removeContents();
117  dbe_->setCurrentFolder(subdir_+"bad_digis/badcapID"); dbe_->removeContents();
118  dbe_->setCurrentFolder(subdir_+"bad_digis/data_invalid_error"); dbe_->removeContents();
119  dbe_->setCurrentFolder(subdir_+"bad_digis/bad_reportUnpackerErrors"); dbe_->removeContents();
120  dbe_->setCurrentFolder(subdir_+"bad_digis/baddigisize"); dbe_->removeContents();
121  dbe_->setCurrentFolder(subdir_+"digi_info"); dbe_->removeContents();
122  dbe_->setCurrentFolder(subdir_+"bad_digis/badfibBCNoff"); dbe_->removeContents();
123  dbe_->setCurrentFolder(subdir_+"good_digis/1D_digi_plots"); dbe_->removeContents();
124  dbe_->setCurrentFolder(subdir_+"good_digis/digi_occupancy"); dbe_->removeContents();
125  dbe_->setCurrentFolder(subdir_+"bad_digis/bad_digi_occupancy"); dbe_->removeContents();
126  dbe_->setCurrentFolder(subdir_+"bad_digis"); dbe_->removeContents();
127  dbe_->setCurrentFolder(subdir_+"good_digis/"); dbe_->removeContents();
128  dbe_->setCurrentFolder(subdir_+"digi_info/HB"); dbe_->removeContents();
129  dbe_->setCurrentFolder(subdir_+"digi_info/HE"); dbe_->removeContents();
130  dbe_->setCurrentFolder(subdir_+"digi_info/HO"); dbe_->removeContents();
131  dbe_->setCurrentFolder(subdir_+"digi_info/HF"); dbe_->removeContents();
132  dbe_->setCurrentFolder(subdir_+"LSvalues");
133  dbe_->removeContents();
134  } // if(dbe_)
135 
136 } // void HcalDigiMonitor::cleanup();
void removeContents(void)
erase all monitoring elements in current directory (not including subfolders);
Definition: DQMStore.cc:2569
tuple cout
Definition: gather_cfg.py:121
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:434
void HcalDigiMonitor::endJob ( void  )
virtual

Reimplemented from HcalBaseDQMonitor.

Definition at line 144 of file HcalDigiMonitor.cc.

References cleanup(), gather_cfg::cout, HcalBaseDQMonitor::debug_, and HcalBaseDQMonitor::enableCleanup_.

145 {
146  if (debug_>0) std::cout <<"HcalDigiMonitor::endJob()"<<std::endl;
147  if (enableCleanup_) cleanup(); // when do we force cleanup?
148 }
tuple cout
Definition: gather_cfg.py:121
void HcalDigiMonitor::endLuminosityBlock ( const edm::LuminosityBlock lumiSeg,
const edm::EventSetup c 
)
virtual

Reimplemented from HcalBaseDQMonitor.

Definition at line 1158 of file HcalDigiMonitor.cc.

References alarmer_counter_, fill_Nevents(), hbhedcsON, HcalBaseDQMonitor::HBpresent_, HcalBaseDQMonitor::HEpresent_, hfdcsON, HcalBaseDQMonitor::HFpresent_, HcalBaseDQMonitor::LumiInOrder(), edm::LuminosityBlockBase::luminosityBlock(), ProblemDigisInLastNLB_HBHEHF_alarm, HcalBaseDQMonitor::ProblemsCurrentLB, MonitorElement::Reset(), and zeroCounters().

1160 {
1161  if (LumiInOrder(lumiSeg.luminosityBlock())==false) return;
1162 
1163  // Reset current LS histogram
1164  if (ProblemsCurrentLB)
1166 
1168 
1169  //increase the number of LS counting, for alarmer. Only make alarms for HBHE
1170  if(hbhedcsON == true && hfdcsON == true && HBpresent_ == 1 && HEpresent_ == 1 && HFpresent_ == 1)
1171  ++alarmer_counter_;
1172  else
1173  alarmer_counter_ = 0;
1174 
1175  fill_Nevents();
1176 
1177  zeroCounters(); // reset counters of good/bad digis
1178 
1179  return;
1180 }
bool LumiInOrder(int lumisec)
MonitorElement * ProblemsCurrentLB
LuminosityBlockNumber_t luminosityBlock() const
void Reset(void)
reset ME (ie. contents, errors, etc)
MonitorElement * ProblemDigisInLastNLB_HBHEHF_alarm
void HcalDigiMonitor::endRun ( const edm::Run run,
const edm::EventSetup c 
)
virtual

Reimplemented from HcalBaseDQMonitor.

Definition at line 139 of file HcalDigiMonitor.cc.

140 {
141  // Anything to do here?
142 }
void HcalDigiMonitor::fill_Nevents ( )
private

Definition at line 1182 of file HcalDigiMonitor.cc.

References abs, DigiHists::ADC, DigiHists::adc, DigiHists::ADCsum, DigiHists::adcsum, alarmer_counter_, badcapID, baddigis, baddigisize, badFibBCNOff, badunpackerreport, DigiHists::BQ, DigiHists::BQFrac, CalcEtaBin(), DigiHists::CapID, DigiHists::capid, DigiHists::capIDdiff, DigiHists::count_bad, DigiHists::count_BQ, DigiHists::count_BQFrac, DigiHists::count_presample, DigiHists::count_shape, DigiHists::count_shapeThresh, gather_cfg::cout, HcalBaseDQMonitor::currentLS, HcalBaseDQMonitor::debug_, EtaPhiHists::depth, DIGI_BQ_FRAC_NBINS, DIGI_NUM, DIGI_SUBDET_NUM, DigiErrorsBadCapID, DigiErrorsBadDigiSize, DigiErrorsBadFibBCNOff, DigiErrorsByDepth, DigiErrorsDVErr, digierrorsdverr, DigiErrorSpigot, DigiErrorsUnpacker, DigiErrorVME, DigiHists::DigiFirstCapID, DigiNum, diginum, DigiOccupancyByDepth, DigiOccupancyEta, DigiOccupancyPhi, DigiOccupancySpigot, DigiOccupancyVME, DigiSize, digisize, DigiHists::DVerr, DigiHists::dverr, errorSpigot, errorVME, eta(), DigiHists::fibBCNOff, DigiHists::fibbcnoff, MonitorElement::Fill(), HcalObjRepresent::FillUnphysicalHEHFBins(), hbHists, HcalBaseDQMonitor::HBpresent_, HcalBarrel, HcalEndcap, HcalForward, HcalOuter, heHists, HcalBaseDQMonitor::HEpresent_, hfHists, HFlumibad, HcalBaseDQMonitor::HFpresent_, HO0bad, HO12bad, hoHists, HcalBaseDQMonitor::HOpresent_, i, HcalBaseDQMonitor::ievt_, j, knownbadQPLLs, HcalBaseDQMonitor::makeDiagnostics_, min, occupancyEta, occupancyEtaPhi, occupancyPhi, occupancySpigot, occupancyVME, phi, DigiHists::presample, ProblemDigisInLastNLB_HBHEHF_alarm, HcalBaseDQMonitor::ProblemsCurrentLB, HcalBaseDQMonitor::ProblemsVsLB, HcalBaseDQMonitor::ProblemsVsLB_HB, HcalBaseDQMonitor::ProblemsVsLB_HBHEHF, HcalBaseDQMonitor::ProblemsVsLB_HE, HcalBaseDQMonitor::ProblemsVsLB_HF, HcalBaseDQMonitor::ProblemsVsLB_HO, DigiHists::shape, DigiHists::shapeThresh, HcalDCCHeader::SPIGOT_COUNT, HcalBaseDQMonitor::tevt_, DigiHists::TS_sum_minus, DigiHists::TS_sum_plus, DigiHists::tssumminus, DigiHists::tssumplus, and validDetId().

Referenced by endLuminosityBlock().

1183 {
1184  if (debug_>0)
1185  std::cout <<"<HcalDigiMonitor> Calling fill_Nevents for event "<<tevt_<< " (processed events = "<<ievt_<<")"<<std::endl;
1186  int iPhi, iEta, iDepth;
1187  // bool valid=false;
1188 
1189  // Fill problems vs. lumi block plots
1196 
1198  alarmer_counter_ = 0;
1199 
1200  if( alarmer_counter_ >= 5 )
1202 
1203  // Fill the number of problem digis in each channel
1204  if (ProblemsCurrentLB)
1205  {
1206  ProblemsCurrentLB->Fill(-1,-1,1); // event counter
1214  }
1215 
1216  // Fill plots of sums of adjacent digi samples
1217  for (int i=0;i<10;++i)
1218  {
1219  for (int j=0;j<50;++j)
1220  {
1221  if (hbHists.tssumplus[j][i]>0) hbHists.TS_sum_plus[i]->Fill(j, hbHists.tssumplus[j][i]);
1222  if (hbHists.tssumminus[j][i]>0) hbHists.TS_sum_minus[i]->Fill(j, hbHists.tssumminus[j][i]);
1223  if (heHists.tssumplus[j][i]>0) heHists.TS_sum_plus[i]->Fill(j, heHists.tssumplus[j][i]);
1224  if (heHists.tssumminus[j][i]>0) heHists.TS_sum_minus[i]->Fill(j, heHists.tssumminus[j][i]);
1225  if (hoHists.tssumplus[j][i]>0) hoHists.TS_sum_plus[i]->Fill(j, hoHists.tssumplus[j][i]);
1226  if (hoHists.tssumminus[j][i]>0) hoHists.TS_sum_minus[i]->Fill(j, hoHists.tssumminus[j][i]);
1227  if (hfHists.tssumplus[j][i]>0) hfHists.TS_sum_plus[i]->Fill(j, hfHists.tssumplus[j][i]);
1228  if (hfHists.tssumminus[j][i]>0) hfHists.TS_sum_minus[i]->Fill(j, hfHists.tssumminus[j][i]);
1229  }
1230  } // for (int i=0;i<10;++i)
1231 
1232  for (int i=0;i<DIGI_NUM;++i)
1233  {
1234  if (diginum[i]>0) DigiNum->Fill(i, diginum[i]);
1235  if (i>=DIGI_SUBDET_NUM) continue;
1236 
1237  if (hbHists.count_BQ[i]>0) hbHists.BQ->Fill(i, hbHists.count_BQ[i]);
1238  if (heHists.count_BQ[i]>0) heHists.BQ->Fill(i, heHists.count_BQ[i]);
1239  if (hoHists.count_BQ[i]>0) hoHists.BQ->Fill(i, hoHists.count_BQ[i]);
1240  if (hfHists.count_BQ[i]>0) hfHists.BQ->Fill(i, hfHists.count_BQ[i]);
1241  }//for int i=0;i<DIGI_NUM;++i)
1242 
1243 
1244  // Fill data-valid/error plots and capid plots
1245  for (int i=0;i<4;++i)
1246  {
1247  if (hbHists.dverr[i]>0) hbHists.DVerr->Fill(i, hbHists.dverr[i]);
1248  if (heHists.dverr[i]>0) heHists.DVerr->Fill(i, heHists.dverr[i]);
1249  if (hoHists.dverr[i]>0) hoHists.DVerr->Fill(i, hoHists.dverr[i]);
1250  if (hfHists.dverr[i]>0) hfHists.DVerr->Fill(i, hfHists.dverr[i]);
1251 
1252  if (hbHists.capid[i]>0) hbHists.CapID->Fill(i, hbHists.capid[i]);
1253  if (heHists.capid[i]>0) heHists.CapID->Fill(i, heHists.capid[i]);
1254  if (hoHists.capid[i]>0) hoHists.CapID->Fill(i, hoHists.capid[i]);
1255  if (hfHists.capid[i]>0) hfHists.CapID->Fill(i, hfHists.capid[i]);
1256  }
1257 
1258  for (int i=0;i<200;++i)
1259  {
1260  if (hbHists.adc[i]>0) hbHists.ADC->Fill(i, hbHists.adc[i]);
1261 
1262  if (heHists.adc[i]>0) heHists.ADC->Fill(i, heHists.adc[i]);
1263  if (hoHists.adc[i]>0) hoHists.ADC->Fill(i, hoHists.adc[i]);
1264  if (hfHists.adc[i]>0) hfHists.ADC->Fill(i, hfHists.adc[i]);
1265 
1266  if (hbHists.adcsum[i]>0) hbHists.ADCsum->Fill(i, hbHists.adcsum[i]);
1267  if (heHists.adcsum[i]>0) heHists.ADCsum->Fill(i, heHists.adcsum[i]);
1268  if (hoHists.adcsum[i]>0) hoHists.ADCsum->Fill(i, hoHists.adcsum[i]);
1269  if (hfHists.adcsum[i]>0) hfHists.ADCsum->Fill(i, hfHists.adcsum[i]);
1270  }
1271 
1272  for (int i = 0; i < 15; ++i)
1273  {
1274  if (hbHists.fibbcnoff[i]>0) hbHists.fibBCNOff->Fill(i-7,
1275  hbHists.fibbcnoff[i]);
1276  if (heHists.fibbcnoff[i]>0) heHists.fibBCNOff->Fill(i-7,
1277  heHists.fibbcnoff[i]);
1278  if (hfHists.fibbcnoff[i]>0) hfHists.fibBCNOff->Fill(i-7,
1279  hfHists.fibbcnoff[i]);
1280  if (hoHists.fibbcnoff[i]>0) hoHists.fibBCNOff->Fill(i-7,
1281  hoHists.fibbcnoff[i]);
1282  }
1283 
1284  // Fill plots of bad fraction of digis found
1285  for (int i=0;i<DIGI_BQ_FRAC_NBINS;++i)
1286  {
1287  if (DIGI_BQ_FRAC_NBINS==1) break;
1288  if (hbHists.count_BQFrac[i]>0) hbHists.BQFrac->Fill(1.*i/(DIGI_BQ_FRAC_NBINS-1), hbHists.count_BQFrac[i]);
1289  if (heHists.count_BQFrac[i]>0) heHists.BQFrac->Fill(1.*i/(DIGI_BQ_FRAC_NBINS-1), heHists.count_BQFrac[i]);
1290  if (hoHists.count_BQFrac[i]>0)
1291  {
1292  hoHists.BQFrac->Fill(1.*i/(DIGI_BQ_FRAC_NBINS), hoHists.count_BQFrac[i]);
1293  }
1294  if (hfHists.count_BQFrac[i]>0) hfHists.BQFrac->Fill(1.*i/(DIGI_BQ_FRAC_NBINS-1), hfHists.count_BQFrac[i]);
1295  }//for (int i=0;i<DIGI_BQ_FRAC_NBINS;++i)
1296 
1297  // Fill presample plots
1298  for (int i=0;i<50;++i)
1299  {
1304  } //for (int i=0;i<50;++i)
1305 
1306  // Fill shape plots
1307  for (int i=0;i<10;++i)
1308  {
1317  }// for (int i=0;i<10;++i)
1318 
1319  // Fill capID difference plots
1320  for (int i=0;i<8;++i)
1321  {
1326  }
1327 
1328  // Fill VME plots
1329  for (int i=0;i<40;++i)
1330  {
1331  for (int j=0;j<18;++j)
1332  {
1333  if (errorVME[i][j]>0) DigiErrorVME->Fill(i, j,errorVME[i][j]);
1334  if (occupancyVME[i][j]>0) DigiOccupancyVME->Fill(i, j,occupancyVME[i][j]);
1335  }
1336  } //for (int i=0;i<40;++i)
1337 
1338  // Fill SPIGOT plots
1339  for (int i=0;i<HcalDCCHeader::SPIGOT_COUNT;++i)
1340  {
1341  for (int j=0;j<36;++j)
1342  {
1343  if (errorSpigot[i][j]>0) DigiErrorSpigot->Fill(i, j,errorSpigot[i][j]);
1344  if (occupancySpigot[i][j]>0) DigiOccupancySpigot->Fill(i, j,occupancySpigot[i][j]);
1345  }
1346  } //for (int i=0;i<HcalDCCHeader::SPIGOT_COUNT;++i)
1347 
1348  // Loop over subdetectors
1349  for (int sub=0;sub<4;++sub)
1350  {
1351  for (int dsize=0;dsize<20;++dsize)
1352  {
1353  if (digisize[dsize][sub]>0)
1354  DigiSize->Fill(sub,dsize,digisize[dsize][sub]);
1355  }
1356  } // for (int sub=0;sub<4;++sub)
1357 
1358  // Loop over eta, phi, depth
1359  for (int d=0;d<4;++d)
1360  {
1361  iDepth=d+1;
1362  DigiErrorsByDepth.depth[d]->setBinContent(0,0,ievt_); // underflow bin contains event counter
1363  DigiOccupancyByDepth.depth[d]->setBinContent(0,0,ievt_);
1364  DigiErrorsBadDigiSize.depth[d]->setBinContent(0,0,ievt_);
1365  DigiErrorsUnpacker.depth[d]->setBinContent(0,0,ievt_);
1366  DigiErrorsBadFibBCNOff.depth[d]->setBinContent(0,0,ievt_);
1367 
1368  for (int phi=0;phi<72;++phi)
1369  {
1370  iPhi=phi+1;
1372  for (int eta=0;eta<83;++eta)
1373  {
1374  // DigiOccupanyEta uses 'true' ieta (included the overlap at +/- 29)
1375  iEta=eta-41;
1376  if (phi==0)
1378  // valid=false;
1379 
1380  // HB
1381  if (validDetId(HcalBarrel, iEta, iPhi, iDepth))
1382  {
1383  // valid=true;
1384  if (HBpresent_)
1385  {
1386  int calcEta = CalcEtaBin(HcalBarrel,iEta,iDepth);
1387 
1388  DigiOccupancyByDepth.depth[d]->Fill(iEta, iPhi,
1389  occupancyEtaPhi[calcEta][phi][d]);
1390 
1391  if (makeDiagnostics_)
1392  {
1393  DigiErrorsBadCapID.depth[d]->Fill(iEta, iPhi,
1394  badcapID[calcEta][phi][d]);
1395  DigiErrorsDVErr.depth[d]->Fill(iEta, iPhi,
1396  digierrorsdverr[calcEta][phi][d]);
1397  }
1398  DigiErrorsBadDigiSize.depth[d]->Fill(iEta, iPhi,
1399  baddigisize[calcEta][phi][d]);
1400  DigiErrorsBadFibBCNOff.depth[d]->Fill(iEta, iPhi,
1401  badFibBCNOff[calcEta][phi][d]);
1402  DigiErrorsUnpacker.depth[d]->Fill(iEta, iPhi,
1403  badunpackerreport[calcEta][phi][d]);
1404  DigiErrorsByDepth.depth[d]->Fill(iEta, iPhi,
1405  baddigis[calcEta][phi][d]);
1406  // Use this for testing purposes only
1407  //DigiErrorsByDepth[d]->Fill(iEta, iPhi, ievt_);
1408  } // if (HBpresent_)
1409  } // validDetId(HB)
1410  // HE
1411  if (validDetId(HcalEndcap, iEta, iPhi, iDepth))
1412  {
1413  // valid=true;
1414  if (HEpresent_)
1415  {
1416  int calcEta = CalcEtaBin(HcalEndcap,iEta,iDepth);
1417 
1418  DigiOccupancyByDepth.depth[d]->Fill(iEta, iPhi,
1419  occupancyEtaPhi[calcEta][phi][d]);
1420 
1421  if (makeDiagnostics_)
1422  {
1423  DigiErrorsBadCapID.depth[d]->Fill(iEta, iPhi,
1424  badcapID[calcEta][phi][d]);
1425  DigiErrorsDVErr.depth[d]->Fill(iEta, iPhi,
1426  digierrorsdverr[calcEta][phi][d]);
1427  }
1428  DigiErrorsBadDigiSize.depth[d]->Fill(iEta, iPhi,
1429  baddigisize[calcEta][phi][d]);
1430  DigiErrorsBadFibBCNOff.depth[d]->Fill(iEta, iPhi,
1431  badFibBCNOff[calcEta][phi][d]);
1432  DigiErrorsUnpacker.depth[d]->Fill(iEta, iPhi,
1433  badunpackerreport[calcEta][phi][d]);
1434  DigiErrorsByDepth.depth[d]->Fill(iEta, iPhi,
1435  baddigis[calcEta][phi][d]);
1436  } // if (HEpresent_)
1437  } // valid HE found
1438  // HO
1439  if (validDetId(HcalOuter,iEta,iPhi,iDepth))
1440  {
1441  // valid=true;
1442  if (HOpresent_)
1443  {
1444  int calcEta = CalcEtaBin(HcalOuter,iEta,iDepth);
1445  DigiOccupancyByDepth.depth[d]->Fill(iEta, iPhi,
1446  occupancyEtaPhi[calcEta][phi][d]);
1447  if (makeDiagnostics_)
1448  {
1449  DigiErrorsBadCapID.depth[d]->Fill(iEta, iPhi,
1450  badcapID[calcEta][phi][d]);
1451  DigiErrorsDVErr.depth[d]->Fill(iEta, iPhi,
1452  digierrorsdverr[calcEta][phi][d]);
1453  }
1454  DigiErrorsBadDigiSize.depth[d]->Fill(iEta, iPhi,
1455  baddigisize[calcEta][phi][d]);
1456  DigiErrorsBadFibBCNOff.depth[d]->Fill(iEta, iPhi,
1457  badFibBCNOff[calcEta][phi][d]);
1458  DigiErrorsUnpacker.depth[d]->Fill(iEta, iPhi,
1459  badunpackerreport[calcEta][phi][d]);
1460 
1461  DigiErrorsByDepth.depth[d]->Fill(iEta,iPhi,
1462  baddigis[calcEta][phi][d]);
1463  } // if (HOpresent_)
1464  }//validDetId(HO)
1465  // HF
1466  if (validDetId(HcalForward,iEta,iPhi,iDepth))
1467  {
1468  // valid=true;
1469  if (HFpresent_)
1470  {
1471  int calcEta = CalcEtaBin(HcalForward,iEta,iDepth);
1472  int zside = iEta/abs(iEta);
1473  DigiOccupancyByDepth.depth[d]->Fill(iEta+zside, iPhi,
1474  occupancyEtaPhi[calcEta][phi][d]);
1475 
1476  if (makeDiagnostics_)
1477  {
1478  DigiErrorsBadCapID.depth[d]->Fill(iEta+zside, iPhi,
1479  badcapID[calcEta][phi][d]);
1480  DigiErrorsDVErr.depth[d]->Fill(iEta+zside, iPhi,
1481  digierrorsdverr[calcEta][phi][d]);
1482  }
1483  DigiErrorsBadDigiSize.depth[d]->Fill(iEta+zside, iPhi,
1484  baddigisize[calcEta][phi][d]);
1485  DigiErrorsBadFibBCNOff.depth[d]->Fill(iEta+zside, iPhi,
1486  badFibBCNOff[calcEta][phi][d]);
1487  DigiErrorsUnpacker.depth[d]->Fill(iEta+zside, iPhi,
1488  badunpackerreport[calcEta][phi][d]);
1489  DigiErrorsByDepth.depth[d]->Fill(iEta+zside, iPhi,
1490  baddigis[calcEta][phi][d]);
1491 
1492  } // if (HFpresent_)
1493  }
1494  } // for (int eta=0;...)
1495  } // for (int phi=0;...)
1496  } // for (int d=0;...)
1497 
1498  // Now fill all the unphysical cell values
1500  if (makeDiagnostics_)
1501  {
1504  }
1509 
1510  // zeroCounters(); // reset counters of good/bad digis
1511 
1512  return;
1513 } // void HcalDigiMonitor::fill_Nevents()
int i
Definition: DBlmapReader.cc:9
int capid[4]
int count_presample[50]
MonitorElement * ProblemsCurrentLB
MonitorElement * ADC
EtaPhiHists DigiErrorsDVErr
int occupancySpigot[40][36]
int tssumminus[50][10]
MonitorElement * shape
MonitorElement * DigiSize
int occupancyVME[40][18]
MonitorElement * BQ
MonitorElement * ProblemsVsLB_HF
int errorVME[40][18]
MonitorElement * shapeThresh
int badcapID[85][72][4]
#define DIGI_BQ_FRAC_NBINS
int fibbcnoff[15]
#define abs(x)
Definition: mlp_lapack.h:159
#define min(a, b)
Definition: mlp_lapack.h:161
int badFibBCNOff[85][72][4]
MonitorElement * DigiOccupancyEta
MonitorElement * DigiErrorVME
MonitorElement * DigiOccupancyVME
T eta() const
int dverr[4]
MonitorElement * DigiNum
int baddigis[85][72][4]
void Fill(long long x)
int adcsum[200]
MonitorElement * DigiErrorSpigot
EtaPhiHists DigiErrorsBadFibBCNOff
int adc[200]
std::vector< MonitorElement * > depth
int baddigisize[85][72][4]
#define DIGI_SUBDET_NUM
MonitorElement * ProblemsVsLB_HBHEHF
MonitorElement * ProblemsVsLB_HB
int digierrorsdverr[85][72][4]
int j
Definition: DBlmapReader.cc:9
std::vector< MonitorElement * > TS_sum_minus
std::vector< MonitorElement * > TS_sum_plus
MonitorElement * ADCsum
EtaPhiHists DigiErrorsBadDigiSize
int errorSpigot[15][36]
int diginum[DIGI_NUM]
MonitorElement * fibBCNOff
#define DIGI_NUM
int count_BQFrac[DIGI_BQ_FRAC_NBINS]
MonitorElement * DigiOccupancySpigot
int count_BQ[DIGI_SUBDET_NUM]
MonitorElement * ProblemsVsLB_HE
void FillUnphysicalHEHFBins(std::vector< TH2F > &hh)
int CalcEtaBin(int subdet, int ieta, int depth)
MonitorElement * DVerr
int occupancyEtaPhi[85][72][4]
MonitorElement * CapID
int tssumplus[50][10]
static const int SPIGOT_COUNT
Definition: HcalDCCHeader.h:21
double count_shapeThresh[10]
int capIDdiff[8]
tuple cout
Definition: gather_cfg.py:121
MonitorElement * DigiFirstCapID
EtaPhiHists DigiErrorsBadCapID
MonitorElement * ProblemsVsLB_HO
EtaPhiHists DigiOccupancyByDepth
MonitorElement * BQFrac
MonitorElement * ProblemsVsLB
int badunpackerreport[85][72][4]
MonitorElement * presample
int count_shape[10]
EtaPhiHists DigiErrorsByDepth
EtaPhiHists DigiErrorsUnpacker
int digisize[20][4]
MonitorElement * DigiOccupancyPhi
MonitorElement * ProblemDigisInLastNLB_HBHEHF_alarm
bool validDetId(HcalSubdetector sd, int ies, int ip, int dp)
Definition: DDAxes.h:10
template<class T >
int HcalDigiMonitor::process_Digi ( T digi,
DigiHists hist,
int &  firstcap 
)
private

Referenced by processEvent().

template<class DIGI >
int HcalDigiMonitor::process_Digi ( DIGI &  digi,
DigiHists h,
int &  firstcap 
)

Definition at line 901 of file HcalDigiMonitor.cc.

References DigiHists::adc, DigiHists::adcsum, badcapID, baddigis, baddigisize, badFibBCNOff, bitUpset(), CalcEtaBin(), DigiHists::capid, DigiHists::capIDdiff, DigiHists::count_bad, DigiHists::count_good, DigiHists::count_presample, DigiHists::count_shape, DigiHists::count_shapeThresh, HcalBaseDQMonitor::currenttype_, digi_checkcapid_, digi_checkdigisize_, digi_checkdverr_, digierrorsdverr, DigiMonitor_ExpectedOrbitMessageTime_, DigiSize, digisize, DigiHists::dverr, errorSpigot, errorVME, alignCSCRings::ff, DigiHists::fibbcnoff, MonitorElement::Fill(), HcalBarrel, HcalEndcap, HcalForward, HcalOuter, HFM_shape, HFP_shape, HFtiming_etaProfile, HFtiming_occupancy2D, HFtiming_totaltime2D, HT_HFM_, HT_HFP_, i, reco::if(), isSiPM(), prof2calltree::last, HcalBaseDQMonitor::makeDiagnostics_, max(), maxdigisizeHBHE_, maxdigisizeHF_, maxdigisizeHO_, min, mindigisizeHBHE_, mindigisizeHF_, mindigisizeHO_, occupancyEta, occupancyEtaPhi, occupancyPhi, occupancySpigot, occupancyVME, evf::evtn::offset(), HcalBaseDQMonitor::Online_, passedMinBiasHLT_, PedestalsByCapId_, pedSubtractedADC_, shapeThreshHB_, shapeThreshHE_, shapeThreshHF_, shapeThreshHO_, shutOffOrbitTest_, DigiHists::ThreshCount, DigiHists::tssumminus, DigiHists::tssumplus, and uniqcounter.

902 {
903  int err=0x0;
904  bool bitUp = false;
905  int ADCcount=0;
906 
907  int shapeThresh=0;
908 
909  int mindigisize=1;
910  int maxdigisize=10;
911 
912  if (digi.id().subdet()==HcalBarrel)
913  {
914  shapeThresh=shapeThreshHB_;
915  mindigisize=mindigisizeHBHE_;
916  maxdigisize=maxdigisizeHBHE_;
917  }
918  else if (digi.id().subdet()==HcalEndcap)
919  {
920  shapeThresh=shapeThreshHE_;
921  mindigisize=mindigisizeHBHE_;
922  maxdigisize=maxdigisizeHBHE_;
923  }
924  else if (digi.id().subdet()==HcalOuter)
925  {
926  shapeThresh=shapeThreshHO_;
927  mindigisize=mindigisizeHO_;
928  maxdigisize=maxdigisizeHO_;
929  }
930  else if (digi.id().subdet()==HcalForward)
931  {
932  shapeThresh=shapeThreshHF_;
933  mindigisize=mindigisizeHF_;
934  maxdigisize=maxdigisizeHF_;
935  }
936  int iEta = digi.id().ieta();
937  int iPhi = digi.id().iphi();
938  int iDepth = digi.id().depth();
939  int calcEta = CalcEtaBin(digi.id().subdet(),iEta,iDepth);
940 
941  // Check that digi size is correct
942  if (digi.size()<mindigisize || digi.size()>maxdigisize)
943  {
944  if (digi_checkdigisize_) err|=0x1;
945  ++baddigisize[calcEta][iPhi-1][iDepth-1];
946  }
947  // Check digi size; if > 20, increment highest bin of digisize array
948  if (digi.size()<20)
949  ++digisize[static_cast<int>(digi.size())][digi.id().subdet()-1];
950  else
951  ++digisize[19][digi.id().subdet()-1];
952 
953  // loop over time slices of digi to check capID and errors
954  ++h.count_presample[digi.presamples()];
955 
956  // Check CapID rotation
957  if (firstcap==-1) firstcap = digi.sample(0).capid();
958  int capdif = digi.sample(0).capid() - firstcap;
959  //capdif = capdif%3 - capdif/3; // unnecessary?
960  // capdif should run from -3 to +3
961  if (capdif >-4 && capdif<4)
962  ++h.capIDdiff[capdif+3];
963  else
964  ++h.capIDdiff[7];
965 
966  int last=-1;
967 
968  int offset = digi.fiberIdleOffset();
969 
970  // Only count BCN offset errors if ExpectedOrbitMessage Time is >-1
971  // For offline (and thus cfg default), this won't be checked, since
972  // we can't keep up to date with changes.
973  if (offset != -1000 && DigiMonitor_ExpectedOrbitMessageTime_>-1)
974  {
975  // increment counters only for non-zero offsets?
976  ++h.fibbcnoff[offset + 7];
977  if (offset != 0)
978  {
979  ++badFibBCNOff[calcEta][iPhi-1][iDepth-1];
980  if (shutOffOrbitTest_ == false) err |= 0xF; // not an error if test turned off
981  }
982  }
983 
984  int tssum=0;
985 
986  bool digi_error=false;
987 
988  const int DigiSize=digi.size();
989  for (int i=0;i<10;++i) pedSubtractedADC_[i]=0;
990  const int pedSubADCsize=sizeof(pedSubtractedADC_)/sizeof(double);
991 
992  std::map<HcalDetId, std::vector<double> >::iterator foundID = PedestalsByCapId_.find(digi.id());
993  for (int i=0;i<DigiSize;++i)
994  {
995  int thisCapid = digi.sample(i).capid();
996  if (thisCapid>=0 && thisCapid<4) ++h.capid[thisCapid];
997 
998  if (makeDiagnostics_)
999  {
1000  if(bitUpset(last,thisCapid)) bitUp=true; // checking capID rotation
1001  last = thisCapid;
1002  // Check for digi error bits
1003  if (digi_checkdverr_)
1004  {
1005  if(digi.sample(i).er()) err=(err|0x2);
1006  if(!digi.sample(i).dv()) err=(err|0x2);
1007  }
1008  if ((digi_error==false) && (digi.sample(i).er() || !digi.sample(i).dv()))
1009  {
1010  ++digierrorsdverr[calcEta][iPhi-1][iDepth-1];
1011  digi_error=true; // only count 1 error per digi in this plot
1012  }
1013  ++h.dverr[static_cast<int>(2*digi.sample(i).er()+digi.sample(i).dv())];
1014  } // if (makeDiagnostics_)
1015 
1016  h.count_shape[i]+=digi.sample(i).adc();
1017 
1018  // Calculate ADC sum of adjacent samples -- still necessary?
1019  if (i==digi.size()-1) continue;
1020  tssum= digi.sample(i).adc()+digi.sample(i+1).adc();
1021  if (tssum<50 && tssum>=0)
1022  {
1023  if (iEta>0)
1024  ++h.tssumplus[tssum][i];
1025  else
1026  ++h.tssumminus[tssum][i];
1027  }
1028 
1029  if (digi.sample(i).adc()<0) ++h.adc[0];
1030  else if (digi.sample(i).adc()<200) ++h.adc[digi.sample(i).adc()];
1031  else ++h.adc[199];
1032 
1033  if (i>=pedSubADCsize) continue; // don't exceed maximum array length when checking digis
1034 
1035  if (foundID!=PedestalsByCapId_.end())
1036  {
1037  pedSubtractedADC_[i]=digi.sample(i).adc()-(foundID->second)[thisCapid];
1038  ADCcount+=(int)(digi.sample(i).adc()-(foundID->second)[thisCapid]);
1039  }
1040  else
1041  {
1042  pedSubtractedADC_[i]=digi.sample(i).adc()-3;
1043  ADCcount+=digi.sample(i).adc()-3; // default pedestal subtraction of 3 ADC counts
1044  }
1045  } // for (int i=0;i<digi.size();++i)
1046 
1047  // capid error found
1048  if(bitUp)
1049  {
1050  if (digi_checkcapid_) err=(err|0x4);
1051  ++badcapID[calcEta][iPhi-1][iDepth-1];
1052  }
1053 
1054 
1055  // These plots generally don't get filled, unless we turn off the suppression of bad digis
1056  if (err>0)
1057  {
1058  if(uniqcounter[calcEta][iPhi-1][iDepth-1]<1)
1059  {
1060  ++h.count_bad;
1061  ++baddigis[calcEta][iPhi-1][iDepth-1];
1062  ++errorVME[static_cast<int>(2*(digi.elecId().htrSlot()+0.5*digi.elecId().htrTopBottom()))][static_cast<int>(digi.elecId().readoutVMECrateId())];
1063  ++errorSpigot[static_cast<int>(digi.elecId().spigot())][static_cast<int>(digi.elecId().dccid())];
1064  }
1065  uniqcounter[calcEta][iPhi-1][iDepth-1]++;
1066 
1067  return err;
1068  }
1069 
1070  if (ADCcount<0) ADCcount=0;
1071  if (ADCcount<199)
1072  ++h.adcsum[ADCcount];
1073  else
1074  ++h.adcsum[199]; // effective overflow bin
1075 
1076  // require larger threshold to look at pulse shapes
1077 
1078  if (ADCcount>shapeThresh && passedMinBiasHLT_ && HT_HFP_>1 && HT_HFM_>1)
1079  {
1080  h.ThreshCount->Fill(0,1);
1081  if (digi.id().subdet()!=HcalOuter || isSiPM(iEta,iPhi, iDepth)==false)
1082  {
1083  for (int i=0;i<pedSubADCsize;++i)
1085  }
1086  }
1087 
1088  // occupancy plots are only filled for good histograms
1089  ++h.count_good;
1090  ++occupancyEtaPhi[calcEta][iPhi-1][iDepth-1];
1091  ++occupancyEta[iEta+41];
1092  ++occupancyPhi[iPhi-1];
1093  // htr Slots run from 0-20, incremented by 0.5 for top/bottom
1094  ++occupancyVME[static_cast<int>(2*(digi.elecId().htrSlot()+0.5*digi.elecId().htrTopBottom()))][static_cast<int>(digi.elecId().readoutVMECrateId())];
1095  ++occupancySpigot[static_cast<int>(digi.elecId().spigot())][static_cast<int>(digi.elecId().dccid())];
1096 
1097  // Pawel's code for HF timing checks -- run only in online mode for non-calib events
1098  if (digi.id().subdet()==HcalForward
1099  && Online_ //only run online
1100  && currenttype_==0 // require non-calibration event
1101  && passedMinBiasHLT_ // require min bias trigger
1102  )
1103  {
1104  int maxtime=-1;
1105  double maxenergy=-1, fullenergy=0;
1106  int digisize=digi.size();
1107  for (int ff=0;ff<digisize;++ff)
1108  {
1109  fullenergy+=digi.sample(ff).nominal_fC()-2.5;
1110  if (digi.sample(ff).nominal_fC()-2.5>maxenergy)
1111  {
1112  maxenergy=digi.sample(ff).nominal_fC()-2.5;
1113  maxtime=ff;
1114  }
1115  }
1116 
1117  if (maxtime>=2 && maxtime<=5 && maxenergy>20 && maxenergy<100) // only look between time slices 2-5; anything else should be nonsense
1118  {
1119  for (int ff=0;ff<digisize;++ff){
1120  if(fullenergy>0){
1121  if(digi.id().ieta()>0)HFP_shape->Fill(ff,(digi.sample(ff).nominal_fC()-2.5)/fullenergy);
1122  if(digi.id().ieta()<0)HFM_shape->Fill(ff,(digi.sample(ff).nominal_fC()-2.5)/fullenergy);
1123  }
1124  }
1125 
1126  double time_den=0, time_num=0;
1127  // form weighted time sum
1128  int startslice=std::max(0,maxtime-1);
1129  int endslice=std::min(digisize-1,maxtime+1);
1130  for (int ss=startslice;ss<=endslice;++ss)
1131  {
1132  // subtract 'default' pedestal of 2.5 fC
1133  time_num+=ss*(digi.sample(ss).nominal_fC()-2.5);
1134  time_den+=digi.sample(ss).nominal_fC()-2.5;
1135  }
1136 
1137  int myiphi=iPhi;
1138  if (iDepth==2) ++myiphi;
1139  if (HFtiming_etaProfile!=0 && time_den!=0)
1140  HFtiming_etaProfile->Fill(iEta,time_num/time_den);
1141  if (HFtiming_totaltime2D!=0 && time_den!=0)
1142  HFtiming_totaltime2D->Fill(iEta,myiphi,time_num/time_den);
1143  if (HFtiming_occupancy2D!=0 && time_den!=0)
1144  HFtiming_occupancy2D->Fill(iEta,myiphi,1);
1145  } //maxtime>-1
1146  } // if HcalForward
1147 
1148  return err;
1149 } // template <class DIGI> int HcalDigiMonitor::process_Digi
bool passedMinBiasHLT_
Methods, variables accessible only within class code.
int i
Definition: DBlmapReader.cc:9
int capid[4]
int count_presample[50]
MonitorElement * HFtiming_occupancy2D
int occupancySpigot[40][36]
int tssumminus[50][10]
MonitorElement * DigiSize
MonitorElement * HFP_shape
int occupancyVME[40][18]
int errorVME[40][18]
MonitorElement * HFtiming_totaltime2D
MonitorElement * HFM_shape
int badcapID[85][72][4]
int fibbcnoff[15]
#define min(a, b)
Definition: mlp_lapack.h:161
int badFibBCNOff[85][72][4]
int dverr[4]
int baddigis[85][72][4]
MonitorElement * ThreshCount
uint64_t uniqcounter[ETABINS][PHIBINS][DEPTHBINS]
void Fill(long long x)
int adcsum[200]
std::map< HcalDetId, std::vector< double > > PedestalsByCapId_
int adc[200]
bool isSiPM(int ieta, int iphi, int depth)
int DigiMonitor_ExpectedOrbitMessageTime_
int baddigisize[85][72][4]
const T & max(const T &a, const T &b)
int digierrorsdverr[85][72][4]
unsigned int offset(bool)
int errorSpigot[15][36]
static bool bitUpset(int last, int now)
MonitorElement * HFtiming_etaProfile
int CalcEtaBin(int subdet, int ieta, int depth)
int occupancyEtaPhi[85][72][4]
int tssumplus[50][10]
if(dp >Float(M_PI)) dp-
double count_shapeThresh[10]
int capIDdiff[8]
int count_shape[10]
int digisize[20][4]
double pedSubtractedADC_[10]
void HcalDigiMonitor::processEvent ( const HBHEDigiCollection hbhe,
const HODigiCollection ho,
const HFDigiCollection hf,
const HcalDbService cond,
const HcalUnpackerReport report,
int  orN,
int  bcN 
)

Definition at line 603 of file HcalDigiMonitor.cc.

References abs, HcalUnpackerReport::bad_quality_begin(), HcalUnpackerReport::bad_quality_end(), baddigis, HcalUnpackerReport::badQualityDigis(), badunpackerreport, edm::SortedCollection< T, SORT >::begin(), CalcEtaBin(), DigiHists::count_bad, DigiHists::count_BQ, DigiHists::count_BQFrac, DigiHists::count_good, gather_cfg::cout, HcalBaseDQMonitor::currentLS, HcalBaseDQMonitor::dbe_, HcalBaseDQMonitor::debug_, HcalDetId::depth(), EtaPhiHists::depth, DIGI_BQ_FRAC_NBINS, DIGI_NUM, DIGI_SUBDET_NUM, DigiBQ, DigiBQFrac, DigiErrorOccupancyByDepth, DigiErrorsBadADCSum, DigiErrorsBadCapID, DigiErrorsBadDigiSize, DigiErrorsBadFibBCNOff, DigiErrorsByDepth, DigiErrorsDVErr, DigiErrorSpigot, DigiErrorsUnpacker, DigiErrorVME, DigiExpectedSize, DigiNum, diginum, DigiOccupancyEta, DigiOccupancyPhi, DigiOccupancySpigot, DigiOccupancyVME, DigiSize, DigiUnpackerErrorCount, DigiUnpackerErrorFrac, edm::SortedCollection< T, SORT >::end(), excludeBadQPLLs_, excludeHO1P02_, excludeHORing2_, MonitorElement::Fill(), h_invalid_bcn, h_invalid_orbitnumMod103, h_valid_digis, hbHists, HBocc_vs_LB, HcalBaseDQMonitor::HBpresent_, HcalBarrel, HcalEndcap, HcalForward, HcalOuter, heHists, HEocc_vs_LB, HcalBaseDQMonitor::HEpresent_, hfHists, HFlumibad, HFocc_vs_LB, HcalBaseDQMonitor::HFpresent_, HO0bad, HO12bad, hoHists, HOocc_vs_LB, HcalBaseDQMonitor::HOpresent_, HBHEDataFrame::id(), HODataFrame::id(), HcalDetId::ieta(), HcalDetId::iphi(), isSiPM(), j, HcalBaseDQMonitor::KnownBadCells_, knownbadQPLLs, process_Digi(), edm::SortedCollection< T, SORT >::size(), HcalDetId::subdet(), uniqcounter2, MonitorElement::update(), and UpdateHists().

Referenced by analyze().

609 {
610  if(!dbe_)
611  {
612  if(debug_)
613  std::cout <<"HcalDigiMonitor::processEvent DQMStore not instantiated!!!"<<std::endl;
614  return;
615  }
616 
617  // Skip events in which minimal good digis found -- still getting some strange (calib?) events through DQM
618 
620 
621  unsigned int allgooddigis= hbhe.size()+ho.size()+hf.size();
622 
623  // new data format in HCAL marks idle messages in the abort gap as bad capid.
624  // ignore this events. Also, sometimes there are many corrupted digis left
625  // from the QIE reset: ignore if in abort gap
626  if(bcN>=3446 && bcN<=3564)
627  if( (report.badQualityDigis()>100 && hbhe.size()==0) || (report.badQualityDigis()>1000) )
628  return;
629 
630  // bad threshold: ignore events in which bad outnumber good by more than 100:1
631  // (one RBX in HBHE seems to send valid data occasionally even on QIE resets, which is why we can't just require allgooddigis==0 when looking for events to skip)
632  if ((allgooddigis==0) ||
633  (1.*report.badQualityDigis()>100*allgooddigis))
634  {
635  h_valid_digis->Fill(1);
636  if (bcN>-1)
637  h_invalid_bcn->Fill(bcN);
638  if (orN>-1)
639  h_invalid_orbitnumMod103->Fill(orN%103);
640 
641  return;
642  }
643 
644  h_valid_digis->Fill(0);
645 
646  // hbHists.count_bad=0;
647  // hbHists.count_good=0;
648  // heHists.count_bad=0;
649  // heHists.count_good=0;
650  // hoHists.count_bad=0;
651  // hoHists.count_good=0;
652  // hfHists.count_bad=0;
653  // hfHists.count_good=0;
654 
655  // int HO0bad=0;
656  // int HO12bad=0;
657  // int HFlumibad=0;
658 
659  // Check unpacker report for bad digis
660 
661  typedef std::vector<DetId> DetIdVector;
662 
663  for ( DetIdVector::const_iterator baddigi_iter=report.bad_quality_begin();
664  baddigi_iter != report.bad_quality_end();
665  ++baddigi_iter)
666  {
667  HcalDetId id(baddigi_iter->rawId());
668  int rDepth = id.depth();
669  int rPhi = id.iphi();
670  int rEta = id.ieta();
671  int binEta = CalcEtaBin(id.subdet(), rEta, rDepth); // why is this here?
672 
673  if (binEta < 85 && binEta >= 0
674  && (rPhi-1) >= 0 && (rPhi-1)<72
675  && (rDepth-1) >= 0 && (rDepth-1)<4)
676  if(uniqcounter2[binEta][rPhi-1][rDepth-1]<1)
677  {
678  if (id.subdet()==HcalBarrel) ++hbHists.count_bad;
679  else if (id.subdet()==HcalEndcap) ++heHists.count_bad;
680  else if (id.subdet()==HcalForward)
681  {
682  ++hfHists.count_bad;
683  if (rDepth==1 && (abs(rEta)==33 || abs(rEta)==34)) ++HFlumibad;
684  else if (rDepth==2 && (abs(rEta)==35 || abs(rEta)==36)) ++HFlumibad;
685  }
686  else if (id.subdet()==HcalOuter)
687  {
688  // Mark HORing+/-2 channels as present, HO/YB+/-2 has HV off (at 100V).
689  if (excludeHORing2_==true && rDepth==4)
690  if (abs(rEta)>=11 && abs(rEta)<=15 && !isSiPM(rEta,rPhi,rDepth)) continue;
691 
692  if (excludeHO1P02_==true)
693  if( (rEta>4 && rEta<10) && (rPhi<=10 || rPhi>70) ) continue;
694 
695  if (KnownBadCells_.find(id)!=KnownBadCells_.end()) continue;
696 
697  ++hoHists.count_bad;
698  if (abs(rEta)<5) ++HO0bad;
699  else ++HO12bad;
700  }
701  else
702  continue; // skip anything that isn't HB, HE, HO, HF
703  // extra protection against nonsensical values -- prevents occasional crashes
704 
705  ++badunpackerreport[binEta][rPhi-1][rDepth-1];
706  ++baddigis[binEta][rPhi-1][rDepth-1];
707 
708  // QPLL unlocking channels, have to ignore unpacker errors (fix requires opening CMS)
709  bool HEM15A = true ? (id.subdet()==HcalEndcap && (rPhi>56 && rPhi<59 && rEta<0)) : false;
710  bool HEM15B = true ? (id.subdet()==HcalEndcap && (rPhi>54 && rPhi<57 && rEta<0)) : false;
711  bool HBP14A = true ? (id.subdet()==HcalBarrel && (rPhi>50 && rPhi<53 && rEta>0)) : false;
712 
713  if(excludeBadQPLLs_ && rDepth==1)
714  if( HEM15A || HEM15B || HBP14A )
715  ++knownbadQPLLs;
716 
717  uniqcounter2[binEta][rPhi-1][rDepth-1]++;
718  }
719  }
721 
722  int firsthbcap=-1;
723  int firsthecap=-1;
724  int firsthocap=-1;
725  int firsthfcap=-1;
726 
727  for (HBHEDigiCollection::const_iterator j=hbhe.begin(); j!=hbhe.end(); ++j)
728  {
729  const HBHEDataFrame digi = (const HBHEDataFrame)(*j);
730 
731  if (digi.id().subdet()==HcalBarrel)
732  {
733  if (!HBpresent_) continue;
734  if (KnownBadCells_.find(digi.id())!=KnownBadCells_.end()) continue;
735 
736  process_Digi(digi, hbHists, firsthbcap);
737 
738  }
739  else if (digi.id().subdet()==HcalEndcap)
740  {
741  if (!HEpresent_) continue;
742  process_Digi(digi, heHists,firsthecap);
743  }
744  }
745 
746  // // Fill good digis vs lumi block; also fill bad errors?
749 
750  // Calculate number of bad quality cells and bad quality fraction
752  {
753  int counter=hbHists.count_bad;
754  if (counter<DIGI_SUBDET_NUM)
755  ++hbHists.count_BQ[counter];
757  if (counter2<DIGI_SUBDET_NUM) ++hbHists.count_BQFrac[(int)counter2];
758  }
759 
761  {
762  int counter=heHists.count_bad;
763  if (counter<DIGI_SUBDET_NUM)
764  ++heHists.count_BQ[counter];
766  if (counter2<DIGI_SUBDET_NUM) ++heHists.count_BQFrac[int(counter2)];
767  }
768 
770  if (HOpresent_)
771  {
772  for (HODigiCollection::const_iterator j=ho.begin(); j!=ho.end(); ++j)
773  {
774  const HODataFrame digi = (const HODataFrame)(*j);
775  // Mark HORing+/-2 channels as present, HO/YB+/-2 has HV off (at 100V).
776  if (excludeHORing2_==true && digi.id().depth()==4)
777  if (abs(digi.id().ieta())>=11 && abs(digi.id().ieta())<=15 &&
778  !isSiPM(digi.id().ieta(),digi.id().iphi(),digi.id().depth())) continue;
779 
780  if (excludeHO1P02_==true)
781  if( (digi.id().ieta()>4 && digi.id().ieta()<10)
782  && (digi.id().iphi()<=10 || digi.id().iphi()>70) ) continue;
783 
784  if (KnownBadCells_.find(digi.id())!=KnownBadCells_.end()) continue;
785 
786  process_Digi(digi, hoHists, firsthocap);
787  } // for (HODigiCollection)
788 
789  if (hoHists.count_bad>0 || hoHists.count_good>0)
790  {
791  int counter=hoHists.count_bad;
792  if (counter<DIGI_SUBDET_NUM)
793  ++hoHists.count_BQ[counter];
794 
796  if (counter2<DIGI_SUBDET_NUM) ++hoHists.count_BQFrac[int(counter2)];
797  }
799  } // if (HOpresent_)
800 
802  if (HFpresent_)
803  {
804  for (HFDigiCollection::const_iterator j=hf.begin(); j!=hf.end(); ++j)
805  {
806  const HFDataFrame digi = (const HFDataFrame)(*j);
807  process_Digi(digi, hfHists, firsthfcap);
808  } // for (HFDigiCollection)
809 
810  if (hfHists.count_bad>0 || hfHists.count_good>0)
811  {
812  int counter=hfHists.count_bad;
813  if (counter<DIGI_SUBDET_NUM)
814  ++hfHists.count_BQ[counter];
816  if (counter2<DIGI_SUBDET_NUM) ++hfHists.count_BQFrac[int(counter2)];
817  }
819  } // if (HFpresent_)
820 
821  // This only counts digis that are present but bad somehow; it does not count digis that are missing
824 
825  if (count_good<DIGI_NUM)
826  ++diginum[count_good];
827 
828  // Fill bad quality histograms
829  DigiUnpackerErrorFrac->Fill(1.*report.badQualityDigis()/(report.badQualityDigis()+count_good));
830  DigiBQ->Fill(count_bad);
831  if (count_bad>0 || count_good>0)
832  DigiBQFrac->Fill(1.*count_bad/(count_bad+count_good));
833 
834  // Call 'update' on all histograms so that they update in online DQM
839 
840  // Now update global (non-subdetector-specific) histograms
841  DigiNum->update();
842  DigiErrorVME->update();
844  DigiBQ->update();
845  DigiBQFrac->update();
848 
849  // Update eta-phi hists
850  for (unsigned int zz=0;zz<DigiErrorOccupancyByDepth.depth.size();++zz)
851  DigiErrorOccupancyByDepth.depth[zz]->update();
852  for (unsigned int zz=0;zz<DigiErrorsByDepth.depth.size();++zz)
853  DigiErrorsByDepth.depth[zz]->update();
854  for (unsigned int zz=0;zz<DigiErrorsBadCapID.depth.size();++zz)
855  DigiErrorsBadCapID.depth[zz]->update();
856  for (unsigned int zz=0;zz<DigiErrorsDVErr.depth.size();++zz)
857  DigiErrorsDVErr.depth[zz]->update();
858  for (unsigned int zz=0;zz<DigiErrorsBadDigiSize.depth.size();++zz)
859  DigiErrorsBadDigiSize.depth[zz]->update();
860  for (unsigned int zz=0;zz<DigiErrorsBadADCSum.depth.size();++zz)
861  DigiErrorsBadADCSum.depth[zz]->update();
862  for (unsigned int zz=0;zz<DigiErrorsUnpacker.depth.size();++zz)
863  DigiErrorsUnpacker.depth[zz]->update();
864  for (unsigned int zz=0;zz<DigiErrorsBadFibBCNOff.depth.size();++zz)
865  DigiErrorsBadFibBCNOff.depth[zz]->update();
866 
871  DigiSize->update();
873 
874  // // Fill problems vs. lumi block plots
875  // ProblemsVsLB->Fill(currentLS,count_bad);
876  // ProblemsVsLB_HB->Fill(currentLS,hbHists.count_bad);
877  // ProblemsVsLB_HE->Fill(currentLS,heHists.count_bad);
878  // ProblemsVsLB_HO->Fill(currentLS,hoHists.count_bad);
879  // ProblemsVsLB_HF->Fill(currentLS,hfHists.count_bad);
880  // ProblemsVsLB_HBHEHF->Fill(currentLS,hbHists.count_bad+heHists.count_bad+hfHists.count_bad);
881 
882  // // Fill the number of problem digis in each channel
883  // ProblemsCurrentLB->Fill(-1,-1,1); // event counter
884  // ProblemsCurrentLB->Fill(0,0,hbHists.count_bad);
885  // ProblemsCurrentLB->Fill(1,0,heHists.count_bad);
886  // ProblemsCurrentLB->Fill(2,0,hoHists.count_bad);
887  // ProblemsCurrentLB->Fill(3,0,hfHists.count_bad);
888  // ProblemsCurrentLB->Fill(4,0,HO0bad);
889  // ProblemsCurrentLB->Fill(5,0,HO12bad);
890  // ProblemsCurrentLB->Fill(6,0,HFlumibad);
891 
892  // Call fill method every checkNevents
893  //fill_Nevents();
894 
895  return;
896 } // void HcalDigiMonitor::processEvent(...)
MonitorElement * h_invalid_bcn
MonitorElement * DigiBQFrac
EtaPhiHists DigiErrorsDVErr
HcalSubdetector subdet() const
get the subdetector
Definition: HcalDetId.h:32
MonitorElement * DigiSize
std::map< unsigned int, int > KnownBadCells_
EtaPhiHists DigiErrorOccupancyByDepth
#define DIGI_BQ_FRAC_NBINS
std::vector< T >::const_iterator const_iterator
#define abs(x)
Definition: mlp_lapack.h:159
void update(void)
Mark the object updated.
MonitorElement * DigiOccupancyEta
MonitorElement * DigiErrorVME
MonitorElement * DigiOccupancyVME
MonitorElement * DigiNum
MonitorElement * HOocc_vs_LB
const HcalDetId & id() const
Definition: HODataFrame.h:23
int baddigis[85][72][4]
void Fill(long long x)
MonitorElement * DigiErrorSpigot
EtaPhiHists DigiErrorsBadFibBCNOff
void UpdateHists(DigiHists &h)
bool isSiPM(int ieta, int iphi, int depth)
int depth() const
get the tower depth
Definition: HcalDetId.h:42
std::vector< MonitorElement * > depth
MonitorElement * HBocc_vs_LB
#define DIGI_SUBDET_NUM
int ieta() const
get the cell ieta
Definition: HcalDetId.h:38
int j
Definition: DBlmapReader.cc:9
DetIdVector::const_iterator bad_quality_begin() const
MonitorElement * HFocc_vs_LB
int process_Digi(T &digi, DigiHists &hist, int &firstcap)
const_iterator end() const
MonitorElement * DigiBQ
MonitorElement * DigiUnpackerErrorCount
MonitorElement * HEocc_vs_LB
int iphi() const
get the cell iphi
Definition: HcalDetId.h:40
EtaPhiHists DigiErrorsBadDigiSize
int diginum[DIGI_NUM]
#define DIGI_NUM
int count_BQFrac[DIGI_BQ_FRAC_NBINS]
MonitorElement * DigiOccupancySpigot
EtaPhiHists DigiErrorsBadADCSum
int count_BQ[DIGI_SUBDET_NUM]
int CalcEtaBin(int subdet, int ieta, int depth)
MonitorElement * h_invalid_orbitnumMod103
int badQualityDigis() const
size_type size() const
MonitorElement * h_valid_digis
const HcalDetId & id() const
Definition: HBHEDataFrame.h:22
tuple cout
Definition: gather_cfg.py:121
MonitorElement * DigiUnpackerErrorFrac
EtaPhiHists DigiErrorsBadCapID
int badunpackerreport[85][72][4]
MonitorElement * DigiExpectedSize
EtaPhiHists DigiErrorsByDepth
EtaPhiHists DigiErrorsUnpacker
const_iterator begin() const
DetIdVector::const_iterator bad_quality_end() const
MonitorElement * DigiOccupancyPhi
uint64_t uniqcounter2[ETABINS][PHIBINS][DEPTHBINS]
void HcalDigiMonitor::reset ( void  )
virtual

Reimplemented from HcalBaseDQMonitor.

Definition at line 1707 of file HcalDigiMonitor.cc.

References DigiHists::ADC, DigiHists::ADCsum, alarmer_counter_, DigiHists::BQ, DigiHists::BQFrac, DigiHists::CapID, DigiBQ, DigiBQFrac, DigiErrorOccupancyByDepth, DigiErrorsBadADCSum, DigiErrorsBadCapID, DigiErrorsBadDigiSize, DigiErrorsBadFibBCNOff, DigiErrorsByDepth, DigiErrorsDVErr, DigiErrorSpigot, DigiErrorsUnpacker, DigiErrorVME, DigiHists::DigiFirstCapID, DigiNum, DigiOccupancyByDepth, DigiOccupancyEta, DigiOccupancyPhi, DigiOccupancySpigot, DigiOccupancyVME, DigiUnpackerErrorCount, DigiUnpackerErrorFrac, DigiHists::DVerr, DigiHists::fibBCNOff, hbhedcsON, hbHists, heHists, hfdcsON, hfHists, hoHists, i, knownbadQPLLs, DigiHists::presample, ProblemDigisInLastNLB_HBHEHF_alarm, MonitorElement::Reset(), EtaPhiHists::Reset(), DigiHists::shape, DigiHists::shapeThresh, DigiHists::TS_sum_minus, DigiHists::TS_sum_plus, and zeroCounters().

Referenced by beginRun(), and setup().

1708 {
1709  // reset the temporary histograms
1710  zeroCounters();
1711 
1712  // then reset the MonitorElements
1713 
1715  alarmer_counter_ = 0;
1716  knownbadQPLLs = 0;
1717 
1718  hbhedcsON = true; hfdcsON = true;
1719 
1729 
1734  DigiErrorVME->Reset();
1736 
1737  DigiBQ->Reset();
1738  DigiBQFrac->Reset();
1741 
1742  DigiNum->Reset();
1743 
1744  hbHists.shape->Reset();
1746  hbHists.presample->Reset();
1747  hbHists.BQ->Reset();
1748  hbHists.BQFrac->Reset();
1750  hbHists.DVerr->Reset();
1751  hbHists.CapID->Reset();
1752  hbHists.ADC->Reset();
1753  hbHists.ADCsum->Reset();
1754  hbHists.fibBCNOff->Reset();
1755  for (unsigned int i=0;i<hbHists.TS_sum_plus.size();++i)
1756  hbHists.TS_sum_plus[i]->Reset();
1757  for (unsigned int i=0;i<hbHists.TS_sum_minus.size();++i)
1758  hbHists.TS_sum_minus[i]->Reset();
1759 
1760  heHists.shape->Reset();
1762  heHists.presample->Reset();
1763  heHists.BQ->Reset();
1764  heHists.BQFrac->Reset();
1766  heHists.DVerr->Reset();
1767  heHists.CapID->Reset();
1768  heHists.ADC->Reset();
1769  heHists.ADCsum->Reset();
1770  heHists.fibBCNOff->Reset();
1771  for (unsigned int i=0;i<heHists.TS_sum_plus.size();++i)
1772  heHists.TS_sum_plus[i]->Reset();
1773  for (unsigned int i=0;i<heHists.TS_sum_minus.size();++i)
1774  heHists.TS_sum_minus[i]->Reset();
1775 
1776  hoHists.shape->Reset();
1778  hoHists.presample->Reset();
1779  hoHists.BQ->Reset();
1780  hoHists.BQFrac->Reset();
1782  hoHists.DVerr->Reset();
1783  hoHists.CapID->Reset();
1784  hoHists.ADC->Reset();
1785  hoHists.ADCsum->Reset();
1786  hoHists.fibBCNOff->Reset();
1787  for (unsigned int i=0;i<hoHists.TS_sum_plus.size();++i)
1788  hoHists.TS_sum_plus[i]->Reset();
1789  for (unsigned int i=0;i<hoHists.TS_sum_minus.size();++i)
1790  hoHists.TS_sum_minus[i]->Reset();
1791 
1792  hfHists.shape->Reset();
1794  hfHists.presample->Reset();
1795  hfHists.BQ->Reset();
1796  hfHists.BQFrac->Reset();
1798  hfHists.DVerr->Reset();
1799  hfHists.CapID->Reset();
1800  hfHists.ADC->Reset();
1801  hfHists.ADCsum->Reset();
1802  hfHists.fibBCNOff->Reset();
1803  for (unsigned int i=0;i<hfHists.TS_sum_plus.size();++i)
1804  hfHists.TS_sum_plus[i]->Reset();
1805  for (unsigned int i=0;i<hfHists.TS_sum_minus.size();++i)
1806  hfHists.TS_sum_minus[i]->Reset();
1807 
1808  return;
1809 }
int i
Definition: DBlmapReader.cc:9
MonitorElement * DigiBQFrac
MonitorElement * ADC
EtaPhiHists DigiErrorsDVErr
MonitorElement * shape
MonitorElement * BQ
MonitorElement * shapeThresh
void Reset(void)
EtaPhiHists DigiErrorOccupancyByDepth
MonitorElement * DigiOccupancyEta
MonitorElement * DigiErrorVME
MonitorElement * DigiOccupancyVME
MonitorElement * DigiNum
MonitorElement * DigiErrorSpigot
EtaPhiHists DigiErrorsBadFibBCNOff
std::vector< MonitorElement * > TS_sum_minus
std::vector< MonitorElement * > TS_sum_plus
MonitorElement * DigiBQ
MonitorElement * DigiUnpackerErrorCount
MonitorElement * ADCsum
EtaPhiHists DigiErrorsBadDigiSize
MonitorElement * fibBCNOff
MonitorElement * DigiOccupancySpigot
EtaPhiHists DigiErrorsBadADCSum
MonitorElement * DVerr
MonitorElement * CapID
MonitorElement * DigiUnpackerErrorFrac
MonitorElement * DigiFirstCapID
EtaPhiHists DigiErrorsBadCapID
EtaPhiHists DigiOccupancyByDepth
MonitorElement * BQFrac
MonitorElement * presample
void Reset(void)
reset ME (ie. contents, errors, etc)
EtaPhiHists DigiErrorsByDepth
EtaPhiHists DigiErrorsUnpacker
MonitorElement * DigiOccupancyPhi
MonitorElement * ProblemDigisInLastNLB_HBHEHF_alarm
void HcalDigiMonitor::setup ( void  )
virtual

Reimplemented from HcalBaseDQMonitor.

Definition at line 151 of file HcalDigiMonitor.cc.

References bins_cellcount_new, bins_fraccount_new, DQMStore::book1D(), DQMStore::book2D(), DQMStore::bookInt(), DQMStore::bookProfile(), gather_cfg::cout, HcalBaseDQMonitor::dbe_, HcalBaseDQMonitor::debug_, DIGI_NUM, DigiBQ, DigiBQFrac, DigiErrorsBadCapID, DigiErrorsBadDigiSize, DigiErrorsBadFibBCNOff, DigiErrorsByDepth, DigiErrorsDVErr, DigiErrorSpigot, DigiErrorsUnpacker, DigiErrorVME, DigiExpectedSize, DigiMonitor_ExpectedOrbitMessageTime_, DigiNum, DigiOccupancyByDepth, DigiOccupancyEta, DigiOccupancyPhi, DigiOccupancySpigot, DigiOccupancyVME, DigiSize, DigiUnpackerErrorCount, DigiUnpackerErrorFrac, MonitorElement::Fill(), h_invalid_bcn, h_invalid_orbitnumMod103, h_valid_digis, hbHists, HBocc_vs_LB, heHists, HEocc_vs_LB, hfHists, HFM_shape, HFocc_vs_LB, HFP_shape, HFtiming_etaProfile, HFtiming_occupancy2D, HFtiming_totaltime2D, hoHists, HOocc_vs_LB, HcalBaseDQMonitor::makeDiagnostics_, mergeVDriftHistosByStation::name, pileupCalc::nbins, HcalBaseDQMonitor::NLumiBlocks_, HcalBaseDQMonitor::Online_, ProblemDigisInLastNLB_HBHEHF_alarm, HcalBaseDQMonitor::ProblemsVsLB, HcalBaseDQMonitor::ProblemsVsLB_HB, HcalBaseDQMonitor::ProblemsVsLB_HBHEHF, HcalBaseDQMonitor::ProblemsVsLB_HE, HcalBaseDQMonitor::ProblemsVsLB_HF, HcalBaseDQMonitor::ProblemsVsLB_HO, reset(), MonitorElement::setAxisTitle(), MonitorElement::setBinLabel(), DQMStore::setCurrentFolder(), HcalBaseDQMonitor::setup(), setupDone_, HcalBaseDQMonitor::SetupEtaPhiHists(), setupSubdetHists(), shapeThresh_, shapeThreshHB_, shapeThreshHE_, shapeThreshHF_, shapeThreshHO_, HcalDCCHeader::SPIGOT_COUNT, and HcalBaseDQMonitor::subdir_.

Referenced by beginRun().

152 {
153  if (setupDone_)
154  return;
155  setupDone_=true;
156  // Call base class setup
158  if (!dbe_) return;
159 
160  /******* Set up all histograms ********/
161  if (debug_>1)
162  std::cout <<"<HcalDigiMonitor::beginRun> Setting up histograms"<<std::endl;
163 
164  std::ostringstream name;
166 
167  dbe_->setCurrentFolder(subdir_+"digi_parameters");
168  MonitorElement* ExpectedOrbit = dbe_->bookInt("ExpectedOrbitMessageTime");
170 
171  MonitorElement* shapeT = dbe_->bookInt("DigiShapeThresh");
172  shapeT->Fill(shapeThresh_);
173  MonitorElement* shapeTHB = dbe_->bookInt("DigiShapeThreshHB");
174  shapeTHB->Fill(shapeThreshHB_);
175  MonitorElement* shapeTHE = dbe_->bookInt("DigiShapeThreshHE");
176  shapeTHE->Fill(shapeThreshHE_);
177  MonitorElement* shapeTHO = dbe_->bookInt("DigiShapeThreshHO");
178  shapeTHO->Fill(shapeThreshHO_);
179  MonitorElement* shapeTHF = dbe_->bookInt("DigiShapeThreshHF");
180  shapeTHF->Fill(shapeThreshHF_);
181 
182  dbe_->setCurrentFolder(subdir_+"bad_digis/bad_digi_occupancy");
183  SetupEtaPhiHists(DigiErrorsByDepth,"Bad Digi Map","");
184  dbe_->setCurrentFolder(subdir_+"bad_digis/1D_digi_plots");
185  ProblemsVsLB=dbe_->bookProfile("BadDigisVsLB","Number Bad Digis vs Luminosity block;Lumi block;# of Bad digis",
186  NLumiBlocks_,0.5,NLumiBlocks_+0.5,100,0,10000);
187  ProblemsVsLB_HB=dbe_->bookProfile("HB Bad Quality Digis vs LB","HB Bad Quality Digis vs Luminosity Block",
188  NLumiBlocks_,0.5,NLumiBlocks_+0.5,
189  100,0,10000);
190  ProblemsVsLB_HE=dbe_->bookProfile("HE Bad Quality Digis vs LB","HE Bad Quality Digis vs Luminosity Block",
191  NLumiBlocks_,0.5,NLumiBlocks_+0.5,
192  100,0,10000);
193  ProblemsVsLB_HO=dbe_->bookProfile("HO Bad Quality Digis vs LB","HO Bad Quality Digis vs Luminosity Block",
194  NLumiBlocks_,0.5,NLumiBlocks_+0.5,
195  100,0,10000);
196  ProblemsVsLB_HF=dbe_->bookProfile("HF Bad Quality Digis vs LB","HF Bad Quality Digis vs Luminosity Block",
197  NLumiBlocks_,0.5,NLumiBlocks_+0.5,
198  100,0,10000);
199  ProblemsVsLB_HBHEHF=dbe_->bookProfile("HBHEHF Bad Quality Digis vs LB","HBHEHF Bad Quality Digis vs Luminosity Block",
200  NLumiBlocks_,0.5,NLumiBlocks_+0.5,
201  100,0,10000);
202 
203  ProblemDigisInLastNLB_HBHEHF_alarm=dbe_->book1D("ProblemDigisInLastNLB_HBHEHF_alarm",
204  "Total Number of ProblemDigis HBHEHF in last 10 LS. Last bin contains OverFlow",
205  100,0,100);
206 
207 
208  if (makeDiagnostics_)
209  {
210  // by default, unpacked digis won't have these errors
211  dbe_->setCurrentFolder(subdir_+"diagnostics/bad_digis/badcapID");
212  SetupEtaPhiHists(DigiErrorsBadCapID," Digis with Bad Cap ID Rotation", "");
213  dbe_->setCurrentFolder(subdir_+"diagnostics/bad_digis/data_invalid_error");
214  SetupEtaPhiHists(DigiErrorsDVErr," Digis with Data Invalid or Error Bit Set", "");
215  }
216 
217  if (Online_)
218  {
219  // Special histograms for Pawel's timing study
220  dbe_->setCurrentFolder(subdir_+"HFTimingStudy");
221  HFtiming_etaProfile=dbe_->bookProfile("HFTiming_etaProfile","HFTiming Eta Profile;ieta;average time (time slice)",83,-41.5,41.5,200,0,10);
222  HFP_shape=dbe_->book1D("HFP_signal_shape","HFP signal shape",10,-0.5,9.5);
223  HFM_shape=dbe_->book1D("HFM_signal_shape","HFM signal shape",10,-0.5,9.5);
224  dbe_->setCurrentFolder(subdir_+"HFTimingStudy/sumplots");
225  HFtiming_totaltime2D=dbe_->book2D("HFTiming_Total_Time","HFTiming Total Time",83,-41.5,41.5,72,0.5,72.5);
226  HFtiming_occupancy2D=dbe_->book2D("HFTiming_Occupancy","HFTiming Occupancy",83,-41.5,41.5,72,0.5,72.5);
227  }
228 
229  dbe_->setCurrentFolder(subdir_+"bad_digis/bad_reportUnpackerErrors");
230  SetupEtaPhiHists(DigiErrorsUnpacker," Bad Unpacker Digis", "");
231 
232  dbe_->setCurrentFolder(subdir_+"bad_digis/baddigisize");
233  SetupEtaPhiHists(DigiErrorsBadDigiSize," Digis with Bad Size", "");
234 
235  dbe_->setCurrentFolder(subdir_+"digi_info");
236 
237  h_valid_digis=dbe_->book1D("ValidEvents","Events with minimum number of valid digis",2,-0.5,1.5);
238  h_valid_digis->setBinLabel(1,"Valid");
239  h_valid_digis->setBinLabel(2,"Invalid");
240 
241  h_invalid_orbitnumMod103=dbe_->book1D("InvalidDigiEvents_ORN","Orbit Number (mod 103) for Events with Many Unpacker Errors",103,-0.5,102.5);
242  h_invalid_bcn=dbe_->book1D("InvalidDigiEvents_BCN","Bunch Crossing Number fo Events with Many Unpacker Errors",3464,-0.5,3563.5);
243 
244  DigiSize = dbe_->book2D("Digi Size", "Digi Size",4,0,4,20,-0.5,19.5);
245  DigiSize->setBinLabel(1,"HB",1);
246  DigiSize->setBinLabel(2,"HE",1);
247  DigiSize->setBinLabel(3,"HO",1);
248  DigiSize->setBinLabel(4,"HF",1);
249  DigiSize->setAxisTitle("Subdetector",1);
250  DigiSize->setAxisTitle("Digi Size",2);
251 
252  DigiExpectedSize = dbe_->book2D("Digi Expected Size", "Digi Expected Size",3,0,3,20,-0.5,19.5);
253  DigiExpectedSize->setBinLabel(1,"HBHE",1);
254  DigiExpectedSize->setBinLabel(2,"HO",1);
255  DigiExpectedSize->setBinLabel(3,"HF",1);
256  DigiExpectedSize->setAxisTitle("Subdetector",1);
257  DigiExpectedSize->setAxisTitle("Digi Expected Size from HTR",2);
258 
259  dbe_->setCurrentFolder(subdir_+"bad_digis/badfibBCNoff");
260  SetupEtaPhiHists(DigiErrorsBadFibBCNOff," Digis with non-zero Fiber Orbit Msg Idle BCN Offsets", "");
261 
262  dbe_->setCurrentFolder(subdir_+"good_digis/1D_digi_plots");
263  HBocc_vs_LB=dbe_->bookProfile("HBoccVsLB","HB digi occupancy vs Luminosity Block;Lumi block;# of Good digis",
264  NLumiBlocks_,0.5,NLumiBlocks_+0.5,
265  0,2600);
266  HEocc_vs_LB=dbe_->bookProfile("HEoccVsLB","HE digi occupancy vs Luminosity Block;Lumi block;# of Good digis",
267  NLumiBlocks_,0.5,NLumiBlocks_+0.5,
268  0,2600);
269  HOocc_vs_LB=dbe_->bookProfile("HOoccVsLB","HO digi occupancy vs Luminosity Block;Lumi block;# of Good digis",
270  NLumiBlocks_,0.5,NLumiBlocks_+0.5,
271  0,2200);
272  HFocc_vs_LB=dbe_->bookProfile("HFoccVsLB","HF digi occupancy vs Luminosity Block;Lumi block;# of Good digis",
273  NLumiBlocks_,0.5,NLumiBlocks_+0.5,
274  0,1800);
275 
276  dbe_->setCurrentFolder(subdir_+"good_digis/digi_occupancy");
277  SetupEtaPhiHists(DigiOccupancyByDepth," Digi Eta-Phi Occupancy Map","");
278  DigiOccupancyPhi= dbe_->book1D("Digi Phi Occupancy Map",
279  "Digi Phi Occupancy Map;i#phi;# of Events",
280  72,0.5,72.5);
281  DigiOccupancyEta= dbe_->book1D("Digi Eta Occupancy Map",
282  "Digi Eta Occupancy Map;i#eta;# of Events",
283  83,-41.5,41.5);
284  DigiOccupancyVME = dbe_->book2D("Digi VME Occupancy Map",
285  "Digi VME Occupancy Map;HTR Slot;VME Crate Id",
286  40,-0.25,19.75,18,-0.5,17.5);
287 
288  DigiOccupancySpigot = dbe_->book2D("Digi Spigot Occupancy Map",
289  "Digi Spigot Occupancy Map;Spigot;DCC Id",
291  36,-0.5,35.5);
292 
293  dbe_->setCurrentFolder(subdir_+"bad_digis/bad_digi_occupancy");
294  DigiErrorVME = dbe_->book2D("Digi VME Error Map",
295  "Digi VME Error Map;HTR Slot;VME Crate Id",
296  40,-0.25,19.75,18,-0.5,17.5);
297 
298  DigiErrorSpigot = dbe_->book2D("Digi Spigot Error Map",
299  "Digi Spigot Error Map;Spigot;DCC Id",
301  36,-0.5,35.5);
302 
303  dbe_->setCurrentFolder(subdir_+"bad_digis");
304  int nbins = sizeof(bins_cellcount_new)/sizeof(float)-1;
305 
306  DigiBQ = dbe_->book1D("NumBadQualDigis","Number Bad Qual Digis within Digi Collection",nbins, bins_cellcount_new);
307 
308  nbins=sizeof(bins_fraccount_new)/sizeof(float)-1;
309 
310  DigiBQFrac = dbe_->book1D("Bad Digi Fraction","Bad Digi Fraction;Bad Quality Digi Fraction for digis in collection; # of Events",
311  nbins, bins_fraccount_new);
312 
313  nbins = sizeof(bins_cellcount_new)/sizeof(float)-1;
314  DigiUnpackerErrorCount = dbe_->book1D("Unpacker Error Count", "Number of Bad Digis from Unpacker; Bad Unpacker Digis; # of Events",nbins, bins_cellcount_new);
315 
316  nbins=sizeof(bins_fraccount_new)/sizeof(float)-1;
317  DigiUnpackerErrorFrac = dbe_->book1D("Unpacker Bad Digi Fraction",
318  "Bad Digis From Unpacker/ (Bad Digis From Unpacker + Good Digis); Bad Unpacker Fraction; # of Events",
319  nbins,bins_fraccount_new);
320 
321  dbe_->setCurrentFolder(subdir_+"good_digis/");
322  DigiNum = dbe_->book1D("NumGoodDigis","Number of Digis;# of Good Digis;# of Events",DIGI_NUM+1,-0.5,DIGI_NUM+1-0.5);
323 
328 
329  this->reset();
330  return;
331 } // void HcalDigiMonitor::setup()
MonitorElement * h_invalid_bcn
MonitorElement * DigiBQFrac
MonitorElement * HFtiming_occupancy2D
EtaPhiHists DigiErrorsDVErr
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
Definition: DQMStore.cc:722
MonitorElement * DigiSize
MonitorElement * HFP_shape
MonitorElement * ProblemsVsLB_HF
MonitorElement * HFtiming_totaltime2D
MonitorElement * HFM_shape
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 * DigiOccupancyEta
MonitorElement * DigiErrorVME
MonitorElement * DigiOccupancyVME
MonitorElement * DigiNum
MonitorElement * HOocc_vs_LB
void Fill(long long x)
MonitorElement * DigiErrorSpigot
EtaPhiHists DigiErrorsBadFibBCNOff
int DigiMonitor_ExpectedOrbitMessageTime_
MonitorElement * HBocc_vs_LB
MonitorElement * ProblemsVsLB_HBHEHF
MonitorElement * ProblemsVsLB_HB
float bins_cellcount_new[]
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:1036
MonitorElement * HFocc_vs_LB
MonitorElement * DigiBQ
MonitorElement * DigiUnpackerErrorCount
MonitorElement * HEocc_vs_LB
EtaPhiHists DigiErrorsBadDigiSize
#define DIGI_NUM
MonitorElement * DigiOccupancySpigot
MonitorElement * HFtiming_etaProfile
MonitorElement * ProblemsVsLB_HE
MonitorElement * h_invalid_orbitnumMod103
void SetupEtaPhiHists(EtaPhiHists &hh, std::string Name, std::string Units)
static const int SPIGOT_COUNT
Definition: HcalDCCHeader.h:21
float bins_fraccount_new[]
MonitorElement * h_valid_digis
tuple cout
Definition: gather_cfg.py:121
MonitorElement * DigiUnpackerErrorFrac
EtaPhiHists DigiErrorsBadCapID
MonitorElement * ProblemsVsLB_HO
void setupSubdetHists(DigiHists &hist, std::string subdet)
EtaPhiHists DigiOccupancyByDepth
MonitorElement * ProblemsVsLB
MonitorElement * bookInt(const char *name)
Book int.
Definition: DQMStore.cc:629
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
virtual void setup(void)
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
MonitorElement * DigiExpectedSize
EtaPhiHists DigiErrorsByDepth
EtaPhiHists DigiErrorsUnpacker
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:434
MonitorElement * DigiOccupancyPhi
MonitorElement * ProblemDigisInLastNLB_HBHEHF_alarm
void HcalDigiMonitor::setupSubdetHists ( DigiHists hist,
std::string  subdet 
)
private

Definition at line 398 of file HcalDigiMonitor.cc.

References DigiHists::ADC, DigiHists::ADCsum, DQMStore::book1D(), DigiHists::BQ, DigiHists::BQFrac, DigiHists::CapID, HcalBaseDQMonitor::dbe_, DIGI_BQ_FRAC_NBINS, DigiHists::DigiFirstCapID, DigiHists::DVerr, DigiHists::fibBCNOff, mergeVDriftHistosByStation::name, DigiHists::presample, MonitorElement::setBinLabel(), DQMStore::setCurrentFolder(), DigiHists::shape, DigiHists::shapeThresh, HcalBaseDQMonitor::subdir_, DigiHists::ThreshCount, DigiHists::TS_sum_minus, and DigiHists::TS_sum_plus.

Referenced by setup().

399 {
400  if (!dbe_) return;
401  std::stringstream name;
402  int nChan=0;
403  if (subdet=="HB" || subdet=="HE") nChan=2592;
404  else if (subdet == "HO") nChan=2160;
405  else if (subdet == "HF") nChan=1728;
406 
407  dbe_->setCurrentFolder(subdir_+"digi_info/"+subdet);
408  hist.shape = dbe_->book1D(subdet+" Digi Shape",subdet+" Digi Shape;Time Slice",10,-0.5,9.5);
409  hist.shapeThresh = dbe_->book1D(subdet+" Digi Shape - over thresh",
410  subdet+" Digi Shape - over thresh passing trigger and HF HT cuts;Time slice",
411  10,-0.5,9.5);
412  hist.ThreshCount = dbe_->book1D(subdet+" Total Digis Over Threshold",
413  subdet+" Total Digis Over Threshold",
414  1,-0.5,0.5);
415  // Create plots of sums of adjacent time slices
416  for (int ts=0;ts<9;++ts)
417  {
418  name<<subdet<<" Plus Time Slices "<<ts<<" and "<<ts+1;
419  hist.TS_sum_plus.push_back(dbe_->book1D(name.str().c_str(),name.str().c_str(),50, 0., 50.));
420  name.str("");
421  name<<subdet<<" Minus Time Slices "<<ts<<" and "<<ts+1;
422  hist.TS_sum_minus.push_back(dbe_->book1D(name.str().c_str(),name.str().c_str(),50, 0., 50.));
423  name.str("");
424  }
425  hist.presample= dbe_->book1D(subdet+" Digi Presamples",subdet+" Digi Presamples",50,-0.5,49.5);
426  hist.BQ = dbe_->book1D(subdet+" Bad Quality Digis",subdet+" Bad Quality Digis",nChan+1,-0.5,nChan+0.5);
427  //(hist.BQ->getTH1F())->LabelsOption("v");
428  hist.BQFrac = dbe_->book1D(subdet+" Bad Quality Digi Fraction",subdet+" Bad Quality Digi Fraction",DIGI_BQ_FRAC_NBINS,(0-0.5/(DIGI_BQ_FRAC_NBINS-1)),1+0.5/(DIGI_BQ_FRAC_NBINS-1));
429  hist.DigiFirstCapID = dbe_->book1D(subdet+" Capid 1st Time Slice",subdet+" Capid for 1st Time Slice;CapId (T0)- 1st CapId (T0);# of Events",7,-3.5,3.5);
430 
431  hist.DVerr = dbe_->book1D(subdet+" Data Valid Err Bits",subdet+" QIE Data Valid Err Bits",4,-0.5,3.5);
432  hist.DVerr ->setBinLabel(1,"Err=0, DV=0",1);
433  hist.DVerr ->setBinLabel(2,"Err=0, DV=1",1);
434  hist.DVerr ->setBinLabel(3,"Err=1, DV=0",1);
435  hist.DVerr ->setBinLabel(4,"Err=1, DV=1",1);
436  hist.CapID = dbe_->book1D(subdet+" CapID",subdet+" CapID",4,-0.5,3.5);
437  hist.ADC = dbe_->book1D(subdet+" ADC count per time slice",subdet+" ADC count per time slice",200,-0.5,199.5);
438  hist.ADCsum = dbe_->book1D(subdet+" ADC sum", subdet+" ADC sum",200,-0.5,199.5);
439  hist.fibBCNOff = dbe_->book1D(subdet+" Fiber Orbit Message Idle BCN Offset", subdet+" Fiber Orbit Message Idle BCN Offset;Offset from Expected",
440  15, -7.5, 7.5);
441 }
MonitorElement * ADC
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
Definition: DQMStore.cc:722
MonitorElement * shape
MonitorElement * BQ
MonitorElement * shapeThresh
#define DIGI_BQ_FRAC_NBINS
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 * ThreshCount
std::vector< MonitorElement * > TS_sum_minus
std::vector< MonitorElement * > TS_sum_plus
MonitorElement * ADCsum
MonitorElement * fibBCNOff
MonitorElement * DVerr
MonitorElement * CapID
MonitorElement * DigiFirstCapID
MonitorElement * BQFrac
MonitorElement * presample
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:434
void HcalDigiMonitor::UpdateHists ( DigiHists h)
private

Definition at line 1685 of file HcalDigiMonitor.cc.

References DigiHists::ADC, DigiHists::ADCsum, DigiHists::BQ, DigiHists::BQFrac, DigiHists::CapID, DigiHists::DigiFirstCapID, DigiHists::DVerr, DigiHists::fibBCNOff, i, DigiHists::presample, DigiHists::shape, DigiHists::shapeThresh, DigiHists::TS_sum_minus, DigiHists::TS_sum_plus, and MonitorElement::update().

Referenced by processEvent().

1686 {
1687  // call update command for all histograms (should make them update when running in online DQM?)
1688  h.shape->update();
1689  h.shapeThresh->update();
1690  h.presample->update();
1691  h.BQ->update();
1692  h.BQFrac->update();
1693  h.DigiFirstCapID->update();
1694  h.DVerr->update();
1695  h.CapID->update();
1696  h.ADC->update();
1697  h.ADCsum->update();
1698  h.fibBCNOff->update();
1699 
1700  for (unsigned int i=0;i<h.TS_sum_plus.size();++i)
1701  h.TS_sum_plus[i]->update();
1702  for (unsigned int i=0;i<h.TS_sum_minus.size();++i)
1703  h.TS_sum_minus[i]->update();
1704 } //void HcalDigiMonitor::UpdateHists(DigiHists& h)
int i
Definition: DBlmapReader.cc:9
MonitorElement * ADC
MonitorElement * shape
MonitorElement * BQ
MonitorElement * shapeThresh
void update(void)
Mark the object updated.
std::vector< MonitorElement * > TS_sum_minus
std::vector< MonitorElement * > TS_sum_plus
MonitorElement * ADCsum
MonitorElement * fibBCNOff
MonitorElement * DVerr
MonitorElement * CapID
MonitorElement * DigiFirstCapID
MonitorElement * BQFrac
MonitorElement * presample
void HcalDigiMonitor::zeroCounters ( )
private

Definition at line 1516 of file HcalDigiMonitor.cc.

References DigiHists::adc, DigiHists::adcsum, badcapID, baddigis, baddigisize, badFibBCNOff, badunpackerreport, DigiHists::capid, DigiHists::capIDdiff, DigiHists::count_bad, DigiHists::count_BQ, DigiHists::count_BQFrac, DigiHists::count_good, DigiHists::count_presample, DigiHists::count_shape, DigiHists::count_shapeThresh, DEPTHBINS, DIGI_BQ_FRAC_NBINS, DIGI_NUM, DIGI_SUBDET_NUM, digierrorsdverr, diginum, digisize, DigiHists::dverr, errorSpigot, errorVME, eta(), ETABINS, DigiHists::fibbcnoff, hbHists, heHists, hfHists, HFlumibad, HO0bad, HO12bad, hoHists, i, j, gen::k, knownbadQPLLs, occupancyEta, occupancyEtaPhi, occupancyPhi, occupancySpigot, occupancyVME, phi, PHIBINS, HcalDCCHeader::SPIGOT_COUNT, DigiHists::tssumminus, DigiHists::tssumplus, uniqcounter, and uniqcounter2.

Referenced by endLuminosityBlock(), and reset().

1517 {
1518  // Set all histogram counters back to 0
1519  // Call this after all every N evnets
1520 
1521  /******** Zero all counters *******/
1522  for (int d=0; d<DEPTHBINS; d++) {
1523  for (int eta=0; eta<ETABINS; eta++) {
1524  for (int phi=0; phi<PHIBINS; phi++){
1525  uniqcounter[eta][phi][d] = 0.0;
1526  uniqcounter2[eta][phi][d] = 0.0;
1527  }
1528  }
1529  }
1530 
1531  hbHists.count_bad=0;
1532  hbHists.count_good=0;
1533  heHists.count_bad=0;
1534  heHists.count_good=0;
1535  hoHists.count_bad=0;
1536  hoHists.count_good=0;
1537  hfHists.count_bad=0;
1538  hfHists.count_good=0;
1539 
1540  knownbadQPLLs = 0;
1541 
1542  HO0bad=0;
1543  HO12bad=0;
1544  HFlumibad=0;
1545 
1546  for (int i=0;i<85;++i)
1547  {
1548  occupancyEta[i]=0;
1549  if (i<72)
1550  occupancyPhi[i]=0;
1551  for (int j=0;j<72;++j)
1552  {
1553  for (int k=0;k<4;++k)
1554  {
1555  baddigis[i][j][k]=0;
1556  badcapID[i][j][k]=0;
1557  baddigisize[i][j][k]=0;
1558  occupancyEtaPhi[i][j][k]=0;
1559  digierrorsdverr[i][j][k]=0;
1560  badFibBCNOff[i][j][k]=0;
1561  badunpackerreport[i][j][k]=0;
1562  }
1563  } // for (int j=0;j<72;++i)
1564  } // for (int i=0;i<85;++i)
1565 
1566  for (int i=0;i<40;++i)
1567  {
1568  for (int j=0;j<18;++j)
1569  {
1570  occupancyVME[i][j]=0;
1571  errorVME[i][j]=0;
1572  }
1573  }
1574 
1575  for (int i=0;i<HcalDCCHeader::SPIGOT_COUNT;++i)
1576  {
1577  for (int j=0;j<36;++j)
1578  {
1579  occupancySpigot[i][j]=0;
1580  errorSpigot[i][j]=0;
1581  }
1582  }
1583 
1584 
1585  for (int i=0;i<20;++i)
1586  {
1587  for (int j=0;j<4;++j)
1588  digisize[i][j]=0;
1589  }
1590 
1591  for (int i=0;i<DIGI_NUM;++i)
1592  {
1593  diginum[i]=0;
1594 
1595  // set all DigiHists counters to 0
1596  if (i<4)
1597  {
1598  hbHists.dverr[i]=0;
1599  heHists.dverr[i]=0;
1600  hoHists.dverr[i]=0;
1601  hfHists.dverr[i]=0;
1602  hbHists.capid[i]=0;
1603  heHists.capid[i]=0;
1604  hoHists.capid[i]=0;
1605  hfHists.capid[i]=0;
1606  }
1607  if (i<8)
1608  {
1609  hbHists.capIDdiff[i]=0;
1610  heHists.capIDdiff[i]=0;
1611  hoHists.capIDdiff[i]=0;
1612  hfHists.capIDdiff[i]=0;
1613  }
1614 
1615  if (i<10)
1616  {
1617  hbHists.count_shape[i]=0;
1618  heHists.count_shape[i]=0;
1619  hoHists.count_shape[i]=0;
1620  hfHists.count_shape[i]=0;
1621 
1626  }
1627  if (i<50)
1628  {
1633  for (int j=0;j<10;++j)
1634  {
1635  hbHists.tssumplus[i][j]=0;
1636  heHists.tssumplus[i][j]=0;
1637  hoHists.tssumplus[i][j]=0;
1638  hfHists.tssumplus[i][j]=0;
1639  hbHists.tssumminus[i][j]=0;
1640  heHists.tssumminus[i][j]=0;
1641  hoHists.tssumminus[i][j]=0;
1642  hfHists.tssumminus[i][j]=0;
1643  }
1644  }
1645 
1646  if (i<15)
1647  {
1648  hbHists.fibbcnoff[i]=0;
1649  heHists.fibbcnoff[i]=0;
1650  hoHists.fibbcnoff[i]=0;
1651  hfHists.fibbcnoff[i]=0;
1652  }
1653 
1654  if (i<200)
1655  {
1656  hbHists.adc[i]=0;
1657  heHists.adc[i]=0;
1658  hoHists.adc[i]=0;
1659  hfHists.adc[i]=0;
1660  hbHists.adcsum[i]=0;
1661  heHists.adcsum[i]=0;
1662  hoHists.adcsum[i]=0;
1663  hfHists.adcsum[i]=0;
1664  }
1665  if (i<DIGI_SUBDET_NUM)
1666  {
1667  hbHists.count_BQ[i]=0;
1668  heHists.count_BQ[i]=0;
1669  hoHists.count_BQ[i]=0;
1670  hfHists.count_BQ[i]=0;
1671  }
1672  if (i<DIGI_BQ_FRAC_NBINS)
1673  {
1674  hbHists.count_BQFrac[i]=0;
1675  heHists.count_BQFrac[i]=0;
1676  hoHists.count_BQFrac[i]=0;
1677  hfHists.count_BQFrac[i]=0;
1678  }
1679  } // for (int i=0;i<DIGI_NUM;++i)
1680 
1681 
1682  return;
1683 }
int i
Definition: DBlmapReader.cc:9
int capid[4]
int count_presample[50]
int occupancySpigot[40][36]
int tssumminus[50][10]
int occupancyVME[40][18]
int errorVME[40][18]
int badcapID[85][72][4]
#define DIGI_BQ_FRAC_NBINS
int fibbcnoff[15]
int badFibBCNOff[85][72][4]
T eta() const
int dverr[4]
int baddigis[85][72][4]
uint64_t uniqcounter[ETABINS][PHIBINS][DEPTHBINS]
int adcsum[200]
#define DEPTHBINS
int adc[200]
int baddigisize[85][72][4]
#define DIGI_SUBDET_NUM
int digierrorsdverr[85][72][4]
int j
Definition: DBlmapReader.cc:9
int k[5][pyjets_maxn]
int errorSpigot[15][36]
int diginum[DIGI_NUM]
#define DIGI_NUM
int count_BQFrac[DIGI_BQ_FRAC_NBINS]
int count_BQ[DIGI_SUBDET_NUM]
#define ETABINS
int occupancyEtaPhi[85][72][4]
int tssumplus[50][10]
static const int SPIGOT_COUNT
Definition: HcalDCCHeader.h:21
double count_shapeThresh[10]
#define PHIBINS
int capIDdiff[8]
int badunpackerreport[85][72][4]
int count_shape[10]
int digisize[20][4]
uint64_t uniqcounter2[ETABINS][PHIBINS][DEPTHBINS]
Definition: DDAxes.h:10

Member Data Documentation

int HcalDigiMonitor::alarmer_counter_
private

Definition at line 123 of file HcalDigiMonitor.h.

Referenced by endLuminosityBlock(), fill_Nevents(), and reset().

int HcalDigiMonitor::badcapID[85][72][4]
private

Definition at line 157 of file HcalDigiMonitor.h.

Referenced by fill_Nevents(), process_Digi(), and zeroCounters().

int HcalDigiMonitor::baddigis[85][72][4]
private

Definition at line 156 of file HcalDigiMonitor.h.

Referenced by fill_Nevents(), process_Digi(), processEvent(), and zeroCounters().

int HcalDigiMonitor::baddigisize[85][72][4]
private

Definition at line 158 of file HcalDigiMonitor.h.

Referenced by fill_Nevents(), process_Digi(), and zeroCounters().

int HcalDigiMonitor::badFibBCNOff[85][72][4]
private

Definition at line 159 of file HcalDigiMonitor.h.

Referenced by fill_Nevents(), process_Digi(), and zeroCounters().

int HcalDigiMonitor::badunpackerreport[85][72][4]
private

Definition at line 160 of file HcalDigiMonitor.h.

Referenced by fill_Nevents(), processEvent(), and zeroCounters().

edm::ESHandle<HcalDbService> HcalDigiMonitor::conditions_
private

Definition at line 221 of file HcalDigiMonitor.h.

Referenced by analyze(), and beginRun().

bool HcalDigiMonitor::digi_checkadcsum_
private

Definition at line 134 of file HcalDigiMonitor.h.

Referenced by HcalDigiMonitor().

bool HcalDigiMonitor::digi_checkcapid_
private

Definition at line 132 of file HcalDigiMonitor.h.

Referenced by HcalDigiMonitor(), and process_Digi().

bool HcalDigiMonitor::digi_checkdigisize_
private

Definition at line 133 of file HcalDigiMonitor.h.

Referenced by HcalDigiMonitor(), and process_Digi().

bool HcalDigiMonitor::digi_checkdverr_
private

Definition at line 135 of file HcalDigiMonitor.h.

Referenced by HcalDigiMonitor(), and process_Digi().

bool HcalDigiMonitor::digi_checkoccupancy_
private

Definition at line 131 of file HcalDigiMonitor.h.

Referenced by HcalDigiMonitor().

MonitorElement* HcalDigiMonitor::DigiBQ
private

Definition at line 190 of file HcalDigiMonitor.h.

Referenced by processEvent(), reset(), and setup().

MonitorElement* HcalDigiMonitor::DigiBQFrac
private

Definition at line 191 of file HcalDigiMonitor.h.

Referenced by processEvent(), reset(), and setup().

EtaPhiHists HcalDigiMonitor::DigiErrorOccupancyByDepth
private

Definition at line 185 of file HcalDigiMonitor.h.

Referenced by processEvent(), and reset().

EtaPhiHists HcalDigiMonitor::DigiErrorsBadADCSum
private

Definition at line 150 of file HcalDigiMonitor.h.

Referenced by processEvent(), and reset().

EtaPhiHists HcalDigiMonitor::DigiErrorsBadCapID
private

Definition at line 147 of file HcalDigiMonitor.h.

Referenced by fill_Nevents(), processEvent(), reset(), and setup().

EtaPhiHists HcalDigiMonitor::DigiErrorsBadDigiSize
private

Definition at line 149 of file HcalDigiMonitor.h.

Referenced by fill_Nevents(), processEvent(), reset(), and setup().

EtaPhiHists HcalDigiMonitor::DigiErrorsBadFibBCNOff
private

Definition at line 152 of file HcalDigiMonitor.h.

Referenced by fill_Nevents(), processEvent(), reset(), and setup().

EtaPhiHists HcalDigiMonitor::DigiErrorsByDepth
private

Definition at line 146 of file HcalDigiMonitor.h.

Referenced by fill_Nevents(), processEvent(), reset(), and setup().

EtaPhiHists HcalDigiMonitor::DigiErrorsDVErr
private

Definition at line 148 of file HcalDigiMonitor.h.

Referenced by fill_Nevents(), processEvent(), reset(), and setup().

int HcalDigiMonitor::digierrorsdverr[85][72][4]
private

Definition at line 162 of file HcalDigiMonitor.h.

Referenced by fill_Nevents(), process_Digi(), and zeroCounters().

MonitorElement* HcalDigiMonitor::DigiErrorSpigot
private

Definition at line 188 of file HcalDigiMonitor.h.

Referenced by fill_Nevents(), processEvent(), reset(), and setup().

EtaPhiHists HcalDigiMonitor::DigiErrorsUnpacker
private

Definition at line 151 of file HcalDigiMonitor.h.

Referenced by fill_Nevents(), processEvent(), reset(), and setup().

MonitorElement* HcalDigiMonitor::DigiErrorVME
private

Definition at line 187 of file HcalDigiMonitor.h.

Referenced by fill_Nevents(), processEvent(), reset(), and setup().

MonitorElement* HcalDigiMonitor::DigiExpectedSize
private

Definition at line 155 of file HcalDigiMonitor.h.

Referenced by analyze(), processEvent(), and setup().

edm::InputTag HcalDigiMonitor::digiLabel_
private

Definition at line 218 of file HcalDigiMonitor.h.

Referenced by analyze(), and HcalDigiMonitor().

int HcalDigiMonitor::DigiMonitor_ExpectedOrbitMessageTime_
private

Definition at line 139 of file HcalDigiMonitor.h.

Referenced by HcalDigiMonitor(), process_Digi(), and setup().

MonitorElement* HcalDigiMonitor::DigiNum
private

Definition at line 206 of file HcalDigiMonitor.h.

Referenced by fill_Nevents(), processEvent(), reset(), and setup().

int HcalDigiMonitor::diginum[DIGI_NUM]
private

Definition at line 207 of file HcalDigiMonitor.h.

Referenced by fill_Nevents(), processEvent(), and zeroCounters().

EtaPhiHists HcalDigiMonitor::DigiOccupancyByDepth
private

Definition at line 170 of file HcalDigiMonitor.h.

Referenced by fill_Nevents(), reset(), and setup().

MonitorElement* HcalDigiMonitor::DigiOccupancyEta
private

Definition at line 171 of file HcalDigiMonitor.h.

Referenced by fill_Nevents(), processEvent(), reset(), and setup().

MonitorElement* HcalDigiMonitor::DigiOccupancyPhi
private

Definition at line 172 of file HcalDigiMonitor.h.

Referenced by fill_Nevents(), processEvent(), reset(), and setup().

MonitorElement* HcalDigiMonitor::DigiOccupancySpigot
private

Definition at line 174 of file HcalDigiMonitor.h.

Referenced by fill_Nevents(), processEvent(), reset(), and setup().

MonitorElement* HcalDigiMonitor::DigiOccupancyVME
private

Definition at line 173 of file HcalDigiMonitor.h.

Referenced by fill_Nevents(), processEvent(), reset(), and setup().

MonitorElement* HcalDigiMonitor::DigiSize
private

Definition at line 154 of file HcalDigiMonitor.h.

Referenced by fill_Nevents(), process_Digi(), processEvent(), and setup().

int HcalDigiMonitor::digisize[20][4]
private

Definition at line 161 of file HcalDigiMonitor.h.

Referenced by fill_Nevents(), process_Digi(), and zeroCounters().

MonitorElement* HcalDigiMonitor::DigiUnpackerErrorCount
private

Definition at line 192 of file HcalDigiMonitor.h.

Referenced by processEvent(), reset(), and setup().

MonitorElement* HcalDigiMonitor::DigiUnpackerErrorFrac
private

Definition at line 193 of file HcalDigiMonitor.h.

Referenced by processEvent(), reset(), and setup().

bool HcalDigiMonitor::doFCpeds_
private

Definition at line 112 of file HcalDigiMonitor.h.

int HcalDigiMonitor::errorSpigot[15][36]
private

Definition at line 199 of file HcalDigiMonitor.h.

Referenced by fill_Nevents(), process_Digi(), and zeroCounters().

int HcalDigiMonitor::errorVME[40][18]
private

Definition at line 198 of file HcalDigiMonitor.h.

Referenced by fill_Nevents(), process_Digi(), and zeroCounters().

bool HcalDigiMonitor::excludeBadQPLLs_
private

Definition at line 103 of file HcalDigiMonitor.h.

Referenced by HcalDigiMonitor(), and processEvent().

bool HcalDigiMonitor::excludeHO1P02_
private

Definition at line 102 of file HcalDigiMonitor.h.

Referenced by HcalDigiMonitor(), and processEvent().

bool HcalDigiMonitor::excludeHORing2_
private

Definition at line 101 of file HcalDigiMonitor.h.

Referenced by HcalDigiMonitor(), and processEvent().

edm::InputTag HcalDigiMonitor::FEDRawDataCollection_
private

Definition at line 219 of file HcalDigiMonitor.h.

Referenced by analyze(), and HcalDigiMonitor().

MonitorElement* HcalDigiMonitor::h_invalid_bcn
private

Definition at line 167 of file HcalDigiMonitor.h.

Referenced by processEvent(), and setup().

MonitorElement* HcalDigiMonitor::h_invalid_orbitnumMod103
private

Definition at line 166 of file HcalDigiMonitor.h.

Referenced by processEvent(), and setup().

MonitorElement* HcalDigiMonitor::h_valid_digis
private

Definition at line 165 of file HcalDigiMonitor.h.

Referenced by processEvent(), and setup().

int HcalDigiMonitor::hbcount_
private

Definition at line 140 of file HcalDigiMonitor.h.

bool HcalDigiMonitor::hbhedcsON
private

Definition at line 125 of file HcalDigiMonitor.h.

Referenced by analyze(), endLuminosityBlock(), and reset().

DigiHists HcalDigiMonitor::hbHists
private

Definition at line 216 of file HcalDigiMonitor.h.

Referenced by fill_Nevents(), processEvent(), reset(), setup(), and zeroCounters().

MonitorElement* HcalDigiMonitor::HBocc_vs_LB
private

Definition at line 201 of file HcalDigiMonitor.h.

Referenced by processEvent(), and setup().

int HcalDigiMonitor::hecount_
private

Definition at line 140 of file HcalDigiMonitor.h.

DigiHists HcalDigiMonitor::heHists
private

Definition at line 216 of file HcalDigiMonitor.h.

Referenced by fill_Nevents(), processEvent(), reset(), setup(), and zeroCounters().

MonitorElement* HcalDigiMonitor::HEocc_vs_LB
private

Definition at line 202 of file HcalDigiMonitor.h.

Referenced by processEvent(), and setup().

int HcalDigiMonitor::hfcount_
private

Definition at line 140 of file HcalDigiMonitor.h.

bool HcalDigiMonitor::hfdcsON
private

Definition at line 125 of file HcalDigiMonitor.h.

Referenced by analyze(), endLuminosityBlock(), and reset().

DigiHists HcalDigiMonitor::hfHists
private

Definition at line 216 of file HcalDigiMonitor.h.

Referenced by fill_Nevents(), processEvent(), reset(), setup(), and zeroCounters().

int HcalDigiMonitor::HFlumibad
private

Definition at line 115 of file HcalDigiMonitor.h.

Referenced by fill_Nevents(), processEvent(), and zeroCounters().

MonitorElement* HcalDigiMonitor::HFM_shape
private

Definition at line 214 of file HcalDigiMonitor.h.

Referenced by HcalDigiMonitor(), process_Digi(), and setup().

MonitorElement* HcalDigiMonitor::HFocc_vs_LB
private

Definition at line 204 of file HcalDigiMonitor.h.

Referenced by processEvent(), and setup().

MonitorElement* HcalDigiMonitor::HFP_shape
private

Definition at line 213 of file HcalDigiMonitor.h.

Referenced by HcalDigiMonitor(), process_Digi(), and setup().

edm::InputTag HcalDigiMonitor::hfRechitLabel_
private

Definition at line 226 of file HcalDigiMonitor.h.

Referenced by analyze(), and HcalDigiMonitor().

MonitorElement* HcalDigiMonitor::HFtiming_etaProfile
private

Definition at line 212 of file HcalDigiMonitor.h.

Referenced by HcalDigiMonitor(), process_Digi(), and setup().

MonitorElement* HcalDigiMonitor::HFtiming_occupancy2D
private

Definition at line 211 of file HcalDigiMonitor.h.

Referenced by HcalDigiMonitor(), process_Digi(), and setup().

MonitorElement* HcalDigiMonitor::HFtiming_totaltime2D
private

Definition at line 210 of file HcalDigiMonitor.h.

Referenced by HcalDigiMonitor(), process_Digi(), and setup().

edm::InputTag HcalDigiMonitor::hltresultsLabel_
private

Definition at line 223 of file HcalDigiMonitor.h.

Referenced by analyze(), and HcalDigiMonitor().

int HcalDigiMonitor::HO0bad
private

Definition at line 115 of file HcalDigiMonitor.h.

Referenced by fill_Nevents(), processEvent(), and zeroCounters().

int HcalDigiMonitor::HO12bad
private

Definition at line 115 of file HcalDigiMonitor.h.

Referenced by fill_Nevents(), processEvent(), and zeroCounters().

int HcalDigiMonitor::hocount_
private

Definition at line 140 of file HcalDigiMonitor.h.

DigiHists HcalDigiMonitor::hoHists
private

Definition at line 216 of file HcalDigiMonitor.h.

Referenced by fill_Nevents(), processEvent(), reset(), setup(), and zeroCounters().

MonitorElement* HcalDigiMonitor::HOocc_vs_LB
private

Definition at line 203 of file HcalDigiMonitor.h.

Referenced by processEvent(), and setup().

double HcalDigiMonitor::HT_HFM_
private

Definition at line 227 of file HcalDigiMonitor.h.

Referenced by analyze(), and process_Digi().

double HcalDigiMonitor::HT_HFP_
private

Definition at line 227 of file HcalDigiMonitor.h.

Referenced by analyze(), and process_Digi().

int HcalDigiMonitor::knownbadQPLLs
private

Definition at line 124 of file HcalDigiMonitor.h.

Referenced by fill_Nevents(), processEvent(), reset(), and zeroCounters().

int HcalDigiMonitor::maxdigisizeHBHE_
private

Definition at line 127 of file HcalDigiMonitor.h.

Referenced by analyze(), HcalDigiMonitor(), and process_Digi().

int HcalDigiMonitor::maxdigisizeHF_
private

Definition at line 129 of file HcalDigiMonitor.h.

Referenced by analyze(), HcalDigiMonitor(), and process_Digi().

int HcalDigiMonitor::maxdigisizeHO_
private

Definition at line 128 of file HcalDigiMonitor.h.

Referenced by analyze(), HcalDigiMonitor(), and process_Digi().

std::vector<std::string> HcalDigiMonitor::MinBiasHLTBits_
private

Definition at line 224 of file HcalDigiMonitor.h.

Referenced by analyze(), and HcalDigiMonitor().

int HcalDigiMonitor::mindigisizeHBHE_
private

Definition at line 127 of file HcalDigiMonitor.h.

Referenced by analyze(), HcalDigiMonitor(), and process_Digi().

int HcalDigiMonitor::mindigisizeHF_
private

Definition at line 129 of file HcalDigiMonitor.h.

Referenced by analyze(), HcalDigiMonitor(), and process_Digi().

int HcalDigiMonitor::mindigisizeHO_
private

Definition at line 128 of file HcalDigiMonitor.h.

Referenced by analyze(), HcalDigiMonitor(), and process_Digi().

int HcalDigiMonitor::occupancyErrorEta[85]
private

Definition at line 196 of file HcalDigiMonitor.h.

int HcalDigiMonitor::occupancyErrorEtaPhi[85][72][4]
private

Definition at line 195 of file HcalDigiMonitor.h.

int HcalDigiMonitor::occupancyErrorPhi[72]
private

Definition at line 197 of file HcalDigiMonitor.h.

int HcalDigiMonitor::occupancyEta[85]
private

Definition at line 179 of file HcalDigiMonitor.h.

Referenced by fill_Nevents(), process_Digi(), and zeroCounters().

int HcalDigiMonitor::occupancyEtaPhi[85][72][4]
private

Definition at line 178 of file HcalDigiMonitor.h.

Referenced by fill_Nevents(), process_Digi(), and zeroCounters().

int HcalDigiMonitor::occupancyPhi[72]
private

Definition at line 180 of file HcalDigiMonitor.h.

Referenced by fill_Nevents(), process_Digi(), and zeroCounters().

int HcalDigiMonitor::occupancySpigot[40][36]
private

Definition at line 182 of file HcalDigiMonitor.h.

Referenced by fill_Nevents(), process_Digi(), and zeroCounters().

int HcalDigiMonitor::occupancyVME[40][18]
private

Definition at line 181 of file HcalDigiMonitor.h.

Referenced by fill_Nevents(), process_Digi(), and zeroCounters().

bool HcalDigiMonitor::passedMinBiasHLT_
private

Methods, variables accessible only within class code.

Definition at line 100 of file HcalDigiMonitor.h.

Referenced by analyze(), and process_Digi().

std::map<HcalDetId, std::vector<double> > HcalDigiMonitor::PedestalsByCapId_
private

Definition at line 230 of file HcalDigiMonitor.h.

Referenced by beginRun(), and process_Digi().

double HcalDigiMonitor::pedSubtractedADC_[10]
private

Definition at line 232 of file HcalDigiMonitor.h.

Referenced by process_Digi().

MonitorElement* HcalDigiMonitor::ProblemDigisInLastNLB_HBHEHF_alarm
private

Definition at line 175 of file HcalDigiMonitor.h.

Referenced by endLuminosityBlock(), fill_Nevents(), reset(), and setup().

bool HcalDigiMonitor::setupDone_
private

Definition at line 113 of file HcalDigiMonitor.h.

Referenced by HcalDigiMonitor(), and setup().

int HcalDigiMonitor::shapeThresh_
private

Definition at line 117 of file HcalDigiMonitor.h.

Referenced by HcalDigiMonitor(), and setup().

int HcalDigiMonitor::shapeThreshHB_
private

Definition at line 118 of file HcalDigiMonitor.h.

Referenced by HcalDigiMonitor(), process_Digi(), and setup().

int HcalDigiMonitor::shapeThreshHE_
private

Definition at line 119 of file HcalDigiMonitor.h.

Referenced by HcalDigiMonitor(), process_Digi(), and setup().

int HcalDigiMonitor::shapeThreshHF_
private

Definition at line 120 of file HcalDigiMonitor.h.

Referenced by HcalDigiMonitor(), process_Digi(), and setup().

int HcalDigiMonitor::shapeThreshHO_
private

Definition at line 121 of file HcalDigiMonitor.h.

Referenced by HcalDigiMonitor(), process_Digi(), and setup().

bool HcalDigiMonitor::shutOffOrbitTest_
private

Definition at line 137 of file HcalDigiMonitor.h.

Referenced by HcalDigiMonitor(), and process_Digi().

uint64_t HcalDigiMonitor::uniqcounter[ETABINS][PHIBINS][DEPTHBINS]
private

Definition at line 141 of file HcalDigiMonitor.h.

Referenced by process_Digi(), and zeroCounters().

uint64_t HcalDigiMonitor::uniqcounter2[ETABINS][PHIBINS][DEPTHBINS]
private

Definition at line 142 of file HcalDigiMonitor.h.

Referenced by processEvent(), and zeroCounters().