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 edm::EDAnalyzer edm::EDConsumerBase

Public Member Functions

void analyze (edm::Event const &e, edm::EventSetup const &s)
 
void beginRun (const edm::Run &run, const edm::EventSetup &c)
 
void cleanup ()
 
void endJob ()
 
void endLuminosityBlock (const edm::LuminosityBlock &lumiSeg, const edm::EventSetup &c)
 
void endRun (const edm::Run &run, const edm::EventSetup &c)
 
 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 ()
 
 ~HcalDeadCellMonitor ()
 
- Public Member Functions inherited from HcalBaseDQMonitor
 HcalBaseDQMonitor (const edm::ParameterSet &ps)
 
 HcalBaseDQMonitor ()
 
virtual ~HcalBaseDQMonitor ()
 
- Public Member Functions inherited from edm::EDAnalyzer
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 EDAnalyzer ()
 
ModuleDescription const & moduleDescription () const
 
std::string workerType () const
 
virtual ~EDAnalyzer ()
 
- Public Member Functions inherited from edm::EDConsumerBase
 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
 
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::EDAnalyzer
typedef EDAnalyzer ModuleType
 
- Static Public Member Functions inherited from edm::EDAnalyzer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &)
 
- Protected Member Functions inherited from HcalBaseDQMonitor
virtual void beginJob ()
 
virtual void beginLuminosityBlock (const edm::LuminosityBlock &lumiSeg, const edm::EventSetup &c)
 
void getLogicalMap (const edm::EventSetup &c)
 
bool IsAllowedCalibType ()
 
bool LumiInOrder (int lumisec)
 
void SetupEtaPhiHists (EtaPhiHists &hh, std::string Name, std::string Units)
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
- Protected Attributes inherited from HcalBaseDQMonitor
std::vector< int > AllowedCalibTypes_
 
int badChannelStatusMask_
 
int currentLS
 
int currenttype_
 
DQMStoredbe_
 
int debug_
 
bool enableCleanup_
 
bool eventAllowed_
 
bool HBpresent_
 
bool HEpresent_
 
bool HFpresent_
 
bool HOpresent_
 
int ievt_
 
std::map< unsigned int, int > KnownBadCells_
 
int levt_
 
HcalLogicalMaplogicalMap_
 
bool makeDiagnostics_
 
MonitorElementmeIevt_
 
MonitorElementmeLevt_
 
bool mergeRuns_
 
MonitorElementmeTevt_
 
MonitorElementmeTevtHist_
 
bool needLogicalMap_
 
int NLumiBlocks_
 
bool Online_
 
std::string prefixME_
 
MonitorElementProblemsCurrentLB
 
MonitorElementProblemsVsLB
 
MonitorElementProblemsVsLB_HB
 
MonitorElementProblemsVsLB_HBHEHF
 
MonitorElementProblemsVsLB_HE
 
MonitorElementProblemsVsLB_HF
 
MonitorElementProblemsVsLB_HO
 
bool skipOutOfOrderLS_
 
std::string subdir_
 
int tevt_
 

Detailed Description

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_, 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 633 of file HcalDeadCellMonitor.cc.

References HcalBaseDQMonitor::analyze(), L1GtfeExtWord::beamMode(), 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(), edm::Handle< T >::product(), rbxlost, reset(), HcalBaseDQMonitor::tevt_, tok_dcs_, tok_gtEvm_, tok_hbhe_, tok_hbhedigi_, tok_hf_, tok_hfdigi_, tok_ho_, tok_hodigi_, L1GtfeExtWord::totalIntensityBeam1(), and L1GtfeExtWord::totalIntensityBeam2().

