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

#include <HcalDeadCellMonitor.h>

Inheritance diagram for HcalDeadCellMonitor:
HcalBaseDQMonitor DQMEDAnalyzer edm::stream::EDAnalyzer< edm::RunSummaryCache< dqmDetails::NoCache >, edm::LuminosityBlockSummaryCache< dqmDetails::NoCache > > edm::stream::EDAnalyzerBase edm::EDConsumerBase

Public Member Functions

void analyze (edm::Event const &e, edm::EventSetup const &s)
 
void bookHistograms (DQMStore::IBooker &ib, const edm::Run &run, const edm::EventSetup &c)
 
void endJob ()
 
void endLuminosityBlock (const edm::LuminosityBlock &lumiSeg, const edm::EventSetup &c)
 
void endRun (const edm::Run &run, const edm::EventSetup &c)
 
 HcalDeadCellMonitor (const edm::ParameterSet &ps)
 
template<class DIGI >
void process_Digi (DIGI &digi)
 
template<class RECHIT >
void process_RecHit (RECHIT &rechit)
 
void processEvent (const HBHERecHitCollection &hbHits, const HORecHitCollection &hoHits, const HFRecHitCollection &hfHits, const HBHEDigiCollection &hbhedigi, const HODigiCollection &hodigi, const HFDigiCollection &hfdigi)
 
void reset ()
 
void setup (DQMStore::IBooker &)
 
 ~HcalDeadCellMonitor ()
 
- Public Member Functions inherited from HcalBaseDQMonitor
 HcalBaseDQMonitor (const edm::ParameterSet &ps)
 
 HcalBaseDQMonitor ()
 
virtual ~HcalBaseDQMonitor ()
 
- Public Member Functions inherited from DQMEDAnalyzer
virtual void beginRun (edm::Run const &, edm::EventSetup const &) final
 
virtual void beginStream (edm::StreamID id) final
 
 DQMEDAnalyzer (void)
 
virtual void endLuminosityBlockSummary (edm::LuminosityBlock const &, edm::EventSetup const &, dqmDetails::NoCache *) const final
 
virtual void endRunSummary (edm::Run const &, edm::EventSetup const &, dqmDetails::NoCache *) const final
 
uint32_t streamId () const
 
- Public Member Functions inherited from edm::stream::EDAnalyzer< edm::RunSummaryCache< dqmDetails::NoCache >, edm::LuminosityBlockSummaryCache< dqmDetails::NoCache > >
 EDAnalyzer ()=default
 
- Public Member Functions inherited from edm::stream::EDAnalyzerBase
 EDAnalyzerBase ()
 
ModuleDescription const & moduleDescription () const
 
virtual ~EDAnalyzerBase ()
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
 EDConsumerBase ()
 
ProductHolderIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
std::vector
< ProductHolderIndexAndSkipBit >
const & 
itemsToGetFromEvent () const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesDependentUpon (const std::string &iProcessName, std::vector< const char * > &oModuleLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
bool registeredToConsume (ProductHolderIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void updateLookup (BranchType iBranchType, ProductHolderIndexHelper const &)
 
virtual ~EDConsumerBase ()
 

Private Member Functions

void fillNevents_problemCells ()
 
void fillNevents_recentdigis ()
 
void fillNevents_recentrechits ()
 
template<class T >
void process_Digi (T &digi)
 
template<class T >
void process_RecHit (T &rechit)
 
void processEvent_HBHEdigi (HBHEDataFrame digi)
 
void zeroCounters (bool resetpresent=false)
 

Private Attributes

int alarmer_counter_
 
int alarmer_counterHO01_
 
int beamMode_
 
int deadevt_
 
bool deadmon_makeDiagnostics_
 
bool deadmon_test_digis_
 
bool deadmon_test_rechits_
 
edm::InputTag digiLabel_
 
EtaPhiHists DigiPresentByDepth
 
bool doReset_
 
bool endLumiProcessed_
 
double energyThreshold_
 
bool excludeHO1P02_
 
bool excludeHORing2_
 
MonitorElementHBDeadVsEvent
 
double HBenergyThreshold_
 
bool hbhedcsON
 
edm::InputTag hbheRechitLabel_
 
MonitorElementHEDeadVsEvent
 
double HEenergyThreshold_
 
bool hfdcsON
 
MonitorElementHFDeadVsEvent
 
double HFenergyThreshold_
 
edm::InputTag hfRechitLabel_
 
bool hodcsON
 
MonitorElementHODeadVsEvent
 
double HOenergyThreshold_
 
edm::InputTag hoRechitLabel_
 
int is_RBX_loss_
 
bool is_stable_beam
 
int minDeadEventCount_
 
MonitorElementNevents
 
unsigned int NumBadHB
 
unsigned int NumBadHE
 
unsigned int NumBadHF
 
unsigned int NumBadHFLUMI
 
unsigned int NumBadHO
 
unsigned int NumBadHO0
 
unsigned int NumBadHO01
 
unsigned int NumBadHO12
 
int NumBadHO1P02
 
unsigned int NumBadHO2
 
MonitorElementNumberOfNeverPresentDigis
 
MonitorElementNumberOfNeverPresentDigisHB
 
MonitorElementNumberOfNeverPresentDigisHE
 
MonitorElementNumberOfNeverPresentDigisHF
 
MonitorElementNumberOfNeverPresentDigisHO
 
MonitorElementNumberOfNeverPresentRecHits
 
MonitorElementNumberOfNeverPresentRecHitsHB
 
MonitorElementNumberOfNeverPresentRecHitsHE
 
MonitorElementNumberOfNeverPresentRecHitsHF
 
MonitorElementNumberOfNeverPresentRecHitsHO
 
MonitorElementNumberOfRecentMissingDigis
 
MonitorElementNumberOfRecentMissingDigisHB
 
MonitorElementNumberOfRecentMissingDigisHE
 
MonitorElementNumberOfRecentMissingDigisHF
 
MonitorElementNumberOfRecentMissingDigisHO
 
MonitorElementNumberOfRecentMissingRecHits
 
MonitorElementNumberOfRecentMissingRecHitsHB
 
MonitorElementNumberOfRecentMissingRecHitsHE
 
MonitorElementNumberOfRecentMissingRecHitsHF
 
MonitorElementNumberOfRecentMissingRecHitsHO
 
unsigned int occupancy_RBX [156]
 
bool present_digi [85][72][4]
 
bool present_rechit [85][72][4]
 
MonitorElementProblemsInLastNLB_HBHEHF_alarm
 
MonitorElementProblemsInLastNLB_HO01_alarm
 
MonitorElementProblemsVsLB
 
MonitorElementProblemsVsLB_HB
 
MonitorElementProblemsVsLB_HE
 
MonitorElementProblemsVsLB_HF
 
MonitorElementProblemsVsLB_HO
 
MonitorElementProblemsVsLB_HO2
 
MonitorElementRBX_loss_VS_LB
 
int rbxlost [156]
 
EtaPhiHists RecentMissingDigisByDepth
 
EtaPhiHists RecentMissingRecHitsByDepth
 
unsigned int recentoccupancy_digi [85][72][4]
 
unsigned int recentoccupancy_rechit [85][72][4]
 
EtaPhiHists RecHitPresentByDepth
 
bool setupDone_
 
edm::EDGetTokenT
< DcsStatusCollection
tok_dcs_
 
edm::EDGetTokenT
< L1GlobalTriggerEvmReadoutRecord
tok_gtEvm_
 
edm::EDGetTokenT
< HBHERecHitCollection
tok_hbhe_
 
edm::EDGetTokenT
< HBHEDigiCollection
tok_hbhedigi_
 
edm::EDGetTokenT
< HFRecHitCollection
tok_hf_
 
edm::EDGetTokenT
< HFDigiCollection
tok_hfdigi_
 
edm::EDGetTokenT
< HORecHitCollection
tok_ho_
 
edm::EDGetTokenT
< HODigiCollection
tok_hodigi_
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDAnalyzer< edm::RunSummaryCache< dqmDetails::NoCache >, edm::LuminosityBlockSummaryCache< dqmDetails::NoCache > >
typedef CacheContexts< T...> CacheTypes
 
typedef CacheTypes::GlobalCache GlobalCache
 
typedef AbilityChecker< T...> HasAbility
 
typedef
CacheTypes::LuminosityBlockCache 
LuminosityBlockCache
 
typedef
LuminosityBlockContextT
< LuminosityBlockCache,
RunCache, GlobalCache
LuminosityBlockContext
 
typedef
CacheTypes::LuminosityBlockSummaryCache 
LuminosityBlockSummaryCache
 
typedef CacheTypes::RunCache RunCache
 
typedef RunContextT< RunCache,
GlobalCache
RunContext
 
typedef CacheTypes::RunSummaryCache RunSummaryCache
 
- Public Types inherited from edm::stream::EDAnalyzerBase
typedef EDAnalyzerAdaptorBase ModuleType
 
- Static Public Member Functions inherited from DQMEDAnalyzer
static std::shared_ptr
< dqmDetails::NoCache
globalBeginLuminosityBlockSummary (edm::LuminosityBlock const &, edm::EventSetup const &, LuminosityBlockContext const *)
 
static std::shared_ptr
< dqmDetails::NoCache
globalBeginRunSummary (edm::Run const &, edm::EventSetup const &, RunContext const *)
 
static void globalEndLuminosityBlockSummary (edm::LuminosityBlock const &, edm::EventSetup const &, LuminosityBlockContext const *, dqmDetails::NoCache *)
 
static void globalEndRunSummary (edm::Run const &, edm::EventSetup const &, RunContext const *, dqmDetails::NoCache *)
 
- Static Public Member Functions inherited from edm::stream::EDAnalyzerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
- Protected Member Functions inherited from HcalBaseDQMonitor
virtual void beginLuminosityBlock (const edm::LuminosityBlock &lumiSeg, const edm::EventSetup &c)
 
virtual void cleanup (void)
 
virtual void dqmBeginRun (const edm::Run &run, const edm::EventSetup &c)
 
void getLogicalMap (const edm::EventSetup &c)
 
bool IsAllowedCalibType ()
 
bool LumiInOrder (int lumisec)
 
void SetupEtaPhiHists (DQMStore::IBooker &ib, EtaPhiHists &hh, std::string Name, std::string Units)
 
- Protected Member Functions inherited from edm::stream::EDAnalyzerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
- 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_
 
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

Author
J. Temple - Univ. of Maryland

Definition at line 29 of file HcalDeadCellMonitor.h.

Constructor & Destructor Documentation

HcalDeadCellMonitor::HcalDeadCellMonitor ( const edm::ParameterSet ps)

Definition at line 5 of file HcalDeadCellMonitor.cc.

References HcalBaseDQMonitor::AllowedCalibTypes_, HcalBaseDQMonitor::badChannelStatusMask_, deadmon_test_digis_, deadmon_test_rechits_, HcalBaseDQMonitor::debug_, digiLabel_, HcalBaseDQMonitor::enableCleanup_, endLumiProcessed_, energyThreshold_, excludeHO1P02_, excludeHORing2_, edm::ParameterSet::getUntrackedParameter(), HBenergyThreshold_, hbheRechitLabel_, HcalChannelStatus::HcalCellDead, HEenergyThreshold_, HFenergyThreshold_, hfRechitLabel_, HOenergyThreshold_, hoRechitLabel_, HLT_25ns14e33_v1_cff::InputTag, HcalBaseDQMonitor::makeDiagnostics_, HcalBaseDQMonitor::mergeRuns_, minDeadEventCount_, HcalBaseDQMonitor::needLogicalMap_, HcalBaseDQMonitor::NLumiBlocks_, HcalBaseDQMonitor::Online_, HcalBaseDQMonitor::prefixME_, setupDone_, HcalBaseDQMonitor::skipOutOfOrderLS_, AlCaHLTBitMon_QueryRunRegistry::string, HcalBaseDQMonitor::subdir_, tok_dcs_, tok_gtEvm_, tok_hbhe_, tok_hbhedigi_, tok_hf_, tok_hfdigi_, tok_ho_, and tok_hodigi_.

6 {
7  Online_ = ps.getUntrackedParameter<bool>("online",false);
8  mergeRuns_ = ps.getUntrackedParameter<bool>("mergeRuns",false);
9  enableCleanup_ = ps.getUntrackedParameter<bool>("enableCleanup",false);
10  debug_ = ps.getUntrackedParameter<int>("debug",0);
11  makeDiagnostics_ = ps.getUntrackedParameter<bool>("makeDiagnostics",false);
12  prefixME_ = ps.getUntrackedParameter<std::string>("subSystemFolder","Hcal/");
13  if (prefixME_.substr(prefixME_.size()-1,prefixME_.size())!="/")
14  prefixME_.append("/");
15  subdir_ = ps.getUntrackedParameter<std::string>("TaskFolder","DeadCellMonitor_Hcal"); // DeadCellMonitor_Hcal
16  if (subdir_.size()>0 && subdir_.substr(subdir_.size()-1,subdir_.size())!="/")
17  subdir_.append("/");
18  subdir_=prefixME_+subdir_;
19  AllowedCalibTypes_ = ps.getUntrackedParameter<std::vector<int> > ("AllowedCalibTypes");
20  skipOutOfOrderLS_ = ps.getUntrackedParameter<bool>("skipOutOfOrderLS",true);
21  NLumiBlocks_ = ps.getUntrackedParameter<int>("NLumiBlocks",4000);
22 
23  badChannelStatusMask_ = ps.getUntrackedParameter<int>("BadChannelStatusMask",
24  ps.getUntrackedParameter<int>("BadChannelStatusMask",
25  (1<<HcalChannelStatus::HcalCellDead))); // identify channel status values to mask
26  // DeadCell-specific parameters
27 
28  // Collection type info
30  hbheRechitLabel_ = ps.getUntrackedParameter<edm::InputTag>("hbheRechitLabel");
31  hoRechitLabel_ = ps.getUntrackedParameter<edm::InputTag>("hoRechitLabel");
32  hfRechitLabel_ = ps.getUntrackedParameter<edm::InputTag>("hfRechitLabel");
33 
34  // minimum number of events required for lumi section-based dead cell checks
35  minDeadEventCount_ = ps.getUntrackedParameter<int>("minDeadEventCount",1000);
36  excludeHORing2_ = ps.getUntrackedParameter<bool>("excludeHORing2",false);
37  excludeHO1P02_ = ps.getUntrackedParameter<bool>("excludeHO1P02",false);
38  endLumiProcessed_ = false;
39 
40  // Set which dead cell checks will be performed
41  /* Dead cells can be defined in the following ways:
42  1) never present digi -- digi is never present in run
43  2) digis -- digi is absent for one or more lumi section
44  3) never present rechit -- rechit > threshold energy never present (NOT redundant, since it requires not just that a rechit be present, but that it be above threshold as well. )
45  4) rechits -- rechit is present, but rechit energy below threshold for one or more lumi sections
46 
47  Of these tests, never-present digis are always checked.
48  Occasional digis are checked only if deadmon_test_digis_ is true,
49  and both rechit tests are made only if deadmon_test_rechits_ is true
50  */
51 
52  deadmon_test_digis_ = ps.getUntrackedParameter<bool>("test_digis",true);
53  deadmon_test_rechits_ = ps.getUntrackedParameter<bool>("test_rechits",false);
54 
55  // rechit energy test -- cell must be below threshold value for a number of consecutive events to be considered dead
56  energyThreshold_ = ps.getUntrackedParameter<double>("MissingRechitEnergyThreshold",0);
57  HBenergyThreshold_ = ps.getUntrackedParameter<double>("HB_energyThreshold",energyThreshold_);
58  HEenergyThreshold_ = ps.getUntrackedParameter<double>("HE_energyThreshold",energyThreshold_);
59  HOenergyThreshold_ = ps.getUntrackedParameter<double>("HO_energyThreshold",energyThreshold_);
60  HFenergyThreshold_ = ps.getUntrackedParameter<double>("HF_energyThreshold",energyThreshold_);
61 
62  needLogicalMap_=true;
63  setupDone_=false;
64 
65  // register for data access
66  tok_dcs_ = consumes<DcsStatusCollection>(edm::InputTag("scalersRawToDigi"));
67  tok_hbhedigi_ = consumes<HBHEDigiCollection>(digiLabel_);
68  tok_hodigi_ = consumes<HODigiCollection>(digiLabel_);
69  tok_hfdigi_ = consumes<HFDigiCollection>(digiLabel_);
70  tok_hbhe_ = consumes<HBHERecHitCollection>(hbheRechitLabel_);
71  tok_ho_ = consumes<HORecHitCollection>(hoRechitLabel_);
72  tok_hf_ = consumes<HFRecHitCollection>(hfRechitLabel_);
73  tok_gtEvm_ = consumes<L1GlobalTriggerEvmReadoutRecord>(edm::InputTag("gtEvmDigis"));
74 
75 
76 } //constructor
edm::InputTag hfRechitLabel_
T getUntrackedParameter(std::string const &, T const &) const
edm::InputTag hbheRechitLabel_
std::vector< int > AllowedCalibTypes_
edm::EDGetTokenT< HORecHitCollection > tok_ho_
edm::EDGetTokenT< DcsStatusCollection > tok_dcs_
edm::InputTag hoRechitLabel_
edm::EDGetTokenT< HODigiCollection > tok_hodigi_
edm::EDGetTokenT< HFRecHitCollection > tok_hf_
edm::EDGetTokenT< HFDigiCollection > tok_hfdigi_
edm::EDGetTokenT< HBHEDigiCollection > tok_hbhedigi_
edm::EDGetTokenT< HBHERecHitCollection > tok_hbhe_
edm::EDGetTokenT< L1GlobalTriggerEvmReadoutRecord > tok_gtEvm_
HcalDeadCellMonitor::~HcalDeadCellMonitor ( )

Definition at line 78 of file HcalDeadCellMonitor.cc.

79 {
80 } //destructor

Member Function Documentation

void HcalDeadCellMonitor::analyze ( edm::Event const &  e,
edm::EventSetup const &  s 
)
virtual

Reimplemented from HcalBaseDQMonitor.

Definition at line 605 of file HcalDeadCellMonitor.cc.

References HcalBaseDQMonitor::analyze(), gather_cfg::cout, deadevt_, HcalBaseDQMonitor::debug_, digiLabel_, doReset_, endLumiProcessed_, MonitorElement::Fill(), edm::Event::getByToken(), DcsStatus::HBHEa, DcsStatus::HBHEb, DcsStatus::HBHEc, hbhedcsON, hbheRechitLabel_, DcsStatus::HF, hfdcsON, hfRechitLabel_, DcsStatus::HO, hodcsON, hoRechitLabel_, i, HcalBaseDQMonitor::ievt_, is_RBX_loss_, is_stable_beam, HcalBaseDQMonitor::IsAllowedCalibType(), edm::HandleBase::isValid(), HcalBaseDQMonitor::levt_, HcalBaseDQMonitor::LumiInOrder(), edm::EventBase::luminosityBlock(), Nevents, occupancy_RBX, processEvent(), rbxlost, reset(), HcalBaseDQMonitor::tevt_, tok_dcs_, tok_hbhe_, tok_hbhedigi_, tok_hf_, tok_hfdigi_, tok_ho_, and tok_hodigi_.

606 {
608  if (!IsAllowedCalibType()) return;
609  endLumiProcessed_=false;
610 
611  if(doReset_)
612  this->reset();
613 
614  Nevents->Fill(0,1); // count all events of allowed calibration type, even if their lumi block is not in the right order
615  if (LumiInOrder(e.luminosityBlock())==false) return;
616  // try to get rechits and digis
620 
624 
626 
628  // check if detectors whether they were ON
630  e.getByToken(tok_dcs_, dcsStatus);
631 
632  if (dcsStatus.isValid() && dcsStatus->size() != 0)
633  {
634  if ((*dcsStatus)[0].ready(DcsStatus::HBHEa) &&
635  (*dcsStatus)[0].ready(DcsStatus::HBHEb) &&
636  (*dcsStatus)[0].ready(DcsStatus::HBHEc))
637  {
638  hbhedcsON = true;
639  if (debug_) std::cout << "hbhe on" << std::endl;
640  }
641  else hbhedcsON = false;
642 
643  if ((*dcsStatus)[0].ready(DcsStatus::HF))
644  {
645  hfdcsON = true;
646  if (debug_) std::cout << "hf on" << std::endl;
647  }
648  else hfdcsON = false;
649 
650  if ((*dcsStatus)[0].ready(DcsStatus::HO))
651  {
652  hodcsON = true;
653  if (debug_) std::cout << "ho on" << std::endl;
654  }
655  else hodcsON = false;
656  }
658 
659  if (!(e.getByToken(tok_hbhedigi_,hbhe_digi)))
660  {
661  edm::LogWarning("HcalDeadCellMonitor")<< digiLabel_<<" hbhe_digi not available";
662  return;
663  }
664  if (!(e.getByToken(tok_hodigi_,ho_digi)))
665  {
666  edm::LogWarning("HcalDeadCellMonitor")<< digiLabel_<<" ho_digi not available";
667  return;
668  }
669  if (!(e.getByToken(tok_hfdigi_,hf_digi)))
670  {
671  edm::LogWarning("HcalDeadCellMonitor")<< digiLabel_<<" hf_digi not available";
672  return;
673  }
674 
675  if (!(e.getByToken(tok_hbhe_,hbhe_rechit)))
676  {
677  edm::LogWarning("HcalDeadCellMonitor")<< hbheRechitLabel_<<" hbhe_rechit not available";
678  return;
679  }
680 
681  if (!(e.getByToken(tok_hf_,hf_rechit)))
682  {
683  edm::LogWarning("HcalDeadCellMonitor")<< hfRechitLabel_<<" hf_rechit not available";
684  return;
685  }
686  if (!(e.getByToken(tok_ho_,ho_rechit)))
687  {
688  edm::LogWarning("HcalDeadCellMonitor")<< hoRechitLabel_<<" ho_rechit not available";
689  return;
690  }
691 
692  if (debug_>1) std::cout <<"\t<HcalDeadCellMonitor::analyze> Processing good event! event # = "<<ievt_<<std::endl;
693  // Good event found; increment counter (via base class analyze method)
694  // This also runs the allowed calibration /lumi in order tests again; remove?
695 
696  ++deadevt_; //increment local counter
697 
698  processEvent(*hbhe_rechit, *ho_rechit, *hf_rechit, *hbhe_digi, *ho_digi, *hf_digi);
699 
700  // check for presence of an RBX data loss
701  if(levt_>10 && tevt_ % 10 == 0 ) //levt_ counts events perLS, but excludes
702  { //"wrong", calibration-type events. Compare with tevt_ instead...
703  for(int i=71; i<132; i++)
704  {
705  // These RBXs in HO are excluded, set to 1 to ignore
706  // HO0: 96-107 (all)
707  // HO1: 85-95, 109-119 (all odd)
708  // HO2: 73, 75, 79, 81, 83, 121-131 (all odd)
709  if(i >= 72 && i < 95 && i%2==0)
710  occupancy_RBX[i] = 1;
711  if(i >=108 && i <= 131 && i%2==0)
712  occupancy_RBX[i] = 1;
713 
714  if(i==117 || i==131) // HO SiPMs have much less hits, 10 events not enough.
715  occupancy_RBX[i] = 1; // Also no RBX loss for SiPMs, so ignore for now.
716  if(i==77)
717  occupancy_RBX[i] = 1;
718  }
719 
720  // RBX loss detected
721  for (unsigned int i=0;i<132;++i)
722  if(occupancy_RBX[i] == 0)
723  {
724  is_RBX_loss_ = 1;
725  rbxlost[i] = 1;
726  }
727 
728  //
729  // Modified: not to use gtfeEvmExtWord
730  // is_stable_beam = false for now!
731  // Set beamMode to NOBEAM
732  // TODO: Obtain these values from TCDS Record
733  //
734  int intensity1_ = 101;
735  int intensity2_ = 101;
736  is_stable_beam = false;
737  int beamMode = 21;
738 
739  for (unsigned int i=132;i<156;++i)
740  if(occupancy_RBX[i] == 0 && beamMode == 11)
741  if(intensity1_>100 && intensity2_>100) // only in stable beam mode (11) and with circulating beams, otherwise
742  { // this check is too sensitive in HF
743  is_RBX_loss_ = 1;
744  rbxlost[i] = 1;
745  }
746 
747  // no RBX loss, reset the counters
748  if (is_RBX_loss_ == 0)
749  for (unsigned int i=0;i<156;++i)
750  occupancy_RBX[i] = 0;
751  }
752 
753  // if RBX is lost any time during the LS, don't allow the counters to increment
754  if(is_RBX_loss_ == 1)
755  for (unsigned int i=0;i<156;++i)
756  if(rbxlost[i]==1) occupancy_RBX[i] = 0;
757 
758 } // void HcalDeadCellMonitor::analyze(...)
edm::InputTag hfRechitLabel_
int i
Definition: DBlmapReader.cc:9
bool LumiInOrder(int lumisec)
virtual void analyze(const edm::Event &e, const edm::EventSetup &c)
edm::InputTag hbheRechitLabel_
edm::EDGetTokenT< HORecHitCollection > tok_ho_
void Fill(long long x)
edm::EDGetTokenT< DcsStatusCollection > tok_dcs_
edm::InputTag hoRechitLabel_
unsigned int occupancy_RBX[156]
MonitorElement * Nevents
bool isValid() const
Definition: HandleBase.h:75
edm::EDGetTokenT< HODigiCollection > tok_hodigi_
edm::EDGetTokenT< HFRecHitCollection > tok_hf_
void processEvent(const HBHERecHitCollection &hbHits, const HORecHitCollection &hoHits, const HFRecHitCollection &hfHits, const HBHEDigiCollection &hbhedigi, const HODigiCollection &hodigi, const HFDigiCollection &hfdigi)
edm::EDGetTokenT< HFDigiCollection > tok_hfdigi_
edm::EDGetTokenT< HBHEDigiCollection > tok_hbhedigi_
edm::EDGetTokenT< HBHERecHitCollection > tok_hbhe_
tuple cout
Definition: gather_cfg.py:121
void HcalDeadCellMonitor::bookHistograms ( DQMStore::IBooker ib,
const edm::Run run,
const edm::EventSetup c 
)
virtual

Reimplemented from HcalBaseDQMonitor.

Definition at line 392 of file HcalDeadCellMonitor.cc.

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

393 {
394  if (debug_>1) std::cout <<"HcalDeadCellMonitor::bookHistograms"<<std::endl;
396 
397  if (tevt_==0) this->setup(ib); // set up histograms if they have not been created before
398  if (mergeRuns_==false)
399  this->reset();
400 
401  doReset_ = true;
402 
403  // Get known dead cells for this run
404  KnownBadCells_.clear();
405  if (badChannelStatusMask_>0)
406  {
408  c.get<HcalChannelQualityRcd>().get("withTopo",p);
409  const HcalChannelQuality* chanquality= p.product();
410  std::vector<DetId> mydetids = chanquality->getAllChannels();
411  for (std::vector<DetId>::const_iterator i = mydetids.begin();
412  i!=mydetids.end();
413  ++i)
414  {
415  if (i->det()!=DetId::Hcal) continue; // not an hcal cell
416  HcalDetId id=HcalDetId(*i);
417  int status=(chanquality->getValues(id))->getValue();
418  if ((status & badChannelStatusMask_))
419  KnownBadCells_[id.rawId()]=status;
420  }
421  } // if (badChannelStatusMask_>0)
422  return;
423 } //void HcalDeadCellMonitor::bookHistograms(...)
int i
Definition: DBlmapReader.cc:9
std::map< unsigned int, int > KnownBadCells_
virtual void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &)
const Item * getValues(DetId fId, bool throwOnFail=true) const
std::vector< DetId > getAllChannels() const
void setup(DQMStore::IBooker &)
const T & get() const
Definition: EventSetup.h:55
T const * product() const
Definition: ESHandle.h:86
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
void HcalDeadCellMonitor::endJob ( void  )

Definition at line 599 of file HcalDeadCellMonitor.cc.

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

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

Reimplemented from HcalBaseDQMonitor.

Definition at line 503 of file HcalDeadCellMonitor.cc.

References alarmer_counter_, alarmer_counterHO01_, beamMode_, deadevt_, endLumiProcessed_, fillNevents_problemCells(), fillNevents_recentdigis(), fillNevents_recentrechits(), hbhedcsON, HcalBaseDQMonitor::HBpresent_, HcalBaseDQMonitor::HEpresent_, hfdcsON, HcalBaseDQMonitor::HFpresent_, hodcsON, HcalBaseDQMonitor::HOpresent_, i, is_RBX_loss_, is_stable_beam, HcalBaseDQMonitor::levt_, HcalBaseDQMonitor::LumiInOrder(), edm::LuminosityBlockBase::luminosityBlock(), minDeadEventCount_, NumBadHB, NumBadHE, NumBadHF, NumBadHFLUMI, NumBadHO, NumBadHO0, NumBadHO12, HcalBaseDQMonitor::ProblemsCurrentLB, ProblemsInLastNLB_HBHEHF_alarm, ProblemsInLastNLB_HO01_alarm, rbxlost, MonitorElement::Reset(), MonitorElement::setBinContent(), and zeroCounters().

505 {
506  // skip old lumi sections
507  if (this->LumiInOrder(lumiSeg.luminosityBlock())==false) return;
508 
509  // Reset current LS histogram
510  if (ProblemsCurrentLB)
512 
515 
516  //increase the number of LS counting, for alarmer. Only make alarms for HBHE
517  if(hbhedcsON == true && hfdcsON == true && HBpresent_ == 1 && HEpresent_ == 1 && HFpresent_ == 1)
519  else
520  alarmer_counter_ = 0;
521 
522  if(hodcsON==true && HOpresent_ == 1)
524  else
526 
527  if (!is_stable_beam)
528  {
529  alarmer_counter_ = 0;
531  }
532 
533  // Here is where we determine whether or not to process an event
534  // Not enough events
535  // there are less than minDeadEventCount_ in this LS, but RBXloss is found
536 
538  {
542 
543  endLumiProcessed_=true;
544  is_RBX_loss_=0;
545 
546  for (unsigned int i=0;i<156;++i)
547  rbxlost[i] = 0;
548 
549  if (ProblemsCurrentLB)
550  {
551  ProblemsCurrentLB->setBinContent(0,0, levt_); // underflow bin contains number of events
559  }
560  }
561 
562  if (deadevt_<minDeadEventCount_) // perform normal tasks, since no RBX loss is detected in this lumisections
563  return;
564 
565  endLumiProcessed_=true;
566  // fillNevents_problemCells checks for never-present cells
570 
571  if (ProblemsCurrentLB)
572  {
573  ProblemsCurrentLB->setBinContent(0,0, levt_); // underflow bin contains number of events
581  }
582  zeroCounters();
583  deadevt_=0;
584  is_RBX_loss_=0;
585  beamMode_ = 0;
586  return;
587 } //endLuminosityBlock()
int i
Definition: DBlmapReader.cc:9
bool LumiInOrder(int lumisec)
void setBinContent(int binx, double content)
set content of bin (1-D)
MonitorElement * ProblemsCurrentLB
void zeroCounters(bool resetpresent=false)
MonitorElement * ProblemsInLastNLB_HO01_alarm
LuminosityBlockNumber_t luminosityBlock() const
MonitorElement * ProblemsInLastNLB_HBHEHF_alarm
void Reset(void)
reset ME (ie. contents, errors, etc)
void HcalDeadCellMonitor::endRun ( const edm::Run run,
const edm::EventSetup c 
)
virtual

Reimplemented from HcalBaseDQMonitor.

Definition at line 589 of file HcalDeadCellMonitor.cc.

References endLumiProcessed_, and fillNevents_problemCells().

590 {
591  // Always carry out overall occupancy test at endRun, regardless minimum number of events?
592  // Or should we require an absolute lower bound?
593  // We can always run this test; we'll use the summary client to implement a lower bound before calculating reportSummary values
594  if (endLumiProcessed_==false) fillNevents_problemCells(); // always check for never-present cells
595 
596  return;
597 }
void HcalDeadCellMonitor::fillNevents_problemCells ( )
private

Definition at line 1218 of file HcalDeadCellMonitor.cc.

References funct::abs(), alarmer_counter_, alarmer_counterHO01_, HcalObjRepresent::CalcIeta(), gather_cfg::cout, HcalBaseDQMonitor::currentLS, deadevt_, deadmon_test_digis_, deadmon_test_rechits_, HcalBaseDQMonitor::debug_, EtaPhiHists::depth, HLT_25ns14e33_v1_cff::depth, DigiPresentByDepth, eta(), excludeHO1P02_, excludeHORing2_, MonitorElement::Fill(), HcalBarrel, HcalEndcap, HcalForward, HcalOuter, i, HcalBaseDQMonitor::ievt_, is_RBX_loss_, isSiPM(), HcalBaseDQMonitor::KnownBadCells_, min(), minDeadEventCount_, Nevents, NumBadHB, NumBadHE, NumBadHF, NumBadHFLUMI, NumBadHO, NumBadHO01, NumBadHO12, NumBadHO1P02, NumBadHO2, NumberOfNeverPresentDigis, NumberOfNeverPresentDigisHB, NumberOfNeverPresentDigisHE, NumberOfNeverPresentDigisHF, NumberOfNeverPresentDigisHO, NumberOfNeverPresentRecHits, NumberOfNeverPresentRecHitsHB, NumberOfNeverPresentRecHitsHE, NumberOfNeverPresentRecHitsHF, NumberOfNeverPresentRecHitsHO, NumberOfRecentMissingDigis, NumberOfRecentMissingDigisHB, NumberOfRecentMissingDigisHE, NumberOfRecentMissingDigisHF, NumberOfRecentMissingDigisHO, NumberOfRecentMissingRecHits, NumberOfRecentMissingRecHitsHB, NumberOfRecentMissingRecHitsHE, NumberOfRecentMissingRecHitsHF, NumberOfRecentMissingRecHitsHO, occupancy_RBX, phi, present_digi, present_rechit, ProblemsInLastNLB_HBHEHF_alarm, ProblemsInLastNLB_HO01_alarm, ProblemsVsLB, ProblemsVsLB_HB, HcalBaseDQMonitor::ProblemsVsLB_HBHEHF, ProblemsVsLB_HE, ProblemsVsLB_HF, ProblemsVsLB_HO, ProblemsVsLB_HO2, DetId::rawId(), RBX_loss_VS_LB, recentoccupancy_digi, recentoccupancy_rechit, and validDetId().

Referenced by endLuminosityBlock(), and endRun().

1219 {
1220  //fillNevents_problemCells now only performs checks of never-present cells
1221 
1222  if (debug_>0)
1223  std::cout <<"<HcalDeadCellMonitor::fillNevents_problemCells> FILLING PROBLEM CELL PLOTS"<<std::endl;
1224 
1225  int ieta=0;
1226  int iphi=0;
1227 
1228  // Count problem cells in each subdetector
1229 
1230  NumBadHB=0;
1231  NumBadHE=0;
1232  NumBadHO=0;
1233  NumBadHF=0;
1234  NumBadHFLUMI=0;
1235  NumBadHO01=0;
1236  NumBadHO2=0;
1237  NumBadHO12=0;
1238  NumBadHO1P02=0;
1239 
1240  int knownBadHB=0;
1241  int knownBadHE=0;
1242  int knownBadHF=0;
1243  int knownBadHO=0;
1244  int knownBadHFLUMI=0;
1245  int knownBadHO01=0;
1246  int knownBadHO2=0;
1247  int knownBadHO12=0;
1248 
1249 
1250  unsigned int neverpresentHB=0;
1251  unsigned int neverpresentHE=0;
1252  unsigned int neverpresentHO=0;
1253  unsigned int neverpresentHF=0;
1254 
1255  unsigned int unoccupiedHB=0;
1256  unsigned int unoccupiedHE=0;
1257  unsigned int unoccupiedHO=0;
1258  unsigned int unoccupiedHF=0;
1259 
1260  unsigned int belowenergyHB=0;
1261  unsigned int belowenergyHE=0;
1262  unsigned int belowenergyHO=0;
1263  unsigned int belowenergyHF=0;
1264 
1265  unsigned int energyneverpresentHB=0;
1266  unsigned int energyneverpresentHE=0;
1267  unsigned int energyneverpresentHO=0;
1268  unsigned int energyneverpresentHF=0;
1269 
1271  Nevents->Fill(1,deadevt_);
1272 
1273  int etabins=0;
1274  int phibins=0;
1275 
1276  // Store values for number of bad channels in each lumi section, for plots of ProblemsVsLS.
1277  // This is different than the NumBadHB, etc. values, which must included even known bad channels
1278  // in order to calculate reportSummaryByLS values correctly.
1279 
1281  //Check for RBX data loss
1282  unsigned int RBX_loss_HB=0;
1283  unsigned int RBX_loss_HE=0;
1284  unsigned int RBX_loss_HO01=0;
1285  unsigned int RBX_loss_HO2=0;
1286  unsigned int RBX_loss_HF=0;
1287 
1288  unsigned int counter_HB = 0;
1289  unsigned int counter_HE = 0;
1290  unsigned int counter_HO01 = 0;
1291  unsigned int counter_HO2 = 0;
1292  unsigned int counter_HF = 0;
1293 
1294  for(int i=0; i<156; i++)
1295  {
1296  if(occupancy_RBX[i]==0 && is_RBX_loss_ == 1)
1297  {
1298  if(i<=35) //HB
1299  { counter_HB ++ ; RBX_loss_HB = 72*(counter_HB); }
1300  if(i>=36 && i<=71) //HE
1301  { counter_HE ++ ; RBX_loss_HE = 72*(counter_HE); }
1302  if(i>=85 && i<=119) // HO Rings 0, 1
1303  { counter_HO01 ++ ; RBX_loss_HO01 = 72*(counter_HO01); }
1304  if(i>=121 || i<=83) // HO Ring 2
1305  { counter_HO2 ++ ; RBX_loss_HO2 = 72*(counter_HO2); }
1306  if(i>=132 && i<=155) //HF
1307  { counter_HF ++ ; RBX_loss_HF = 72*(counter_HF); }
1308 
1309  if(excludeHO1P02_==true && i==109) NumBadHO1P02 = 72; // exclude HO1P02
1310  }
1311  if(occupancy_RBX[i]>0)
1313  if(occupancy_RBX[i]==0 && is_RBX_loss_ == 1)
1314  RBX_loss_VS_LB->Fill(currentLS, i, 1);
1315  }
1316 
1317  if (deadevt_ >= 10 && deadevt_<minDeadEventCount_) // maybe not enough events to run the standard test
1318  if( is_RBX_loss_ == 1 ) // but enough to detect RBX loss
1319  {
1320  NumBadHB+=RBX_loss_HB;
1321  NumBadHE+=RBX_loss_HE;
1322  NumBadHO+=RBX_loss_HO01+RBX_loss_HO2;
1323  NumBadHO01+=RBX_loss_HO01;
1324  NumBadHO2+=RBX_loss_HO2;
1325  NumBadHF+=RBX_loss_HF;
1326 
1327  belowenergyHB+=RBX_loss_HB;
1328  belowenergyHE+=RBX_loss_HE;
1329  belowenergyHO+=RBX_loss_HO01+RBX_loss_HO2;
1330  belowenergyHF+=RBX_loss_HF;
1331 
1332  unoccupiedHB+=RBX_loss_HB;
1333  unoccupiedHE+=RBX_loss_HE;
1334  unoccupiedHO+=RBX_loss_HO01+RBX_loss_HO2;
1335  unoccupiedHF+=RBX_loss_HF;
1336  }
1338 
1339  for (unsigned int depth=0;depth<DigiPresentByDepth.depth.size();++depth)
1340  {
1341  DigiPresentByDepth.depth[depth]->setBinContent(0,0,ievt_);
1342  etabins=DigiPresentByDepth.depth[depth]->getNbinsX();
1343  phibins=DigiPresentByDepth.depth[depth]->getNbinsY();
1344  for (int eta=0;eta<etabins;++eta)
1345  {
1346  for (int phi=0;phi<phibins;++phi)
1347  {
1348  iphi=phi+1;
1349  for (int subdet=1;subdet<=4;++subdet)
1350  {
1351  ieta=CalcIeta((HcalSubdetector)subdet,eta,depth+1);
1352  if (ieta==-9999) continue;
1353  if (!validDetId((HcalSubdetector)subdet, ieta, iphi, depth+1))
1354  continue;
1355  // Ignore subdetectors that weren't in run?
1356  /*
1357  if ((subdet==HcalBarrel && !HBpresent_) ||
1358  (subdet==HcalEndcap &&!HEpresent_) ||
1359  (subdet==HcalOuter &&!HOpresent_) ||
1360  (subdet==HcalForward &&!HFpresent_)) continue;
1361  */
1362 
1363  /*
1364  if ((!checkHB_ && subdet==HcalBarrel) ||
1365  (!checkHE_ && subdet==HcalEndcap) ||
1366  (!checkHO_ && subdet==HcalOuter) ||
1367  (!checkHF_ && subdet==HcalForward)) continue;
1368  */
1369 
1370  // now check which dead cell tests failed; increment counter if any failed
1371  if ((present_digi[eta][phi][depth]==0) ||
1374  )
1375  {
1376  HcalDetId TempID((HcalSubdetector)subdet, ieta, iphi, (int)depth+1);
1377  if (subdet==HcalBarrel)
1378  {
1379  ++NumBadHB;
1380  if (KnownBadCells_.find(TempID.rawId())!=KnownBadCells_.end())
1381  ++knownBadHB;
1382  }
1383  else if (subdet==HcalEndcap)
1384  {
1385  ++NumBadHE;
1386  if (KnownBadCells_.find(TempID.rawId())!=KnownBadCells_.end())
1387  ++knownBadHE;
1388  }
1389 
1390  else if (subdet==HcalOuter)
1391  {
1392  ++NumBadHO;
1393  if (abs(ieta)<=10) ++NumBadHO01;
1394  else ++NumBadHO2;
1395  // Don't include HORing2 if boolean set; subtract away those counters
1396  if (excludeHORing2_==true && abs(ieta)>10 && isSiPM(ieta,iphi,depth+1)==false)
1397  {
1398  --NumBadHO;
1399  --NumBadHO2;
1400  --NumBadHO12;
1401  }
1402  // Don't include HO1P02 if boolean set, RBX does not repsond well to resets,; subtract away those counters
1403  if (excludeHO1P02_==true && ( (ieta>4 && ieta<10) && (iphi<=10 || iphi>70) ) )
1404  ++NumBadHO1P02;
1405 
1406  if (KnownBadCells_.find(TempID.rawId())!=KnownBadCells_.end())
1407  {
1408  ++knownBadHO;
1409  if (abs(ieta)<=10) ++knownBadHO01;
1410  else ++knownBadHO2;
1411  // Don't include HORing2 if boolean set; subtract away those counters
1412  if (excludeHORing2_==true && abs(ieta)>10 && isSiPM(ieta,iphi,depth+1)==false)
1413  {
1414  --knownBadHO;
1415  --knownBadHO12;
1416  }
1417  }
1418  }
1419  else if (subdet==HcalForward)
1420  {
1421  ++NumBadHF;
1422  if (depth==1 && (abs(ieta)==33 || abs(ieta)==34))
1423  ++NumBadHFLUMI;
1424  else if (depth==2 && (abs(ieta)==35 || abs(ieta)==36))
1425  ++NumBadHFLUMI;
1426  if (KnownBadCells_.find(TempID.rawId())!=KnownBadCells_.end())
1427  {
1428  ++knownBadHF;
1429  if (depth==1 && (abs(ieta)==33 || abs(ieta)==34))
1430  ++knownBadHFLUMI;
1431  else if (depth==2 && (abs(ieta)==35 || abs(ieta)==36))
1432  ++knownBadHFLUMI;
1433  }
1434  }
1435  }
1436  if (present_digi[eta][phi][depth]==0 )
1437  {
1438  if (subdet==HcalBarrel) ++neverpresentHB;
1439  else if (subdet==HcalEndcap) ++neverpresentHE;
1440  else if (subdet==HcalOuter)
1441  {
1442  ++neverpresentHO;
1443  if (excludeHORing2_==true && abs(ieta)>10 && isSiPM(ieta,iphi,depth+1)==false)
1444  --neverpresentHO;
1445  }
1446  else if (subdet==HcalForward) ++neverpresentHF;
1447  }
1448  // Count recent unoccupied digis if the total events in this lumi section is > minEvents_
1450  {
1451  HcalDetId TempID((HcalSubdetector)subdet, ieta, iphi, (int)depth+1);
1452  if (subdet==HcalBarrel) ++unoccupiedHB;
1453  else if (subdet==HcalEndcap) ++unoccupiedHE;
1454  else if (subdet==HcalOuter)
1455  {
1456  ++unoccupiedHO;
1457  if (excludeHORing2_==true && abs(ieta)>10 && isSiPM(ieta,iphi,depth+1)==false)
1458  --unoccupiedHO;
1459  if (KnownBadCells_.find(TempID.rawId())!=KnownBadCells_.end() && abs(ieta)<=10)
1460  --unoccupiedHO;
1461  }
1462  else if (subdet==HcalForward) ++unoccupiedHF;
1463  }
1464  // Look at rechit checks
1466  {
1467  if (present_rechit[eta][phi][depth]==0)
1468  {
1469  if (subdet==HcalBarrel) ++energyneverpresentHB;
1470  else if (subdet==HcalEndcap) ++energyneverpresentHE;
1471  else if (subdet==HcalOuter)
1472  {
1473  ++energyneverpresentHO;
1474  if (excludeHORing2_==true && abs(ieta)>10 && isSiPM(ieta,iphi,depth+1)==false)
1475  --energyneverpresentHO;
1476  }
1477  else if (subdet==HcalForward) ++energyneverpresentHF;
1478  }
1480  {
1481  HcalDetId TempID((HcalSubdetector)subdet, ieta, iphi, (int)depth+1);
1482  if (subdet==HcalBarrel) ++belowenergyHB;
1483  else if (subdet==HcalEndcap) ++belowenergyHE;
1484  else if (subdet==HcalOuter)
1485  {
1486  ++belowenergyHO;
1487  if (excludeHORing2_==true && abs(ieta)>10 && isSiPM(ieta,iphi,depth+1)==false)
1488  --belowenergyHO;
1489  if (KnownBadCells_.find(TempID.rawId())!=KnownBadCells_.end() && abs(ieta)<=10)
1490  --belowenergyHO;
1491  }
1492  else if (subdet==HcalForward) ++belowenergyHF;
1493  }
1494  }
1495  } // subdet loop
1496  } // phi loop
1497  } //eta loop
1498  } // depth loop
1499 
1500  // Fill with number of problem cells found on this pass
1501  NumberOfNeverPresentDigisHB->Fill(currentLS,neverpresentHB);
1502  NumberOfNeverPresentDigisHE->Fill(currentLS,neverpresentHE);
1503  NumberOfNeverPresentDigisHO->Fill(currentLS,neverpresentHO);
1504  NumberOfNeverPresentDigisHF->Fill(currentLS,neverpresentHF);
1505  NumberOfNeverPresentDigis->Fill(currentLS,neverpresentHB+neverpresentHE+neverpresentHO+neverpresentHF);
1506 
1508  {
1509  if( NumBadHB<RBX_loss_HB )
1510  NumBadHB+=RBX_loss_HB;
1511  if( NumBadHE<RBX_loss_HE )
1512  NumBadHE+=RBX_loss_HE;
1513  if( NumBadHO01<RBX_loss_HO01 )
1514  NumBadHO01+=RBX_loss_HO01;
1515  if( NumBadHO2<RBX_loss_HO2 )
1516  NumBadHO2+=RBX_loss_HO2;
1517  if( NumBadHF<RBX_loss_HF )
1518  NumBadHF+=RBX_loss_HF;
1519 
1520  if( belowenergyHB<RBX_loss_HB )
1521  belowenergyHB+=RBX_loss_HB;
1522  if( belowenergyHE<RBX_loss_HE )
1523  belowenergyHE+=RBX_loss_HE;
1524  if( belowenergyHO<RBX_loss_HO01+RBX_loss_HO2)
1525  belowenergyHO+=RBX_loss_HO01+RBX_loss_HO2;
1526  if( belowenergyHF<RBX_loss_HF )
1527  belowenergyHF+=RBX_loss_HF;
1528 
1529  if( unoccupiedHB<RBX_loss_HB )
1530  unoccupiedHB+=RBX_loss_HB;
1531  if( unoccupiedHE<RBX_loss_HE )
1532  unoccupiedHE+=RBX_loss_HE;
1533  if( unoccupiedHO<RBX_loss_HO01+RBX_loss_HO2 )
1534  unoccupiedHO+=RBX_loss_HO01+RBX_loss_HO2;
1535  if( unoccupiedHF<RBX_loss_HF )
1536  unoccupiedHF+=RBX_loss_HF;
1537 
1538  // is_RBX_loss_ = 0;
1539  }
1540 
1541  ProblemsVsLB_HB->Fill(currentLS,NumBadHB-knownBadHB+0.0001); // add a small offset, so that the histograms reset when no errors follow
1542  ProblemsVsLB_HE->Fill(currentLS,NumBadHE-knownBadHE+0.0001); // problematic LSs
1543  ProblemsVsLB_HO->Fill(currentLS,NumBadHO01-knownBadHO01+0.0001);
1544  ProblemsVsLB_HO2->Fill(currentLS,NumBadHO2-knownBadHO2+0.0001);
1545  ProblemsVsLB_HF->Fill(currentLS,NumBadHF-knownBadHF+0.0001);
1546  ProblemsVsLB_HBHEHF->Fill(currentLS,NumBadHB+NumBadHE+NumBadHF-knownBadHB-knownBadHE-knownBadHF+0.0001);
1547  ProblemsVsLB->Fill(currentLS,NumBadHB+NumBadHE+NumBadHO01+NumBadHO2+NumBadHF-knownBadHB-knownBadHE-knownBadHO01-knownBadHO2-knownBadHF+0.0001);
1548 
1549  if(excludeHO1P02_==true)
1551 
1552  if( NumBadHB+NumBadHE+NumBadHF-knownBadHB-knownBadHE-knownBadHF < 30 )
1553  alarmer_counter_ = 0;
1554  if( NumBadHO01-knownBadHO01 < 30 )
1556 
1557  if( alarmer_counter_ >= 10 )
1558  ProblemsInLastNLB_HBHEHF_alarm->Fill( std::min(int(NumBadHB+NumBadHE+NumBadHF-knownBadHB-knownBadHE-knownBadHF), 99) );
1559  if( alarmer_counterHO01_ >= 10 )
1560  ProblemsInLastNLB_HO01_alarm->Fill( std::min(int(NumBadHO01-knownBadHO01), 99) );
1561 
1562  // if (deadevt_<minDeadEventCount_)
1563  // return;
1564 
1565  if (deadmon_test_digis_)
1566  {
1571  NumberOfRecentMissingDigis->Fill(currentLS,unoccupiedHB+unoccupiedHE+unoccupiedHO+unoccupiedHF);
1572  }
1573 
1575  {
1576  NumberOfNeverPresentRecHitsHB->Fill(currentLS,energyneverpresentHB);
1577  NumberOfNeverPresentRecHitsHE->Fill(currentLS,energyneverpresentHE);
1578  NumberOfNeverPresentRecHitsHO->Fill(currentLS,energyneverpresentHO);
1579  NumberOfNeverPresentRecHitsHF->Fill(currentLS,energyneverpresentHF);
1580  NumberOfNeverPresentRecHits->Fill(currentLS,energyneverpresentHB+energyneverpresentHE+energyneverpresentHO+energyneverpresentHF);
1581 
1586  NumberOfRecentMissingRecHits->Fill(currentLS,belowenergyHB+belowenergyHE+belowenergyHO+belowenergyHF);
1587  }
1588 
1589  return;
1590 } // void HcalDeadCellMonitor::fillNevents_problemCells(void)
int i
Definition: DBlmapReader.cc:9
MonitorElement * NumberOfNeverPresentRecHitsHO
MonitorElement * NumberOfRecentMissingRecHitsHF
MonitorElement * NumberOfNeverPresentRecHits
MonitorElement * NumberOfNeverPresentDigisHB
MonitorElement * NumberOfRecentMissingRecHits
bool present_digi[85][72][4]
MonitorElement * NumberOfNeverPresentDigisHE
std::map< unsigned int, int > KnownBadCells_
MonitorElement * NumberOfRecentMissingDigisHB
T eta() const
MonitorElement * ProblemsInLastNLB_HO01_alarm
MonitorElement * NumberOfRecentMissingDigisHE
bool present_rechit[85][72][4]
void Fill(long long x)
bool isSiPM(int ieta, int iphi, int depth)
MonitorElement * RBX_loss_VS_LB
std::vector< MonitorElement * > depth
int CalcIeta(int subdet, int eta, int depth)
MonitorElement * ProblemsVsLB
MonitorElement * NumberOfNeverPresentDigisHF
MonitorElement * ProblemsVsLB_HBHEHF
unsigned int occupancy_RBX[156]
MonitorElement * NumberOfNeverPresentDigisHO
MonitorElement * NumberOfNeverPresentRecHitsHB
HcalSubdetector
Definition: HcalAssistant.h:31
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
MonitorElement * Nevents
T min(T a, T b)
Definition: MathUtil.h:58
unsigned int recentoccupancy_rechit[85][72][4]
MonitorElement * NumberOfRecentMissingRecHitsHE
MonitorElement * ProblemsVsLB_HF
MonitorElement * NumberOfRecentMissingDigisHO
MonitorElement * NumberOfNeverPresentRecHitsHF
MonitorElement * ProblemsVsLB_HB
unsigned int recentoccupancy_digi[85][72][4]
MonitorElement * NumberOfRecentMissingRecHitsHO
EtaPhiHists DigiPresentByDepth
MonitorElement * NumberOfNeverPresentRecHitsHE
MonitorElement * ProblemsVsLB_HE
MonitorElement * NumberOfNeverPresentDigis
MonitorElement * NumberOfRecentMissingDigis
MonitorElement * NumberOfRecentMissingDigisHF
tuple cout
Definition: gather_cfg.py:121
MonitorElement * ProblemsInLastNLB_HBHEHF_alarm
MonitorElement * ProblemsVsLB_HO2
bool validDetId(HcalSubdetector sd, int ies, int ip, int dp)
MonitorElement * NumberOfRecentMissingRecHitsHB
MonitorElement * ProblemsVsLB_HO
Definition: DDAxes.h:10
void HcalDeadCellMonitor::fillNevents_recentdigis ( )
private

Definition at line 1001 of file HcalDeadCellMonitor.cc.

References funct::abs(), HcalObjRepresent::CalcIeta(), gather_cfg::cout, deadevt_, deadmon_test_digis_, HcalBaseDQMonitor::debug_, EtaPhiHists::depth, HLT_25ns14e33_v1_cff::depth, eta(), excludeHORing2_, HcalObjRepresent::FillUnphysicalHEHFBins(), HcalLogicalMap::getHcalFrontEndId(), HcalForward, HcalBaseDQMonitor::ievt_, cmsHarvester::index, is_RBX_loss_, isSiPM(), HcalBaseDQMonitor::logicalMap_, minDeadEventCount_, occupancy_RBX, phi, present_digi, HcalFrontEndId::rbxIndex(), RecentMissingDigisByDepth, recentoccupancy_digi, validDetId(), and ecaldqm::zside().

Referenced by endLuminosityBlock().

1002 {
1003  // Fill Histograms showing digi cells with no occupancy for the past few lumiblocks
1004  if (!deadmon_test_digis_) return; // extra protection here against calling histograms than don't exist
1005 
1006  if (debug_>0)
1007  std::cout <<"<HcalDeadCellMonitor::fillNevents_recentdigis> CHECKING FOR RECENT MISSING DIGIS evtcount = "<<deadevt_<<std::endl;
1008 
1009  int ieta=0;
1010  int iphi=0;
1011 
1012  int etabins=0;
1013  int phibins=0;
1014 
1016  if ((deadevt_ >= 10 && deadevt_<minDeadEventCount_) || (deadevt_ >= 10 && is_RBX_loss_==1)) // maybe not enough events to run the standard test
1017  // if( is_RBX_loss_ == 1 ) // but enough to detect RBX loss
1018  for (unsigned int depth=0;depth<RecentMissingDigisByDepth.depth.size();++depth)
1019  {
1020  RecentMissingDigisByDepth.depth[depth]->setBinContent(0,0,ievt_);
1021  etabins=RecentMissingDigisByDepth.depth[depth]->getNbinsX();
1022  phibins=RecentMissingDigisByDepth.depth[depth]->getNbinsY();
1023  for (int eta=0;eta<etabins;++eta)
1024  for (int phi=0;phi<phibins;++phi)
1025  {
1026  iphi=phi+1;
1027  for (int subdet=1;subdet<=4;++subdet)
1028  {
1029  ieta=CalcIeta((HcalSubdetector)subdet,eta,depth+1);
1030  if (ieta==-9999) continue;
1031  if (!validDetId((HcalSubdetector)subdet, ieta, iphi, depth+1))
1032  continue;
1033  // now check which dead cell tests failed; increment counter if any failed
1034  HcalDetId TempID((HcalSubdetector)subdet, ieta, iphi, (int)depth+1);
1035 
1036  int index = logicalMap_->getHcalFrontEndId(TempID).rbxIndex();
1037  // if(subdet==HcalForward) continue;
1038 
1039  if(occupancy_RBX[index]==0)
1040  {
1042  RecentMissingDigisByDepth.depth[depth]->Fill(ieta,iphi,deadevt_);
1043  }
1044  }
1045  }
1046  }
1048 
1049  if (deadevt_ < minDeadEventCount_) return; // not enough entries to make a determination for this LS
1050 
1051  for (unsigned int depth=0;depth<RecentMissingDigisByDepth.depth.size();++depth)
1052  {
1053  RecentMissingDigisByDepth.depth[depth]->setBinContent(0,0,ievt_);
1054  etabins=RecentMissingDigisByDepth.depth[depth]->getNbinsX();
1055  phibins=RecentMissingDigisByDepth.depth[depth]->getNbinsY();
1056  for (int eta=0;eta<etabins;++eta)
1057  {
1058  for (int subdet=1;subdet<=4;++subdet)
1059  {
1060  ieta=CalcIeta((HcalSubdetector)subdet,eta,depth+1);
1061  if (ieta==-9999) continue;
1062  for (int phi=0;phi<phibins;++phi)
1063  {
1064  iphi=phi+1;
1065 
1066  if (!validDetId((HcalSubdetector)subdet, ieta, iphi, depth+1))
1067  continue;
1068 
1069  // Ignore subdetectors that weren't in run?
1070  /*
1071  if ((subdet==HcalBarrel && !HBpresent_) ||
1072  (subdet==HcalEndcap &&!HEpresent_) ||
1073  (subdet==HcalOuter &&!HOpresent_) ||
1074  (subdet==HcalForward &&!HFpresent_)) continue;
1075  */
1076  int zside=0;
1077  if (subdet==HcalForward) // shift HcalForward ieta
1078  ieta<0 ? zside=-1 : zside=+1;
1079 
1080  if (recentoccupancy_digi[eta][phi][depth]==0)
1081  {
1082  if (debug_>0)
1083  {
1084  std::cout <<"DEAD CELL; NO RECENT OCCUPANCY: subdet = "<<subdet<<", ieta = "<<ieta<<", iphi = "<<iphi<<" depth = "<<depth+1<<std::endl;
1085  std::cout <<"\t RAW COORDINATES: eta = "<<eta<< " phi = "<<phi<<" depth = "<<depth<<std::endl;
1086  std::cout <<"\t Present? "<<present_digi[eta][phi][depth]<<std::endl;
1087  }
1088 
1089  // Don't fill HORing2 if boolean enabled
1090  if (excludeHORing2_==true && abs(ieta)>10 && isSiPM(ieta,iphi,depth+1)==false)
1091  continue;
1092 
1093  // no digi was found for the N events; Fill cell as bad for all N events (N = checkN);
1095  }
1096  } // for (int subdet=1;subdet<=4;++subdet)
1097  } // for (int phi=0;...)
1098  } // for (int eta=0;...)
1099  } //for (int depth=1;...)
1101 
1102  return;
1103 
1104 } // void HcalDeadCellMonitor::fillNevents_recentdigis()
bool present_digi[85][72][4]
int zside(DetId const &)
T eta() const
bool isSiPM(int ieta, int iphi, int depth)
std::vector< MonitorElement * > depth
int CalcIeta(int subdet, int eta, int depth)
unsigned int occupancy_RBX[156]
HcalLogicalMap * logicalMap_
HcalSubdetector
Definition: HcalAssistant.h:31
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
const HcalFrontEndId getHcalFrontEndId(const DetId &)
unsigned int recentoccupancy_digi[85][72][4]
EtaPhiHists RecentMissingDigisByDepth
int rbxIndex() const
void FillUnphysicalHEHFBins(std::vector< TH2F > &hh)
tuple cout
Definition: gather_cfg.py:121
bool validDetId(HcalSubdetector sd, int ies, int ip, int dp)
Definition: DDAxes.h:10
void HcalDeadCellMonitor::fillNevents_recentrechits ( )
private

Definition at line 1110 of file HcalDeadCellMonitor.cc.

References funct::abs(), HcalObjRepresent::CalcIeta(), gather_cfg::cout, deadevt_, deadmon_test_rechits_, HcalBaseDQMonitor::debug_, EtaPhiHists::depth, HLT_25ns14e33_v1_cff::depth, eta(), excludeHORing2_, HcalObjRepresent::FillUnphysicalHEHFBins(), HcalLogicalMap::getHcalFrontEndId(), HcalForward, HcalBaseDQMonitor::ievt_, cmsHarvester::index, is_RBX_loss_, isSiPM(), HcalBaseDQMonitor::logicalMap_, minDeadEventCount_, occupancy_RBX, phi, HcalFrontEndId::rbxIndex(), RecentMissingRecHitsByDepth, recentoccupancy_rechit, RecHitPresentByDepth, validDetId(), and ecaldqm::zside().

Referenced by endLuminosityBlock().

1111 {
1112  // Fill Histograms showing unoccupied rechits, or rec hits with low energy
1113 
1114  // This test is a bit pointless, unless the energy threshold is greater than the ZS threshold.
1115  // If we require that cells are always < thresh to be flagged by this test, and if
1116  // thresh < ZS, then we will never catch any cells, since they'll show up as dead in the
1117  // neverpresent/occupancy test plots first.
1118  // Only exception is if something strange is going on between ZS ADC value an RecHit energy?
1119 
1120  if (!deadmon_test_rechits_) return;
1122 
1123  if (debug_>0)
1124  std::cout <<"<HcalDeadCellMonitor::fillNevents_energy> BELOW-ENERGY-THRESHOLD PLOTS"<<std::endl;
1125 
1126  int ieta=0;
1127  int iphi=0;
1128 
1129  int etabins=0;
1130  int phibins=0;
1131 
1133  if ((deadevt_ >= 10 && deadevt_<minDeadEventCount_) || (deadevt_ >= 10 && is_RBX_loss_==1)) // maybe not enough events to run the standard test
1134  // if( is_RBX_loss_ == 1 ) // but enough to detect RBX loss
1135  for (unsigned int depth=0;depth<RecentMissingRecHitsByDepth.depth.size();++depth)
1136  {
1137  RecentMissingRecHitsByDepth.depth[depth]->setBinContent(0,0,ievt_);
1138  etabins=RecentMissingRecHitsByDepth.depth[depth]->getNbinsX();
1139  phibins=RecentMissingRecHitsByDepth.depth[depth]->getNbinsY();
1140  for (int eta=0;eta<etabins;++eta)
1141  for (int phi=0;phi<phibins;++phi)
1142  {
1143  iphi=phi+1;
1144  for (int subdet=1;subdet<=4;++subdet)
1145  {
1146  ieta=CalcIeta((HcalSubdetector)subdet,eta,depth+1);
1147  if (ieta==-9999) continue;
1148  if (!validDetId((HcalSubdetector)subdet, ieta, iphi, depth+1))
1149  continue;
1150  // now check which dead cell tests failed; increment counter if any failed
1151  HcalDetId TempID((HcalSubdetector)subdet, ieta, iphi, (int)depth+1);
1152 
1153  int index = logicalMap_->getHcalFrontEndId(TempID).rbxIndex();
1154  // if(subdet==HcalForward) continue;
1155 
1156  if(occupancy_RBX[index]==0)
1157  {
1159  RecentMissingRecHitsByDepth.depth[depth]->Fill(ieta,iphi,deadevt_);
1160  }
1161  }
1162  }
1163  }
1165 
1166  if (deadevt_ < minDeadEventCount_) return; // not enough entries to make a determination for this LS
1167 
1168  for (unsigned int depth=0;depth<RecentMissingRecHitsByDepth.depth.size();++depth)
1169  {
1170  RecentMissingRecHitsByDepth.depth[depth]->setBinContent(0,0,ievt_);
1171  etabins=RecentMissingRecHitsByDepth.depth[depth]->getNbinsX();
1172  phibins=RecentMissingRecHitsByDepth.depth[depth]->getNbinsY();
1173  for (int eta=0;eta<etabins;++eta)
1174  {
1175  for (int subdet=1;subdet<=4;++subdet)
1176  {
1177  ieta=CalcIeta((HcalSubdetector)subdet,eta,depth+1);
1178  if (ieta==-9999) continue;
1179  for (int phi=0;phi<phibins;++phi)
1180  {
1181  iphi=phi+1;
1182  if (!validDetId((HcalSubdetector)subdet, ieta, iphi, depth+1))
1183  continue;
1184 
1185  if (recentoccupancy_rechit[eta][phi][depth]>0) continue; // cell exceeded energy at least once, so it's not dead
1186 
1187  // Ignore subdetectors that weren't in run?
1188  /*
1189  if ((subdet==HcalBarrel && !HBpresent_) ||
1190  (subdet==HcalEndcap &&!HEpresent_) ||
1191  (subdet==HcalOuter &&!HOpresent_) ||
1192  (subdet==HcalForward &&!HFpresent_)) continue;
1193  */
1194 
1195  int zside=0;
1196  if (subdet==HcalForward) // shift HcalForward ieta
1197  {
1198  ieta<0 ? zside=-1 : zside=+1;
1199  }
1200 
1201  if (debug_>2)
1202  std::cout <<"DEAD CELL; BELOW ENERGY THRESHOLD; subdet = "<<subdet<<" ieta = "<<ieta<<", phi = "<<iphi<<" depth = "<<depth+1<<std::endl;
1203  if (excludeHORing2_==true && abs(ieta)>10 && isSiPM(ieta,iphi,depth+1)==false)
1204  continue;
1205 
1207  } // loop on phi bins
1208  } // for (unsigned int depth=1;depth<=4;++depth)
1209  } // // loop on subdetectors
1210  } // for (int eta=0;...)
1211 
1213 
1214  return;
1215 } // void HcalDeadCellMonitor::fillNevents_recentrechits()
int zside(DetId const &)
T eta() const
bool isSiPM(int ieta, int iphi, int depth)
EtaPhiHists RecHitPresentByDepth
std::vector< MonitorElement * > depth
int CalcIeta(int subdet, int eta, int depth)
unsigned int occupancy_RBX[156]
HcalLogicalMap * logicalMap_
HcalSubdetector
Definition: HcalAssistant.h:31
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
unsigned int recentoccupancy_rechit[85][72][4]
const HcalFrontEndId getHcalFrontEndId(const DetId &)
int rbxIndex() const
void FillUnphysicalHEHFBins(std::vector< TH2F > &hh)
EtaPhiHists RecentMissingRecHitsByDepth
tuple cout
Definition: gather_cfg.py:121
bool validDetId(HcalSubdetector sd, int ies, int ip, int dp)
Definition: DDAxes.h:10
template<class T >
void HcalDeadCellMonitor::process_Digi ( T digi)
private
template<class DIGI >
void HcalDeadCellMonitor::process_Digi ( DIGI &  digi)

Definition at line 900 of file HcalDeadCellMonitor.cc.

References CalcEtaBin(), EtaPhiHists::depth, HLT_25ns14e33_v1_cff::depth, DigiPresentByDepth, present_digi, and recentoccupancy_digi.

901 {
902  // Remove the validate check when we figure out how to access bad digis in digi monitor
903  //if (!digi.validate()) return; // digi must be good to be counted
904  int ieta=digi.id().ieta();
905  int iphi=digi.id().iphi();
906  int depth=digi.id().depth();
907 
908  // Fill occupancy counter
909  ++recentoccupancy_digi[CalcEtaBin(digi.id().subdet(),ieta,depth)][iphi-1][depth-1];
910 
911  // If previously-missing digi found, change boolean status and fill histogram
912  if (present_digi[CalcEtaBin(digi.id().subdet(),ieta,depth)][iphi-1][depth-1]==false)
913  {
914  if (DigiPresentByDepth.depth[depth-1])
915  {
916  DigiPresentByDepth.depth[depth-1]->setBinContent(CalcEtaBin(digi.id().subdet(),ieta,depth)+1,iphi,1);
917  }
918  present_digi[CalcEtaBin(digi.id().subdet(),ieta,depth)][iphi-1][depth-1]=true;
919  }
920  return;
921 }
bool present_digi[85][72][4]
std::vector< MonitorElement * > depth
unsigned int recentoccupancy_digi[85][72][4]
EtaPhiHists DigiPresentByDepth
int CalcEtaBin(int subdet, int ieta, int depth)
template<class T >
void HcalDeadCellMonitor::process_RecHit ( T rechit)
private

Referenced by processEvent().

template<class RECHIT >
void HcalDeadCellMonitor::process_RecHit ( RECHIT &  rechit)

Definition at line 926 of file HcalDeadCellMonitor.cc.

References CalcEtaBin(), EtaPhiHists::depth, HLT_25ns14e33_v1_cff::depth, HcalLogicalMap::getHcalFrontEndId(), HBenergyThreshold_, HcalBarrel, HcalEndcap, HcalForward, HcalOuter, HEenergyThreshold_, HFenergyThreshold_, HOenergyThreshold_, HcalDetId::ieta(), HcalBaseDQMonitor::logicalMap_, occupancy_RBX, present_rechit, recentoccupancy_rechit, and RecHitPresentByDepth.

927 {
928  float en = rechit->energy();
929  HcalDetId id(rechit->detid().rawId());
930  int ieta = id.ieta();
931  int iphi = id.iphi();
932  int depth = id.depth();
933 
934  if (id.subdet()==HcalBarrel)
935  {
936  if (en>=HBenergyThreshold_)
937  {
938  ++recentoccupancy_rechit[CalcEtaBin(id.subdet(),ieta,depth)][iphi-1][depth-1];
939  present_rechit[CalcEtaBin(id.subdet(),ieta,depth)][iphi-1][depth-1]=true;
940  if (RecHitPresentByDepth.depth[depth-1])
941  RecHitPresentByDepth.depth[depth-1]->setBinContent(CalcEtaBin(id.subdet(),ieta,depth)+1,iphi,1);
942  }
944  // RBX index, HB RBX indices are 0-35
945  int RBXindex = logicalMap_->getHcalFrontEndId(rechit->detid()).rbxIndex();
946 
947  occupancy_RBX[RBXindex]++;
949  }
950  else if (id.subdet()==HcalEndcap)
951  {
952  if (en>=HEenergyThreshold_)
953  {
954  ++recentoccupancy_rechit[CalcEtaBin(id.subdet(),ieta,depth)][iphi-1][depth-1];
955  present_rechit[CalcEtaBin(id.subdet(),ieta,depth)][iphi-1][depth-1]=true;
956  if (RecHitPresentByDepth.depth[depth-1])
957  RecHitPresentByDepth.depth[depth-1]->setBinContent(CalcEtaBin(id.subdet(),ieta,depth)+1,iphi,1);
958  }
960  // RBX index, HE RBX indices are 36-71
961  int RBXindex = logicalMap_->getHcalFrontEndId(rechit->detid()).rbxIndex();
962 
963  occupancy_RBX[RBXindex]++;
965  }
966  else if (id.subdet()==HcalForward)
967  {
968  if (en>=HFenergyThreshold_)
969  {
970  ++recentoccupancy_rechit[CalcEtaBin(id.subdet(),ieta,depth)][iphi-1][depth-1];
971 
972  present_rechit[CalcEtaBin(id.subdet(),ieta,depth)][iphi-1][depth-1]=true;
973  if (RecHitPresentByDepth.depth[depth-1])
974  RecHitPresentByDepth.depth[depth-1]->setBinContent(CalcEtaBin(id.subdet(),ieta,depth)+1,iphi,1);
975  }
977  // RBX index, HF RBX indices are 132-155
978  int RBXindex = logicalMap_->getHcalFrontEndId(rechit->detid()).rbxIndex();
979 
980  occupancy_RBX[RBXindex]++;
982  }
983  else if (id.subdet()==HcalOuter)
984  {
985  if (en>=HOenergyThreshold_)
986  {
987  ++recentoccupancy_rechit[CalcEtaBin(id.subdet(),ieta,depth)][iphi-1][depth-1];
988  present_rechit[CalcEtaBin(id.subdet(),ieta,depth)][iphi-1][depth-1]=true;
989  if (RecHitPresentByDepth.depth[depth-1])
990  RecHitPresentByDepth.depth[depth-1]->setBinContent(CalcEtaBin(id.subdet(),ieta,depth)+1,iphi,1);
991  }
993  // RBX index, HO RBX indices are 73-95 (odd), 96-107 (all), 108-119 (odd), 120-130 (EXCL), 131
994  int RBXindex = logicalMap_->getHcalFrontEndId(rechit->detid()).rbxIndex();
995 
996  occupancy_RBX[RBXindex]++;
998  }
999 }
bool present_rechit[85][72][4]
EtaPhiHists RecHitPresentByDepth
std::vector< MonitorElement * > depth
unsigned int occupancy_RBX[156]
HcalLogicalMap * logicalMap_
int ieta() const
get the cell ieta
Definition: HcalDetId.h:36
unsigned int recentoccupancy_rechit[85][72][4]
const HcalFrontEndId getHcalFrontEndId(const DetId &)
int CalcEtaBin(int subdet, int ieta, int depth)
void HcalDeadCellMonitor::processEvent ( const HBHERecHitCollection hbHits,
const HORecHitCollection hoHits,
const HFRecHitCollection hfHits,
const HBHEDigiCollection hbhedigi,
const HODigiCollection hodigi,
const HFDigiCollection hfdigi 
)

Definition at line 763 of file HcalDeadCellMonitor.cc.

References funct::abs(), edm::SortedCollection< T, SORT >::begin(), binmapd2, gather_cfg::cout, ztail::d, deadmon_test_digis_, deadmon_test_rechits_, HcalBaseDQMonitor::debug_, EtaPhiHists::depth, DigiPresentByDepth, edm::SortedCollection< T, SORT >::end(), eta(), MonitorElement::Fill(), HcalObjRepresent::FillUnphysicalHEHFBins(), HBDeadVsEvent, HEDeadVsEvent, HFDeadVsEvent, HODeadVsEvent, i, j, relval_steps::k, HcalBaseDQMonitor::makeDiagnostics_, HcalBaseDQMonitor::NLumiBlocks_, NumberOfNeverPresentDigis, NumberOfNeverPresentDigisHB, NumberOfNeverPresentDigisHE, NumberOfNeverPresentDigisHF, NumberOfNeverPresentDigisHO, NumberOfRecentMissingDigis, NumberOfRecentMissingDigisHB, NumberOfRecentMissingDigisHE, NumberOfRecentMissingDigisHF, NumberOfRecentMissingDigisHO, NumberOfRecentMissingRecHits, NumberOfRecentMissingRecHitsHB, NumberOfRecentMissingRecHitsHE, NumberOfRecentMissingRecHitsHF, NumberOfRecentMissingRecHitsHO, phi, present_digi, process_Digi(), process_RecHit(), processEvent_HBHEdigi(), RecentMissingDigisByDepth, RecentMissingRecHitsByDepth, HcalBaseDQMonitor::tevt_, and MonitorElement::update().

Referenced by analyze().

769 {
770  if (debug_>1) std::cout <<"<HcalDeadCellMonitor::processEvent> Processing event..."<<std::endl;
771 
772  // Do Digi-Based dead cell searches
773 
774  // Make sure histograms update
775  for (unsigned int i=0;i<DigiPresentByDepth.depth.size();++i)
776  DigiPresentByDepth.depth[i]->update();
777 
783 
785  {
786 
787  for (unsigned int i=0;i<RecentMissingDigisByDepth.depth.size();++i)
788  RecentMissingDigisByDepth.depth[i]->update();
789 
795  }
796 
798  j!=hbhedigi.end(); ++j)
799  {
800  const HBHEDataFrame digi = (const HBHEDataFrame)(*j);
801  processEvent_HBHEdigi(digi);
802  }
803 
805  j!=hodigi.end(); ++j)
806  {
807  const HODataFrame digi = (const HODataFrame)(*j);
808  process_Digi(digi);
809  }
811  j!=hfdigi.end(); ++j)
812  {
813  const HFDataFrame digi = (const HFDataFrame)(*j);
814  process_Digi(digi);
815  }
817 
818  // Search for "dead" cells below a certain energy
820  {
821  // Normalization Fill
822  for (unsigned int i=0;i<RecentMissingRecHitsByDepth.depth.size();++i)
824 
830 
832  j!=hbHits.end(); ++j)
833  process_RecHit(j);
834 
836  k!=hoHits.end(); ++k)
837  process_RecHit(k);
838 
840  j!=hfHits.end(); ++j)
841  process_RecHit(j);
842 
843  } // if (deadmon_test_rechits)
844 
845  if (!makeDiagnostics_) return;
846  if (tevt_>=NLumiBlocks_) return;
847  // Diagnostic plots -- add number of missing channels vs event number
848  int hbpresent=0;
849  int hepresent=0;
850  int hopresent=0;
851  int hfpresent=0;
852  int ieta=0;
853  for (int d=0;d<4;++d)
854  {
855  for (int phi=0;phi<72;++phi)
856  {
857  for (int eta=0;eta<85;++eta)
858  {
859  if (!present_digi[eta][phi][d]) continue;
860  if (d==3) ++hopresent;
861  else if (d==2) ++hepresent;
862  else if (d==1)
863  {
864  ieta=binmapd2[eta];
865  //if (abs(ieta)>29) continue;
866  if (abs(ieta)>29) ++hfpresent;
867  else if (abs(ieta)<17) ++hbpresent; //depths 15&16
868  else ++hepresent;
869  }
870  else if (d==0)
871  {
872  ieta=eta-42;
873  if (abs(ieta)>29) ++hfpresent;
874  else if (abs(ieta)<17) ++hbpresent;
875  else ++hepresent;
876  }
877  }
878  }
879  } // for (int d=0;d<4;++d)
880  HBDeadVsEvent->Fill(tevt_,2592-hbpresent);
881  HEDeadVsEvent->Fill(tevt_,2592-hepresent);
882  HODeadVsEvent->Fill(tevt_,2160-hopresent);
883  HFDeadVsEvent->Fill(tevt_,1728-hfpresent);
884  return;
885 } // void HcalDeadCellMonitor::processEvent(...)
int i
Definition: DBlmapReader.cc:9
MonitorElement * NumberOfRecentMissingRecHitsHF
MonitorElement * NumberOfNeverPresentDigisHB
const int binmapd2[]
MonitorElement * HEDeadVsEvent
MonitorElement * NumberOfRecentMissingRecHits
bool present_digi[85][72][4]
MonitorElement * NumberOfNeverPresentDigisHE
std::vector< HBHEDataFrame >::const_iterator const_iterator
MonitorElement * NumberOfRecentMissingDigisHB
void update(void)
Mark the object updated.
void process_RecHit(T &rechit)
T eta() const
MonitorElement * NumberOfRecentMissingDigisHE
void Fill(long long x)
tuple d
Definition: ztail.py:151
std::vector< MonitorElement * > depth
MonitorElement * NumberOfNeverPresentDigisHF
MonitorElement * NumberOfNeverPresentDigisHO
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
int j
Definition: DBlmapReader.cc:9
MonitorElement * NumberOfRecentMissingRecHitsHE
MonitorElement * NumberOfRecentMissingDigisHO
const_iterator end() const
EtaPhiHists RecentMissingDigisByDepth
MonitorElement * NumberOfRecentMissingRecHitsHO
EtaPhiHists DigiPresentByDepth
void FillUnphysicalHEHFBins(std::vector< TH2F > &hh)
EtaPhiHists RecentMissingRecHitsByDepth
MonitorElement * HBDeadVsEvent
MonitorElement * NumberOfNeverPresentDigis
MonitorElement * NumberOfRecentMissingDigis
MonitorElement * NumberOfRecentMissingDigisHF
tuple cout
Definition: gather_cfg.py:121
void process_Digi(T &digi)
void processEvent_HBHEdigi(HBHEDataFrame digi)
MonitorElement * HFDeadVsEvent
MonitorElement * HODeadVsEvent
const_iterator begin() const
MonitorElement * NumberOfRecentMissingRecHitsHB
Definition: DDAxes.h:10
void HcalDeadCellMonitor::processEvent_HBHEdigi ( HBHEDataFrame  digi)
private

