#include <HcalCoarsePedestalMonitor.h>
HcalCoarsePedestalMonitor::HcalCoarsePedestalMonitor | ( | const edm::ParameterSet & | ps | ) |
Definition at line 14 of file HcalCoarsePedestalMonitor.cc.
References ADCDiffThresh_, HcalBaseDQMonitor::AllowedCalibTypes_, HcalBaseDQMonitor::debug_, digiLabel_, HcalBaseDQMonitor::enableCleanup_, excludeHORing2_, edm::ParameterSet::getUntrackedParameter(), HcalBaseDQMonitor::makeDiagnostics_, HcalBaseDQMonitor::mergeRuns_, minEvents_, HcalBaseDQMonitor::NLumiBlocks_, HcalBaseDQMonitor::Online_, HcalBaseDQMonitor::prefixME_, HcalBaseDQMonitor::skipOutOfOrderLS_, and HcalBaseDQMonitor::subdir_.
{ Online_ = ps.getUntrackedParameter<bool>("online",false); mergeRuns_ = ps.getUntrackedParameter<bool>("mergeRuns",false); enableCleanup_ = ps.getUntrackedParameter<bool>("enableCleanup",false); debug_ = ps.getUntrackedParameter<int>("debug",0); prefixME_ = ps.getUntrackedParameter<std::string>("subSystemFolder","Hcal/"); if (prefixME_.substr(prefixME_.size()-1,prefixME_.size())!="/") prefixME_.append("/"); subdir_ = ps.getUntrackedParameter<std::string>("TaskFolder","CoarsePedestalMonitor_Hcal"); if (subdir_.size()>0 && subdir_.substr(subdir_.size()-1,subdir_.size())!="/") subdir_.append("/"); subdir_=prefixME_+subdir_; AllowedCalibTypes_ = ps.getUntrackedParameter<std::vector<int> > ("AllowedCalibTypes"); skipOutOfOrderLS_ = ps.getUntrackedParameter<bool>("skipOutOfOrderLS",true); NLumiBlocks_ = ps.getUntrackedParameter<int>("NLumiBlocks",4000); makeDiagnostics_ = ps.getUntrackedParameter<bool>("makeDiagnostics",false); digiLabel_ = ps.getUntrackedParameter<edm::InputTag>("digiLabel"); ADCDiffThresh_ = ps.getUntrackedParameter<double>("ADCDiffThresh",1.); minEvents_ = ps.getUntrackedParameter<int>("minEvents",100); // minimum number of events needed before histograms are filled excludeHORing2_ = ps.getUntrackedParameter<bool>("excludeHORing2",false); }
HcalCoarsePedestalMonitor::~HcalCoarsePedestalMonitor | ( | ) |
Definition at line 40 of file HcalCoarsePedestalMonitor.cc.
{}
void HcalCoarsePedestalMonitor::analyze | ( | const edm::Event & | e, |
const edm::EventSetup & | c | ||
) | [virtual] |
Reimplemented from HcalBaseDQMonitor.
Definition at line 120 of file HcalCoarsePedestalMonitor.cc.
References gather_cfg::cout, HcalBaseDQMonitor::debug_, digiLabel_, edm::Event::getByLabel(), HcalBaseDQMonitor::ievt_, HcalBaseDQMonitor::IsAllowedCalibType(), HcalBaseDQMonitor::LumiInOrder(), edm::EventBase::luminosityBlock(), processEvent(), and zeeHLT_cff::report.
{ if (!IsAllowedCalibType()) return; if (LumiInOrder(e.luminosityBlock())==false) return; // try to get digis edm::Handle<HBHEDigiCollection> hbhe_digi; edm::Handle<HODigiCollection> ho_digi; edm::Handle<HFDigiCollection> hf_digi; edm::Handle<HcalUnpackerReport> report; if (!(e.getByLabel(digiLabel_,hbhe_digi))) { edm::LogWarning("HcalCoarsePedestalMonitor")<< digiLabel_<<" hbhe_digi not available"; return; } if (!(e.getByLabel(digiLabel_,hf_digi))) { edm::LogWarning("HcalCoarsePedestalMonitor")<< digiLabel_<<" hf_digi not available"; return; } if (!(e.getByLabel(digiLabel_,ho_digi))) { edm::LogWarning("HcalCoarsePedestalMonitor")<< digiLabel_<<" ho_digi not available"; return; } if (!(e.getByLabel(digiLabel_,report))) { edm::LogWarning("HcalCoarsePedestalMonitor")<< digiLabel_<<" unpacker report not available"; return; } // all objects grabbed; event is good if (debug_>1) std::cout <<"\t<HcalCoarsePedestalMonitor::analyze> Processing good event! event # = "<<ievt_<<std::endl; HcalBaseDQMonitor::analyze(e,s); // base class increments ievt_, etc. counters // Digi collection was grabbed successfully; process the Event processEvent(*hbhe_digi, *ho_digi, *hf_digi, *report); } //void HcalCoarsePedestalMonitor::analyze(...)
void HcalCoarsePedestalMonitor::beginLuminosityBlock | ( | const edm::LuminosityBlock & | lumiSeg, |
const edm::EventSetup & | c | ||
) | [virtual] |
Reimplemented from HcalBaseDQMonitor.
Definition at line 288 of file HcalCoarsePedestalMonitor.cc.
References HcalBaseDQMonitor::ProblemsCurrentLB, and MonitorElement::Reset().
{ HcalBaseDQMonitor::beginLuminosityBlock(lumiSeg,c); ProblemsCurrentLB->Reset(); }
void HcalCoarsePedestalMonitor::beginRun | ( | const edm::Run & | run, |
const edm::EventSetup & | c | ||
) | [virtual] |
Reimplemented from HcalBaseDQMonitor.
Definition at line 110 of file HcalCoarsePedestalMonitor.cc.
References HcalBaseDQMonitor::mergeRuns_, reset(), setup(), and HcalBaseDQMonitor::tevt_.
{ HcalBaseDQMonitor::beginRun(run,c); if (mergeRuns_ && tevt_>0) return; // don't reset counters if merging runs if (tevt_==0) this->setup(); // create all histograms; not necessary if merging runs together if (mergeRuns_==false) this->reset(); // call reset at start of all runs } // void HcalCoarsePedestalMonitor::beginRun()
void HcalCoarsePedestalMonitor::cleanup | ( | void | ) | [virtual] |
Reimplemented from HcalBaseDQMonitor.
Definition at line 44 of file HcalCoarsePedestalMonitor.cc.
References gather_cfg::cout, HcalBaseDQMonitor::dbe_, HcalBaseDQMonitor::debug_, HcalBaseDQMonitor::enableCleanup_, DQMStore::removeContents(), DQMStore::setCurrentFolder(), and HcalBaseDQMonitor::subdir_.
Referenced by endJob().
{ // Need to add code to clear out subfolders as well? if (debug_>0) std::cout <<"HcalCoarsePedestalMonitor::cleanup()"<<std::endl; if (!enableCleanup_) return; if (dbe_) { // removeContents doesn't remove subdirectories dbe_->setCurrentFolder(subdir_); dbe_->removeContents(); dbe_->setCurrentFolder(subdir_+"CoarsePedestal_parameters"); dbe_->removeContents(); dbe_->setCurrentFolder(subdir_+"LSvalues"); dbe_->removeContents(); } // if(dbe_) } // void HcalCoarsePedestalMonitor::cleanup();
void HcalCoarsePedestalMonitor::endJob | ( | void | ) | [virtual] |
Reimplemented from HcalBaseDQMonitor.
Definition at line 68 of file HcalCoarsePedestalMonitor.cc.
References cleanup(), gather_cfg::cout, HcalBaseDQMonitor::debug_, and HcalBaseDQMonitor::enableCleanup_.
{ if (debug_>0) std::cout <<"HcalCoarsePedestalMonitor::endJob()"<<std::endl; if (enableCleanup_) cleanup(); // when do we force cleanup? }
void HcalCoarsePedestalMonitor::endLuminosityBlock | ( | const edm::LuminosityBlock & | lumiSeg, |
const edm::EventSetup & | c | ||
) | [virtual] |
Reimplemented from HcalBaseDQMonitor.
Definition at line 295 of file HcalCoarsePedestalMonitor.cc.
References fill_Nevents(), HcalBaseDQMonitor::LumiInOrder(), and edm::LuminosityBlockBase::luminosityBlock().
{ if (LumiInOrder(lumiSeg.luminosityBlock())==false) return; fill_Nevents(); return; }
void HcalCoarsePedestalMonitor::endRun | ( | const edm::Run & | run, |
const edm::EventSetup & | c | ||
) | [virtual] |
Reimplemented from HcalBaseDQMonitor.
Definition at line 63 of file HcalCoarsePedestalMonitor.cc.
{
// Anything to do here?
}
void HcalCoarsePedestalMonitor::fill_Nevents | ( | ) | [private] |
Methods, variables accessible only within class code.
Definition at line 302 of file HcalCoarsePedestalMonitor.cc.
References abs, CalcEtaBin(), CoarsePedestalsOccByDepth, CoarsePedestalsSumByDepth, EtaPhiHists::depth, eta(), FillUnphysicalHEHFBins(), HcalBarrel, HcalEndcap, HcalForward, HcalOuter, i, HcalBaseDQMonitor::ievt_, minEvents_, pedestalocc_, pedestalsum_, phi, and validDetId().
Referenced by endLuminosityBlock().
{ // require minimum number of events before processing if (ievt_<minEvents_) return; // Set underflow bin to the number of pedestal events processed // (Assume that number of ped events is the same for all channels/subdetectors) for (unsigned int i=0;i<CoarsePedestalsSumByDepth.depth.size();++i) CoarsePedestalsSumByDepth.depth[i]->setBinContent(0,0,ievt_); for (unsigned int i=0;i<CoarsePedestalsOccByDepth.depth.size();++i) CoarsePedestalsOccByDepth.depth[i]->setBinContent(0,0,ievt_); int iphi=-1, ieta=-99, idepth=0, calcEta=-99; // Loop over all depths, eta, phi for (int d=0;d<4;++d) { idepth=d+1; for (int phi=0;phi<72;++phi) { iphi=phi+1; // actual iphi value for (int eta=0;eta<83;++eta) { ieta=eta-41; // actual ieta value; if (validDetId(HcalBarrel, ieta, iphi, idepth)) { calcEta = CalcEtaBin(HcalBarrel,ieta,idepth); CoarsePedestalsSumByDepth.depth[d]->Fill(ieta,iphi,pedestalsum_[calcEta][phi][d]); CoarsePedestalsOccByDepth.depth[d]->Fill(ieta,iphi,pedestalocc_[calcEta][phi][d]); } if (validDetId(HcalEndcap, ieta, iphi, idepth)) { calcEta = CalcEtaBin(HcalEndcap,ieta,idepth); CoarsePedestalsSumByDepth.depth[d]->Fill(ieta,iphi,pedestalsum_[calcEta][phi][d]); CoarsePedestalsOccByDepth.depth[d]->Fill(ieta,iphi,pedestalocc_[calcEta][phi][d]); } if (validDetId(HcalOuter, ieta, iphi, idepth)) { calcEta = CalcEtaBin(HcalOuter,ieta,idepth); CoarsePedestalsSumByDepth.depth[d]->Fill(ieta,iphi,pedestalsum_[calcEta][phi][d]); CoarsePedestalsOccByDepth.depth[d]->Fill(ieta,iphi,pedestalocc_[calcEta][phi][d]); } if (validDetId(HcalForward, ieta, iphi, idepth)) { calcEta = CalcEtaBin(HcalBarrel,ieta,idepth); int zside=ieta/abs(ieta); CoarsePedestalsSumByDepth.depth[d]->Fill(ieta+zside,iphi,pedestalsum_[calcEta][phi][d]); CoarsePedestalsOccByDepth.depth[d]->Fill(ieta+zside,iphi,pedestalocc_[calcEta][phi][d]); } } } } // Fill unphysical bins FillUnphysicalHEHFBins(CoarsePedestalsSumByDepth); FillUnphysicalHEHFBins(CoarsePedestalsOccByDepth); return; } // void HcalCoarsePedestalMonitor::fill_Nevents()
void HcalCoarsePedestalMonitor::processEvent | ( | const HBHEDigiCollection & | hbhe, |
const HODigiCollection & | ho, | ||
const HFDigiCollection & | hf, | ||
const HcalUnpackerReport & | report | ||
) |
Definition at line 165 of file HcalCoarsePedestalMonitor.cc.
References abs, HcalQIESample::adc(), HcalUnpackerReport::badQualityDigis(), edm::SortedCollection< T, SORT >::begin(), CalcEtaBin(), gather_cfg::cout, HcalBaseDQMonitor::dbe_, HcalBaseDQMonitor::debug_, HcalDetId::depth(), edm::SortedCollection< T, SORT >::end(), excludeHORing2_, HcalBaseDQMonitor::HBpresent_, HcalBarrel, HcalEndcap, HcalForward, HcalOuter, HcalBaseDQMonitor::HEpresent_, HcalBaseDQMonitor::HFpresent_, HcalBaseDQMonitor::HOpresent_, i, HODataFrame::id(), HBHEDataFrame::id(), HFDataFrame::id(), HcalDetId::ieta(), HcalDetId::iphi(), isSiPM(), j, pedestalocc_, pedestalsum_, HFDataFrame::sample(), HBHEDataFrame::sample(), HODataFrame::sample(), HODataFrame::size(), HBHEDataFrame::size(), edm::SortedCollection< T, SORT >::size(), HFDataFrame::size(), HcalDetId::subdet(), and relativeConstraints::value.
Referenced by analyze().
{ if(!dbe_) { if(debug_) std::cout <<"HcalCoarsePedestalMonitor::processEvent DQMStore not instantiated!!!"<<std::endl; return; } // Skip events in which minimal good digis found -- still getting some strange (calib?) events through DQM unsigned int allgooddigis= hbhe.size()+ho.size()+hf.size(); // bad threshold: ignore events in which bad outnumber good by more than 100:1 // (one RBX in HBHE seems to send valid data occasionally even on QIE resets, which is why we can't just require allgooddigis==0 when looking for events to skip) if ((allgooddigis==0) || (1.*report.badQualityDigis()>100*allgooddigis)) { return; } unsigned int digisize=0; int depth=0, iphi=0, ieta=0, binEta=-9999; double value=0; for (HBHEDigiCollection::const_iterator j=hbhe.begin(); j!=hbhe.end(); ++j) { const HBHEDataFrame digi = (const HBHEDataFrame)(*j); if (digi.id().subdet()==HcalBarrel) {if (!HBpresent_) continue;} else if (digi.id().subdet()==HcalEndcap) {if (!HEpresent_) continue;} else continue; digisize=digi.size(); if (digisize<8) continue; depth=digi.id().depth(); iphi=digi.id().iphi(); ieta=digi.id().ieta(); digi.id().subdet()==HcalBarrel ? binEta=CalcEtaBin(HcalBarrel, ieta, depth) : binEta=CalcEtaBin(HcalEndcap, ieta, depth); // 'value' is the average pedestal over the 8 time slices. // In the CoarsePedestal client, we will divide the summed value by Nevents (in underflow bin) // in order to calculate average pedestals. value=0; for (unsigned int i=0;i<8;++i) value+=digi.sample(i).adc()/8.; pedestalsum_[binEta][iphi-1][depth-1]+=value; ++pedestalocc_[binEta][iphi-1][depth-1]; } if (HOpresent_) { for (HODigiCollection::const_iterator j=ho.begin(); j!=ho.end(); ++j) { const HODataFrame digi = (const HODataFrame)(*j); digisize=digi.size(); if (digisize<8) continue; depth=digi.id().depth(); iphi=digi.id().iphi(); ieta=digi.id().ieta(); binEta=CalcEtaBin(HcalOuter, ieta, depth); // Don't fill cells that are part of HO ring 2 if an exclusion is applied if (excludeHORing2_==true && abs(ieta)>10 && isSiPM(ieta,iphi,4)==false) continue; // 'value' is the average pedestal over the 8 time slices. // In the CoarsePedestal client, we will divide the summed value by Nevents (in underflow bin) // in order to calculate average pedestals. value=0; for (unsigned int i=0;i<8;++i) value+=digi.sample(i).adc()/8.; pedestalsum_[binEta][iphi-1][depth-1]+=value; ++pedestalocc_[binEta][iphi-1][depth-1]; } // for (HODigiCollection) } if (HFpresent_) { for (HFDigiCollection::const_iterator j=hf.begin(); j!=hf.end(); ++j) { const HFDataFrame digi = (const HFDataFrame)(*j); digisize=digi.size(); if (digisize<8) continue; digisize=digi.size(); if (digisize<8) continue; depth=digi.id().depth(); iphi=digi.id().iphi(); ieta=digi.id().ieta(); binEta=CalcEtaBin(HcalForward, ieta, depth); // 'value' is the average pedestal over the 8 time slices. // In the CoarsePedestal client, we will divide the summed value by Nevents (in underflow bin) // in order to calculate average pedestals. value=0; for (unsigned int i=0;i<8;++i) value+=digi.sample(i).adc()/8.; pedestalsum_[binEta][iphi-1][depth-1]+=value; ++pedestalocc_[binEta][iphi-1][depth-1]; } // for (HFDigiCollection) } // if (HFpresent_) return; } // void HcalCoarsePedestalMonitor::processEvent(...)
void HcalCoarsePedestalMonitor::reset | ( | void | ) | [virtual] |
Reimplemented from HcalBaseDQMonitor.
Definition at line 365 of file HcalCoarsePedestalMonitor.cc.
References CoarsePedestalsOccByDepth, CoarsePedestalsSumByDepth, EtaPhiHists::Reset(), and zeroCounters().
Referenced by beginRun(), and setup().
{ // then reset the MonitorElements zeroCounters(); CoarsePedestalsSumByDepth.Reset(); CoarsePedestalsOccByDepth.Reset(); return; }
void HcalCoarsePedestalMonitor::setup | ( | void | ) | [virtual] |
Reimplemented from HcalBaseDQMonitor.
Definition at line 75 of file HcalCoarsePedestalMonitor.cc.
References ExpressReco_HICollisions_FallBack::ADCDiffThresh, ADCDiffThresh_, DQMStore::bookFloat(), DQMStore::bookInt(), CoarsePedestalsOccByDepth, CoarsePedestalsSumByDepth, gather_cfg::cout, HcalBaseDQMonitor::dbe_, HcalBaseDQMonitor::debug_, EtaPhiHists::depth, ExpressReco_HICollisions_FallBack::excludeHORing2, excludeHORing2_, MonitorElement::Fill(), i, minEvents_, AlCaRecoCosmics_cfg::name, reset(), DQMStore::setCurrentFolder(), HcalBaseDQMonitor::SetupEtaPhiHists(), and HcalBaseDQMonitor::subdir_.
Referenced by beginRun().
{ // Call base class setup HcalBaseDQMonitor::setup(); if (!dbe_) return; /******* Set up all histograms ********/ if (debug_>1) std::cout <<"<HcalCoarsePedestalMonitor::beginRun> Setting up histograms"<<std::endl; std::ostringstream name; dbe_->setCurrentFolder(subdir_ +"CoarsePedestalSumPlots"); SetupEtaPhiHists(CoarsePedestalsSumByDepth,"Coarse Pedestal Summed Map",""); SetupEtaPhiHists(CoarsePedestalsOccByDepth,"Coarse Pedestal Occupancy Map",""); for (unsigned int i=0;i<CoarsePedestalsSumByDepth.depth.size();++i) (CoarsePedestalsSumByDepth.depth[i]->getTH2F())->SetOption("colz"); for (unsigned int i=0;i<CoarsePedestalsOccByDepth.depth.size();++i) (CoarsePedestalsOccByDepth.depth[i]->getTH2F())->SetOption("colz"); dbe_->setCurrentFolder(subdir_+"CoarsePedestal_parameters"); MonitorElement* ADCDiffThresh = dbe_->bookFloat("ADCdiff_Problem_Threshold"); ADCDiffThresh->Fill(ADCDiffThresh_); MonitorElement* minevents = dbe_->bookInt("minEventsNeededForPedestalCalculation"); minevents->Fill(minEvents_); MonitorElement* excludeHORing2 = dbe_->bookInt("excludeHORing2"); if (excludeHORing2_==true) excludeHORing2->Fill(1); else excludeHORing2->Fill(0); this->reset(); return; } // void HcalCoarsePedestalMonitor::setup()
void HcalCoarsePedestalMonitor::zeroCounters | ( | ) | [private] |
Definition at line 374 of file HcalCoarsePedestalMonitor.cc.
References i, j, gen::k, pedestalocc_, and pedestalsum_.
Referenced by reset().
double HcalCoarsePedestalMonitor::ADCDiffThresh_ [private] |
Definition at line 60 of file HcalCoarsePedestalMonitor.h.
Referenced by HcalCoarsePedestalMonitor(), and setup().
Definition at line 55 of file HcalCoarsePedestalMonitor.h.
Referenced by fill_Nevents(), reset(), and setup().
Definition at line 54 of file HcalCoarsePedestalMonitor.h.
Referenced by fill_Nevents(), reset(), and setup().
Definition at line 62 of file HcalCoarsePedestalMonitor.h.
Referenced by analyze(), and HcalCoarsePedestalMonitor().
bool HcalCoarsePedestalMonitor::excludeHORing2_ [private] |
Definition at line 64 of file HcalCoarsePedestalMonitor.h.
Referenced by HcalCoarsePedestalMonitor(), processEvent(), and setup().
int HcalCoarsePedestalMonitor::minEvents_ [private] |
Definition at line 63 of file HcalCoarsePedestalMonitor.h.
Referenced by fill_Nevents(), HcalCoarsePedestalMonitor(), and setup().
int HcalCoarsePedestalMonitor::pedestalocc_[85][72][4] [private] |
Definition at line 58 of file HcalCoarsePedestalMonitor.h.
Referenced by fill_Nevents(), processEvent(), and zeroCounters().
double HcalCoarsePedestalMonitor::pedestalsum_[85][72][4] [private] |
Definition at line 57 of file HcalCoarsePedestalMonitor.h.
Referenced by fill_Nevents(), processEvent(), and zeroCounters().