634 {
635  if (!IsAllowedCalibType()) return;
636  endLumiProcessed_=false;
637 
638  if(doReset_)
639  this->reset();
640 
641  Nevents->Fill(0,1); // count all events of allowed calibration type, even if their lumi block is not in the right order
642  if (LumiInOrder(e.luminosityBlock())==false) return;
643  // try to get rechits and digis
647 
651 
653 
655  // check if detectors whether they were ON
657  e.getByToken(tok_dcs_, dcsStatus);
658 
659  if (dcsStatus.isValid() && dcsStatus->size() != 0)
660  {
661  if ((*dcsStatus)[0].ready(DcsStatus::HBHEa) &&
662  (*dcsStatus)[0].ready(DcsStatus::HBHEb) &&
663  (*dcsStatus)[0].ready(DcsStatus::HBHEc))
664  {
665  hbhedcsON = true;
666  if (debug_) std::cout << "hbhe on" << std::endl;
667  }
668  else hbhedcsON = false;
669 
670  if ((*dcsStatus)[0].ready(DcsStatus::HF))
671  {
672  hfdcsON = true;
673  if (debug_) std::cout << "hf on" << std::endl;
674  }
675  else hfdcsON = false;
676 
677  if ((*dcsStatus)[0].ready(DcsStatus::HO))
678  {
679  hodcsON = true;
680  if (debug_) std::cout << "ho on" << std::endl;
681  }
682  else hodcsON = false;
683  }
685 
686  if (!(e.getByToken(tok_hbhedigi_,hbhe_digi)))
687  {
688  edm::LogWarning("HcalDeadCellMonitor")<< digiLabel_<<" hbhe_digi not available";
689  return;
690  }
691  if (!(e.getByToken(tok_hodigi_,ho_digi)))
692  {
693  edm::LogWarning("HcalDeadCellMonitor")<< digiLabel_<<" ho_digi not available";
694  return;
695  }
696  if (!(e.getByToken(tok_hfdigi_,hf_digi)))
697  {
698  edm::LogWarning("HcalDeadCellMonitor")<< digiLabel_<<" hf_digi not available";
699  return;
700  }
701 
702  if (!(e.getByToken(tok_hbhe_,hbhe_rechit)))
703  {
704  edm::LogWarning("HcalDeadCellMonitor")<< hbheRechitLabel_<<" hbhe_rechit not available";
705  return;
706  }
707 
708  if (!(e.getByToken(tok_hf_,hf_rechit)))
709  {
710  edm::LogWarning("HcalDeadCellMonitor")<< hfRechitLabel_<<" hf_rechit not available";
711  return;
712  }
713  if (!(e.getByToken(tok_ho_,ho_rechit)))
714  {
715  edm::LogWarning("HcalDeadCellMonitor")<< hoRechitLabel_<<" ho_rechit not available";
716  return;
717  }
718  if (!(e.getByToken(tok_gtEvm_, gtEvm_handle)))
719  {
720  edm::LogWarning("HcalDeadCellMonitor")<< "gtEvmDigis"<<" gtEvmDigis not available";
721  return;
722  }
723  L1GtfeExtWord gtfeEvmExtWord = gtEvm_handle.product()->gtfeWord();
724 
725  if (debug_>1) std::cout <<"\t<HcalDeadCellMonitor::analyze> Processing good event! event # = "<<ievt_<<std::endl;
726  // Good event found; increment counter (via base class analyze method)
727  // This also runs the allowed calibration /lumi in order tests again; remove?
729 
730  ++deadevt_; //increment local counter
731 
732  processEvent(*hbhe_rechit, *ho_rechit, *hf_rechit, *hbhe_digi, *ho_digi, *hf_digi);
733 
734  // check for presence of an RBX data loss
735  if(levt_>10 && tevt_ % 10 == 0 ) //levt_ counts events perLS, but excludes
736  { //"wrong", calibration-type events. Compare with tevt_ instead...
737  for(int i=71; i<132; i++)
738  {
739  // These RBXs in HO are excluded, set to 1 to ignore
740  // HO0: 96-107 (all)
741  // HO1: 85-95, 109-119 (all odd)
742  // HO2: 73, 75, 79, 81, 83, 121-131 (all odd)
743  if(i >= 72 && i < 95 && i%2==0)
744  occupancy_RBX[i] = 1;
745  if(i >=108 && i <= 131 && i%2==0)
746  occupancy_RBX[i] = 1;
747 
748  if(i==117 || i==131) // HO SiPMs have much less hits, 10 events not enough.
749  occupancy_RBX[i] = 1; // Also no RBX loss for SiPMs, so ignore for now.
750  if(i==77)
751  occupancy_RBX[i] = 1;
752  }
753 
754  // RBX loss detected
755  for (unsigned int i=0;i<132;++i)
756  if(occupancy_RBX[i] == 0)
757  {
758  is_RBX_loss_ = 1;
759  rbxlost[i] = 1;
760  }
761 
762  int intensity1_ = gtfeEvmExtWord.totalIntensityBeam1();
763  int intensity2_ = gtfeEvmExtWord.totalIntensityBeam2();
764 
765  is_stable_beam = gtfeEvmExtWord.beamMode() == 11 ? true : false;
766 
767  for (unsigned int i=132;i<156;++i)
768  if(occupancy_RBX[i] == 0 && gtfeEvmExtWord.beamMode() == 11)
769  if(intensity1_>100 && intensity2_>100) // only in stable beam mode (11) and with circulating beams, otherwise
770  { // this check is too sensitive in HF
771  is_RBX_loss_ = 1;
772  rbxlost[i] = 1;
773  }
774 
775  // no RBX loss, reset the counters
776  if (is_RBX_loss_ == 0)
777  for (unsigned int i=0;i<156;++i)
778  occupancy_RBX[i] = 0;
779  }
780 
781  // if RBX is lost any time during the LS, don't allow the counters to increment
782  if(is_RBX_loss_ == 1)
783  for (unsigned int i=0;i<156;++i)
784  if(rbxlost[i]==1) occupancy_RBX[i] = 0;
785 
786 } // 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:76
edm::EDGetTokenT< HODigiCollection > tok_hodigi_
const cms_uint32_t totalIntensityBeam2() const
edm::EDGetTokenT< HFRecHitCollection > tok_hf_
const cms_uint32_t totalIntensityBeam1() const
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_
T const * product() const
Definition: Handle.h:81
edm::EDGetTokenT< HBHERecHitCollection > tok_hbhe_
tuple cout
Definition: gather_cfg.py:121
edm::EDGetTokenT< L1GlobalTriggerEvmReadoutRecord > tok_gtEvm_
const cms_uint16_t beamMode() const
void HcalDeadCellMonitor::beginRun ( const edm::Run run,
const edm::EventSetup c 
)
virtual

Reimplemented from HcalBaseDQMonitor.

Definition at line 394 of file HcalDeadCellMonitor.cc.

References HcalBaseDQMonitor::badChannelStatusMask_, HcalBaseDQMonitor::beginRun(), 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_.

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

Reimplemented from HcalBaseDQMonitor.

Definition at line 506 of file HcalDeadCellMonitor.cc.

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

Referenced by endJob().