Definition at line 892 of file HcalDeadCellMonitor.cc.

References process_Digi().

Referenced by processEvent().

893 {
894  // Simply check whether a digi is present. If so, increment occupancy counter.
895  process_Digi(digi);
896  return;
897 } //void HcalDeadCellMonitor::processEvent_HBHEdigi(HBHEDigiCollection::const_iterator j)
void process_Digi(T &digi)
void HcalDeadCellMonitor::reset ( void  )
virtual

Reimplemented from HcalBaseDQMonitor.

Definition at line 425 of file HcalDeadCellMonitor.cc.

References alarmer_counter_, alarmer_counterHO01_, beamMode_, gather_cfg::cout, deadevt_, deadmon_test_digis_, deadmon_test_rechits_, HcalBaseDQMonitor::debug_, EtaPhiHists::depth, HLT_25ns14e33_v1_cff::depth, DigiPresentByDepth, doReset_, excludeHORing2_, HcalObjRepresent::FillUnphysicalHEHFBins(), hbhedcsON, hfdcsON, hodcsON, is_RBX_loss_, is_stable_beam, isSiPM(), Nevents, NumberOfNeverPresentDigis, NumberOfNeverPresentDigisHB, NumberOfNeverPresentDigisHE, NumberOfNeverPresentDigisHF, NumberOfNeverPresentDigisHO, NumberOfNeverPresentRecHits, NumberOfNeverPresentRecHitsHB, NumberOfNeverPresentRecHitsHE, NumberOfNeverPresentRecHitsHF, NumberOfNeverPresentRecHitsHO, NumberOfRecentMissingDigis, NumberOfRecentMissingDigisHB, NumberOfRecentMissingDigisHE, NumberOfRecentMissingDigisHF, NumberOfRecentMissingDigisHO, NumberOfRecentMissingRecHits, NumberOfRecentMissingRecHitsHB, NumberOfRecentMissingRecHitsHE, NumberOfRecentMissingRecHitsHF, NumberOfRecentMissingRecHitsHO, ProblemsInLastNLB_HBHEHF_alarm, ProblemsInLastNLB_HO01_alarm, ProblemsVsLB, ProblemsVsLB_HB, HcalBaseDQMonitor::ProblemsVsLB_HBHEHF, ProblemsVsLB_HE, ProblemsVsLB_HF, ProblemsVsLB_HO, ProblemsVsLB_HO2, RBX_loss_VS_LB, RecentMissingDigisByDepth, RecentMissingRecHitsByDepth, RecHitPresentByDepth, HcalBaseDQMonitor::reset(), EtaPhiHists::Reset(), MonitorElement::Reset(), and zeroCounters().

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

