00001 #include "DQM/HcalMonitorTasks/interface/HcalDeadCellMonitor.h"
00002 #include "FWCore/Framework/interface/LuminosityBlock.h"
00003
00004 HcalDeadCellMonitor::HcalDeadCellMonitor(const edm::ParameterSet& ps)
00005 {
00006 Online_ = ps.getUntrackedParameter<bool>("online",false);
00007 mergeRuns_ = ps.getUntrackedParameter<bool>("mergeRuns",false);
00008 enableCleanup_ = ps.getUntrackedParameter<bool>("enableCleanup",false);
00009 debug_ = ps.getUntrackedParameter<int>("debug",0);
00010 makeDiagnostics_ = ps.getUntrackedParameter<bool>("makeDiagnostics",false);
00011 prefixME_ = ps.getUntrackedParameter<std::string>("subSystemFolder","Hcal/");
00012 if (prefixME_.substr(prefixME_.size()-1,prefixME_.size())!="/")
00013 prefixME_.append("/");
00014 subdir_ = ps.getUntrackedParameter<std::string>("TaskFolder","DeadCellMonitor_Hcal");
00015 if (subdir_.size()>0 && subdir_.substr(subdir_.size()-1,subdir_.size())!="/")
00016 subdir_.append("/");
00017 subdir_=prefixME_+subdir_;
00018 AllowedCalibTypes_ = ps.getUntrackedParameter<std::vector<int> > ("AllowedCalibTypes");
00019 skipOutOfOrderLS_ = ps.getUntrackedParameter<bool>("skipOutOfOrderLS",true);
00020 NLumiBlocks_ = ps.getUntrackedParameter<int>("NLumiBlocks",4000);
00021
00022 badChannelStatusMask_ = ps.getUntrackedParameter<int>("BadChannelStatusMask",
00023 ps.getUntrackedParameter<int>("BadChannelStatusMask",
00024 (1<<HcalChannelStatus::HcalCellDead)));
00025
00026
00027
00028 digiLabel_ =ps.getUntrackedParameter<edm::InputTag>("digiLabel");
00029 hbheRechitLabel_ = ps.getUntrackedParameter<edm::InputTag>("hbheRechitLabel");
00030 hoRechitLabel_ = ps.getUntrackedParameter<edm::InputTag>("hoRechitLabel");
00031 hfRechitLabel_ = ps.getUntrackedParameter<edm::InputTag>("hfRechitLabel");
00032
00033
00034 minDeadEventCount_ = ps.getUntrackedParameter<int>("minDeadEventCount",1000);
00035 excludeHORing2_ = ps.getUntrackedParameter<bool>("excludeHORing2",false);
00036 excludeHO1P02_ = ps.getUntrackedParameter<bool>("excludeHO1P02",false);
00037 endLumiProcessed_ = false;
00038
00039
00040
00041
00042
00043
00044
00045
00046
00047
00048
00049
00050
00051 deadmon_test_digis_ = ps.getUntrackedParameter<bool>("test_digis",true);
00052 deadmon_test_rechits_ = ps.getUntrackedParameter<bool>("test_rechits",false);
00053
00054
00055 energyThreshold_ = ps.getUntrackedParameter<double>("MissingRechitEnergyThreshold",0);
00056 HBenergyThreshold_ = ps.getUntrackedParameter<double>("HB_energyThreshold",energyThreshold_);
00057 HEenergyThreshold_ = ps.getUntrackedParameter<double>("HE_energyThreshold",energyThreshold_);
00058 HOenergyThreshold_ = ps.getUntrackedParameter<double>("HO_energyThreshold",energyThreshold_);
00059 HFenergyThreshold_ = ps.getUntrackedParameter<double>("HF_energyThreshold",energyThreshold_);
00060
00061 HcalLogicalMapGenerator gen;
00062 logicalMap_=new HcalLogicalMap(gen.createMap());
00063 }
00064
00065 HcalDeadCellMonitor::~HcalDeadCellMonitor()
00066 {
00067 if (logicalMap_ == 0) delete logicalMap_;
00068 }
00069
00070
00071
00072
00073 void HcalDeadCellMonitor::setup()
00074 {
00075 HcalBaseDQMonitor::setup();
00076 zeroCounters(1);
00077 if (debug_>0)
00078 std::cout <<"<HcalDeadCellMonitor::setup> Setting up histograms"<<std::endl;
00079
00080 if (!dbe_) return;
00081
00082 dbe_->setCurrentFolder(subdir_);
00083 MonitorElement* excludeHO2=dbe_->bookInt("ExcludeHOring2");
00084
00085 if (excludeHO2) excludeHO2->Fill(excludeHORing2_==true ? 1 : 0);
00086
00087 Nevents = dbe_->book1D("NumberOfDeadCellEvents","Number of Events Seen by DeadCellMonitor",2,0,2);
00088 Nevents->setBinLabel(1,"allEvents");
00089 Nevents->setBinLabel(2,"lumiCheck");
00090
00091 ProblemsVsLB=dbe_->bookProfile("TotalDeadCells_HCAL_vs_LS",
00092 "Total Number of Dead Hcal Cells (excluding known problems) vs LS;Lumi Section;Dead Cells",
00093 NLumiBlocks_,0.5,NLumiBlocks_+0.5,
00094 100,0,10000);
00095 ProblemsVsLB_HB=dbe_->bookProfile("TotalDeadCells_HB_vs_LS",
00096 "Total Number of Dead HB Cells (excluding known problems) vs LS;Lumi Section;Dead Cells",
00097 NLumiBlocks_,0.5,NLumiBlocks_+0.5,
00098 100,0,10000);
00099 ProblemsVsLB_HE=dbe_->bookProfile("TotalDeadCells_HE_vs_LS",
00100 "Total Number of Dead HE Cells (excluding known problems) vs LS;Lumi Section;Dead Cells",
00101 NLumiBlocks_,0.5,NLumiBlocks_+0.5,100,0,10000);
00102 ProblemsVsLB_HO=dbe_->bookProfile("TotalDeadCells_HO_vs_LS",
00103 "Total Number of Dead HO Cells (excluding known problems) vs LS;Lumi Section;Dead Cells",
00104 NLumiBlocks_,0.5,NLumiBlocks_+0.5,100,0,10000);
00105 ProblemsVsLB_HF=dbe_->bookProfile("TotalDeadCells_HF_vs_LS",
00106 "Total Number of Dead HF Cells (excluding known problems) vs LS;Lumi Section;Dead Cells",
00107 NLumiBlocks_,0.5,NLumiBlocks_+0.5,100,0,10000);
00108 ProblemsVsLB_HBHEHF=dbe_->bookProfile("TotalDeadCells_HBHEHF_vs_LS",
00109 "Total Number of Dead HBHEHF Cells (excluding known problems) vs LS;Lumi Section;Dead Cells",
00110 NLumiBlocks_,0.5,NLumiBlocks_+0.5,100,0,10000);
00111
00112 (ProblemsVsLB->getTProfile())->SetMarkerStyle(20);
00113 (ProblemsVsLB_HB->getTProfile())->SetMarkerStyle(20);
00114 (ProblemsVsLB_HE->getTProfile())->SetMarkerStyle(20);
00115 (ProblemsVsLB_HO->getTProfile())->SetMarkerStyle(20);
00116 (ProblemsVsLB_HF->getTProfile())->SetMarkerStyle(20);
00117 (ProblemsVsLB_HBHEHF->getTProfile())->SetMarkerStyle(20);
00118
00119 RBX_loss_VS_LB=dbe_->book2D("RBX_loss_VS_LB",
00120 "RBX loss vs LS; Lumi Section; Index of lost RBX",
00121 NLumiBlocks_,0.5,NLumiBlocks_+0.5,156,0,156);
00122
00123 ProblemsInLastNLB_HBHEHF_alarm=dbe_->book1D("ProblemsInLastNLB_HBHEHF_alarm",
00124 "Total Number of Dead HBHEHF Cells in last 10 LS. Last bin contains OverFlow",
00125 100,0,100);
00126
00127
00128 dbe_->setCurrentFolder(subdir_+"dead_cell_parameters");
00129 MonitorElement* me=dbe_->bookInt("Test_NeverPresent_Digis");
00130 me->Fill(1);
00131 me=dbe_->bookInt("Test_DigiMissing_Periodic_Lumi_Check");
00132 if (deadmon_test_digis_)
00133 me->Fill(1);
00134 else
00135 me->Fill(0);
00136 me=dbe_->bookInt("Min_Events_Required_Periodic_Lumi_Check");
00137 me->Fill(minDeadEventCount_);
00138 me=dbe_->bookInt("Test_NeverPresent_RecHits");
00139 deadmon_test_rechits_>0 ? me->Fill(1) : me->Fill(0);
00140 me=dbe_->bookFloat("HBMinimumRecHitEnergy");
00141 me->Fill(HBenergyThreshold_);
00142 me=dbe_->bookFloat("HEMinimumRecHitEnergy");
00143 me->Fill(HEenergyThreshold_);
00144 me=dbe_->bookFloat("HOMinimumRecHitEnergy");
00145 me->Fill(HOenergyThreshold_);
00146 me=dbe_->bookFloat("HFMinimumRecHitEnergy");
00147 me->Fill(HFenergyThreshold_);
00148 me=dbe_->bookInt("Test_RecHitsMissing_Periodic_Lumi_Check");
00149 deadmon_test_rechits_>0 ? me->Fill(1) : me->Fill(0);
00150
00151
00152
00153
00154 std::stringstream units;
00155 std::stringstream name;
00156
00157
00158
00159 dbe_->setCurrentFolder(subdir_+"dead_digi_never_present");
00160 SetupEtaPhiHists(DigiPresentByDepth,
00161 "Digi Present At Least Once","");
00162
00163 NumberOfNeverPresentDigis=dbe_->bookProfile("Problem_NeverPresentDigis_HCAL_vs_LS",
00164 "Total Number of Never-Present Hcal Cells vs LS;Lumi Section;Dead Cells",
00165 NLumiBlocks_,0.5,NLumiBlocks_+0.5,100,0,10000);
00166
00167 NumberOfNeverPresentDigisHB=dbe_->bookProfile("Problem_NeverPresentDigis_HB_vs_LS",
00168 "Total Number of Never-Present HB Cells vs LS;Lumi Section;Dead Cells",
00169 NLumiBlocks_,0.5,NLumiBlocks_+0.5,100,0,10000);
00170
00171 NumberOfNeverPresentDigisHE=dbe_->bookProfile("Problem_NeverPresentDigis_HE_vs_LS",
00172 "Total Number of Never-Present HE Cells vs LS;Lumi Section;Dead Cells",
00173 NLumiBlocks_,0.5,NLumiBlocks_+0.5,100,0,10000);
00174
00175 NumberOfNeverPresentDigisHO=dbe_->bookProfile("Problem_NeverPresentDigis_HO_vs_LS",
00176 "Total Number of Never-Present HO Cells vs LS;Lumi Section;Dead Cells",
00177 NLumiBlocks_,0.5,NLumiBlocks_+0.5,100,0,10000);
00178
00179 NumberOfNeverPresentDigisHF=dbe_->bookProfile("Problem_NeverPresentDigis_HF_vs_LS",
00180 "Total Number of Never-Present HF Cells vs LS;Lumi Section;Dead Cells",
00181 NLumiBlocks_,0.5,NLumiBlocks_+0.5,100,0,10000);
00182 (NumberOfNeverPresentDigis->getTProfile())->SetMarkerStyle(20);
00183 (NumberOfNeverPresentDigisHB->getTProfile())->SetMarkerStyle(20);
00184 (NumberOfNeverPresentDigisHE->getTProfile())->SetMarkerStyle(20);
00185 (NumberOfNeverPresentDigisHO->getTProfile())->SetMarkerStyle(20);
00186 (NumberOfNeverPresentDigisHF->getTProfile())->SetMarkerStyle(20);
00187
00188 FillUnphysicalHEHFBins(DigiPresentByDepth);
00189
00190 if (deadmon_test_digis_)
00191 {
00192 dbe_->setCurrentFolder(subdir_+"dead_digi_often_missing");
00193
00194 name<<"Dead Cells with No Digis";
00195 SetupEtaPhiHists(RecentMissingDigisByDepth,
00196 name.str(),
00197 "");
00198 name.str("");
00199 name<<"HB HE HF Depth 1 Dead Cells with No Digis for at least 1 Full Luminosity Block";
00200 RecentMissingDigisByDepth.depth[0]->setTitle(name.str().c_str());
00201
00202 name.str("");
00203 name<<"HB HE HF Depth 2 Dead Cells with No Digis for at least 1 Full Luminosity Block";
00204 RecentMissingDigisByDepth.depth[1]->setTitle(name.str().c_str());
00205
00206 name.str("");
00207 name<<"HE Depth 3 Dead Cells with No Digis for at least 1 Full Luminosity Block";
00208 RecentMissingDigisByDepth.depth[2]->setTitle(name.str().c_str());
00209
00210 name.str("");
00211 name<<"HO Depth 4 Dead Cells with No Digis for at least 1 Full Luminosity Block";
00212 RecentMissingDigisByDepth.depth[3]->setTitle(name.str().c_str());
00213 name.str("");
00214
00215
00216 name<<"Total Number of Hcal Digis Unoccupied for at least 1 Full Luminosity Block";
00217 NumberOfRecentMissingDigis=dbe_->bookProfile("Problem_RecentMissingDigis_HCAL_vs_LS",
00218 name.str(),
00219 NLumiBlocks_,0.5,NLumiBlocks_+0.5,100,0,10000);
00220 name.str("");
00221 name<<"Total Number of HB Digis Unoccupied for at least 1 Full LS vs LS;Lumi Section; Dead Cells";
00222 NumberOfRecentMissingDigisHB=dbe_->bookProfile("Problem_RecentMissingDigis_HB_vs_LS",
00223 name.str(),
00224 NLumiBlocks_,0.5,NLumiBlocks_+0.5,100,0,10000);
00225 name.str("");
00226 name<<"Total Number of HE Digis Unoccupied for at least 1 Full LS vs LS;Lumi Section; Dead Cells";
00227 NumberOfRecentMissingDigisHE=dbe_->bookProfile("Problem_RecentMissingDigis_HE_vs_LS",
00228 name.str(),
00229 NLumiBlocks_,0.5,NLumiBlocks_+0.5,100,0,10000);
00230 name.str("");
00231 name<<"Total Number of HO Digis Unoccupied for at least 1 Full LS vs LS;Lumi Section; Dead Cells";
00232 NumberOfRecentMissingDigisHO=dbe_->bookProfile("Problem_RecentMissingDigis_HO_vs_LS",
00233 name.str(),
00234 NLumiBlocks_,0.5,NLumiBlocks_+0.5,100,0,10000);
00235 name.str("");
00236 name<<"Total Number of HF Digis Unoccupied for at least 1 Full LS vs LS;Lumi Section; Dead Cells";
00237 NumberOfRecentMissingDigisHF=dbe_->bookProfile("Problem_RecentMissingDigis_HF_vs_LS",
00238 name.str(),
00239 NLumiBlocks_,0.5,NLumiBlocks_+0.5,100,0,10000);
00240 (NumberOfRecentMissingDigis->getTProfile())->SetMarkerStyle(20);
00241 (NumberOfRecentMissingDigisHB->getTProfile())->SetMarkerStyle(20);
00242 (NumberOfRecentMissingDigisHE->getTProfile())->SetMarkerStyle(20);
00243 (NumberOfRecentMissingDigisHO->getTProfile())->SetMarkerStyle(20);
00244 (NumberOfRecentMissingDigisHF->getTProfile())->SetMarkerStyle(20);
00245
00246 }
00247
00248 if (deadmon_test_rechits_)
00249 {
00250
00251 dbe_->setCurrentFolder(subdir_+"dead_rechit_neverpresent");
00252 SetupEtaPhiHists(RecHitPresentByDepth,"RecHit Above Threshold At Least Once","");
00253
00254 units.str("");
00255 units<<"Cells Above Energy Threshold At Least Once: Depth 1 -- HB >="<<HBenergyThreshold_<<" GeV, HE >= "<<HEenergyThreshold_<<", HF >="<<HFenergyThreshold_<<" GeV";
00256 RecHitPresentByDepth.depth[0]->setTitle(units.str().c_str());
00257 units.str("");
00258 units<<"Cells Above Energy Threshold At Least Once: Depth 2 -- HB >="<<HBenergyThreshold_<<" GeV, HE >= "<<HEenergyThreshold_<<", HF >="<<HFenergyThreshold_<<" GeV";
00259 RecHitPresentByDepth.depth[1]->setTitle(units.str().c_str());
00260 units.str("");
00261 units<<"Cells Above Energy Threshold At Least Once: Depth 3 -- HE >="<<HEenergyThreshold_<<" GeV";
00262 RecHitPresentByDepth.depth[2]->setTitle(units.str().c_str());
00263 units.str("");
00264 units<<"Cells Above Energy Threshold At Least Once: Depth 4 -- HO >="<<HOenergyThreshold_<<" GeV";
00265 RecHitPresentByDepth.depth[3]->setTitle(units.str().c_str());
00266 units.str("");
00267
00268
00269 NumberOfNeverPresentRecHits=dbe_->bookProfile("Problem_RecHitsNeverPresent_HCAL_vs_LS",
00270 "Total Number of Hcal Rechits with Low Energy;Lumi Section;Dead Cells",
00271 NLumiBlocks_,0.5,NLumiBlocks_+0.5,100,0,10000);
00272 name.str("");
00273 name<<"Total Number of HB RecHits with Energy Never >= "<<HBenergyThreshold_<<" GeV;Lumi Section;Dead Cells";
00274 NumberOfNeverPresentRecHitsHB=dbe_->bookProfile("Problem_RecHitsNeverPresent_HB_vs_LS",
00275 name.str(),
00276 NLumiBlocks_,0.5,NLumiBlocks_+0.5,100,0,10000);
00277 name.str("");
00278 name<<"Total Number of HE RecHits with Energy Never >= "<<HEenergyThreshold_<<" GeV;Lumi Section;Dead Cells";
00279 NumberOfNeverPresentRecHitsHE=dbe_->bookProfile("Problem_RecHitsNeverPresent_HE_vs_LS",
00280 name.str(),
00281 NLumiBlocks_,0.5,NLumiBlocks_+0.5,100,0,10000);
00282 name.str("");
00283 name<<"Total Number of HO RecHits with Energy Never >= "<<HOenergyThreshold_<<" GeV;Lumi Section;Dead Cells";
00284 NumberOfNeverPresentRecHitsHO=dbe_->bookProfile("Problem_RecHitsNeverPresent_HO_vs_LS",
00285 name.str(),
00286 NLumiBlocks_,0.5,NLumiBlocks_+0.5,100,0,10000);
00287 name.str("");
00288 name<<"Total Number of HF RecHits with Energy Never >= "<<HFenergyThreshold_<<" GeV;Lumi Section;Dead Cells";
00289 NumberOfNeverPresentRecHitsHF=dbe_->bookProfile("Problem_RecHitsNeverPresent_HF_vs_LS",
00290 name.str(),
00291 NLumiBlocks_,0.5,NLumiBlocks_+0.5,100,0,10000);
00292 (NumberOfNeverPresentRecHits->getTProfile())->SetMarkerStyle(20);
00293 (NumberOfNeverPresentRecHitsHB->getTProfile())->SetMarkerStyle(20);
00294 (NumberOfNeverPresentRecHitsHE->getTProfile())->SetMarkerStyle(20);
00295 (NumberOfNeverPresentRecHitsHO->getTProfile())->SetMarkerStyle(20);
00296 (NumberOfNeverPresentRecHitsHF->getTProfile())->SetMarkerStyle(20);
00297
00298 dbe_->setCurrentFolder(subdir_+"dead_rechit_often_missing");
00299 SetupEtaPhiHists(RecentMissingRecHitsByDepth,"RecHits Failing Energy Threshold Test","");
00300
00301 units.str("");
00302 units<<"RecHits with Consistent Low Energy Depth 1 -- HB <"<<HBenergyThreshold_<<" GeV, HE < "<<HEenergyThreshold_<<", HF <"<<HFenergyThreshold_<<" GeV";
00303 RecentMissingRecHitsByDepth.depth[0]->setTitle(units.str().c_str());
00304 units.str("");
00305 units<<"RecHits with Consistent Low Energy Depth 2 -- HB <"<<HBenergyThreshold_<<" GeV, HE < "<<HEenergyThreshold_<<", HF <"<<HFenergyThreshold_<<" GeV";
00306 RecentMissingRecHitsByDepth.depth[1]->setTitle(units.str().c_str());
00307 units.str("");
00308 units<<"RecHits with Consistent Low Energy Depth 3 -- HE <"<<HEenergyThreshold_<<" GeV";
00309 RecentMissingRecHitsByDepth.depth[2]->setTitle(units.str().c_str());
00310 units.str("");
00311 units<<"RecHits with Consistent Low Energy Depth 4 -- HO <"<<HOenergyThreshold_<<" GeV";
00312 RecentMissingRecHitsByDepth.depth[3]->setTitle(units.str().c_str());
00313 units.str("");
00314
00315
00316
00317 name.str("");
00318 name<<"Total Number of Hcal RecHits with Consistent Low Energy;Lumi Section;Dead Cells";
00319 NumberOfRecentMissingRecHits=dbe_->bookProfile("Problem_BelowEnergyRecHits_HCAL_vs_LS",
00320 name.str(),
00321 NLumiBlocks_,0.5,NLumiBlocks_+0.5,100,0,10000);
00322 name.str("");
00323 name<<"Total Number of HB RecHits with Consistent Low Energy < "<<HBenergyThreshold_<<" GeV;Lumi Section;Dead Cells";
00324 NumberOfRecentMissingRecHitsHB=dbe_->bookProfile("Problem_BelowEnergyRecHits_HB_vs_LS",
00325 name.str(),
00326 NLumiBlocks_,0.5,NLumiBlocks_+0.5,100,0,10000);
00327 name.str("");
00328 name<<"Total Number of HE RecHits with Consistent Low Energy < "<<HEenergyThreshold_<<" GeV;Lumi Section;Dead Cells";
00329 NumberOfRecentMissingRecHitsHE=dbe_->bookProfile("Problem_BelowEnergyRecHits_HE_vs_LS",
00330 name.str(),
00331 NLumiBlocks_,0.5,NLumiBlocks_+0.5,100,0,10000);
00332 name.str("");
00333 name<<"Total Number of HO RecHits with Consistent Low Energy < "<<HOenergyThreshold_<<" GeV;Lumi Section;Dead Cells";
00334 NumberOfRecentMissingRecHitsHO=dbe_->bookProfile("Problem_BelowEnergyRecHits_HO_vs_LS",
00335 name.str(),
00336 NLumiBlocks_,0.5,NLumiBlocks_+0.5,100,0,10000);
00337 name.str("");
00338 name<<"Total Number of HF RecHits with Consistent Low Energy < "<<HFenergyThreshold_<<" GeV;Lumi Section;Dead Cells";
00339 NumberOfRecentMissingRecHitsHF=dbe_->bookProfile("Problem_BelowEnergyRecHits_HF_vs_LS",
00340 name.str(),
00341 NLumiBlocks_,0.5,NLumiBlocks_+0.5,100,0,10000);
00342 (NumberOfRecentMissingRecHits->getTProfile())->SetMarkerStyle(20);
00343 (NumberOfRecentMissingRecHitsHB->getTProfile())->SetMarkerStyle(20);
00344 (NumberOfRecentMissingRecHitsHE->getTProfile())->SetMarkerStyle(20);
00345 (NumberOfRecentMissingRecHitsHO->getTProfile())->SetMarkerStyle(20);
00346 (NumberOfRecentMissingRecHitsHF->getTProfile())->SetMarkerStyle(20);
00347
00348 }
00349
00350
00351 if (makeDiagnostics_)
00352 {
00353 dbe_->setCurrentFolder(subdir_+"DiagnosticPlots");
00354 HBDeadVsEvent=dbe_->book1D("HBDeadVsEvent","HB Total Dead Cells Vs Event", NLumiBlocks_/10,-0.5,NLumiBlocks_-0.5);
00355 HEDeadVsEvent=dbe_->book1D("HEDeadVsEvent","HE Total Dead Cells Vs Event", NLumiBlocks_/10,-0.5,NLumiBlocks_-0.5);
00356 HODeadVsEvent=dbe_->book1D("HODeadVsEvent","HO Total Dead Cells Vs Event", NLumiBlocks_/10,-0.5,NLumiBlocks_-0.5);
00357 HFDeadVsEvent=dbe_->book1D("HFDeadVsEvent","HF Total Dead Cells Vs Event", NLumiBlocks_/10,-0.5,NLumiBlocks_-0.5);
00358 }
00359
00360 this->reset();
00361 return;
00362
00363 }
00364
00365 void HcalDeadCellMonitor::beginRun(const edm::Run& run, const edm::EventSetup& c)
00366 {
00367 if (debug_>1) std::cout <<"HcalDeadCellMonitor::beginRun"<<std::endl;
00368 HcalBaseDQMonitor::beginRun(run,c);
00369
00370 if (tevt_==0) this->setup();
00371 if (mergeRuns_==false)
00372 this->reset();
00373
00374 doReset_ = true;
00375
00376
00377 KnownBadCells_.clear();
00378 if (badChannelStatusMask_>0)
00379 {
00380 edm::ESHandle<HcalChannelQuality> p;
00381 c.get<HcalChannelQualityRcd>().get(p);
00382 HcalChannelQuality* chanquality= new HcalChannelQuality(*p.product());
00383 std::vector<DetId> mydetids = chanquality->getAllChannels();
00384 for (std::vector<DetId>::const_iterator i = mydetids.begin();
00385 i!=mydetids.end();
00386 ++i)
00387 {
00388 if (i->det()!=DetId::Hcal) continue;
00389 HcalDetId id=HcalDetId(*i);
00390 int status=(chanquality->getValues(id))->getValue();
00391 if ((status & badChannelStatusMask_))
00392 {
00393 KnownBadCells_[id.rawId()]=status;
00394 }
00395 }
00396 delete chanquality;
00397 }
00398 return;
00399 }
00400
00401 void HcalDeadCellMonitor::reset()
00402 {
00403 if (debug_>1) std::cout <<"HcalDeadCellMonitor::reset()"<<std::endl;
00404 doReset_ = false;
00405
00406 HcalBaseDQMonitor::reset();
00407 zeroCounters();
00408 deadevt_=0;
00409 is_RBX_loss_ = 0;
00410 beamMode_ = 0 ;
00411 alarmer_counter_ = 0;
00412 hbhedcsON = true; hfdcsON = true;
00413 ProblemsVsLB->Reset(); ProblemsVsLB_HB->Reset(); ProblemsVsLB_HE->Reset(); ProblemsVsLB_HO->Reset(); ProblemsVsLB_HF->Reset(); ProblemsVsLB_HBHEHF->Reset();
00414 RBX_loss_VS_LB->Reset();
00415 ProblemsInLastNLB_HBHEHF_alarm->Reset();
00416 NumberOfNeverPresentDigis->Reset(); NumberOfNeverPresentDigisHB->Reset(); NumberOfNeverPresentDigisHE->Reset(); NumberOfNeverPresentDigisHO->Reset(); NumberOfNeverPresentDigisHF->Reset();
00417
00418 for (unsigned int depth=0;depth<DigiPresentByDepth.depth.size();++depth)
00419 DigiPresentByDepth.depth[depth]->Reset();
00420
00421
00422 if (excludeHORing2_==true && DigiPresentByDepth.depth.size()>3)
00423 {
00424 for (int ieta=11;ieta<=15;++ieta)
00425 for (int iphi=1;iphi<=72;++iphi)
00426 {
00427
00428 if (isSiPM(ieta,iphi,4)==false)
00429 DigiPresentByDepth.depth[3]->Fill(ieta,iphi,2);
00430
00431 DigiPresentByDepth.depth[3]->Fill(-1*ieta,iphi,2);
00432 }
00433 }
00434 FillUnphysicalHEHFBins(DigiPresentByDepth);
00435
00436
00437 if (deadmon_test_digis_)
00438 {
00439 NumberOfRecentMissingDigis->Reset(); NumberOfRecentMissingDigisHB->Reset(); NumberOfRecentMissingDigisHE->Reset(); NumberOfRecentMissingDigisHO->Reset(); NumberOfRecentMissingDigisHF->Reset();
00440 RecentMissingDigisByDepth.Reset();
00441 }
00442 if (deadmon_test_rechits_)
00443 {
00444 NumberOfRecentMissingRecHits->Reset();
00445 NumberOfRecentMissingRecHitsHB->Reset();
00446 NumberOfRecentMissingRecHitsHE->Reset();
00447 NumberOfRecentMissingRecHitsHO->Reset();
00448 NumberOfRecentMissingRecHitsHF->Reset();
00449 NumberOfNeverPresentRecHits->Reset();
00450 NumberOfNeverPresentRecHitsHB->Reset();
00451 NumberOfNeverPresentRecHitsHE->Reset();
00452 NumberOfNeverPresentRecHitsHO->Reset();
00453 NumberOfNeverPresentRecHitsHF->Reset();
00454 RecentMissingRecHitsByDepth.Reset();
00455 RecHitPresentByDepth.Reset();
00456
00457
00458 if (excludeHORing2_==true && RecHitPresentByDepth.depth.size()>3)
00459 {
00460 for (int ieta=11;ieta<=15;++ieta)
00461 for (int iphi=1;iphi<=72;++iphi)
00462 {
00463 RecHitPresentByDepth.depth[3]->Fill(ieta,iphi,2);
00464 RecHitPresentByDepth.depth[3]->Fill(-1*ieta,iphi,2);
00465 }
00466 }
00467 FillUnphysicalHEHFBins(RecHitPresentByDepth);
00468 }
00469
00470 Nevents->Reset();
00471 }
00472
00473
00474
00475
00476 void HcalDeadCellMonitor::cleanup()
00477 {
00478 if (!enableCleanup_) return;
00479 if (dbe_)
00480 {
00481 dbe_->setCurrentFolder(subdir_);
00482 dbe_->removeContents();
00483 dbe_->setCurrentFolder(subdir_+"dead_digi_never_present");
00484 dbe_->removeContents();
00485 dbe_->setCurrentFolder(subdir_+"dead_digi_often_missing");
00486 dbe_->removeContents();
00487 dbe_->setCurrentFolder(subdir_+"dead_rechit_neverpresent");
00488 dbe_->removeContents();
00489 dbe_->setCurrentFolder(subdir_+"dead_rechit_often_missing");
00490 dbe_->removeContents();
00491 dbe_->setCurrentFolder(subdir_+"dead_cell_parameters");
00492 dbe_->removeContents();
00493 dbe_->setCurrentFolder(subdir_+"LSvalues");
00494 dbe_->removeContents();
00495 }
00496 return;
00497 }
00498
00499
00500
00501 void HcalDeadCellMonitor::endLuminosityBlock(const edm::LuminosityBlock& lumiSeg,
00502 const edm::EventSetup& c)
00503 {
00504
00505 if (this->LumiInOrder(lumiSeg.luminosityBlock())==false) return;
00506
00507
00508 if (ProblemsCurrentLB)
00509 ProblemsCurrentLB->Reset();
00510
00511 ProblemsInLastNLB_HBHEHF_alarm->Reset();
00512
00513
00514 if(hbhedcsON == true && hfdcsON == true && HBpresent_ == 1 && HEpresent_ == 1 && HFpresent_ == 1)
00515 ++alarmer_counter_;
00516 else
00517 alarmer_counter_ = 0;
00518
00519
00520
00521
00522
00523 if (deadevt_>=10 && deadevt_<minDeadEventCount_ && is_RBX_loss_==1)
00524 {
00525 fillNevents_problemCells();
00526 fillNevents_recentrechits();
00527 fillNevents_recentdigis();
00528
00529 endLumiProcessed_=true;
00530 is_RBX_loss_=0;
00531
00532 for (unsigned int i=0;i<156;++i)
00533 rbxlost[i] = 0;
00534
00535 if (ProblemsCurrentLB)
00536 {
00537 ProblemsCurrentLB->setBinContent(0,0, levt_);
00538 ProblemsCurrentLB->setBinContent(1,1, NumBadHB*levt_);
00539 ProblemsCurrentLB->setBinContent(2,1, NumBadHE*levt_);
00540 ProblemsCurrentLB->setBinContent(3,1, NumBadHO*levt_);
00541 ProblemsCurrentLB->setBinContent(4,1, NumBadHF*levt_);
00542 ProblemsCurrentLB->setBinContent(5,1, NumBadHO0*levt_);
00543 ProblemsCurrentLB->setBinContent(6,1, NumBadHO12*levt_);
00544 ProblemsCurrentLB->setBinContent(7,1, NumBadHFLUMI*levt_);
00545 }
00546 }
00547
00548 if (deadevt_<minDeadEventCount_)
00549 return;
00550
00551 endLumiProcessed_=true;
00552
00553 fillNevents_problemCells();
00554 fillNevents_recentdigis();
00555 fillNevents_recentrechits();
00556
00557 if (ProblemsCurrentLB)
00558 {
00559 ProblemsCurrentLB->setBinContent(0,0, levt_);
00560 ProblemsCurrentLB->setBinContent(1,1, NumBadHB*levt_);
00561 ProblemsCurrentLB->setBinContent(2,1, NumBadHE*levt_);
00562 ProblemsCurrentLB->setBinContent(3,1, NumBadHO*levt_);
00563 ProblemsCurrentLB->setBinContent(4,1, NumBadHF*levt_);
00564 ProblemsCurrentLB->setBinContent(5,1, NumBadHO0*levt_);
00565 ProblemsCurrentLB->setBinContent(6,1, NumBadHO12*levt_);
00566 ProblemsCurrentLB->setBinContent(7,1, NumBadHFLUMI*levt_);
00567 }
00568 zeroCounters();
00569 deadevt_=0;
00570 is_RBX_loss_=0;
00571 beamMode_ = 0;
00572 return;
00573 }
00574
00575 void HcalDeadCellMonitor::endRun(const edm::Run& run, const edm::EventSetup& c)
00576 {
00577
00578
00579
00580 if (endLumiProcessed_==false) fillNevents_problemCells();
00581
00582 return;
00583 }
00584
00585 void HcalDeadCellMonitor::endJob()
00586 {
00587 if (debug_>0) std::cout <<"HcalDeadCellMonitor::endJob()"<<std::endl;
00588 if (enableCleanup_) cleanup();
00589 }
00590
00591 void HcalDeadCellMonitor::analyze(edm::Event const&e, edm::EventSetup const&s)
00592 {
00593 if (!IsAllowedCalibType()) return;
00594 endLumiProcessed_=false;
00595
00596 if(doReset_)
00597 this->reset();
00598
00599 Nevents->Fill(0,1);
00600 if (LumiInOrder(e.luminosityBlock())==false) return;
00601
00602 edm::Handle<HBHEDigiCollection> hbhe_digi;
00603 edm::Handle<HODigiCollection> ho_digi;
00604 edm::Handle<HFDigiCollection> hf_digi;
00605
00606 edm::Handle<HBHERecHitCollection> hbhe_rechit;
00607 edm::Handle<HORecHitCollection> ho_rechit;
00608 edm::Handle<HFRecHitCollection> hf_rechit;
00609
00610 edm::Handle<L1GlobalTriggerEvmReadoutRecord> gtEvm_handle;
00611
00613
00614 edm::Handle<DcsStatusCollection> dcsStatus;
00615 e.getByLabel("scalersRawToDigi", dcsStatus);
00616
00617 if (dcsStatus.isValid() && dcsStatus->size() != 0)
00618 {
00619 if ((*dcsStatus)[0].ready(DcsStatus::HBHEa) &&
00620 (*dcsStatus)[0].ready(DcsStatus::HBHEb) &&
00621 (*dcsStatus)[0].ready(DcsStatus::HBHEc))
00622 {
00623 hbhedcsON = true;
00624 if (debug_) std::cout << "hbhe on" << std::endl;
00625 }
00626 else hbhedcsON = false;
00627
00628 if ((*dcsStatus)[0].ready(DcsStatus::HF))
00629 {
00630 hfdcsON = true;
00631 if (debug_) std::cout << "hf on" << std::endl;
00632 }
00633 else hfdcsON = false;
00634 }
00636
00637 if (!(e.getByLabel(digiLabel_,hbhe_digi)))
00638 {
00639 edm::LogWarning("HcalDeadCellMonitor")<< digiLabel_<<" hbhe_digi not available";
00640 return;
00641 }
00642 if (!(e.getByLabel(digiLabel_,ho_digi)))
00643 {
00644 edm::LogWarning("HcalDeadCellMonitor")<< digiLabel_<<" ho_digi not available";
00645 return;
00646 }
00647 if (!(e.getByLabel(digiLabel_,hf_digi)))
00648 {
00649 edm::LogWarning("HcalDeadCellMonitor")<< digiLabel_<<" hf_digi not available";
00650 return;
00651 }
00652
00653 if (!(e.getByLabel(hbheRechitLabel_,hbhe_rechit)))
00654 {
00655 edm::LogWarning("HcalDeadCellMonitor")<< hbheRechitLabel_<<" hbhe_rechit not available";
00656 return;
00657 }
00658
00659 if (!(e.getByLabel(hfRechitLabel_,hf_rechit)))
00660 {
00661 edm::LogWarning("HcalDeadCellMonitor")<< hfRechitLabel_<<" hf_rechit not available";
00662 return;
00663 }
00664 if (!(e.getByLabel(hoRechitLabel_,ho_rechit)))
00665 {
00666 edm::LogWarning("HcalDeadCellMonitor")<< hoRechitLabel_<<" ho_rechit not available";
00667 return;
00668 }
00669 if (!(e.getByLabel("gtEvmDigis", gtEvm_handle)))
00670 {
00671 edm::LogWarning("HcalDeadCellMonitor")<< "gtEvmDigis"<<" gtEvmDigis not available";
00672 return;
00673 }
00674 L1GtfeExtWord gtfeEvmExtWord = gtEvm_handle.product()->gtfeWord();
00675
00676 if (debug_>1) std::cout <<"\t<HcalDeadCellMonitor::analyze> Processing good event! event # = "<<ievt_<<std::endl;
00677
00678
00679 HcalBaseDQMonitor::analyze(e,s);
00680
00681 ++deadevt_;
00682
00683 processEvent(*hbhe_rechit, *ho_rechit, *hf_rechit, *hbhe_digi, *ho_digi, *hf_digi);
00684
00685
00686 if(levt_>10 && tevt_ % 10 == 0 )
00687 {
00688 for(int i=71; i<132; i++)
00689 {
00690
00691 if(i >= 72 && i < 85)
00692 occupancy_RBX[i] = 1;
00693 if(i >=85 && i <= 95 && i%2==0)
00694 occupancy_RBX[i] = 1;
00695 if(i >=108 && i <= 119 && i%2==0)
00696 occupancy_RBX[i] = 1;
00697 if(i >=120 && i <= 131)
00698 occupancy_RBX[i] = 1;
00699
00700 if(i==117 || i==131)
00701 occupancy_RBX[i] = 1;
00702 }
00703
00704
00705 for (unsigned int i=0;i<132;++i)
00706 if(occupancy_RBX[i] == 0)
00707 {
00708 is_RBX_loss_ = 1;
00709 rbxlost[i] = 1;
00710 }
00711
00712 int intensity1_ = gtfeEvmExtWord.totalIntensityBeam1();
00713 int intensity2_ = gtfeEvmExtWord.totalIntensityBeam2();
00714
00715 for (unsigned int i=132;i<156;++i)
00716 if(occupancy_RBX[i] == 0 && gtfeEvmExtWord.beamMode() == 11)
00717 if(intensity1_>100 && intensity2_>100)
00718 {
00719 is_RBX_loss_ = 1;
00720 rbxlost[i] = 1;
00721 }
00722
00723
00724 if (is_RBX_loss_ == 0)
00725 for (unsigned int i=0;i<156;++i)
00726 occupancy_RBX[i] = 0;
00727 }
00728
00729
00730 if(is_RBX_loss_ == 1)
00731 for (unsigned int i=0;i<156;++i)
00732 if(rbxlost[i]==1) occupancy_RBX[i] = 0;
00733
00734 }
00735
00736
00737
00738
00739 void HcalDeadCellMonitor::processEvent(const HBHERecHitCollection& hbHits,
00740 const HORecHitCollection& hoHits,
00741 const HFRecHitCollection& hfHits,
00742 const HBHEDigiCollection& hbhedigi,
00743 const HODigiCollection& hodigi,
00744 const HFDigiCollection& hfdigi)
00745 {
00746 if (debug_>1) std::cout <<"<HcalDeadCellMonitor::processEvent> Processing event..."<<std::endl;
00747
00748
00749
00750
00751 for (unsigned int i=0;i<DigiPresentByDepth.depth.size();++i)
00752 DigiPresentByDepth.depth[i]->update();
00753
00754 NumberOfNeverPresentDigis->update();;
00755 NumberOfNeverPresentDigisHB->update();
00756 NumberOfNeverPresentDigisHE->update();
00757 NumberOfNeverPresentDigisHO->update();
00758 NumberOfNeverPresentDigisHF->update();
00759
00760 if (deadmon_test_digis_)
00761 {
00762
00763 for (unsigned int i=0;i<RecentMissingDigisByDepth.depth.size();++i)
00764 RecentMissingDigisByDepth.depth[i]->update();
00765
00766 NumberOfRecentMissingDigis->update();
00767 NumberOfRecentMissingDigisHB->update();
00768 NumberOfRecentMissingDigisHE->update();
00769 NumberOfRecentMissingDigisHO->update();
00770 NumberOfRecentMissingDigisHF->update();
00771 }
00772
00773 for (HBHEDigiCollection::const_iterator j=hbhedigi.begin();
00774 j!=hbhedigi.end(); ++j)
00775 {
00776 const HBHEDataFrame digi = (const HBHEDataFrame)(*j);
00777 processEvent_HBHEdigi(digi);
00778 }
00779
00780 for (HODigiCollection::const_iterator j=hodigi.begin();
00781 j!=hodigi.end(); ++j)
00782 {
00783 const HODataFrame digi = (const HODataFrame)(*j);
00784 process_Digi(digi);
00785 }
00786 for (HFDigiCollection::const_iterator j=hfdigi.begin();
00787 j!=hfdigi.end(); ++j)
00788 {
00789 const HFDataFrame digi = (const HFDataFrame)(*j);
00790 process_Digi(digi);
00791 }
00792 FillUnphysicalHEHFBins(DigiPresentByDepth);
00793
00794
00795 if (deadmon_test_rechits_)
00796 {
00797
00798 for (unsigned int i=0;i<RecentMissingRecHitsByDepth.depth.size();++i)
00799 RecentMissingRecHitsByDepth.depth[i]->update();
00800
00801 NumberOfRecentMissingRecHits->update();
00802 NumberOfRecentMissingRecHitsHB->update();
00803 NumberOfRecentMissingRecHitsHE->update();
00804 NumberOfRecentMissingRecHitsHO->update();
00805 NumberOfRecentMissingRecHitsHF->update();
00806
00807 for (HBHERecHitCollection::const_iterator j=hbHits.begin();
00808 j!=hbHits.end(); ++j)
00809 process_RecHit(j);
00810
00811 for (HORecHitCollection::const_iterator k=hoHits.begin();
00812 k!=hoHits.end(); ++k)
00813 process_RecHit(k);
00814
00815 for (HFRecHitCollection::const_iterator j=hfHits.begin();
00816 j!=hfHits.end(); ++j)
00817 process_RecHit(j);
00818
00819 }
00820
00821 if (!makeDiagnostics_) return;
00822 if (tevt_>=NLumiBlocks_) return;
00823
00824 int hbpresent=0;
00825 int hepresent=0;
00826 int hopresent=0;
00827 int hfpresent=0;
00828 int ieta=0;
00829 for (int d=0;d<4;++d)
00830 {
00831 for (int phi=0;phi<72;++phi)
00832 {
00833 for (int eta=0;eta<85;++eta)
00834 {
00835 if (!present_digi[eta][phi][d]) continue;
00836 if (d==3) ++hopresent;
00837 else if (d==2) ++hepresent;
00838 else if (d==1)
00839 {
00840 ieta=binmapd2[eta];
00841
00842 if (abs(ieta)>29) ++hfpresent;
00843 else if (abs(ieta)<17) ++hbpresent;
00844 else ++hepresent;
00845 }
00846 else if (d==0)
00847 {
00848 ieta=eta-42;
00849 if (abs(ieta)>29) ++hfpresent;
00850 else if (abs(ieta)<17) ++hbpresent;
00851 else ++hepresent;
00852 }
00853 }
00854 }
00855 }
00856 HBDeadVsEvent->Fill(tevt_,2592-hbpresent);
00857 HEDeadVsEvent->Fill(tevt_,2592-hepresent);
00858 HODeadVsEvent->Fill(tevt_,2160-hopresent);
00859 HFDeadVsEvent->Fill(tevt_,1728-hfpresent);
00860 return;
00861 }
00862
00863
00864
00865
00866
00867
00868 void HcalDeadCellMonitor::processEvent_HBHEdigi(const HBHEDataFrame digi)
00869 {
00870
00871 process_Digi(digi);
00872 return;
00873 }
00874
00875 template<class DIGI>
00876 void HcalDeadCellMonitor::process_Digi(DIGI& digi)
00877 {
00878
00879
00880 int ieta=digi.id().ieta();
00881 int iphi=digi.id().iphi();
00882 int depth=digi.id().depth();
00883
00884
00885 ++recentoccupancy_digi[CalcEtaBin(digi.id().subdet(),ieta,depth)][iphi-1][depth-1];
00886
00887
00888 if (present_digi[CalcEtaBin(digi.id().subdet(),ieta,depth)][iphi-1][depth-1]==false)
00889 {
00890 if (DigiPresentByDepth.depth[depth-1])
00891 {
00892 DigiPresentByDepth.depth[depth-1]->setBinContent(CalcEtaBin(digi.id().subdet(),ieta,depth)+1,iphi,1);
00893 }
00894 present_digi[CalcEtaBin(digi.id().subdet(),ieta,depth)][iphi-1][depth-1]=true;
00895 }
00896 return;
00897 }
00898
00899
00900
00901 template<class RECHIT>
00902 void HcalDeadCellMonitor::process_RecHit(RECHIT& rechit)
00903 {
00904 float en = rechit->energy();
00905 HcalDetId id(rechit->detid().rawId());
00906 int ieta = id.ieta();
00907 int iphi = id.iphi();
00908 int depth = id.depth();
00909
00910 if (id.subdet()==HcalBarrel)
00911 {
00912 if (en>=HBenergyThreshold_)
00913 {
00914 ++recentoccupancy_rechit[CalcEtaBin(id.subdet(),ieta,depth)][iphi-1][depth-1];
00915 present_rechit[CalcEtaBin(id.subdet(),ieta,depth)][iphi-1][depth-1]=true;
00916 if (RecHitPresentByDepth.depth[depth-1])
00917 RecHitPresentByDepth.depth[depth-1]->setBinContent(CalcEtaBin(id.subdet(),ieta,depth)+1,iphi,1);
00918 }
00920
00921 int RBXindex = logicalMap_->getHcalFrontEndId(rechit->detid()).rbxIndex();
00922
00923 occupancy_RBX[RBXindex]++;
00925 }
00926 else if (id.subdet()==HcalEndcap)
00927 {
00928 if (en>=HEenergyThreshold_)
00929 {
00930 ++recentoccupancy_rechit[CalcEtaBin(id.subdet(),ieta,depth)][iphi-1][depth-1];
00931 present_rechit[CalcEtaBin(id.subdet(),ieta,depth)][iphi-1][depth-1]=true;
00932 if (RecHitPresentByDepth.depth[depth-1])
00933 RecHitPresentByDepth.depth[depth-1]->setBinContent(CalcEtaBin(id.subdet(),ieta,depth)+1,iphi,1);
00934 }
00936
00937 int RBXindex = logicalMap_->getHcalFrontEndId(rechit->detid()).rbxIndex();
00938
00939 occupancy_RBX[RBXindex]++;
00941 }
00942 else if (id.subdet()==HcalForward)
00943 {
00944 if (en>=HFenergyThreshold_)
00945 {
00946 ++recentoccupancy_rechit[CalcEtaBin(id.subdet(),ieta,depth)][iphi-1][depth-1];
00947
00948 present_rechit[CalcEtaBin(id.subdet(),ieta,depth)][iphi-1][depth-1]=true;
00949 if (RecHitPresentByDepth.depth[depth-1])
00950 RecHitPresentByDepth.depth[depth-1]->setBinContent(CalcEtaBin(id.subdet(),ieta,depth)+1,iphi,1);
00951 }
00953
00954 int RBXindex = logicalMap_->getHcalFrontEndId(rechit->detid()).rbxIndex();
00955
00956 occupancy_RBX[RBXindex]++;
00958 }
00959 else if (id.subdet()==HcalOuter)
00960 {
00961 if (en>=HOenergyThreshold_)
00962 {
00963 ++recentoccupancy_rechit[CalcEtaBin(id.subdet(),ieta,depth)][iphi-1][depth-1];
00964 present_rechit[CalcEtaBin(id.subdet(),ieta,depth)][iphi-1][depth-1]=true;
00965 if (RecHitPresentByDepth.depth[depth-1])
00966 RecHitPresentByDepth.depth[depth-1]->setBinContent(CalcEtaBin(id.subdet(),ieta,depth)+1,iphi,1);
00967 }
00969
00970 int RBXindex = logicalMap_->getHcalFrontEndId(rechit->detid()).rbxIndex();
00971
00972 occupancy_RBX[RBXindex]++;
00974 }
00975 }
00976
00977 void HcalDeadCellMonitor::fillNevents_recentdigis()
00978 {
00979
00980 if (!deadmon_test_digis_) return;
00981
00982
00983 if (deadevt_ < minDeadEventCount_) return;
00984
00985 if (debug_>0)
00986 std::cout <<"<HcalDeadCellMonitor::fillNevents_recentdigis> CHECKING FOR RECENT MISSING DIGIS evtcount = "<<deadevt_<<std::endl;
00987
00988 int ieta=0;
00989 int iphi=0;
00990
00991 int etabins=0;
00992 int phibins=0;
00993
00995 if (deadevt_ >= 10 && deadevt_<minDeadEventCount_)
00996 if( is_RBX_loss_ == 1 )
00997 for (unsigned int depth=0;depth<RecentMissingDigisByDepth.depth.size();++depth)
00998 {
00999 RecentMissingDigisByDepth.depth[depth]->setBinContent(0,0,ievt_);
01000 etabins=RecentMissingDigisByDepth.depth[depth]->getNbinsX();
01001 phibins=RecentMissingDigisByDepth.depth[depth]->getNbinsY();
01002 for (int eta=0;eta<etabins;++eta)
01003 for (int phi=0;phi<phibins;++phi)
01004 {
01005 iphi=phi+1;
01006 for (int subdet=1;subdet<=4;++subdet)
01007 {
01008 ieta=CalcIeta((HcalSubdetector)subdet,eta,depth+1);
01009 if (ieta==-9999) continue;
01010 if (!validDetId((HcalSubdetector)subdet, ieta, iphi, depth+1))
01011 continue;
01012
01013 HcalDetId TempID((HcalSubdetector)subdet, ieta, iphi, (int)depth+1);
01014
01015 int index = logicalMap_->getHcalFrontEndId(TempID).rbxIndex();
01016
01017
01018 if(occupancy_RBX[index]==0)
01019 {
01020 recentoccupancy_digi[eta][phi][depth] = 0;
01021 RecentMissingDigisByDepth.depth[depth]->Fill(ieta,iphi,deadevt_);
01022 }
01023 }
01024 }
01025 }
01027
01028 for (unsigned int depth=0;depth<RecentMissingDigisByDepth.depth.size();++depth)
01029 {
01030 RecentMissingDigisByDepth.depth[depth]->setBinContent(0,0,ievt_);
01031 etabins=RecentMissingDigisByDepth.depth[depth]->getNbinsX();
01032 phibins=RecentMissingDigisByDepth.depth[depth]->getNbinsY();
01033 for (int eta=0;eta<etabins;++eta)
01034 {
01035 for (int subdet=1;subdet<=4;++subdet)
01036 {
01037 ieta=CalcIeta((HcalSubdetector)subdet,eta,depth+1);
01038 if (ieta==-9999) continue;
01039 for (int phi=0;phi<phibins;++phi)
01040 {
01041 iphi=phi+1;
01042
01043 if (!validDetId((HcalSubdetector)subdet, ieta, iphi, depth+1))
01044 continue;
01045
01046
01047
01048
01049
01050
01051
01052
01053 int zside=0;
01054 if (subdet==HcalForward)
01055 ieta<0 ? zside=-1 : zside=+1;
01056
01057 if (recentoccupancy_digi[eta][phi][depth]==0)
01058 {
01059 if (debug_>0)
01060 {
01061 std::cout <<"DEAD CELL; NO RECENT OCCUPANCY: subdet = "<<subdet<<", ieta = "<<ieta<<", iphi = "<<iphi<<" depth = "<<depth+1<<std::endl;
01062 std::cout <<"\t RAW COORDINATES: eta = "<<eta<< " phi = "<<phi<<" depth = "<<depth<<std::endl;
01063 std::cout <<"\t Present? "<<present_digi[eta][phi][depth]<<std::endl;
01064 }
01065
01066
01067 if (excludeHORing2_==true && abs(ieta)>10 && isSiPM(ieta,iphi,depth+1)==false)
01068 continue;
01069
01070
01071 if (RecentMissingDigisByDepth.depth[depth]) RecentMissingDigisByDepth.depth[depth]->Fill(ieta+zside,iphi,deadevt_);
01072 }
01073 }
01074 }
01075 }
01076 }
01077 FillUnphysicalHEHFBins(RecentMissingDigisByDepth);
01078
01079 return;
01080
01081 }
01082
01083
01084
01085
01086
01087 void HcalDeadCellMonitor::fillNevents_recentrechits()
01088 {
01089
01090
01091
01092
01093
01094
01095
01096
01097 if (!deadmon_test_rechits_) return;
01098 FillUnphysicalHEHFBins(RecHitPresentByDepth);
01099
01100 if (debug_>0)
01101 std::cout <<"<HcalDeadCellMonitor::fillNevents_energy> BELOW-ENERGY-THRESHOLD PLOTS"<<std::endl;
01102
01103 int ieta=0;
01104 int iphi=0;
01105
01106 int etabins=0;
01107 int phibins=0;
01108
01110 if (deadevt_ >= 10 && deadevt_<minDeadEventCount_)
01111 if( is_RBX_loss_ == 1 )
01112 for (unsigned int depth=0;depth<RecentMissingRecHitsByDepth.depth.size();++depth)
01113 {
01114 RecentMissingRecHitsByDepth.depth[depth]->setBinContent(0,0,ievt_);
01115 etabins=RecentMissingRecHitsByDepth.depth[depth]->getNbinsX();
01116 phibins=RecentMissingRecHitsByDepth.depth[depth]->getNbinsY();
01117 for (int eta=0;eta<etabins;++eta)
01118 for (int phi=0;phi<phibins;++phi)
01119 {
01120 iphi=phi+1;
01121 for (int subdet=1;subdet<=4;++subdet)
01122 {
01123 ieta=CalcIeta((HcalSubdetector)subdet,eta,depth+1);
01124 if (ieta==-9999) continue;
01125 if (!validDetId((HcalSubdetector)subdet, ieta, iphi, depth+1))
01126 continue;
01127
01128 HcalDetId TempID((HcalSubdetector)subdet, ieta, iphi, (int)depth+1);
01129
01130 int index = logicalMap_->getHcalFrontEndId(TempID).rbxIndex();
01131
01132
01133 if(occupancy_RBX[index]==0)
01134 {
01135 recentoccupancy_rechit[eta][phi][depth] = 0;
01136 RecentMissingRecHitsByDepth.depth[depth]->Fill(ieta,iphi,deadevt_);
01137 }
01138 }
01139 }
01140 }
01142
01143 if (deadevt_ < minDeadEventCount_) return;
01144
01145 for (unsigned int depth=0;depth<RecentMissingRecHitsByDepth.depth.size();++depth)
01146 {
01147 RecentMissingRecHitsByDepth.depth[depth]->setBinContent(0,0,ievt_);
01148 etabins=RecentMissingRecHitsByDepth.depth[depth]->getNbinsX();
01149 phibins=RecentMissingRecHitsByDepth.depth[depth]->getNbinsY();
01150 for (int eta=0;eta<etabins;++eta)
01151 {
01152 for (int subdet=1;subdet<=4;++subdet)
01153 {
01154 ieta=CalcIeta((HcalSubdetector)subdet,eta,depth+1);
01155 if (ieta==-9999) continue;
01156 for (int phi=0;phi<phibins;++phi)
01157 {
01158 iphi=phi+1;
01159 if (!validDetId((HcalSubdetector)subdet, ieta, iphi, depth+1))
01160 continue;
01161
01162 if (recentoccupancy_rechit[eta][phi][depth]>0) continue;
01163
01164
01165
01166
01167
01168
01169
01170
01171
01172 int zside=0;
01173 if (subdet==HcalForward)
01174 {
01175 ieta<0 ? zside=-1 : zside=+1;
01176 }
01177
01178 if (debug_>2)
01179 std::cout <<"DEAD CELL; BELOW ENERGY THRESHOLD; subdet = "<<subdet<<" ieta = "<<ieta<<", phi = "<<iphi<<" depth = "<<depth+1<<std::endl;
01180 if (excludeHORing2_==true && abs(ieta)>10 && isSiPM(ieta,iphi,depth+1)==false)
01181 continue;
01182
01183 if (RecentMissingRecHitsByDepth.depth[depth]) RecentMissingRecHitsByDepth.depth[depth]->Fill(ieta+zside,iphi,deadevt_);
01184 }
01185 }
01186 }
01187 }
01188
01189 FillUnphysicalHEHFBins(RecentMissingRecHitsByDepth);
01190
01191 return;
01192 }
01193
01194
01195 void HcalDeadCellMonitor::fillNevents_problemCells()
01196 {
01197
01198
01199 if (debug_>0)
01200 std::cout <<"<HcalDeadCellMonitor::fillNevents_problemCells> FILLING PROBLEM CELL PLOTS"<<std::endl;
01201
01202 int ieta=0;
01203 int iphi=0;
01204
01205
01206
01207 NumBadHB=0;
01208 NumBadHE=0;
01209 NumBadHO=0;
01210 NumBadHF=0;
01211 NumBadHFLUMI=0;
01212 NumBadHO0=0;
01213 NumBadHO12=0;
01214 NumBadHO1P02=0;
01215
01216 int knownBadHB=0;
01217 int knownBadHE=0;
01218 int knownBadHF=0;
01219 int knownBadHO=0;
01220 int knownBadHFLUMI=0;
01221 int knownBadHO0=0;
01222 int knownBadHO12=0;
01223
01224
01225 unsigned int neverpresentHB=0;
01226 unsigned int neverpresentHE=0;
01227 unsigned int neverpresentHO=0;
01228 unsigned int neverpresentHF=0;
01229
01230 unsigned int unoccupiedHB=0;
01231 unsigned int unoccupiedHE=0;
01232 unsigned int unoccupiedHO=0;
01233 unsigned int unoccupiedHF=0;
01234
01235 unsigned int belowenergyHB=0;
01236 unsigned int belowenergyHE=0;
01237 unsigned int belowenergyHO=0;
01238 unsigned int belowenergyHF=0;
01239
01240 unsigned int energyneverpresentHB=0;
01241 unsigned int energyneverpresentHE=0;
01242 unsigned int energyneverpresentHO=0;
01243 unsigned int energyneverpresentHF=0;
01244
01245 if (deadevt_>=minDeadEventCount_)
01246 Nevents->Fill(1,deadevt_);
01247
01248 int etabins=0;
01249 int phibins=0;
01250
01251
01252
01253
01254
01256
01257 unsigned int RBX_loss_HB=0;
01258 unsigned int RBX_loss_HE=0;
01259 unsigned int RBX_loss_HO=0;
01260 unsigned int RBX_loss_HF=0;
01261
01262 unsigned int counter_HB = 0;
01263 unsigned int counter_HE = 0;
01264 unsigned int counter_HO = 0;
01265 unsigned int counter_HF = 0;
01266
01267 for(int i=0; i<156; i++)
01268 {
01269 if(occupancy_RBX[i]==0 && is_RBX_loss_ == 1)
01270 {
01271 if(i<=35)
01272 { counter_HB ++ ; RBX_loss_HB = 72*(counter_HB); }
01273 if(i>=36 && i<=71)
01274 { counter_HE ++ ; RBX_loss_HE = 72*(counter_HE); }
01275 if(i>=72 && i<=131)
01276 { counter_HO ++ ; RBX_loss_HO = 72*(counter_HO); }
01277 if(i>=132 && i<=155)
01278 { counter_HF ++ ; RBX_loss_HF = 72*(counter_HF); }
01279
01280 if(excludeHO1P02_==true && i==109) NumBadHO1P02 = 72;
01281 }
01282
01283 if(occupancy_RBX[i]>0)
01284 RBX_loss_VS_LB->Fill(currentLS, i, 0);
01285 if(occupancy_RBX[i]==0 && is_RBX_loss_ == 1)
01286 RBX_loss_VS_LB->Fill(currentLS, i, 1);
01287 }
01288
01289 if (deadevt_ >= 10 && deadevt_<minDeadEventCount_)
01290 if( is_RBX_loss_ == 1 )
01291 {
01292 NumBadHB+=RBX_loss_HB;
01293 NumBadHE+=RBX_loss_HE;
01294 NumBadHO+=RBX_loss_HO;
01295 NumBadHF+=RBX_loss_HF;
01296
01297 belowenergyHB+=RBX_loss_HB;
01298 belowenergyHE+=RBX_loss_HE;
01299 belowenergyHO+=RBX_loss_HO;
01300 belowenergyHF+=RBX_loss_HF;
01301
01302 unoccupiedHB+=RBX_loss_HB;
01303 unoccupiedHE+=RBX_loss_HE;
01304 unoccupiedHO+=RBX_loss_HO;
01305 unoccupiedHF+=RBX_loss_HF;
01306 }
01308
01309 for (unsigned int depth=0;depth<DigiPresentByDepth.depth.size();++depth)
01310 {
01311 DigiPresentByDepth.depth[depth]->setBinContent(0,0,ievt_);
01312 etabins=DigiPresentByDepth.depth[depth]->getNbinsX();
01313 phibins=DigiPresentByDepth.depth[depth]->getNbinsY();
01314 for (int eta=0;eta<etabins;++eta)
01315 {
01316 for (int phi=0;phi<phibins;++phi)
01317 {
01318 iphi=phi+1;
01319 for (int subdet=1;subdet<=4;++subdet)
01320 {
01321 ieta=CalcIeta((HcalSubdetector)subdet,eta,depth+1);
01322 if (ieta==-9999) continue;
01323 if (!validDetId((HcalSubdetector)subdet, ieta, iphi, depth+1))
01324 continue;
01325
01326
01327
01328
01329
01330
01331
01332
01333
01334
01335
01336
01337
01338
01339
01340
01341 if ((present_digi[eta][phi][depth]==0) ||
01342 (deadmon_test_digis_ && recentoccupancy_digi[eta][phi][depth]==0 && (deadevt_>=minDeadEventCount_)) ||
01343 (deadmon_test_rechits_ && recentoccupancy_rechit[eta][phi][depth]==0 && (deadevt_>=minDeadEventCount_))
01344 )
01345 {
01346 HcalDetId TempID((HcalSubdetector)subdet, ieta, iphi, (int)depth+1);
01347 if (subdet==HcalBarrel)
01348 {
01349 ++NumBadHB;
01350 if (KnownBadCells_.find(TempID.rawId())!=KnownBadCells_.end())
01351 ++knownBadHB;
01352 }
01353 else if (subdet==HcalEndcap)
01354 {
01355 ++NumBadHE;
01356 if (KnownBadCells_.find(TempID.rawId())!=KnownBadCells_.end())
01357 ++knownBadHE;
01358 }
01359
01360 else if (subdet==HcalOuter)
01361 {
01362 ++NumBadHO;
01363 if (abs(ieta)<5) ++NumBadHO0;
01364 else ++NumBadHO12;
01365
01366 if (excludeHORing2_==true && abs(ieta)>10 && isSiPM(ieta,iphi,depth+1)==false)
01367 {
01368 --NumBadHO;
01369 --NumBadHO12;
01370 }
01371
01372 if (excludeHO1P02_==true && ( (ieta>4 && ieta<10) && (iphi<=10 || iphi>70) ) )
01373 ++NumBadHO1P02;
01374
01375 if (KnownBadCells_.find(TempID.rawId())!=KnownBadCells_.end())
01376 {
01377 ++knownBadHO;
01378 if (abs(ieta)<5) ++knownBadHO0;
01379 else ++knownBadHO12;
01380
01381 if (excludeHORing2_==true && abs(ieta)>10 && isSiPM(ieta,iphi,depth+1)==false)
01382 {
01383 --knownBadHO;
01384 --knownBadHO12;
01385 }
01386 }
01387 }
01388 else if (subdet==HcalForward)
01389 {
01390 ++NumBadHF;
01391 if (depth==1 && (abs(ieta)==33 || abs(ieta)==34))
01392 ++NumBadHFLUMI;
01393 else if (depth==2 && (abs(ieta)==35 || abs(ieta)==36))
01394 ++NumBadHFLUMI;
01395 if (KnownBadCells_.find(TempID.rawId())!=KnownBadCells_.end())
01396 {
01397 ++knownBadHF;
01398 if (depth==1 && (abs(ieta)==33 || abs(ieta)==34))
01399 ++knownBadHFLUMI;
01400 else if (depth==2 && (abs(ieta)==35 || abs(ieta)==36))
01401 ++knownBadHFLUMI;
01402 }
01403 }
01404 }
01405 if (present_digi[eta][phi][depth]==0 )
01406 {
01407 if (subdet==HcalBarrel) ++neverpresentHB;
01408 else if (subdet==HcalEndcap) ++neverpresentHE;
01409 else if (subdet==HcalOuter)
01410 {
01411 ++neverpresentHO;
01412 if (excludeHORing2_==true && abs(ieta)>10 && isSiPM(ieta,iphi,depth+1)==false)
01413 --neverpresentHO;
01414 }
01415 else if (subdet==HcalForward) ++neverpresentHF;
01416 }
01417
01418 if (deadmon_test_digis_ && recentoccupancy_digi[eta][phi][depth]==0 && deadevt_>=minDeadEventCount_)
01419 {
01420 HcalDetId TempID((HcalSubdetector)subdet, ieta, iphi, (int)depth+1);
01421 if (subdet==HcalBarrel) ++unoccupiedHB;
01422 else if (subdet==HcalEndcap) ++unoccupiedHE;
01423 else if (subdet==HcalOuter)
01424 {
01425 ++unoccupiedHO;
01426 if (excludeHORing2_==true && abs(ieta)>10 && isSiPM(ieta,iphi,depth+1)==false)
01427 --unoccupiedHO;
01428 if (KnownBadCells_.find(TempID.rawId())!=KnownBadCells_.end() && abs(ieta)<=10)
01429 --unoccupiedHO;
01430 }
01431 else if (subdet==HcalForward) ++unoccupiedHF;
01432 }
01433
01434 if (deadmon_test_rechits_)
01435 {
01436 if (present_rechit[eta][phi][depth]==0)
01437 {
01438 if (subdet==HcalBarrel) ++energyneverpresentHB;
01439 else if (subdet==HcalEndcap) ++energyneverpresentHE;
01440 else if (subdet==HcalOuter)
01441 {
01442 ++energyneverpresentHO;
01443 if (excludeHORing2_==true && abs(ieta)>10 && isSiPM(ieta,iphi,depth+1)==false)
01444 --energyneverpresentHO;
01445 }
01446 else if (subdet==HcalForward) ++energyneverpresentHF;
01447 }
01448 if (recentoccupancy_rechit[eta][phi][depth]==0 && deadevt_>=minDeadEventCount_)
01449 {
01450 HcalDetId TempID((HcalSubdetector)subdet, ieta, iphi, (int)depth+1);
01451 if (subdet==HcalBarrel) ++belowenergyHB;
01452 else if (subdet==HcalEndcap) ++belowenergyHE;
01453 else if (subdet==HcalOuter)
01454 {
01455 ++belowenergyHO;
01456 if (excludeHORing2_==true && abs(ieta)>10 && isSiPM(ieta,iphi,depth+1)==false)
01457 --belowenergyHO;
01458 if (KnownBadCells_.find(TempID.rawId())!=KnownBadCells_.end() && abs(ieta)<=10)
01459 --belowenergyHO;
01460 }
01461 else if (subdet==HcalForward) ++belowenergyHF;
01462 }
01463 }
01464 }
01465 }
01466 }
01467 }
01468
01469
01470 NumberOfNeverPresentDigisHB->Fill(currentLS,neverpresentHB);
01471 NumberOfNeverPresentDigisHE->Fill(currentLS,neverpresentHE);
01472 NumberOfNeverPresentDigisHO->Fill(currentLS,neverpresentHO);
01473 NumberOfNeverPresentDigisHF->Fill(currentLS,neverpresentHF);
01474 NumberOfNeverPresentDigis->Fill(currentLS,neverpresentHB+neverpresentHE+neverpresentHO+neverpresentHF);
01475
01476 if (deadevt_>=minDeadEventCount_ && is_RBX_loss_ == 1 )
01477 {
01478 if( NumBadHB<RBX_loss_HB )
01479 NumBadHB+=RBX_loss_HB;
01480 if( NumBadHE<RBX_loss_HE )
01481 NumBadHE+=RBX_loss_HE;
01482 if( NumBadHO<RBX_loss_HO )
01483 NumBadHO+=RBX_loss_HO;
01484 if( NumBadHF<RBX_loss_HF )
01485 NumBadHF+=RBX_loss_HF;
01486
01487 if( belowenergyHB<RBX_loss_HB )
01488 belowenergyHB+=RBX_loss_HB;
01489 if( belowenergyHE<RBX_loss_HE )
01490 belowenergyHE+=RBX_loss_HE;
01491 if( belowenergyHO<RBX_loss_HO )
01492 belowenergyHO+=RBX_loss_HO;
01493 if( belowenergyHF<RBX_loss_HF )
01494 belowenergyHF+=RBX_loss_HF;
01495
01496 if( unoccupiedHB<RBX_loss_HB )
01497 unoccupiedHB+=RBX_loss_HB;
01498 if( unoccupiedHE<RBX_loss_HE )
01499 unoccupiedHE+=RBX_loss_HE;
01500 if( unoccupiedHO<RBX_loss_HO )
01501 unoccupiedHO+=RBX_loss_HO;
01502 if( unoccupiedHF<RBX_loss_HF )
01503 unoccupiedHF+=RBX_loss_HF;
01504
01505 is_RBX_loss_ = 0;
01506 }
01507
01508 ProblemsVsLB_HB->Fill(currentLS,NumBadHB-knownBadHB+0.0001);
01509 ProblemsVsLB_HE->Fill(currentLS,NumBadHE-knownBadHE+0.0001);
01510 ProblemsVsLB_HO->Fill(currentLS,NumBadHO-knownBadHO+0.0001);
01511 ProblemsVsLB_HF->Fill(currentLS,NumBadHF-knownBadHF+0.0001);
01512 ProblemsVsLB_HBHEHF->Fill(currentLS,NumBadHB+NumBadHE+NumBadHF-knownBadHB-knownBadHE-knownBadHF+0.0001);
01513 ProblemsVsLB->Fill(currentLS,NumBadHB+NumBadHE+NumBadHO+NumBadHF-knownBadHB-knownBadHE-knownBadHO-knownBadHF+0.0001);
01514
01515 if(excludeHO1P02_==true)
01516 ProblemsVsLB_HO->Fill(0, NumBadHO1P02);
01517
01518 if( NumBadHB+NumBadHE+NumBadHF-knownBadHB-knownBadHE-knownBadHF < 50 )
01519 alarmer_counter_ = 0;
01520
01521 if( alarmer_counter_ >= 10 )
01522 ProblemsInLastNLB_HBHEHF_alarm->Fill( std::min(int(NumBadHB+NumBadHE+NumBadHF-knownBadHB-knownBadHE-knownBadHF), 99) );
01523
01524
01525
01526
01527 if (deadmon_test_digis_)
01528 {
01529 NumberOfRecentMissingDigisHB->Fill(currentLS,unoccupiedHB);
01530 NumberOfRecentMissingDigisHE->Fill(currentLS,unoccupiedHE);
01531 NumberOfRecentMissingDigisHO->Fill(currentLS,unoccupiedHO);
01532 NumberOfRecentMissingDigisHF->Fill(currentLS,unoccupiedHF);
01533 NumberOfRecentMissingDigis->Fill(currentLS,unoccupiedHB+unoccupiedHE+unoccupiedHO+unoccupiedHF);
01534 }
01535
01536 if (deadmon_test_rechits_)
01537 {
01538 NumberOfNeverPresentRecHitsHB->Fill(currentLS,energyneverpresentHB);
01539 NumberOfNeverPresentRecHitsHE->Fill(currentLS,energyneverpresentHE);
01540 NumberOfNeverPresentRecHitsHO->Fill(currentLS,energyneverpresentHO);
01541 NumberOfNeverPresentRecHitsHF->Fill(currentLS,energyneverpresentHF);
01542 NumberOfNeverPresentRecHits->Fill(currentLS,energyneverpresentHB+energyneverpresentHE+energyneverpresentHO+energyneverpresentHF);
01543
01544 NumberOfRecentMissingRecHitsHB->Fill(currentLS,belowenergyHB);
01545 NumberOfRecentMissingRecHitsHE->Fill(currentLS,belowenergyHE);
01546 NumberOfRecentMissingRecHitsHO->Fill(currentLS,belowenergyHO);
01547 NumberOfRecentMissingRecHitsHF->Fill(currentLS,belowenergyHF);
01548 NumberOfRecentMissingRecHits->Fill(currentLS,belowenergyHB+belowenergyHE+belowenergyHO+belowenergyHF);
01549 }
01550
01551 return;
01552 }
01553
01554
01555 void HcalDeadCellMonitor::zeroCounters(bool resetpresent)
01556 {
01557
01558
01559
01560
01561 for (unsigned int i=0;i<85;++i)
01562 {
01563 for (unsigned int j=0;j<72;++j)
01564 {
01565 for (unsigned int k=0;k<4;++k)
01566 {
01567 if (resetpresent) present_digi[i][j][k]=false;
01568 if (resetpresent) present_rechit[i][j][k]=false;
01569 recentoccupancy_digi[i][j][k]=0;
01570 recentoccupancy_rechit[i][j][k]=0;
01571 }
01572 }
01573 }
01574
01575 for (unsigned int i=0;i<156;++i)
01576 {
01577 occupancy_RBX[i] = 0;
01578 rbxlost[i] = 0;
01579 }
01580
01581 return;
01582 }
01583
01584 DEFINE_FWK_MODULE(HcalDeadCellMonitor);