507 {
508  if (!enableCleanup_) return;
509  if (dbe_)
510  {
512  dbe_->removeContents();
513  dbe_->setCurrentFolder(subdir_+"dead_digi_never_present");
514  dbe_->removeContents();
515  dbe_->setCurrentFolder(subdir_+"dead_digi_often_missing");
516  dbe_->removeContents();
517  dbe_->setCurrentFolder(subdir_+"dead_rechit_neverpresent");
518  dbe_->removeContents();
519  dbe_->setCurrentFolder(subdir_+"dead_rechit_often_missing");
520  dbe_->removeContents();
521  dbe_->setCurrentFolder(subdir_+"dead_cell_parameters");
522  dbe_->removeContents();
523  dbe_->setCurrentFolder(subdir_+"LSvalues");
524  dbe_->removeContents();
525  }
526  return;
527 } // void HcalDeadCellMonitor::cleanup()
void removeContents(void)
erase all monitoring elements in current directory (not including subfolders);
Definition: DQMStore.cc:2765
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:585
void HcalDeadCellMonitor::endJob ( void  )
virtual

Reimplemented from HcalBaseDQMonitor.

Definition at line 627 of file HcalDeadCellMonitor.cc.

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

628 {
629  if (debug_>0) std::cout <<"HcalDeadCellMonitor::endJob()"<<std::endl;
630  if (enableCleanup_) cleanup(); // when do we force cleanup?
631 }
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 531 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().

533 {
534  // skip old lumi sections
535  if (this->LumiInOrder(lumiSeg.luminosityBlock())==false) return;
536 
537  // Reset current LS histogram
538  if (ProblemsCurrentLB)
540 
543 
544  //increase the number of LS counting, for alarmer. Only make alarms for HBHE
545  if(hbhedcsON == true && hfdcsON == true && HBpresent_ == 1 && HEpresent_ == 1 && HFpresent_ == 1)
547  else
548  alarmer_counter_ = 0;
549 
550  if(hodcsON==true && HOpresent_ == 1)
552  else
554 
555  if (!is_stable_beam)
556  {
557  alarmer_counter_ = 0;
559  }
560 
561  // Here is where we determine whether or not to process an event
562  // Not enough events
563  // there are less than minDeadEventCount_ in this LS, but RBXloss is found
564 
566  {
570 
571  endLumiProcessed_=true;
572  is_RBX_loss_=0;
573 
574  for (unsigned int i=0;i<156;++i)
575  rbxlost[i] = 0;
576 
577  if (ProblemsCurrentLB)
578  {
579  ProblemsCurrentLB->setBinContent(0,0, levt_); // underflow bin contains number of events
587  }
588  }
589 
590  if (deadevt_<minDeadEventCount_) // perform normal tasks, since no RBX loss is detected in this lumisections
591  return;
592 
593  endLumiProcessed_=true;
594  // fillNevents_problemCells checks for never-present cells
598 
599  if (ProblemsCurrentLB)
600  {
601  ProblemsCurrentLB->setBinContent(0,0, levt_); // underflow bin contains number of events
609  }
610  zeroCounters();
611  deadevt_=0;
612  is_RBX_loss_=0;
613  beamMode_ = 0;
614  return;
615 } //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 617 of file HcalDeadCellMonitor.cc.

References endLumiProcessed_, and fillNevents_problemCells().

618 {
619  // Always carry out overall occupancy test at endRun, regardless minimum number of events?
620  // Or should we require an absolute lower bound?
621  // We can always run this test; we'll use the summary client to implement a lower bound before calculating reportSummary values
622  if (endLumiProcessed_==false) fillNevents_problemCells(); // always check for never-present cells
623 
624  return;
625 }
void HcalDeadCellMonitor::fillNevents_problemCells ( )
private

Definition at line 1246 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, DigiPresentByDepth, eta(), excludeHO1P02_, excludeHORing2_, MonitorElement::Fill(), HcalBarrel, HcalEndcap, HcalForward, HcalOuter, i, HcalBaseDQMonitor::ievt_, is_RBX_loss_, isSiPM(), HcalBaseDQMonitor::KnownBadCells_, bookConverter::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().

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

Definition at line 1029 of file HcalDeadCellMonitor.cc.

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

Referenced by endLuminosityBlock().

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

Definition at line 1138 of file HcalDeadCellMonitor.cc.

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

Referenced by endLuminosityBlock().

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

Definition at line 928 of file HcalDeadCellMonitor.cc.

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

929 {
930  // Remove the validate check when we figure out how to access bad digis in digi monitor
931  //if (!digi.validate()) return; // digi must be good to be counted
932  int ieta=digi.id().ieta();
933  int iphi=digi.id().iphi();
934  int depth=digi.id().depth();
935 
936  // Fill occupancy counter
937  ++recentoccupancy_digi[CalcEtaBin(digi.id().subdet(),ieta,depth)][iphi-1][depth-1];
938 
939  // If previously-missing digi found, change boolean status and fill histogram
940  if (present_digi[CalcEtaBin(digi.id().subdet(),ieta,depth)][iphi-1][depth-1]==false)
941  {
942  if (DigiPresentByDepth.depth[depth-1])
943  {
944  DigiPresentByDepth.depth[depth-1]->setBinContent(CalcEtaBin(digi.id().subdet(),ieta,depth)+1,iphi,1);
945  }
946  present_digi[CalcEtaBin(digi.id().subdet(),ieta,depth)][iphi-1][depth-1]=true;
947  }
948  return;
949 }
bool present_digi[85][72][4]
std::vector< MonitorElement * > depth
unsigned int recentoccupancy_digi[85][72][4]
EtaPhiHists DigiPresentByDepth
int CalcEtaBin(int subdet, int ieta, int depth)
template<class T >
void HcalDeadCellMonitor::process_RecHit ( T rechit)
private