426 {
427  if (debug_>1) std::cout <<"HcalDeadCellMonitor::reset()"<<std::endl;
428  doReset_ = false;
429 
431  zeroCounters();
432  deadevt_=0;
433  is_RBX_loss_ = 0;
434  beamMode_ = 0 ;
435  alarmer_counter_ = 0;
437  is_stable_beam = true;
438  hbhedcsON = true; hfdcsON = true; hodcsON = true;
444 
445  for (unsigned int depth=0;depth<DigiPresentByDepth.depth.size();++depth)
446  DigiPresentByDepth.depth[depth]->Reset();
447 
448  // Mark HORing2 channels as present (fill with a 2, rather than a 1, to distinguish between this setting and actual presence)
449  if (excludeHORing2_==true && DigiPresentByDepth.depth.size()>3)
450  {
451  for (int ieta=11;ieta<=15;++ieta)
452  for (int iphi=1;iphi<=72;++iphi)
453  {
454  // Don't fill ring2 SiPMs, since they will still be active even if the rest of HO is excluded.
455  if (isSiPM(ieta,iphi,4)==false)
456  DigiPresentByDepth.depth[3]->Fill(ieta,iphi,2);
457  //std::cout <<" FILLING ("<<-1*ieta<<", "<<iphi<<") with '2'"<<std::endl;
458  DigiPresentByDepth.depth[3]->Fill(-1*ieta,iphi,2);
459  }
460  }
462 
463 
465  {
468  }
470  {
483 
484  // Mark HORing2 channels as present (fill with a 2, rather than a 1, to distinguish between this setting and actual presence)
485  if (excludeHORing2_==true && RecHitPresentByDepth.depth.size()>3)
486  {
487  for (int ieta=11;ieta<=15;++ieta)
488  for (int iphi=1;iphi<=72;++iphi)
489  {
490  RecHitPresentByDepth.depth[3]->Fill(ieta,iphi,2);
491  RecHitPresentByDepth.depth[3]->Fill(-1*ieta,iphi,2);
492  }
493  }
495  }
496 
497  Nevents->Reset();
498 } // reset function is empty for now
MonitorElement * NumberOfNeverPresentRecHitsHO
MonitorElement * NumberOfRecentMissingRecHitsHF
MonitorElement * NumberOfNeverPresentRecHits
MonitorElement * NumberOfNeverPresentDigisHB
MonitorElement * NumberOfRecentMissingRecHits
void zeroCounters(bool resetpresent=false)
MonitorElement * NumberOfNeverPresentDigisHE
void Reset(void)
MonitorElement * NumberOfRecentMissingDigisHB
MonitorElement * ProblemsInLastNLB_HO01_alarm
MonitorElement * NumberOfRecentMissingDigisHE
bool isSiPM(int ieta, int iphi, int depth)
EtaPhiHists RecHitPresentByDepth
MonitorElement * RBX_loss_VS_LB
std::vector< MonitorElement * > depth
MonitorElement * ProblemsVsLB
MonitorElement * NumberOfNeverPresentDigisHF
MonitorElement * ProblemsVsLB_HBHEHF
MonitorElement * NumberOfNeverPresentDigisHO
MonitorElement * NumberOfNeverPresentRecHitsHB
MonitorElement * Nevents
MonitorElement * NumberOfRecentMissingRecHitsHE
MonitorElement * ProblemsVsLB_HF
MonitorElement * NumberOfRecentMissingDigisHO
MonitorElement * NumberOfNeverPresentRecHitsHF
MonitorElement * ProblemsVsLB_HB
EtaPhiHists RecentMissingDigisByDepth
MonitorElement * NumberOfRecentMissingRecHitsHO
EtaPhiHists DigiPresentByDepth
virtual void reset(void)
void FillUnphysicalHEHFBins(std::vector< TH2F > &hh)
EtaPhiHists RecentMissingRecHitsByDepth
MonitorElement * NumberOfNeverPresentRecHitsHE
MonitorElement * ProblemsVsLB_HE
MonitorElement * NumberOfNeverPresentDigis
MonitorElement * NumberOfRecentMissingDigis
MonitorElement * NumberOfRecentMissingDigisHF
tuple cout
Definition: gather_cfg.py:121
MonitorElement * ProblemsInLastNLB_HBHEHF_alarm
void Reset(void)
reset ME (ie. contents, errors, etc)
MonitorElement * ProblemsVsLB_HO2
MonitorElement * NumberOfRecentMissingRecHitsHB
MonitorElement * ProblemsVsLB_HO
void HcalDeadCellMonitor::setup ( DQMStore::IBooker ib)
virtual

