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
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 EDAnalyzerBase ()
 
ModuleDescription const & moduleDescription () const
 
virtual ~EDAnalyzerBase ()
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
 EDConsumerBase ()
 
ProductHolderIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
std::vector
< ProductHolderIndexAndSkipBit >
const & 
itemsToGetFromEvent () const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesDependentUpon (const std::string &iProcessName, std::vector< const char * > &oModuleLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
bool registeredToConsume (ProductHolderIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void updateLookup (BranchType iBranchType, ProductHolderIndexHelper const &)
 
virtual ~EDConsumerBase ()
 

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
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- 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::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 1236 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().

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

Definition at line 1019 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().

1020 {
1021  // Fill Histograms showing digi cells with no occupancy for the past few lumiblocks
1022  if (!deadmon_test_digis_) return; // extra protection here against calling histograms than don't exist
1023 
1024  if (debug_>0)
1025  std::cout <<"<HcalDeadCellMonitor::fillNevents_recentdigis> CHECKING FOR RECENT MISSING DIGIS evtcount = "<<deadevt_<<std::endl;
1026 
1027  int ieta=0;
1028  int iphi=0;
1029 
1030  int etabins=0;
1031  int phibins=0;
1032 
1034  if ((deadevt_ >= 10 && deadevt_<minDeadEventCount_) || (deadevt_ >= 10 && is_RBX_loss_==1)) // maybe not enough events to run the standard test
1035  // if( is_RBX_loss_ == 1 ) // but enough to detect RBX loss
1036  for (unsigned int depth=0;depth<RecentMissingDigisByDepth.depth.size();++depth)
1037  {
1038  RecentMissingDigisByDepth.depth[depth]->setBinContent(0,0,ievt_);
1039  etabins=RecentMissingDigisByDepth.depth[depth]->getNbinsX();
1040  phibins=RecentMissingDigisByDepth.depth[depth]->getNbinsY();
1041  for (int eta=0;eta<etabins;++eta)
1042  for (int phi=0;phi<phibins;++phi)
1043  {
1044  iphi=phi+1;
1045  for (int subdet=1;subdet<=4;++subdet)
1046  {
1047  ieta=CalcIeta((HcalSubdetector)subdet,eta,depth+1);
1048  if (ieta==-9999) continue;
1049  if (!validDetId((HcalSubdetector)subdet, ieta, iphi, depth+1))
1050  continue;
1051  // now check which dead cell tests failed; increment counter if any failed
1052  HcalDetId TempID((HcalSubdetector)subdet, ieta, iphi, (int)depth+1);
1053 
1054  int index = logicalMap_->getHcalFrontEndId(TempID).rbxIndex();
1055  // if(subdet==HcalForward) continue;
1056 
1057  if(occupancy_RBX[index]==0)
1058  {
1060  RecentMissingDigisByDepth.depth[depth]->Fill(ieta,iphi,deadevt_);
1061  }
1062  }
1063  }
1064  }
1066 
1067  if (deadevt_ < minDeadEventCount_) return; // not enough entries to make a determination for this LS
1068 
1069  for (unsigned int depth=0;depth<RecentMissingDigisByDepth.depth.size();++depth)
1070  {
1071  RecentMissingDigisByDepth.depth[depth]->setBinContent(0,0,ievt_);
1072  etabins=RecentMissingDigisByDepth.depth[depth]->getNbinsX();
1073  phibins=RecentMissingDigisByDepth.depth[depth]->getNbinsY();
1074  for (int eta=0;eta<etabins;++eta)
1075  {
1076  for (int subdet=1;subdet<=4;++subdet)
1077  {
1078  ieta=CalcIeta((HcalSubdetector)subdet,eta,depth+1);
1079  if (ieta==-9999) continue;
1080  for (int phi=0;phi<phibins;++phi)
1081  {
1082  iphi=phi+1;
1083 
1084  if (!validDetId((HcalSubdetector)subdet, ieta, iphi, depth+1))
1085  continue;
1086 
1087  // Ignore subdetectors that weren't in run?
1088  /*
1089  if ((subdet==HcalBarrel && !HBpresent_) ||
1090  (subdet==HcalEndcap &&!HEpresent_) ||
1091  (subdet==HcalOuter &&!HOpresent_) ||
1092  (subdet==HcalForward &&!HFpresent_)) continue;
1093  */
1094  int zside=0;
1095  if (subdet==HcalForward) // shift HcalForward ieta
1096  ieta<0 ? zside=-1 : zside=+1;
1097 
1098  if (recentoccupancy_digi[eta][phi][depth]==0)
1099  {
1100  if (debug_>0)
1101  {
1102  std::cout <<"DEAD CELL; NO RECENT OCCUPANCY: subdet = "<<subdet<<", ieta = "<<ieta<<", iphi = "<<iphi<<" depth = "<<depth+1<<std::endl;
1103  std::cout <<"\t RAW COORDINATES: eta = "<<eta<< " phi = "<<phi<<" depth = "<<depth<<std::endl;
1104  std::cout <<"\t Present? "<<present_digi[eta][phi][depth]<<std::endl;
1105  }
1106 
1107  // Don't fill HORing2 if boolean enabled
1108  if (excludeHORing2_==true && abs(ieta)>10 && isSiPM(ieta,iphi,depth+1)==false)
1109  continue;
1110 
1111  // no digi was found for the N events; Fill cell as bad for all N events (N = checkN);
1113  }
1114  } // for (int subdet=1;subdet<=4;++subdet)
1115  } // for (int phi=0;...)
1116  } // for (int eta=0;...)
1117  } //for (int depth=1;...)
1119 
1120  return;
1121 
1122 } // void HcalDeadCellMonitor::fillNevents_recentdigis()
bool present_digi[85][72][4]
int zside(DetId 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)
void HcalDeadCellMonitor::fillNevents_recentrechits ( )
private

Definition at line 1128 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().

1129 {
1130  // Fill Histograms showing unoccupied rechits, or rec hits with low energy
1131 
1132  // This test is a bit pointless, unless the energy threshold is greater than the ZS threshold.
1133  // If we require that cells are always < thresh to be flagged by this test, and if
1134  // thresh < ZS, then we will never catch any cells, since they'll show up as dead in the
1135  // neverpresent/occupancy test plots first.
1136  // Only exception is if something strange is going on between ZS ADC value an RecHit energy?
1137 
1138  if (!deadmon_test_rechits_) return;
1140 
1141  if (debug_>0)
1142  std::cout <<"<HcalDeadCellMonitor::fillNevents_energy> BELOW-ENERGY-THRESHOLD PLOTS"<<std::endl;
1143 
1144  int ieta=0;
1145  int iphi=0;
1146 
1147  int etabins=0;
1148  int phibins=0;
1149 
1151  if ((deadevt_ >= 10 && deadevt_<minDeadEventCount_) || (deadevt_ >= 10 && is_RBX_loss_==1)) // maybe not enough events to run the standard test
1152  // if( is_RBX_loss_ == 1 ) // but enough to detect RBX loss
1153  for (unsigned int depth=0;depth<RecentMissingRecHitsByDepth.depth.size();++depth)
1154  {
1155  RecentMissingRecHitsByDepth.depth[depth]->setBinContent(0,0,ievt_);
1156  etabins=RecentMissingRecHitsByDepth.depth[depth]->getNbinsX();
1157  phibins=RecentMissingRecHitsByDepth.depth[depth]->getNbinsY();
1158  for (int eta=0;eta<etabins;++eta)
1159  for (int phi=0;phi<phibins;++phi)
1160  {
1161  iphi=phi+1;
1162  for (int subdet=1;subdet<=4;++subdet)
1163  {
1164  ieta=CalcIeta((HcalSubdetector)subdet,eta,depth+1);
1165  if (ieta==-9999) continue;
1166  if (!validDetId((HcalSubdetector)subdet, ieta, iphi, depth+1))
1167  continue;
1168  // now check which dead cell tests failed; increment counter if any failed
1169  HcalDetId TempID((HcalSubdetector)subdet, ieta, iphi, (int)depth+1);
1170 
1171  int index = logicalMap_->getHcalFrontEndId(TempID).rbxIndex();
1172  // if(subdet==HcalForward) continue;
1173 
1174  if(occupancy_RBX[index]==0)
1175  {
1177  RecentMissingRecHitsByDepth.depth[depth]->Fill(ieta,iphi,deadevt_);
1178  }
1179  }
1180  }
1181  }
1183 
1184  if (deadevt_ < minDeadEventCount_) return; // not enough entries to make a determination for this LS
1185 
1186  for (unsigned int depth=0;depth<RecentMissingRecHitsByDepth.depth.size();++depth)
1187  {
1188  RecentMissingRecHitsByDepth.depth[depth]->setBinContent(0,0,ievt_);
1189  etabins=RecentMissingRecHitsByDepth.depth[depth]->getNbinsX();
1190  phibins=RecentMissingRecHitsByDepth.depth[depth]->getNbinsY();
1191  for (int eta=0;eta<etabins;++eta)
1192  {
1193  for (int subdet=1;subdet<=4;++subdet)
1194  {
1195  ieta=CalcIeta((HcalSubdetector)subdet,eta,depth+1);
1196  if (ieta==-9999) continue;
1197  for (int phi=0;phi<phibins;++phi)
1198  {
1199  iphi=phi+1;
1200  if (!validDetId((HcalSubdetector)subdet, ieta, iphi, depth+1))
1201  continue;
1202 
1203  if (recentoccupancy_rechit[eta][phi][depth]>0) continue; // cell exceeded energy at least once, so it's not dead
1204 
1205  // Ignore subdetectors that weren't in run?
1206  /*
1207  if ((subdet==HcalBarrel && !HBpresent_) ||
1208  (subdet==HcalEndcap &&!HEpresent_) ||
1209  (subdet==HcalOuter &&!HOpresent_) ||
1210  (subdet==HcalForward &&!HFpresent_)) continue;
1211  */
1212 
1213  int zside=0;
1214  if (subdet==HcalForward) // shift HcalForward ieta
1215  {
1216  ieta<0 ? zside=-1 : zside=+1;
1217  }
1218 
1219  if (debug_>2)
1220  std::cout <<"DEAD CELL; BELOW ENERGY THRESHOLD; subdet = "<<subdet<<" ieta = "<<ieta<<", phi = "<<iphi<<" depth = "<<depth+1<<std::endl;
1221  if (excludeHORing2_==true && abs(ieta)>10 && isSiPM(ieta,iphi,depth+1)==false)
1222  continue;
1223 
1225  } // loop on phi bins
1226  } // for (unsigned int depth=1;depth<=4;++depth)
1227  } // // loop on subdetectors
1228  } // for (int eta=0;...)
1229 
1231 
1232  return;
1233 } // void HcalDeadCellMonitor::fillNevents_recentrechits()
int zside(DetId 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)
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(), gather_cfg::cout, HcalBaseDQMonitor::debug_, 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  auto eta_index = CalcEtaBin(digi.id().subdet(), ieta, depth);
910  if (eta_index < 0) {
911  // invalid index, return
912  if (debug_ > 0)
913  std::cout << "<HcalDeadCellMonitor::process_Digi> Invalid bin returned, eta_index = " << eta_index << std::endl;
914 
915  return;
916  }
917 
918  ++recentoccupancy_digi[eta_index][iphi-1][depth-1];
919 
920  // If previously-missing digi found, change boolean status and fill histogram
921  if (present_digi[eta_index][iphi-1][depth-1]==false)
922  {
923  if (DigiPresentByDepth.depth[depth-1])
924  {
925  DigiPresentByDepth.depth[depth-1]->setBinContent(eta_index+1,iphi,1);
926  }
927  present_digi[eta_index][iphi-1][depth-1]=true;
928  }
929  return;
930 }
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)
tuple cout
Definition: gather_cfg.py:121
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 935 of file HcalDeadCellMonitor.cc.