Referenced by processEvent().

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

Definition at line 954 of file HcalDeadCellMonitor.cc.

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

955 {
956  float en = rechit->energy();
957  HcalDetId id(rechit->detid().rawId());
958  int ieta = id.ieta();
959  int iphi = id.iphi();
960  int depth = id.depth();
961 
962  if (id.subdet()==HcalBarrel)
963  {
964  if (en>=HBenergyThreshold_)
965  {
966  ++recentoccupancy_rechit[CalcEtaBin(id.subdet(),ieta,depth)][iphi-1][depth-1];
967  present_rechit[CalcEtaBin(id.subdet(),ieta,depth)][iphi-1][depth-1]=true;
968  if (RecHitPresentByDepth.depth[depth-1])
969  RecHitPresentByDepth.depth[depth-1]->setBinContent(CalcEtaBin(id.subdet(),ieta,depth)+1,iphi,1);
970  }
972  // RBX index, HB RBX indices are 0-35
973  int RBXindex = logicalMap_->getHcalFrontEndId(rechit->detid()).rbxIndex();
974 
975  occupancy_RBX[RBXindex]++;
977  }
978  else if (id.subdet()==HcalEndcap)
979  {
980  if (en>=HEenergyThreshold_)
981  {
982  ++recentoccupancy_rechit[CalcEtaBin(id.subdet(),ieta,depth)][iphi-1][depth-1];
983  present_rechit[CalcEtaBin(id.subdet(),ieta,depth)][iphi-1][depth-1]=true;
984  if (RecHitPresentByDepth.depth[depth-1])
985  RecHitPresentByDepth.depth[depth-1]->setBinContent(CalcEtaBin(id.subdet(),ieta,depth)+1,iphi,1);
986  }
988  // RBX index, HE RBX indices are 36-71
989  int RBXindex = logicalMap_->getHcalFrontEndId(rechit->detid()).rbxIndex();
990 
991  occupancy_RBX[RBXindex]++;
993  }
994  else if (id.subdet()==HcalForward)
995  {
996  if (en>=HFenergyThreshold_)
997  {
998  ++recentoccupancy_rechit[CalcEtaBin(id.subdet(),ieta,depth)][iphi-1][depth-1];
999 
1000  present_rechit[CalcEtaBin(id.subdet(),ieta,depth)][iphi-1][depth-1]=true;
1001  if (RecHitPresentByDepth.depth[depth-1])
1002  RecHitPresentByDepth.depth[depth-1]->setBinContent(CalcEtaBin(id.subdet(),ieta,depth)+1,iphi,1);
1003  }
1005  // RBX index, HF RBX indices are 132-155
1006  int RBXindex = logicalMap_->getHcalFrontEndId(rechit->detid()).rbxIndex();
1007 
1008  occupancy_RBX[RBXindex]++;
1010  }
1011  else if (id.subdet()==HcalOuter)
1012  {
1013  if (en>=HOenergyThreshold_)
1014  {
1015  ++recentoccupancy_rechit[CalcEtaBin(id.subdet(),ieta,depth)][iphi-1][depth-1];
1016  present_rechit[CalcEtaBin(id.subdet(),ieta,depth)][iphi-1][depth-1]=true;
1017  if (RecHitPresentByDepth.depth[depth-1])
1018  RecHitPresentByDepth.depth[depth-1]->setBinContent(CalcEtaBin(id.subdet(),ieta,depth)+1,iphi,1);
1019  }
1021  // RBX index, HO RBX indices are 73-95 (odd), 96-107 (all), 108-119 (odd), 120-130 (EXCL), 131
1022  int RBXindex = logicalMap_->getHcalFrontEndId(rechit->detid()).rbxIndex();
1023 
1024  occupancy_RBX[RBXindex]++;
1026  }
1027 }
bool present_rechit[85][72][4]
EtaPhiHists RecHitPresentByDepth
std::vector< MonitorElement * > depth
unsigned int occupancy_RBX[156]
HcalLogicalMap * logicalMap_
int ieta() const
get the cell ieta
Definition: HcalDetId.h:36
unsigned int recentoccupancy_rechit[85][72][4]
const HcalFrontEndId getHcalFrontEndId(const DetId &)
int CalcEtaBin(int subdet, int ieta, int depth)
void HcalDeadCellMonitor::processEvent ( const HBHERecHitCollection hbHits,
const HORecHitCollection hoHits,
const HFRecHitCollection hfHits,
const HBHEDigiCollection hbhedigi,
const HODigiCollection hodigi,
const HFDigiCollection hfdigi 
)

Definition at line 791 of file HcalDeadCellMonitor.cc.

References funct::abs(), edm::SortedCollection< T, SORT >::begin(), binmapd2, gather_cfg::cout, 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, gen::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().