Reimplemented from HcalBaseDQMonitor.

Definition at line 85 of file HcalDeadCellMonitor.cc.

References DQMStore::IBooker::book1D(), DQMStore::IBooker::book2D(), DQMStore::IBooker::bookFloat(), DQMStore::IBooker::bookInt(), DQMStore::IBooker::bookProfile(), gather_cfg::cout, deadmon_test_digis_, deadmon_test_rechits_, HcalBaseDQMonitor::debug_, EtaPhiHists::depth, DigiPresentByDepth, excludeHORing2_, MonitorElement::Fill(), HcalObjRepresent::FillUnphysicalHEHFBins(), MonitorElement::getTProfile(), HBDeadVsEvent, HBenergyThreshold_, HEDeadVsEvent, HEenergyThreshold_, HFDeadVsEvent, HFenergyThreshold_, HODeadVsEvent, HOenergyThreshold_, HcalBaseDQMonitor::makeDiagnostics_, minDeadEventCount_, mergeVDriftHistosByStation::name, Nevents, HcalBaseDQMonitor::NLumiBlocks_, NumberOfNeverPresentDigis, NumberOfNeverPresentDigisHB, NumberOfNeverPresentDigisHE, NumberOfNeverPresentDigisHF, NumberOfNeverPresentDigisHO, NumberOfNeverPresentRecHits, NumberOfNeverPresentRecHitsHB, NumberOfNeverPresentRecHitsHE, NumberOfNeverPresentRecHitsHF, NumberOfNeverPresentRecHitsHO, NumberOfRecentMissingDigis, NumberOfRecentMissingDigisHB, NumberOfRecentMissingDigisHE, NumberOfRecentMissingDigisHF, NumberOfRecentMissingDigisHO, NumberOfRecentMissingRecHits, NumberOfRecentMissingRecHitsHB, NumberOfRecentMissingRecHitsHE, NumberOfRecentMissingRecHitsHF, NumberOfRecentMissingRecHitsHO, ProblemsInLastNLB_HBHEHF_alarm, ProblemsInLastNLB_HO01_alarm, ProblemsVsLB, ProblemsVsLB_HB, HcalBaseDQMonitor::ProblemsVsLB_HBHEHF, ProblemsVsLB_HE, ProblemsVsLB_HF, ProblemsVsLB_HO, ProblemsVsLB_HO2, RBX_loss_VS_LB, RecentMissingDigisByDepth, RecentMissingRecHitsByDepth, RecHitPresentByDepth, reset(), MonitorElement::setBinLabel(), DQMStore::IBooker::setCurrentFolder(), HcalBaseDQMonitor::setup(), setupDone_, HcalBaseDQMonitor::SetupEtaPhiHists(), HcalBaseDQMonitor::subdir_, units(), and zeroCounters().