References CalcEtaBin(), gather_cfg::cout, HcalBaseDQMonitor::debug_, 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.

936 {
937  float en = rechit->energy();
938  HcalDetId id(rechit->detid().rawId());
939  int ieta = id.ieta();
940  int iphi = id.iphi();
941  int depth = id.depth();
942 
943  int eta_index = CalcEtaBin(id.subdet(),ieta,depth);
944  if (eta_index < 0) {
945  // invalid index, return
946  if (debug_ > 0)
947  std::cout << "<HcalDeadCellMonitor::process_Digi> Invalid bin returned, eta_index = " << eta_index << std::endl;
948 
949  return;
950  }
951 
952  if (id.subdet()==HcalBarrel)
953  {
954  if (en>=HBenergyThreshold_)
955  {
956  ++recentoccupancy_rechit[eta_index][iphi-1][depth-1];
957  present_rechit[eta_index][iphi-1][depth-1]=true;
958  if (RecHitPresentByDepth.depth[depth-1])
959  RecHitPresentByDepth.depth[depth-1]->setBinContent(eta_index+1,iphi,1);
960  }
962  // RBX index, HB RBX indices are 0-35
963  int RBXindex = logicalMap_->getHcalFrontEndId(rechit->detid()).rbxIndex();
964 
965  occupancy_RBX[RBXindex]++;
967  }
968  else if (id.subdet()==HcalEndcap)
969  {
970  if (en>=HEenergyThreshold_)
971  {
972  ++recentoccupancy_rechit[eta_index][iphi-1][depth-1];
973  present_rechit[eta_index][iphi-1][depth-1]=true;
974  if (RecHitPresentByDepth.depth[depth-1])
975  RecHitPresentByDepth.depth[depth-1]->setBinContent(eta_index+1,iphi,1);
976  }
978  // RBX index, HE RBX indices are 36-71
979  int RBXindex = logicalMap_->getHcalFrontEndId(rechit->detid()).rbxIndex();
980 
981  occupancy_RBX[RBXindex]++;
983  }
984  else if (id.subdet()==HcalForward)
985  {
986  if (en>=HFenergyThreshold_)
987  {
988  ++recentoccupancy_rechit[eta_index][iphi-1][depth-1];
989 
990  present_rechit[eta_index][iphi-1][depth-1]=true;
991  if (RecHitPresentByDepth.depth[depth-1])
992  RecHitPresentByDepth.depth[depth-1]->setBinContent(eta_index+1,iphi,1);
993  }
995  // RBX index, HF RBX indices are 132-155
996  int RBXindex = logicalMap_->getHcalFrontEndId(rechit->detid()).rbxIndex();
997 
998  occupancy_RBX[RBXindex]++;
1000  }
1001  else if (id.subdet()==HcalOuter)
1002  {
1003  if (en>=HOenergyThreshold_)
1004  {
1005  ++recentoccupancy_rechit[eta_index][iphi-1][depth-1];
1006  present_rechit[eta_index][iphi-1][depth-1]=true;
1007  if (RecHitPresentByDepth.depth[depth-1])
1008  RecHitPresentByDepth.depth[depth-1]->setBinContent(eta_index+1,iphi,1);
1009  }
1011  // RBX index, HO RBX indices are 73-95 (odd), 96-107 (all), 108-119 (odd), 120-130 (EXCL), 131
1012  int RBXindex = logicalMap_->getHcalFrontEndId(rechit->detid()).rbxIndex();
1013 
1014  occupancy_RBX[RBXindex]++;
1016  }
1017 }
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:51
unsigned int recentoccupancy_rechit[85][72][4]
const HcalFrontEndId getHcalFrontEndId(const DetId &)
int CalcEtaBin(int subdet, int ieta, int depth)
tuple cout
Definition: gather_cfg.py:121
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)
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
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 1611 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().

1612 {
1613 
1614  // zero all counters
1615 
1616  // 2D histogram counters
1617  for (unsigned int i=0;i<85;++i)
1618  {
1619  for (unsigned int j=0;j<72;++j)
1620  {
1621  for (unsigned int k=0;k<4;++k)
1622  {
1623  if (resetpresent) present_digi[i][j][k]=false; // keeps track of whether digi was ever present
1624  if (resetpresent) present_rechit[i][j][k]=false;
1625  recentoccupancy_digi[i][j][k]=0; // counts occupancy in last (checkNevents) events
1626  recentoccupancy_rechit[i][j][k]=0; // counts instances of cell above threshold energy in last (checkNevents)
1627  }
1628  }
1629  }
1630 
1631  for (unsigned int i=0;i<156;++i)
1632  {
1633  occupancy_RBX[i] = 0;
1634  rbxlost[i] = 0;
1635  }
1636 
1637  return;
1638 } // 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().