797 {
798  if (debug_>1) std::cout <<"<HcalDeadCellMonitor::processEvent> Processing event..."<<std::endl;
799 
800  // Do Digi-Based dead cell searches
801 
802  // Make sure histograms update
803  for (unsigned int i=0;i<DigiPresentByDepth.depth.size();++i)
804  DigiPresentByDepth.depth[i]->update();
805 
811 
813  {
814 
815  for (unsigned int i=0;i<RecentMissingDigisByDepth.depth.size();++i)
816  RecentMissingDigisByDepth.depth[i]->update();
817 
823  }
824 
826  j!=hbhedigi.end(); ++j)
827  {
828  const HBHEDataFrame digi = (const HBHEDataFrame)(*j);
829  processEvent_HBHEdigi(digi);
830  }
831 
833  j!=hodigi.end(); ++j)
834  {
835  const HODataFrame digi = (const HODataFrame)(*j);
836  process_Digi(digi);
837  }
839  j!=hfdigi.end(); ++j)
840  {
841  const HFDataFrame digi = (const HFDataFrame)(*j);
842  process_Digi(digi);
843  }
845 
846  // Search for "dead" cells below a certain energy
848  {
849  // Normalization Fill
850  for (unsigned int i=0;i<RecentMissingRecHitsByDepth.depth.size();++i)
852 
858 
860  j!=hbHits.end(); ++j)
861  process_RecHit(j);
862 
864  k!=hoHits.end(); ++k)
865  process_RecHit(k);
866 
868  j!=hfHits.end(); ++j)
869  process_RecHit(j);
870 
871  } // if (deadmon_test_rechits)
872 
873  if (!makeDiagnostics_) return;
874  if (tevt_>=NLumiBlocks_) return;
875  // Diagnostic plots -- add number of missing channels vs event number
876  int hbpresent=0;
877  int hepresent=0;
878  int hopresent=0;
879  int hfpresent=0;
880  int ieta=0;
881  for (int d=0;d<4;++d)
882  {
883  for (int phi=0;phi<72;++phi)
884  {
885  for (int eta=0;eta<85;++eta)
886  {
887  if (!present_digi[eta][phi][d]) continue;
888  if (d==3) ++hopresent;
889  else if (d==2) ++hepresent;
890  else if (d==1)
891  {
892  ieta=binmapd2[eta];
893  //if (abs(ieta)>29) continue;
894  if (abs(ieta)>29) ++hfpresent;
895  else if (abs(ieta)<17) ++hbpresent; //depths 15&16
896  else ++hepresent;
897  }
898  else if (d==0)
899  {
900  ieta=eta-42;
901  if (abs(ieta)>29) ++hfpresent;
902  else if (abs(ieta)<17) ++hbpresent;
903  else ++hepresent;
904  }
905  }
906  }
907  } // for (int d=0;d<4;++d)
908  HBDeadVsEvent->Fill(tevt_,2592-hbpresent);
909  HEDeadVsEvent->Fill(tevt_,2592-hepresent);
910  HODeadVsEvent->Fill(tevt_,2160-hopresent);
911  HFDeadVsEvent->Fill(tevt_,1728-hfpresent);
912  return;
913 } // void HcalDeadCellMonitor::processEvent(...)
int i
Definition: DBlmapReader.cc:9
MonitorElement * NumberOfRecentMissingRecHitsHF
MonitorElement * NumberOfNeverPresentDigisHB
const int binmapd2[]
MonitorElement * HEDeadVsEvent
MonitorElement * NumberOfRecentMissingRecHits
bool present_digi[85][72][4]
MonitorElement * NumberOfNeverPresentDigisHE
std::vector< HBHEDataFrame >::const_iterator const_iterator
MonitorElement * NumberOfRecentMissingDigisHB
void update(void)
Mark the object updated.
void process_RecHit(T &rechit)
T eta() const
MonitorElement * NumberOfRecentMissingDigisHE
void Fill(long long x)
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
int k[5][pyjets_maxn]
const_iterator end() const
EtaPhiHists RecentMissingDigisByDepth
MonitorElement * NumberOfRecentMissingRecHitsHO
EtaPhiHists DigiPresentByDepth
void FillUnphysicalHEHFBins(std::vector< TH2F > &hh)
EtaPhiHists RecentMissingRecHitsByDepth
MonitorElement * HBDeadVsEvent
MonitorElement * NumberOfNeverPresentDigis
MonitorElement * NumberOfRecentMissingDigis
MonitorElement * NumberOfRecentMissingDigisHF
tuple cout
Definition: gather_cfg.py:121
void process_Digi(T &digi)
void processEvent_HBHEdigi(HBHEDataFrame digi)
MonitorElement * HFDeadVsEvent
MonitorElement * HODeadVsEvent
const_iterator begin() const
MonitorElement * NumberOfRecentMissingRecHitsHB
Definition: DDAxes.h:10
void HcalDeadCellMonitor::processEvent_HBHEdigi ( HBHEDataFrame  digi)
private

Definition at line 920 of file HcalDeadCellMonitor.cc.

References process_Digi().

Referenced by processEvent().

921 {
922  // Simply check whether a digi is present. If so, increment occupancy counter.
923  process_Digi(digi);
924  return;
925 } //void HcalDeadCellMonitor::processEvent_HBHEdigi(HBHEDigiCollection::const_iterator j)
void process_Digi(T &digi)
void HcalDeadCellMonitor::reset ( void  )
virtual

Reimplemented from HcalBaseDQMonitor.

Definition at line 428 of file HcalDeadCellMonitor.cc.