Referenced by bookHistograms().

86 {
87  if (setupDone_)
88  {
89  // Always do a zeroing/resetting so that empty histograms/counter
90  // will always appear.
91  zeroCounters(1); // make sure arrays are set up
92  this->reset();
93 
94  return;
95  }
96  else
97  setupDone_=true;
98 
100  if (debug_>0)
101  std::cout <<"<HcalDeadCellMonitor::setup> Setting up histograms"<<std::endl;
102 
104  MonitorElement* excludeHO2=ib.bookInt("ExcludeHOring2");
105  // Fill with 0 if ring is not to be excluded; fill with 1 if it is to be excluded
106  if (excludeHO2) excludeHO2->Fill(excludeHORing2_==true ? 1 : 0);
107 
108  Nevents = ib.book1D("NumberOfDeadCellEvents","Number of Events Seen by DeadCellMonitor",2,0,2);
109  Nevents->setBinLabel(1,"allEvents");
110  Nevents->setBinLabel(2,"lumiCheck");
111  // 1D plots count number of bad cells vs. luminosity block
112  ProblemsVsLB=ib.bookProfile("TotalDeadCells_HCAL_vs_LS",
113  "Total Number of Dead Hcal Cells (excluding known problems) vs LS;Lumi Section;Dead Cells",
114  NLumiBlocks_,0.5,NLumiBlocks_+0.5,
115  100,0,10000);
116  ProblemsVsLB_HB=ib.bookProfile("TotalDeadCells_HB_vs_LS",
117  "Total Number of Dead HB Cells (excluding known problems) vs LS;Lumi Section;Dead Cells",
118  NLumiBlocks_,0.5,NLumiBlocks_+0.5,
119  100,0,10000);
120  ProblemsVsLB_HE=ib.bookProfile("TotalDeadCells_HE_vs_LS",
121  "Total Number of Dead HE Cells (excluding known problems) vs LS;Lumi Section;Dead Cells",
122  NLumiBlocks_,0.5,NLumiBlocks_+0.5,100,0,10000);
123  ProblemsVsLB_HO=ib.bookProfile("TotalDeadCells_HO_vs_LS",
124  "Total Number of Dead HO Cells Ring 0,1 |ieta|<=10 (excluding known problems) vs LS;Lumi Section;Dead Cells",
125  NLumiBlocks_,0.5,NLumiBlocks_+0.5,100,0,10000);
126  ProblemsVsLB_HO2=ib.bookProfile("TotalDeadCells_HO2_vs_LS",
127  "Total Number of Dead HO Cells Ring 2 |ieta|>10 (excluding known problems) vs LS;Lumi Section;Dead Cells",
128  NLumiBlocks_,0.5,NLumiBlocks_+0.5,100,0,10000);
129  ProblemsVsLB_HF=ib.bookProfile("TotalDeadCells_HF_vs_LS",
130  "Total Number of Dead HF Cells (excluding known problems) vs LS;Lumi Section;Dead Cells",
131  NLumiBlocks_,0.5,NLumiBlocks_+0.5,100,0,10000);
132  ProblemsVsLB_HBHEHF=ib.bookProfile("TotalDeadCells_HBHEHF_vs_LS",
133  "Total Number of Dead HBHEHF Cells (excluding known problems) vs LS;Lumi Section;Dead Cells",
134  NLumiBlocks_,0.5,NLumiBlocks_+0.5,100,0,10000);
135 
136  (ProblemsVsLB->getTProfile())->SetMarkerStyle(20);
137  (ProblemsVsLB_HB->getTProfile())->SetMarkerStyle(20);
138  (ProblemsVsLB_HE->getTProfile())->SetMarkerStyle(20);
139  (ProblemsVsLB_HO->getTProfile())->SetMarkerStyle(20);
140  (ProblemsVsLB_HO2->getTProfile())->SetMarkerStyle(20);
141  (ProblemsVsLB_HF->getTProfile())->SetMarkerStyle(20);
142  (ProblemsVsLB_HBHEHF->getTProfile())->SetMarkerStyle(20);
143 
144  RBX_loss_VS_LB=ib.book2D("RBX_loss_VS_LB",
145  "RBX loss vs LS; Lumi Section; Index of lost RBX",
146  NLumiBlocks_,0.5,NLumiBlocks_+0.5,156,0,156);
147 
148  ProblemsInLastNLB_HBHEHF_alarm=ib.book1D("ProblemsInLastNLB_HBHEHF_alarm",
149  "Total Number of Dead HBHEHF Cells in last 10 LS. Last bin contains OverFlow",
150  100,0,100);
151  ProblemsInLastNLB_HO01_alarm=ib.book1D("ProblemsInLastNLB_HO01_alarm",
152  "Total Number of Dead Cells Ring 0,1 (abs(ieta)<=10) in last 10 LS. Last bin contains OverFlow",
153  100,0,100);
154 
155 
156  ib.setCurrentFolder(subdir_+"dead_cell_parameters");
157  MonitorElement* me=ib.bookInt("Test_NeverPresent_Digis");
158  me->Fill(1);
159  me=ib.bookInt("Test_DigiMissing_Periodic_Lumi_Check");
161  me->Fill(1);
162  else
163  me->Fill(0);
164  me=ib.bookInt("Min_Events_Required_Periodic_Lumi_Check");
166  me=ib.bookInt("Test_NeverPresent_RecHits");
167  deadmon_test_rechits_>0 ? me->Fill(1) : me->Fill(0);
168  me=ib.bookFloat("HBMinimumRecHitEnergy");
170  me=ib.bookFloat("HEMinimumRecHitEnergy");
172  me=ib.bookFloat("HOMinimumRecHitEnergy");
174  me=ib.bookFloat("HFMinimumRecHitEnergy");
176  me=ib.bookInt("Test_RecHitsMissing_Periodic_Lumi_Check");
177  deadmon_test_rechits_>0 ? me->Fill(1) : me->Fill(0);
178 
179  // ProblemCells plots are in HcalDeadCellClient!
180 
181  // Set up plots for each failure mode of dead cells
182  std::stringstream units; // We'll need to set the titles individually, rather than passing units to SetupEtaPhiHists (since this also would affect the name of the histograms)
183  std::stringstream name;
184 
185  // Never-present test will always be called, by definition of dead cell
186 
187  ib.setCurrentFolder(subdir_+"dead_digi_never_present");
189  "Digi Present At Least Once","");
190  // 1D plots count number of bad cells
191  NumberOfNeverPresentDigis=ib.bookProfile("Problem_NeverPresentDigis_HCAL_vs_LS",
192  "Total Number of Never-Present Hcal Cells vs LS;Lumi Section;Dead Cells",
193  NLumiBlocks_,0.5,NLumiBlocks_+0.5,100,0,10000);
194 
195  NumberOfNeverPresentDigisHB=ib.bookProfile("Problem_NeverPresentDigis_HB_vs_LS",
196  "Total Number of Never-Present HB Cells vs LS;Lumi Section;Dead Cells",
197  NLumiBlocks_,0.5,NLumiBlocks_+0.5,100,0,10000);
198 
199  NumberOfNeverPresentDigisHE=ib.bookProfile("Problem_NeverPresentDigis_HE_vs_LS",
200  "Total Number of Never-Present HE Cells vs LS;Lumi Section;Dead Cells",
201  NLumiBlocks_,0.5,NLumiBlocks_+0.5,100,0,10000);
202 
203  NumberOfNeverPresentDigisHO=ib.bookProfile("Problem_NeverPresentDigis_HO_vs_LS",
204  "Total Number of Never-Present HO Cells vs LS;Lumi Section;Dead Cells",
205  NLumiBlocks_,0.5,NLumiBlocks_+0.5,100,0,10000);
206 
207  NumberOfNeverPresentDigisHF=ib.bookProfile("Problem_NeverPresentDigis_HF_vs_LS",
208  "Total Number of Never-Present HF Cells vs LS;Lumi Section;Dead Cells",
209  NLumiBlocks_,0.5,NLumiBlocks_+0.5,100,0,10000);
210  (NumberOfNeverPresentDigis->getTProfile())->SetMarkerStyle(20);
211  (NumberOfNeverPresentDigisHB->getTProfile())->SetMarkerStyle(20);
212  (NumberOfNeverPresentDigisHE->getTProfile())->SetMarkerStyle(20);
213  (NumberOfNeverPresentDigisHO->getTProfile())->SetMarkerStyle(20);
214  (NumberOfNeverPresentDigisHF->getTProfile())->SetMarkerStyle(20);
215 
217 
219  {
220  ib.setCurrentFolder(subdir_+"dead_digi_often_missing");
221  //units<<"("<<deadmon_checkNevents_<<" consec. events)";
222  name<<"Dead Cells with No Digis";
224  name.str(),
225  "");
226  name.str("");
227  name<<"HB HE HF Depth 1 Dead Cells with No Digis for at least 1 Full Luminosity Block";
228  RecentMissingDigisByDepth.depth[0]->setTitle(name.str().c_str());
229 
230  name.str("");
231  name<<"HB HE HF Depth 2 Dead Cells with No Digis for at least 1 Full Luminosity Block";
232  RecentMissingDigisByDepth.depth[1]->setTitle(name.str().c_str());
233 
234  name.str("");
235  name<<"HE Depth 3 Dead Cells with No Digis for at least 1 Full Luminosity Block";
236  RecentMissingDigisByDepth.depth[2]->setTitle(name.str().c_str());
237 
238  name.str("");
239  name<<"HO Depth 4 Dead Cells with No Digis for at least 1 Full Luminosity Block";
240  RecentMissingDigisByDepth.depth[3]->setTitle(name.str().c_str());
241  name.str("");
242 
243  // 1D plots count number of bad cells
244  name<<"Total Number of Hcal Digis Unoccupied for at least 1 Full Luminosity Block";
245  NumberOfRecentMissingDigis=ib.bookProfile("Problem_RecentMissingDigis_HCAL_vs_LS",
246  name.str(),
247  NLumiBlocks_,0.5,NLumiBlocks_+0.5,100,0,10000);
248  name.str("");
249  name<<"Total Number of HB Digis Unoccupied for at least 1 Full LS vs LS;Lumi Section; Dead Cells";
250  NumberOfRecentMissingDigisHB=ib.bookProfile("Problem_RecentMissingDigis_HB_vs_LS",
251  name.str(),
252  NLumiBlocks_,0.5,NLumiBlocks_+0.5,100,0,10000);
253  name.str("");
254  name<<"Total Number of HE Digis Unoccupied for at least 1 Full LS vs LS;Lumi Section; Dead Cells";
255  NumberOfRecentMissingDigisHE=ib.bookProfile("Problem_RecentMissingDigis_HE_vs_LS",
256  name.str(),
257  NLumiBlocks_,0.5,NLumiBlocks_+0.5,100,0,10000);
258  name.str("");
259  name<<"Total Number of HO Digis Unoccupied for at least 1 Full LS vs LS;Lumi Section; Dead Cells";
260  NumberOfRecentMissingDigisHO=ib.bookProfile("Problem_RecentMissingDigis_HO_vs_LS",
261  name.str(),
262  NLumiBlocks_,0.5,NLumiBlocks_+0.5,100,0,10000);
263  name.str("");
264  name<<"Total Number of HF Digis Unoccupied for at least 1 Full LS vs LS;Lumi Section; Dead Cells";
265  NumberOfRecentMissingDigisHF=ib.bookProfile("Problem_RecentMissingDigis_HF_vs_LS",
266  name.str(),
267  NLumiBlocks_,0.5,NLumiBlocks_+0.5,100,0,10000);
268  (NumberOfRecentMissingDigis->getTProfile())->SetMarkerStyle(20);
269  (NumberOfRecentMissingDigisHB->getTProfile())->SetMarkerStyle(20);
270  (NumberOfRecentMissingDigisHE->getTProfile())->SetMarkerStyle(20);
271  (NumberOfRecentMissingDigisHO->getTProfile())->SetMarkerStyle(20);
272  (NumberOfRecentMissingDigisHF->getTProfile())->SetMarkerStyle(20);
273 
274  }
275 
277  {
278  // test 1: energy never above threshold
279  ib.setCurrentFolder(subdir_+"dead_rechit_neverpresent");
280  SetupEtaPhiHists(ib,RecHitPresentByDepth,"RecHit Above Threshold At Least Once","");
281  // set more descriptive titles for threshold plots
282  units.str("");
283  units<<"Cells Above Energy Threshold At Least Once: Depth 1 -- HB >="<<HBenergyThreshold_<<" GeV, HE >= "<<HEenergyThreshold_<<", HF >="<<HFenergyThreshold_<<" GeV";
284  RecHitPresentByDepth.depth[0]->setTitle(units.str().c_str());
285  units.str("");
286  units<<"Cells Above Energy Threshold At Least Once: Depth 2 -- HB >="<<HBenergyThreshold_<<" GeV, HE >= "<<HEenergyThreshold_<<", HF >="<<HFenergyThreshold_<<" GeV";
287  RecHitPresentByDepth.depth[1]->setTitle(units.str().c_str());
288  units.str("");
289  units<<"Cells Above Energy Threshold At Least Once: Depth 3 -- HE >="<<HEenergyThreshold_<<" GeV";
290  RecHitPresentByDepth.depth[2]->setTitle(units.str().c_str());
291  units.str("");
292  units<<"Cells Above Energy Threshold At Least Once: Depth 4 -- HO >="<<HOenergyThreshold_<<" GeV";
293  RecHitPresentByDepth.depth[3]->setTitle(units.str().c_str());
294  units.str("");
295 
296  // 1D plots count number of bad cells
297  NumberOfNeverPresentRecHits=ib.bookProfile("Problem_RecHitsNeverPresent_HCAL_vs_LS",
298  "Total Number of Hcal Rechits with Low Energy;Lumi Section;Dead Cells",
299  NLumiBlocks_,0.5,NLumiBlocks_+0.5,100,0,10000);
300  name.str("");
301  name<<"Total Number of HB RecHits with Energy Never >= "<<HBenergyThreshold_<<" GeV;Lumi Section;Dead Cells";
302  NumberOfNeverPresentRecHitsHB=ib.bookProfile("Problem_RecHitsNeverPresent_HB_vs_LS",
303  name.str(),
304  NLumiBlocks_,0.5,NLumiBlocks_+0.5,100,0,10000);
305  name.str("");
306  name<<"Total Number of HE RecHits with Energy Never >= "<<HEenergyThreshold_<<" GeV;Lumi Section;Dead Cells";
307  NumberOfNeverPresentRecHitsHE=ib.bookProfile("Problem_RecHitsNeverPresent_HE_vs_LS",
308  name.str(),
309  NLumiBlocks_,0.5,NLumiBlocks_+0.5,100,0,10000);
310  name.str("");
311  name<<"Total Number of HO RecHits with Energy Never >= "<<HOenergyThreshold_<<" GeV;Lumi Section;Dead Cells";
312  NumberOfNeverPresentRecHitsHO=ib.bookProfile("Problem_RecHitsNeverPresent_HO_vs_LS",
313  name.str(),
314  NLumiBlocks_,0.5,NLumiBlocks_+0.5,100,0,10000);
315  name.str("");
316  name<<"Total Number of HF RecHits with Energy Never >= "<<HFenergyThreshold_<<" GeV;Lumi Section;Dead Cells";
317  NumberOfNeverPresentRecHitsHF=ib.bookProfile("Problem_RecHitsNeverPresent_HF_vs_LS",
318  name.str(),
319  NLumiBlocks_,0.5,NLumiBlocks_+0.5,100,0,10000);
320  (NumberOfNeverPresentRecHits->getTProfile())->SetMarkerStyle(20);
321  (NumberOfNeverPresentRecHitsHB->getTProfile())->SetMarkerStyle(20);
322  (NumberOfNeverPresentRecHitsHE->getTProfile())->SetMarkerStyle(20);
323  (NumberOfNeverPresentRecHitsHO->getTProfile())->SetMarkerStyle(20);
324  (NumberOfNeverPresentRecHitsHF->getTProfile())->SetMarkerStyle(20);
325 
326  ib.setCurrentFolder(subdir_+"dead_rechit_often_missing");
327  SetupEtaPhiHists(ib,RecentMissingRecHitsByDepth,"RecHits Failing Energy Threshold Test","");
328  // set more descriptive titles for threshold plots
329  units.str("");
330  units<<"RecHits with Consistent Low Energy Depth 1 -- HB <"<<HBenergyThreshold_<<" GeV, HE < "<<HEenergyThreshold_<<", HF <"<<HFenergyThreshold_<<" GeV";
331  RecentMissingRecHitsByDepth.depth[0]->setTitle(units.str().c_str());
332  units.str("");
333  units<<"RecHits with Consistent Low Energy Depth 2 -- HB <"<<HBenergyThreshold_<<" GeV, HE < "<<HEenergyThreshold_<<", HF <"<<HFenergyThreshold_<<" GeV";
334  RecentMissingRecHitsByDepth.depth[1]->setTitle(units.str().c_str());
335  units.str("");
336  units<<"RecHits with Consistent Low Energy Depth 3 -- HE <"<<HEenergyThreshold_<<" GeV";
337  RecentMissingRecHitsByDepth.depth[2]->setTitle(units.str().c_str());
338  units.str("");
339  units<<"RecHits with Consistent Low Energy Depth 4 -- HO <"<<HOenergyThreshold_<<" GeV";
340  RecentMissingRecHitsByDepth.depth[3]->setTitle(units.str().c_str());
341  units.str("");
342 
343 
344  // 1D plots count number of bad cells
345  name.str("");
346  name<<"Total Number of Hcal RecHits with Consistent Low Energy;Lumi Section;Dead Cells";
347  NumberOfRecentMissingRecHits=ib.bookProfile("Problem_BelowEnergyRecHits_HCAL_vs_LS",
348  name.str(),
349  NLumiBlocks_,0.5,NLumiBlocks_+0.5,100,0,10000);
350  name.str("");
351  name<<"Total Number of HB RecHits with Consistent Low Energy < "<<HBenergyThreshold_<<" GeV;Lumi Section;Dead Cells";
352  NumberOfRecentMissingRecHitsHB=ib.bookProfile("Problem_BelowEnergyRecHits_HB_vs_LS",
353  name.str(),
354  NLumiBlocks_,0.5,NLumiBlocks_+0.5,100,0,10000);
355  name.str("");
356  name<<"Total Number of HE RecHits with Consistent Low Energy < "<<HEenergyThreshold_<<" GeV;Lumi Section;Dead Cells";
357  NumberOfRecentMissingRecHitsHE=ib.bookProfile("Problem_BelowEnergyRecHits_HE_vs_LS",
358  name.str(),
359  NLumiBlocks_,0.5,NLumiBlocks_+0.5,100,0,10000);
360  name.str("");
361  name<<"Total Number of HO RecHits with Consistent Low Energy < "<<HOenergyThreshold_<<" GeV;Lumi Section;Dead Cells";
362  NumberOfRecentMissingRecHitsHO=ib.bookProfile("Problem_BelowEnergyRecHits_HO_vs_LS",
363  name.str(),
364  NLumiBlocks_,0.5,NLumiBlocks_+0.5,100,0,10000);
365  name.str("");
366  name<<"Total Number of HF RecHits with Consistent Low Energy < "<<HFenergyThreshold_<<" GeV;Lumi Section;Dead Cells";
367  NumberOfRecentMissingRecHitsHF=ib.bookProfile("Problem_BelowEnergyRecHits_HF_vs_LS",
368  name.str(),
369  NLumiBlocks_,0.5,NLumiBlocks_+0.5,100,0,10000);
370  (NumberOfRecentMissingRecHits->getTProfile())->SetMarkerStyle(20);
371  (NumberOfRecentMissingRecHitsHB->getTProfile())->SetMarkerStyle(20);
372  (NumberOfRecentMissingRecHitsHE->getTProfile())->SetMarkerStyle(20);
373  (NumberOfRecentMissingRecHitsHO->getTProfile())->SetMarkerStyle(20);
374  (NumberOfRecentMissingRecHitsHF->getTProfile())->SetMarkerStyle(20);
375 
376  } // if (deadmon_test_rechits)
377 
378 
379  if (makeDiagnostics_)
380  {
381  ib.setCurrentFolder(subdir_+"DiagnosticPlots");
382  HBDeadVsEvent=ib.book1D("HBDeadVsEvent","HB Total Dead Cells Vs Event", NLumiBlocks_/10,-0.5,NLumiBlocks_-0.5);
383  HEDeadVsEvent=ib.book1D("HEDeadVsEvent","HE Total Dead Cells Vs Event", NLumiBlocks_/10,-0.5,NLumiBlocks_-0.5);
384  HODeadVsEvent=ib.book1D("HODeadVsEvent","HO Total Dead Cells Vs Event", NLumiBlocks_/10,-0.5,NLumiBlocks_-0.5);
385  HFDeadVsEvent=ib.book1D("HFDeadVsEvent","HF Total Dead Cells Vs Event", NLumiBlocks_/10,-0.5,NLumiBlocks_-0.5);
386  }
387 
388  return;
389 
390 } // void HcalDeadCellMonitor::setup(...)
MonitorElement * NumberOfNeverPresentRecHitsHO
MonitorElement * NumberOfRecentMissingRecHitsHF
MonitorElement * NumberOfNeverPresentRecHits
MonitorElement * NumberOfNeverPresentDigisHB
MonitorElement * HEDeadVsEvent
MonitorElement * NumberOfRecentMissingRecHits
void zeroCounters(bool resetpresent=false)
MonitorElement * bookProfile(Args &&...args)
Definition: DQMStore.h:157
MonitorElement * NumberOfNeverPresentDigisHE
MonitorElement * bookInt(Args &&...args)
Definition: DQMStore.h:103
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 * NumberOfRecentMissingDigisHB
MonitorElement * ProblemsInLastNLB_HO01_alarm
MonitorElement * NumberOfRecentMissingDigisHE
void Fill(long long x)
void SetupEtaPhiHists(DQMStore::IBooker &ib, EtaPhiHists &hh, std::string Name, std::string Units)
EtaPhiHists RecHitPresentByDepth
MonitorElement * RBX_loss_VS_LB
std::vector< MonitorElement * > depth
MonitorElement * ProblemsVsLB
MonitorElement * NumberOfNeverPresentDigisHF
MonitorElement * ProblemsVsLB_HBHEHF
MonitorElement * NumberOfNeverPresentDigisHO
MonitorElement * book1D(Args &&...args)
Definition: DQMStore.h:115
MonitorElement * NumberOfNeverPresentRecHitsHB
MonitorElement * Nevents
MonitorElement * NumberOfRecentMissingRecHitsHE
MonitorElement * ProblemsVsLB_HF
MonitorElement * NumberOfRecentMissingDigisHO
MonitorElement * NumberOfNeverPresentRecHitsHF
MonitorElement * ProblemsVsLB_HB
EtaPhiHists RecentMissingDigisByDepth
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:274
MonitorElement * book2D(Args &&...args)
Definition: DQMStore.h:133
MonitorElement * NumberOfRecentMissingRecHitsHO
EtaPhiHists DigiPresentByDepth
void FillUnphysicalHEHFBins(std::vector< TH2F > &hh)
EtaPhiHists RecentMissingRecHitsByDepth
MonitorElement * HBDeadVsEvent
MonitorElement * NumberOfNeverPresentRecHitsHE
TString units(TString variable, Char_t axis)
MonitorElement * ProblemsVsLB_HE
TProfile * getTProfile(void) const
MonitorElement * NumberOfNeverPresentDigis
MonitorElement * NumberOfRecentMissingDigis
MonitorElement * NumberOfRecentMissingDigisHF
tuple cout
Definition: gather_cfg.py:121
MonitorElement * bookFloat(Args &&...args)
Definition: DQMStore.h:109
MonitorElement * ProblemsInLastNLB_HBHEHF_alarm
MonitorElement * HFDeadVsEvent
virtual void setup(DQMStore::IBooker &)
MonitorElement * ProblemsVsLB_HO2
MonitorElement * HODeadVsEvent
MonitorElement * NumberOfRecentMissingRecHitsHB
MonitorElement * ProblemsVsLB_HO
void HcalDeadCellMonitor::zeroCounters ( bool  resetpresent = false)
private