References alarmer_counter_, alarmer_counterHO01_, beamMode_, gather_cfg::cout, deadevt_, deadmon_test_digis_, deadmon_test_rechits_, HcalBaseDQMonitor::debug_, EtaPhiHists::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(), beginRun(), and setup().

429 {
430  if (debug_>1) std::cout <<"HcalDeadCellMonitor::reset()"<<std::endl;
431  doReset_ = false;
432 
434  zeroCounters();
435  deadevt_=0;
436  is_RBX_loss_ = 0;
437  beamMode_ = 0 ;
438  alarmer_counter_ = 0;
440  is_stable_beam = true;
441  hbhedcsON = true; hfdcsON = true; hodcsON = true;
447 
448  for (unsigned int depth=0;depth<DigiPresentByDepth.depth.size();++depth)
449  DigiPresentByDepth.depth[depth]->Reset();
450 
451  // Mark HORing2 channels as present (fill with a 2, rather than a 1, to distinguish between this setting and actual presence)
452  if (excludeHORing2_==true && DigiPresentByDepth.depth.size()>3)
453  {
454  for (int ieta=11;ieta<=15;++ieta)
455  for (int iphi=1;iphi<=72;++iphi)
456  {
457  // Don't fill ring2 SiPMs, since they will still be active even if the rest of HO is excluded.
458  if (isSiPM(ieta,iphi,4)==false)
459  DigiPresentByDepth.depth[3]->Fill(ieta,iphi,2);
460  //std::cout <<" FILLING ("<<-1*ieta<<", "<<iphi<<") with '2'"<<std::endl;
461  DigiPresentByDepth.depth[3]->Fill(-1*ieta,iphi,2);
462  }
463  }
465 
466 
468  {
471  }
473  {
486 
487  // Mark HORing2 channels as present (fill with a 2, rather than a 1, to distinguish between this setting and actual presence)
488  if (excludeHORing2_==true && RecHitPresentByDepth.depth.size()>3)
489  {
490  for (int ieta=11;ieta<=15;++ieta)
491  for (int iphi=1;iphi<=72;++iphi)
492  {
493  RecHitPresentByDepth.depth[3]->Fill(ieta,iphi,2);
494  RecHitPresentByDepth.depth[3]->Fill(-1*ieta,iphi,2);
495  }
496  }
498  }
499 
500  Nevents->Reset();
501 } // 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 ( void  )
virtual

Reimplemented from HcalBaseDQMonitor.

Definition at line 85 of file HcalDeadCellMonitor.cc.

References DQMStore::book1D(), DQMStore::book2D(), DQMStore::bookFloat(), DQMStore::bookInt(), DQMStore::bookProfile(), gather_cfg::cout, HcalBaseDQMonitor::dbe_, 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::setCurrentFolder(), HcalBaseDQMonitor::setup(), setupDone_, HcalBaseDQMonitor::SetupEtaPhiHists(), HcalBaseDQMonitor::subdir_, create_public_lumi_plots::units, and zeroCounters().

Referenced by beginRun().

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

Definition at line 1621 of file HcalDeadCellMonitor.cc.

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

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

1622 {
1623 
1624  // zero all counters
1625 
1626  // 2D histogram counters
1627  for (unsigned int i=0;i<85;++i)
1628  {
1629  for (unsigned int j=0;j<72;++j)
1630  {
1631  for (unsigned int k=0;k<4;++k)
1632  {
1633  if (resetpresent) present_digi[i][j][k]=false; // keeps track of whether digi was ever present
1634  if (resetpresent) present_rechit[i][j][k]=false;
1635  recentoccupancy_digi[i][j][k]=0; // counts occupancy in last (checkNevents) events
1636  recentoccupancy_rechit[i][j][k]=0; // counts instances of cell above threshold energy in last (checkNevents)
1637  }
1638  }
1639  }
1640 
1641  for (unsigned int i=0;i<156;++i)
1642  {
1643  occupancy_RBX[i] = 0;
1644  rbxlost[i] = 0;
1645  }
1646 
1647  return;
1648 } // 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]
int k[5][pyjets_maxn]
unsigned int recentoccupancy_digi[85][72][4]

Member Data Documentation

int HcalDeadCellMonitor::alarmer_counter_
private

Definition at line 108 of file HcalDeadCellMonitor.h.

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

int HcalDeadCellMonitor::alarmer_counterHO01_
private

Definition at line 109 of file HcalDeadCellMonitor.h.

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

int HcalDeadCellMonitor::beamMode_
private

Definition at line 95 of file HcalDeadCellMonitor.h.

Referenced by endLuminosityBlock(), and reset().

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

Definition at line 61 of file HcalDeadCellMonitor.h.

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

Definition at line 113 of file HcalDeadCellMonitor.h.

Referenced by analyze(), and HcalDeadCellMonitor().

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

Definition at line 96 of file HcalDeadCellMonitor.h.

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

bool HcalDeadCellMonitor::endLumiProcessed_
private

Definition at line 125 of file HcalDeadCellMonitor.h.

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

double HcalDeadCellMonitor::energyThreshold_
private

Definition at line 73 of file HcalDeadCellMonitor.h.

Referenced by HcalDeadCellMonitor().

bool HcalDeadCellMonitor::excludeHO1P02_
private

Definition at line 128 of file HcalDeadCellMonitor.h.

Referenced by fillNevents_problemCells(), and HcalDeadCellMonitor().

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

Definition at line 98 of file HcalDeadCellMonitor.h.

Referenced by processEvent(), and setup().

double HcalDeadCellMonitor::HBenergyThreshold_
private

Definition at line 74 of file HcalDeadCellMonitor.h.

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

bool HcalDeadCellMonitor::hbhedcsON
private

Definition at line 111 of file HcalDeadCellMonitor.h.

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

edm::InputTag HcalDeadCellMonitor::hbheRechitLabel_
private

Definition at line 114 of file HcalDeadCellMonitor.h.

Referenced by analyze(), and HcalDeadCellMonitor().

MonitorElement * HcalDeadCellMonitor::HEDeadVsEvent
private

Definition at line 98 of file HcalDeadCellMonitor.h.

Referenced by processEvent(), and setup().

double HcalDeadCellMonitor::HEenergyThreshold_
private

Definition at line 75 of file HcalDeadCellMonitor.h.

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

bool HcalDeadCellMonitor::hfdcsON
private

Definition at line 111 of file HcalDeadCellMonitor.h.

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

MonitorElement * HcalDeadCellMonitor::HFDeadVsEvent
private

Definition at line 98 of file HcalDeadCellMonitor.h.

Referenced by processEvent(), and setup().

double HcalDeadCellMonitor::HFenergyThreshold_
private

Definition at line 77 of file HcalDeadCellMonitor.h.

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

edm::InputTag HcalDeadCellMonitor::hfRechitLabel_
private

Definition at line 114 of file HcalDeadCellMonitor.h.

Referenced by analyze(), and HcalDeadCellMonitor().

bool HcalDeadCellMonitor::hodcsON
private

Definition at line 111 of file HcalDeadCellMonitor.h.

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

MonitorElement * HcalDeadCellMonitor::HODeadVsEvent
private

Definition at line 98 of file HcalDeadCellMonitor.h.

Referenced by processEvent(), and setup().

double HcalDeadCellMonitor::HOenergyThreshold_
private

Definition at line 76 of file HcalDeadCellMonitor.h.

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

edm::InputTag HcalDeadCellMonitor::hoRechitLabel_
private

Definition at line 114 of file HcalDeadCellMonitor.h.

Referenced by analyze(), and HcalDeadCellMonitor().

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

Definition at line 110 of file HcalDeadCellMonitor.h.

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

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

Definition at line 94 of file HcalDeadCellMonitor.h.

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

unsigned int HcalDeadCellMonitor::NumBadHB
private

Definition at line 112 of file HcalDeadCellMonitor.h.

Referenced by endLuminosityBlock(), and fillNevents_problemCells().

unsigned int HcalDeadCellMonitor::NumBadHE
private

Definition at line 112 of file HcalDeadCellMonitor.h.

Referenced by endLuminosityBlock(), and fillNevents_problemCells().

unsigned int HcalDeadCellMonitor::NumBadHF
private

Definition at line 112 of file HcalDeadCellMonitor.h.

Referenced by endLuminosityBlock(), and fillNevents_problemCells().

unsigned int HcalDeadCellMonitor::NumBadHFLUMI
private

Definition at line 112 of file HcalDeadCellMonitor.h.

Referenced by endLuminosityBlock(), and fillNevents_problemCells().

unsigned int HcalDeadCellMonitor::NumBadHO
private

Definition at line 112 of file HcalDeadCellMonitor.h.

Referenced by endLuminosityBlock(), and fillNevents_problemCells().

unsigned int HcalDeadCellMonitor::NumBadHO0
private

Definition at line 112 of file HcalDeadCellMonitor.h.

Referenced by endLuminosityBlock().

unsigned int HcalDeadCellMonitor::NumBadHO01
private

Definition at line 112 of file HcalDeadCellMonitor.h.

Referenced by fillNevents_problemCells().

unsigned int HcalDeadCellMonitor::NumBadHO12
private

Definition at line 112 of file HcalDeadCellMonitor.h.

Referenced by endLuminosityBlock(), and fillNevents_problemCells().

int HcalDeadCellMonitor::NumBadHO1P02
private

Definition at line 130 of file HcalDeadCellMonitor.h.

Referenced by fillNevents_problemCells().

unsigned int HcalDeadCellMonitor::NumBadHO2
private

Definition at line 112 of file HcalDeadCellMonitor.h.

Referenced by fillNevents_problemCells().

MonitorElement* HcalDeadCellMonitor::NumberOfNeverPresentDigis
private

Definition at line 89 of file HcalDeadCellMonitor.h.

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

MonitorElement * HcalDeadCellMonitor::NumberOfNeverPresentDigisHB
private

Definition at line 89 of file HcalDeadCellMonitor.h.

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

MonitorElement * HcalDeadCellMonitor::NumberOfNeverPresentDigisHE
private

Definition at line 89 of file HcalDeadCellMonitor.h.

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

MonitorElement * HcalDeadCellMonitor::NumberOfNeverPresentDigisHF
private

Definition at line 89 of file HcalDeadCellMonitor.h.

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

MonitorElement * HcalDeadCellMonitor::NumberOfNeverPresentDigisHO
private

Definition at line 89 of file HcalDeadCellMonitor.h.

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

MonitorElement* HcalDeadCellMonitor::NumberOfNeverPresentRecHits
private

Definition at line 92 of file HcalDeadCellMonitor.h.

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

MonitorElement * HcalDeadCellMonitor::NumberOfNeverPresentRecHitsHB
private

Definition at line 92 of file HcalDeadCellMonitor.h.

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