Definition at line 1593 of file HcalDeadCellMonitor.cc.

References i, j, relval_steps::k, occupancy_RBX, present_digi, present_rechit, rbxlost, recentoccupancy_digi, and recentoccupancy_rechit.

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

1594 {
1595 
1596  // zero all counters
1597 
1598  // 2D histogram counters
1599  for (unsigned int i=0;i<85;++i)
1600  {
1601  for (unsigned int j=0;j<72;++j)
1602  {
1603  for (unsigned int k=0;k<4;++k)
1604  {
1605  if (resetpresent) present_digi[i][j][k]=false; // keeps track of whether digi was ever present
1606  if (resetpresent) present_rechit[i][j][k]=false;
1607  recentoccupancy_digi[i][j][k]=0; // counts occupancy in last (checkNevents) events
1608  recentoccupancy_rechit[i][j][k]=0; // counts instances of cell above threshold energy in last (checkNevents)
1609  }
1610  }
1611  }
1612 
1613  for (unsigned int i=0;i<156;++i)
1614  {
1615  occupancy_RBX[i] = 0;
1616  rbxlost[i] = 0;
1617  }
1618 
1619  return;
1620 } // void HcalDeadCellMonitor::zeroCounters(bool resetpresent)
int i
Definition: DBlmapReader.cc:9
bool present_digi[85][72][4]
bool present_rechit[85][72][4]
unsigned int occupancy_RBX[156]
int j
Definition: DBlmapReader.cc:9
unsigned int recentoccupancy_rechit[85][72][4]
unsigned int recentoccupancy_digi[85][72][4]

Member Data Documentation

int HcalDeadCellMonitor::alarmer_counter_
private

Definition at line 107 of file HcalDeadCellMonitor.h.

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

int HcalDeadCellMonitor::alarmer_counterHO01_
private

Definition at line 108 of file HcalDeadCellMonitor.h.

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

int HcalDeadCellMonitor::beamMode_
private

Definition at line 94 of file HcalDeadCellMonitor.h.

Referenced by endLuminosityBlock(), and reset().

int HcalDeadCellMonitor::deadevt_
private
bool HcalDeadCellMonitor::deadmon_makeDiagnostics_
private

Definition at line 60 of file HcalDeadCellMonitor.h.

bool HcalDeadCellMonitor::deadmon_test_digis_
private
bool HcalDeadCellMonitor::deadmon_test_rechits_
private
edm::InputTag HcalDeadCellMonitor::digiLabel_
private

Definition at line 112 of file HcalDeadCellMonitor.h.

Referenced by analyze(), and HcalDeadCellMonitor().

EtaPhiHists HcalDeadCellMonitor::DigiPresentByDepth
private
bool HcalDeadCellMonitor::doReset_
private

Definition at line 95 of file HcalDeadCellMonitor.h.

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

bool HcalDeadCellMonitor::endLumiProcessed_
private

Definition at line 124 of file HcalDeadCellMonitor.h.

Referenced by analyze(), endLuminosityBlock(), endRun(), and HcalDeadCellMonitor().

double HcalDeadCellMonitor::energyThreshold_
private

Definition at line 72 of file HcalDeadCellMonitor.h.

Referenced by HcalDeadCellMonitor().

bool HcalDeadCellMonitor::excludeHO1P02_
private

Definition at line 127 of file HcalDeadCellMonitor.h.

Referenced by fillNevents_problemCells(), and HcalDeadCellMonitor().

bool HcalDeadCellMonitor::excludeHORing2_
private
MonitorElement* HcalDeadCellMonitor::HBDeadVsEvent
private

Definition at line 97 of file HcalDeadCellMonitor.h.

Referenced by processEvent(), and setup().

double HcalDeadCellMonitor::HBenergyThreshold_
private

Definition at line 73 of file HcalDeadCellMonitor.h.

Referenced by HcalDeadCellMonitor(), process_RecHit(), and setup().

bool HcalDeadCellMonitor::hbhedcsON
private

Definition at line 110 of file HcalDeadCellMonitor.h.

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

edm::InputTag HcalDeadCellMonitor::hbheRechitLabel_
private

Definition at line 113 of file HcalDeadCellMonitor.h.

Referenced by analyze(), and HcalDeadCellMonitor().

MonitorElement * HcalDeadCellMonitor::HEDeadVsEvent
private

Definition at line 97 of file HcalDeadCellMonitor.h.

Referenced by processEvent(), and setup().

double HcalDeadCellMonitor::HEenergyThreshold_
private

Definition at line 74 of file HcalDeadCellMonitor.h.

Referenced by HcalDeadCellMonitor(), process_RecHit(), and setup().

bool HcalDeadCellMonitor::hfdcsON
private

Definition at line 110 of file HcalDeadCellMonitor.h.

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

MonitorElement * HcalDeadCellMonitor::HFDeadVsEvent
private

Definition at line 97 of file HcalDeadCellMonitor.h.

Referenced by processEvent(), and setup().

double HcalDeadCellMonitor::HFenergyThreshold_
private

Definition at line 76 of file HcalDeadCellMonitor.h.

Referenced by HcalDeadCellMonitor(), process_RecHit(), and setup().

edm::InputTag HcalDeadCellMonitor::hfRechitLabel_
private

Definition at line 113 of file HcalDeadCellMonitor.h.

Referenced by analyze(), and HcalDeadCellMonitor().

bool HcalDeadCellMonitor::hodcsON
private

Definition at line 110 of file HcalDeadCellMonitor.h.

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

MonitorElement * HcalDeadCellMonitor::HODeadVsEvent
private

Definition at line 97 of file HcalDeadCellMonitor.h.

Referenced by processEvent(), and setup().

double HcalDeadCellMonitor::HOenergyThreshold_
private

Definition at line 75 of file HcalDeadCellMonitor.h.

Referenced by HcalDeadCellMonitor(), process_RecHit(), and setup().

edm::InputTag HcalDeadCellMonitor::hoRechitLabel_
private

Definition at line 113 of file HcalDeadCellMonitor.h.

Referenced by analyze(), and HcalDeadCellMonitor().

int HcalDeadCellMonitor::is_RBX_loss_
private
bool HcalDeadCellMonitor::is_stable_beam
private

Definition at line 109 of file HcalDeadCellMonitor.h.

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

int HcalDeadCellMonitor::minDeadEventCount_
private
MonitorElement* HcalDeadCellMonitor::Nevents
private

Definition at line 93 of file HcalDeadCellMonitor.h.

Referenced by analyze(), fillNevents_problemCells(), reset(), and setup().

unsigned int HcalDeadCellMonitor::NumBadHB
private

Definition at line 111 of file HcalDeadCellMonitor.h.

Referenced by endLuminosityBlock(), and fillNevents_problemCells().

unsigned int HcalDeadCellMonitor::NumBadHE
private

Definition at line 111 of file HcalDeadCellMonitor.h.

Referenced by endLuminosityBlock(), and fillNevents_problemCells().

unsigned int HcalDeadCellMonitor::NumBadHF
private

Definition at line 111 of file HcalDeadCellMonitor.h.

Referenced by endLuminosityBlock(), and fillNevents_problemCells().

unsigned int HcalDeadCellMonitor::NumBadHFLUMI
private

Definition at line 111 of file HcalDeadCellMonitor.h.

Referenced by endLuminosityBlock(), and fillNevents_problemCells().

unsigned int HcalDeadCellMonitor::NumBadHO
private

Definition at line 111 of file HcalDeadCellMonitor.h.

Referenced by endLuminosityBlock(), and fillNevents_problemCells().

unsigned int HcalDeadCellMonitor::NumBadHO0
private

Definition at line 111 of file HcalDeadCellMonitor.h.

Referenced by endLuminosityBlock().

unsigned int HcalDeadCellMonitor::NumBadHO01
private

Definition at line 111 of file HcalDeadCellMonitor.h.

Referenced by fillNevents_problemCells().

unsigned int HcalDeadCellMonitor::NumBadHO12
private

Definition at line 111 of file HcalDeadCellMonitor.h.

Referenced by endLuminosityBlock(), and fillNevents_problemCells().

int HcalDeadCellMonitor::NumBadHO1P02
private

Definition at line 129 of file HcalDeadCellMonitor.h.

Referenced by fillNevents_problemCells().

unsigned int HcalDeadCellMonitor::NumBadHO2
private

Definition at line 111 of file HcalDeadCellMonitor.h.

Referenced by fillNevents_problemCells().

MonitorElement* HcalDeadCellMonitor::NumberOfNeverPresentDigis
private

Definition at line 88 of file HcalDeadCellMonitor.h.

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

MonitorElement * HcalDeadCellMonitor::NumberOfNeverPresentDigisHB
private

Definition at line 88 of file HcalDeadCellMonitor.h.

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

MonitorElement * HcalDeadCellMonitor::NumberOfNeverPresentDigisHE
private

Definition at line 88 of file HcalDeadCellMonitor.h.

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

MonitorElement * HcalDeadCellMonitor::NumberOfNeverPresentDigisHF
private

Definition at line 88 of file HcalDeadCellMonitor.h.

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

MonitorElement * HcalDeadCellMonitor::NumberOfNeverPresentDigisHO
private

Definition at line 88 of file HcalDeadCellMonitor.h.

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

MonitorElement* HcalDeadCellMonitor::NumberOfNeverPresentRecHits
private

Definition at line 91 of file HcalDeadCellMonitor.h.

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

MonitorElement * HcalDeadCellMonitor::NumberOfNeverPresentRecHitsHB
private

Definition at line 91 of file HcalDeadCellMonitor.h.

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

MonitorElement * HcalDeadCellMonitor::NumberOfNeverPresentRecHitsHE
private

Definition at line 91 of file HcalDeadCellMonitor.h.

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

MonitorElement * HcalDeadCellMonitor::NumberOfNeverPresentRecHitsHF
private

Definition at line 91 of file HcalDeadCellMonitor.h.

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

MonitorElement * HcalDeadCellMonitor::NumberOfNeverPresentRecHitsHO
private

Definition at line 91 of file HcalDeadCellMonitor.h.

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

MonitorElement* HcalDeadCellMonitor::NumberOfRecentMissingDigis
private

Definition at line 89 of file HcalDeadCellMonitor.h.

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

MonitorElement * HcalDeadCellMonitor::NumberOfRecentMissingDigisHB
private

Definition at line 89 of file HcalDeadCellMonitor.h.

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

MonitorElement * HcalDeadCellMonitor::NumberOfRecentMissingDigisHE
private

Definition at line 89 of file HcalDeadCellMonitor.h.

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

MonitorElement * HcalDeadCellMonitor::NumberOfRecentMissingDigisHF
private

Definition at line 89 of file HcalDeadCellMonitor.h.

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

MonitorElement * HcalDeadCellMonitor::NumberOfRecentMissingDigisHO
private

Definition at line 89 of file HcalDeadCellMonitor.h.

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

MonitorElement* HcalDeadCellMonitor::NumberOfRecentMissingRecHits
private

Definition at line 90 of file HcalDeadCellMonitor.h.

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

MonitorElement * HcalDeadCellMonitor::NumberOfRecentMissingRecHitsHB
private

Definition at line 90 of file HcalDeadCellMonitor.h.

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

MonitorElement * HcalDeadCellMonitor::NumberOfRecentMissingRecHitsHE
private

Definition at line 90 of file HcalDeadCellMonitor.h.

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

MonitorElement * HcalDeadCellMonitor::NumberOfRecentMissingRecHitsHF
private

Definition at line 90 of file HcalDeadCellMonitor.h.

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

MonitorElement * HcalDeadCellMonitor::NumberOfRecentMissingRecHitsHO
private

Definition at line 90 of file HcalDeadCellMonitor.h.

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

unsigned int HcalDeadCellMonitor::occupancy_RBX[156]
private
bool HcalDeadCellMonitor::present_digi[85][72][4]
private
bool HcalDeadCellMonitor::present_rechit[85][72][4]
private

Definition at line 99 of file HcalDeadCellMonitor.h.

Referenced by fillNevents_problemCells(), process_RecHit(), and zeroCounters().

MonitorElement* HcalDeadCellMonitor::ProblemsInLastNLB_HBHEHF_alarm
private

Definition at line 86 of file HcalDeadCellMonitor.h.

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

MonitorElement* HcalDeadCellMonitor::ProblemsInLastNLB_HO01_alarm
private

Definition at line 87 of file HcalDeadCellMonitor.h.

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

MonitorElement* HcalDeadCellMonitor::ProblemsVsLB
private

Definition at line 84 of file HcalDeadCellMonitor.h.

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

MonitorElement * HcalDeadCellMonitor::ProblemsVsLB_HB
private

Definition at line 84 of file HcalDeadCellMonitor.h.

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

MonitorElement * HcalDeadCellMonitor::ProblemsVsLB_HE
private

Definition at line 84 of file HcalDeadCellMonitor.h.

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

MonitorElement * HcalDeadCellMonitor::ProblemsVsLB_HF
private

Definition at line 84 of file HcalDeadCellMonitor.h.

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

MonitorElement * HcalDeadCellMonitor::ProblemsVsLB_HO
private

Definition at line 84 of file HcalDeadCellMonitor.h.

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

MonitorElement * HcalDeadCellMonitor::ProblemsVsLB_HO2
private

Definition at line 84 of file HcalDeadCellMonitor.h.

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

MonitorElement* HcalDeadCellMonitor::RBX_loss_VS_LB
private

Definition at line 85 of file HcalDeadCellMonitor.h.

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

int HcalDeadCellMonitor::rbxlost[156]
private

Definition at line 106 of file HcalDeadCellMonitor.h.

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

EtaPhiHists HcalDeadCellMonitor::RecentMissingDigisByDepth
private

Definition at line 78 of file HcalDeadCellMonitor.h.

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

EtaPhiHists HcalDeadCellMonitor::RecentMissingRecHitsByDepth
private

Definition at line 80 of file HcalDeadCellMonitor.h.

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

unsigned int HcalDeadCellMonitor::recentoccupancy_digi[85][72][4]
private
unsigned int HcalDeadCellMonitor::recentoccupancy_rechit[85][72][4]
private
EtaPhiHists HcalDeadCellMonitor::RecHitPresentByDepth
private

Definition at line 81 of file HcalDeadCellMonitor.h.

Referenced by fillNevents_recentrechits(), process_RecHit(), reset(), and setup().

bool HcalDeadCellMonitor::setupDone_
private

Definition at line 128 of file HcalDeadCellMonitor.h.

Referenced by HcalDeadCellMonitor(), and setup().

edm::EDGetTokenT<DcsStatusCollection> HcalDeadCellMonitor::tok_dcs_
private

Definition at line 115 of file HcalDeadCellMonitor.h.

Referenced by analyze(), and HcalDeadCellMonitor().

edm::EDGetTokenT<L1GlobalTriggerEvmReadoutRecord> HcalDeadCellMonitor::tok_gtEvm_
private

Definition at line 122 of file HcalDeadCellMonitor.h.

Referenced by HcalDeadCellMonitor().

edm::EDGetTokenT<HBHERecHitCollection> HcalDeadCellMonitor::tok_hbhe_
private

Definition at line 119 of file HcalDeadCellMonitor.h.

Referenced by analyze(), and HcalDeadCellMonitor().

edm::EDGetTokenT<HBHEDigiCollection> HcalDeadCellMonitor::tok_hbhedigi_
private

Definition at line 116 of file HcalDeadCellMonitor.h.

Referenced by analyze(), and HcalDeadCellMonitor().

edm::EDGetTokenT<HFRecHitCollection> HcalDeadCellMonitor::tok_hf_
private

Definition at line 121 of file HcalDeadCellMonitor.h.

Referenced by analyze(), and HcalDeadCellMonitor().

edm::EDGetTokenT<HFDigiCollection> HcalDeadCellMonitor::tok_hfdigi_
private

Definition at line 118 of file HcalDeadCellMonitor.h.

Referenced by analyze(), and HcalDeadCellMonitor().

edm::EDGetTokenT<HORecHitCollection> HcalDeadCellMonitor::tok_ho_
private

Definition at line 120 of file HcalDeadCellMonitor.h.

Referenced by analyze(), and HcalDeadCellMonitor().

edm::EDGetTokenT<HODigiCollection> HcalDeadCellMonitor::tok_hodigi_
private

Definition at line 117 of file HcalDeadCellMonitor.h.

Referenced by analyze(), and HcalDeadCellMonitor().