MonitorElement * HcalDeadCellMonitor::NumberOfNeverPresentRecHitsHE
private

Definition at line 92 of file HcalDeadCellMonitor.h.

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

MonitorElement * HcalDeadCellMonitor::NumberOfNeverPresentRecHitsHF
private

Definition at line 92 of file HcalDeadCellMonitor.h.

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

MonitorElement * HcalDeadCellMonitor::NumberOfNeverPresentRecHitsHO
private

Definition at line 92 of file HcalDeadCellMonitor.h.

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

MonitorElement* HcalDeadCellMonitor::NumberOfRecentMissingDigis
private

Definition at line 90 of file HcalDeadCellMonitor.h.

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

MonitorElement * HcalDeadCellMonitor::NumberOfRecentMissingDigisHB
private

Definition at line 90 of file HcalDeadCellMonitor.h.

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

MonitorElement * HcalDeadCellMonitor::NumberOfRecentMissingDigisHE
private

Definition at line 90 of file HcalDeadCellMonitor.h.

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

MonitorElement * HcalDeadCellMonitor::NumberOfRecentMissingDigisHF
private

Definition at line 90 of file HcalDeadCellMonitor.h.

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

MonitorElement * HcalDeadCellMonitor::NumberOfRecentMissingDigisHO
private

Definition at line 90 of file HcalDeadCellMonitor.h.

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

MonitorElement* HcalDeadCellMonitor::NumberOfRecentMissingRecHits
private

Definition at line 91 of file HcalDeadCellMonitor.h.

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

MonitorElement * HcalDeadCellMonitor::NumberOfRecentMissingRecHitsHB
private

Definition at line 91 of file HcalDeadCellMonitor.h.

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

MonitorElement * HcalDeadCellMonitor::NumberOfRecentMissingRecHitsHE
private

Definition at line 91 of file HcalDeadCellMonitor.h.

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

MonitorElement * HcalDeadCellMonitor::NumberOfRecentMissingRecHitsHF
private

Definition at line 91 of file HcalDeadCellMonitor.h.

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

MonitorElement * HcalDeadCellMonitor::NumberOfRecentMissingRecHitsHO
private

Definition at line 91 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 100 of file HcalDeadCellMonitor.h.

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

MonitorElement* HcalDeadCellMonitor::ProblemsInLastNLB_HBHEHF_alarm
private

Definition at line 87 of file HcalDeadCellMonitor.h.

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

MonitorElement* HcalDeadCellMonitor::ProblemsInLastNLB_HO01_alarm
private

Definition at line 88 of file HcalDeadCellMonitor.h.

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

MonitorElement* HcalDeadCellMonitor::ProblemsVsLB
private

Definition at line 85 of file HcalDeadCellMonitor.h.

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

MonitorElement * HcalDeadCellMonitor::ProblemsVsLB_HB
private

Definition at line 85 of file HcalDeadCellMonitor.h.

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

MonitorElement * HcalDeadCellMonitor::ProblemsVsLB_HE
private

Definition at line 85 of file HcalDeadCellMonitor.h.

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

MonitorElement * HcalDeadCellMonitor::ProblemsVsLB_HF
private

Definition at line 85 of file HcalDeadCellMonitor.h.

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

MonitorElement * HcalDeadCellMonitor::ProblemsVsLB_HO
private

Definition at line 85 of file HcalDeadCellMonitor.h.

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

MonitorElement * HcalDeadCellMonitor::ProblemsVsLB_HO2
private

Definition at line 85 of file HcalDeadCellMonitor.h.

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

MonitorElement* HcalDeadCellMonitor::RBX_loss_VS_LB
private

Definition at line 86 of file HcalDeadCellMonitor.h.

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

int HcalDeadCellMonitor::rbxlost[156]
private

Definition at line 107 of file HcalDeadCellMonitor.h.

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

EtaPhiHists HcalDeadCellMonitor::RecentMissingDigisByDepth
private

Definition at line 79 of file HcalDeadCellMonitor.h.

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

EtaPhiHists HcalDeadCellMonitor::RecentMissingRecHitsByDepth
private

Definition at line 81 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 82 of file HcalDeadCellMonitor.h.

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

bool HcalDeadCellMonitor::setupDone_
private

Definition at line 129 of file HcalDeadCellMonitor.h.

Referenced by HcalDeadCellMonitor(), and setup().

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

Definition at line 116 of file HcalDeadCellMonitor.h.

Referenced by analyze(), and HcalDeadCellMonitor().

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

Definition at line 123 of file HcalDeadCellMonitor.h.

Referenced by analyze(), and HcalDeadCellMonitor().

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

Definition at line 120 of file HcalDeadCellMonitor.h.

Referenced by analyze(), and HcalDeadCellMonitor().

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

Definition at line 117 of file HcalDeadCellMonitor.h.

Referenced by analyze(), and HcalDeadCellMonitor().

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

Definition at line 122 of file HcalDeadCellMonitor.h.

Referenced by analyze(), and HcalDeadCellMonitor().

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

Definition at line 119 of file HcalDeadCellMonitor.h.

Referenced by analyze(), and HcalDeadCellMonitor().

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

Definition at line 121 of file HcalDeadCellMonitor.h.

Referenced by analyze(), and HcalDeadCellMonitor().

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

Definition at line 118 of file HcalDeadCellMonitor.h.

Referenced by analyze(), and HcalDeadCellMonitor().