00001 #include "DQM/HcalMonitorTasks/interface/HcalRecHitMonitor.h"
00002
00003 #define OUT if(fverbosity_)cout
00004 #define TIME_MIN -250
00005 #define TIME_MAX 250
00006
00007 using namespace std;
00008
00009 HcalRecHitMonitor::HcalRecHitMonitor()
00010 {
00011 ievt_=0;
00012 }
00013
00014 HcalRecHitMonitor::~HcalRecHitMonitor()
00015 {
00016 }
00017
00018
00019
00020
00021 void HcalRecHitMonitor::setup(const edm::ParameterSet& ps,
00022 DQMStore* dbe)
00023 {
00024 HcalBaseMonitor::setup(ps,dbe);
00025
00026 if (showTiming)
00027 {
00028 cpu_timer.reset(); cpu_timer.start();
00029 }
00030 if (fVerbosity>0)
00031 cout <<"<HcalRecHitMonitor::setup> Setting up histograms"<<endl;
00032
00033 baseFolder_ = rootFolder_+"RecHitMonitor_Hcal";
00034
00035
00036 HBpresent_=false;
00037 HEpresent_=false;
00038 HOpresent_=false;
00039 HFpresent_=false;
00040
00041
00042
00043 if (fVerbosity>1)
00044 cout <<"<HcalRecHitMonitor::setup> Getting variable values from cfg files"<<endl;
00045
00046
00047 rechit_makeDiagnostics_ = ps.getUntrackedParameter<bool>("RecHitMonitor_makeDiagnosticPlots",makeDiagnostics);
00048
00049
00050 rechit_checkNevents_ = ps.getUntrackedParameter<int>("RecHitMonitor_checkNevents",checkNevents_);
00051 rechit_minErrorFlag_ = ps.getUntrackedParameter<double>("RecHitMonitor_minErrorFlag",0.0);
00052
00053 energyThreshold_ = ps.getUntrackedParameter<double>("RecHitMonitor_energyThreshold", 0);
00054 HBenergyThreshold_ = ps.getUntrackedParameter<double>("RecHitMonitor_HB_energyThreshold",energyThreshold_);
00055 HEenergyThreshold_ = ps.getUntrackedParameter<double>("RecHitMonitor_HE_energyThreshold",energyThreshold_);
00056 HOenergyThreshold_ = ps.getUntrackedParameter<double>("RecHitMonitor_HO_energyThreshold",energyThreshold_);
00057 HFenergyThreshold_ = ps.getUntrackedParameter<double>("RecHitMonitor_HF_energyThreshold",energyThreshold_);
00058 HFenergyThreshold_ = ps.getUntrackedParameter<double>("RecHitMonitor_HF_energyThreshold", -999);
00059 ZDCenergyThreshold_ = ps.getUntrackedParameter<double>("RecHitMonitor_ZDC_energyThreshold", -999);
00060
00061
00062 ievt_=0;
00063
00064
00065
00066
00067 for (int i=0;i<ETABINS;++i)
00068 {
00069 for (int j=0;j<PHIBINS;++j)
00070 {
00071 for (int k=0;k<6;++k)
00072 {
00073 occupancy_[i][j][k]=0;
00074 occupancy_thresh_[i][j][k]=0;
00075 energy_[i][j][k]=0;
00076 energy_thresh_[i][j][k]=0;
00077 time_[i][j][k]=0;
00078 time_thresh_[i][j][k]=0;
00079 }
00080 }
00081 }
00082
00083
00084
00085
00086 for (int i=0;i<200;++i)
00087 {
00088 HBenergy_[i]=0;
00089 HBenergy_thresh_[i]=0;
00090 HEenergy_[i]=0;
00091 HEenergy_thresh_[i]=0;
00092 HOenergy_[i]=0;
00093 HOenergy_thresh_[i]=0;
00094 HFenergy_[i]=0;
00095 HFenergy_thresh_[i]=0;
00096 HFenergyLong_[i]=0;
00097 HFenergyLong_thresh_[i]=0;
00098 HFenergyShort_[i]=0;
00099 HFenergyShort_thresh_[i]=0;
00100 }
00101
00102
00103 for (int i=0;i<(TIME_MAX-TIME_MIN);++i)
00104 {
00105 HBtime_[i]=0;
00106 HBtime_thresh_[i]=0;
00107 HEtime_[i]=0;
00108 HEtime_thresh_[i]=0;
00109 HOtime_[i]=0;
00110 HOtime_thresh_[i]=0;
00111 HFtime_[i]=0;
00112 HFtime_thresh_[i]=0;
00113 HFtimeLong_[i]=0;
00114 HFtimeLong_thresh_[i]=0;
00115 HFtimeShort_[i]=0;
00116 HFtimeShort_thresh_[i]=0;
00117 }
00118
00119
00120 for (int i=0;i<2593;++i)
00121 {
00122 HB_occupancy_[i]=0;
00123 HE_occupancy_[i]=0;
00124 HB_occupancy_thresh_[i]=0;
00125 HE_occupancy_thresh_[i]=0;
00126 if (i<=2160)
00127 {
00128 HO_occupancy_[i]=0;
00129 HO_occupancy_thresh_[i]=0;
00130 }
00131 if (i<=1728)
00132 {
00133 HF_occupancy_[i]=0;
00134 HF_occupancy_thresh_[i]=0;
00135 }
00136 if (i<=864)
00137 {
00138 HFlong_occupancy_[i] =0;
00139 HFshort_occupancy_[i]=0;
00140 HFlong_occupancy_thresh_[i] =0;
00141 HFshort_occupancy_thresh_[i]=0;
00142 }
00143 }
00144
00145
00146
00147 if (m_dbe)
00148 {
00149 if (fVerbosity>1)
00150 cout <<"<HcalRecHitMonitor::setup> Setting up histograms"<<endl;
00151
00152 m_dbe->setCurrentFolder(baseFolder_);
00153 meEVT_ = m_dbe->bookInt("RecHit Event Number");
00154 meEVT_->Fill(ievt_);
00155
00156
00157
00158 ProblemRecHits=m_dbe->book2D(" ProblemRecHits",
00159 " Problem Rec Hit Rate for all HCAL",
00160 etaBins_,etaMin_,etaMax_,
00161 phiBins_,phiMin_,phiMax_);
00162 ProblemRecHits->setAxisTitle("i#eta",1);
00163 ProblemRecHits->setAxisTitle("i#phi",2);
00164
00165 (ProblemRecHits->getTH2F())->SetMinimum(rechit_minErrorFlag_);
00166 (ProblemRecHits->getTH2F())->SetMaximum(1.);
00167
00168
00169 m_dbe->setCurrentFolder(baseFolder_+"/problem_rechits");
00170 setupDepthHists2D(ProblemRecHitsByDepth, " Problem RecHit Rate","");
00171 setMinMaxHists2D(ProblemRecHitsByDepth,rechit_minErrorFlag_,1.);
00172
00173 m_dbe->setCurrentFolder(baseFolder_+"/rechit_energy");
00174 setupDepthHists2D(EnergyByDepth,"Rec Hit Average Energy","");
00175 setupDepthHists2D(EnergyThreshByDepth,"Rec Hit Average Energy Above Threshold","");
00176
00177 m_dbe->setCurrentFolder(baseFolder_+"/rechit_occupancy");
00178 setupDepthHists2D(OccupancyByDepth,"Rec Hit Average Occupancy","");
00179 setMinMaxHists2D(OccupancyByDepth,0,1);
00180 setupDepthHists2D(OccupancyThreshByDepth,"Rec Hit Average Occupancy Above Threshold","");
00181 setMinMaxHists2D(OccupancyThreshByDepth,0,1);
00182
00183 m_dbe->setCurrentFolder(baseFolder_+"/rechit_time");
00184 setupDepthHists2D(TimeByDepth,"Rec Hit Average Time","");
00185 setupDepthHists2D(TimeThreshByDepth,"Rec Hit Average Time Above Threshold","");
00186
00187 if (rechit_makeDiagnostics_)
00188 {
00189 m_dbe->setCurrentFolder(baseFolder_+"/diagnostics/hb");
00190 h_HBEnergy=m_dbe->book1D("HB_energy","HB Rec Hit Energy",200,-5,5);
00191 h_HBThreshEnergy=m_dbe->book1D("HB_energy_thresh", "HB Rec Hit Energy Above Threshold",200,-5,5);
00192 h_HBTotalEnergy=m_dbe->book1D("HB_total_energy","HB Rec Hit Total Energy",200,-200,200);
00193 h_HBThreshTotalEnergy=m_dbe->book1D("HB_total_energy_thresh", "HB Rec Hit Total Energy Above Threshold",200,-200,200);
00194 h_HBTime=m_dbe->book1D("HB_time","HB Rec Hit Time",int(TIME_MAX-TIME_MIN),TIME_MIN,TIME_MAX);
00195 h_HBThreshTime=m_dbe->book1D("HB_time_thresh", "HB Rec Hit Time Above Threshold",int(TIME_MAX-TIME_MIN),TIME_MIN,TIME_MAX);
00196 h_HBOccupancy=m_dbe->book1D("HB_occupancy","HB Rec Hit Occupancy",2593,-0.5,2592.5);
00197 h_HBThreshOccupancy=m_dbe->book1D("HB_occupancy_thresh","HB Rec Hit Occupancy Above Threshold",2593,-0.5,2592.5);
00198
00199
00200 m_dbe->setCurrentFolder(baseFolder_+"/diagnostics/he");
00201 h_HEEnergy=m_dbe->book1D("HE_energy","HE Rec Hit Energy",200,-5,5);
00202 h_HEThreshEnergy=m_dbe->book1D("HE_energy_thresh", "HE Rec Hit Energy Above Threshold",200,-5,5);
00203 h_HETotalEnergy=m_dbe->book1D("HE_total_energy","HE Rec Hit Total Energy",200,-200,200);
00204 h_HEThreshTotalEnergy=m_dbe->book1D("HE_total_energy_thresh", "HE Rec Hit Total Energy Above Threshold",200,-200,200);
00205 h_HETime=m_dbe->book1D("HE_time","HE Rec Hit Time",int(TIME_MAX-TIME_MIN),TIME_MIN,TIME_MAX);
00206 h_HEThreshTime=m_dbe->book1D("HE_time_thresh", "HE Rec Hit Time Above Threshold",int(TIME_MAX-TIME_MIN),TIME_MIN,TIME_MAX);
00207 h_HEOccupancy=m_dbe->book1D("HE_occupancy","HE Rec Hit Occupancy",2593,-0.5,2592.5);
00208 h_HEThreshOccupancy=m_dbe->book1D("HE_occupancy_thresh","HE Rec Hit Occupancy Above Threshold",2593,-0.5,2592.5);
00209
00210
00211 m_dbe->setCurrentFolder(baseFolder_+"/diagnostics/ho");
00212 h_HOEnergy=m_dbe->book1D("HO_energy","HO Rec Hit Energy",200,-5,5);
00213 h_HOThreshEnergy=m_dbe->book1D("HO_energy_thresh", "HO Rec Hit Energy Above Threshold",200,-5,5);
00214 h_HOTotalEnergy=m_dbe->book1D("HO_total_energy","HO Rec Hit Total Energy",200,-200,200);
00215 h_HOThreshTotalEnergy=m_dbe->book1D("HO_total_energy_thresh", "HO Rec Hit Total Energy Above Threshold",200,-200,200);
00216 h_HOTime=m_dbe->book1D("HO_time","HO Rec Hit Time",int(TIME_MAX-TIME_MIN),TIME_MIN,TIME_MAX);
00217 h_HOThreshTime=m_dbe->book1D("HO_time_thresh", "HO Rec Hit Time Above Threshold",int(TIME_MAX-TIME_MIN),TIME_MIN,TIME_MAX);
00218 h_HOOccupancy=m_dbe->book1D("HO_occupancy","HO Rec Hit Occupancy",2161,-0.5,2160.5);
00219 h_HOThreshOccupancy=m_dbe->book1D("HO_occupancy_thresh","HO Rec Hit Occupancy Above Threshold",2161,-0.5,2160.5);
00220
00221
00222 m_dbe->setCurrentFolder(baseFolder_+"/diagnostics/hf");
00223 h_HFEnergy=m_dbe->book1D("HF_energy","HF Rec Hit Energy",200,-5,5);
00224 h_HFThreshEnergy=m_dbe->book1D("HF_energy_thresh", "HF Rec Hit Energy Above Threshold",200,-5,5);
00225 h_HFTotalEnergy=m_dbe->book1D("HF_total_energy","HF Rec Hit Total Energy",200,-200,200);
00226 h_HFThreshTotalEnergy=m_dbe->book1D("HF_total_energy_thresh", "HF Rec Hit Total Energy Above Threshold",200,-200,200);
00227 h_HFTime=m_dbe->book1D("HF_time","HF Rec Hit Time",int(TIME_MAX-TIME_MIN),TIME_MIN,TIME_MAX);
00228 h_HFThreshTime=m_dbe->book1D("HF_time_thresh", "HF Rec Hit Time Above Threshold",int(TIME_MAX-TIME_MIN),TIME_MIN,TIME_MAX);
00229 h_HFOccupancy=m_dbe->book1D("HF_occupancy","HF Rec Hit Occupancy",1729,-0.5,1728.5);
00230 h_HFThreshOccupancy=m_dbe->book1D("HF_occupancy_thresh","HF Rec Hit Occupancy Above Threshold",1729,-0.5,1728.5);
00231
00232
00233 }
00234 }
00235
00236 return;
00237
00238 }
00239
00240
00241
00242
00243 void HcalRecHitMonitor::reset(){}
00244
00245
00246
00247
00248 void HcalRecHitMonitor::done()
00249 {
00250
00251 return;
00252
00253 }
00254
00255
00256
00257
00258
00259 void HcalRecHitMonitor::clearME()
00260 {
00261
00262
00263 if (m_dbe)
00264 {
00265 m_dbe->setCurrentFolder(baseFolder_);
00266 m_dbe->removeContents();
00267 }
00268 return;
00269 }
00270
00271
00272
00273
00274 void HcalRecHitMonitor::processEvent(const HBHERecHitCollection& hbHits,
00275 const HORecHitCollection& hoHits,
00276 const HFRecHitCollection& hfHits
00277
00278 )
00279 {
00280
00281 if (showTiming)
00282 {
00283 cpu_timer.reset(); cpu_timer.start();
00284 }
00285
00286 ++ievt_;
00287 if (m_dbe) meEVT_->Fill(ievt_);
00288
00289 if (hoHits.size()>0) HOpresent_=true;
00290 if (hfHits.size()>0) HFpresent_=true;
00291
00292 if (fVerbosity>1) cout <<"<HcalRecHitMonitor::processEvent> Processing event..."<<endl;
00293
00294 processEvent_rechit(hbHits, hoHits, hfHits);
00295
00296
00297 if (ievt_%rechit_checkNevents_ ==0)
00298 {
00299 fillNevents();
00300 }
00301
00302 return;
00303 }
00304
00305
00306
00307
00308
00309 void HcalRecHitMonitor::fillRecHitHistosAtEndRun()
00310 {
00311
00312
00313
00314
00315
00316
00317
00318
00319
00320 return;
00321
00322 fillNevents();
00323 }
00324
00325
00326
00327
00328 void HcalRecHitMonitor::processEvent_rechit( const HBHERecHitCollection& hbheHits,
00329 const HORecHitCollection& hoHits,
00330 const HFRecHitCollection& hfHits)
00331
00332 {
00333
00334 if (showTiming)
00335 {
00336 cpu_timer.reset(); cpu_timer.start();
00337 }
00338
00339 if (fVerbosity>1) cout <<"<HcalRecHitMonitor::processEvent_rechitenergy> Processing rechits..."<<endl;
00340
00341
00342
00343 int hbocc=0;
00344 int heocc=0;
00345 int hboccthresh=0;
00346 int heoccthresh=0;
00347 double hbenergy=0;
00348 double heenergy=0;
00349 double hbenergythresh=0;
00350 double heenergythresh=0;
00351 int HEbindepth=0;
00352
00353 for (HBHERecHitCollection::const_iterator HBHEiter=hbheHits.begin(); HBHEiter!=hbheHits.end(); ++HBHEiter)
00354 {
00355 float en = HBHEiter->energy();
00356 float ti = HBHEiter->time();
00357
00358 HcalDetId id(HBHEiter->detid().rawId());
00359 int ieta = id.ieta();
00360 int iphi = id.iphi();
00361 int depth = id.depth();
00362 if (id.subdet()==HcalBarrel)
00363 {
00364 HBpresent_=true;
00365 if (!checkHB_) continue;
00366
00367 ++occupancy_[ieta+(int)((etaBins_-2)/2)][iphi-1][depth-1];
00368 energy_[ieta+(int)((etaBins_-2)/2)][iphi-1][depth-1]+=en;
00369 time_[ieta+(int)((etaBins_-2)/2)][iphi-1][depth-1]+=ti;
00370 if (en>=HBenergyThreshold_)
00371 {
00372 ++occupancy_thresh_[ieta+(int)((etaBins_-2)/2)][iphi-1][depth-1];
00373 energy_thresh_[ieta+(int)((etaBins_-2)/2)][iphi-1][depth-1]+=en;
00374 time_thresh_[ieta+(int)((etaBins_-2)/2)][iphi-1][depth-1]+=ti;
00375 }
00376 if (rechit_makeDiagnostics_)
00377 {
00378 ++hbocc;
00379 hbenergy+=en;
00380 if (ti<TIME_MIN || ti>TIME_MAX)
00381 h_HBTime->Fill(ti);
00382 else
00383 ++HBtime_[int(ti-TIME_MIN)];
00384 if (en<-5 || en>-5)
00385 h_HBEnergy->Fill(en);
00386 else
00387 ++HBenergy_[20*int(en+5)];
00388 if (en>=HBenergyThreshold_)
00389 {
00390 ++hboccthresh;
00391 hbenergythresh+=en;
00392 if (ti<TIME_MIN || ti>TIME_MAX)
00393 h_HBThreshTime->Fill(ti);
00394 else
00395 ++HBtime_thresh_[int(ti-TIME_MIN)];
00396 if (en<-5 || en>-5)
00397 h_HBThreshEnergy->Fill(en);
00398 else
00399 ++HBenergy_thresh_[20*int(en+5)];
00400 }
00401 }
00402 }
00403
00404 else if (id.subdet()==HcalEndcap)
00405 {
00406 HEpresent_=true;
00407 if (!checkHE_) continue;
00408 HEbindepth=depth-1;
00409 if (depth<=2) HEbindepth+=4;
00410
00411 ++occupancy_[ieta+(int)((etaBins_-2)/2)][iphi-1][HEbindepth];
00412 energy_[ieta+(int)((etaBins_-2)/2)][iphi-1][HEbindepth]+=en;
00413 time_[ieta+(int)((etaBins_-2)/2)][iphi-1][HEbindepth]+=ti;
00414 if (en>=HEenergyThreshold_)
00415 {
00416 ++occupancy_thresh_[ieta+(int)((etaBins_-2)/2)][iphi-1][HEbindepth];
00417 energy_thresh_[ieta+(int)((etaBins_-2)/2)][iphi-1][HEbindepth]+=en;
00418 time_thresh_[ieta+(int)((etaBins_-2)/2)][iphi-1][HEbindepth]+=ti;
00419 }
00420 if (rechit_makeDiagnostics_)
00421 {
00422 ++heocc;
00423 heenergy+=en;
00424 if (ti<-100 || ti>200)
00425 h_HETime->Fill(ti);
00426 else
00427 ++HEtime_[int(ti+100)];
00428 if (en<-5 || en>-5)
00429 h_HEEnergy->Fill(en);
00430 else
00431 ++HEenergy_[20*int(en+5)];
00432 if (en>=HEenergyThreshold_)
00433 {
00434 ++heoccthresh;
00435 heenergythresh+=en;
00436 if (ti<-100 || ti>200)
00437 h_HEThreshTime->Fill(ti);
00438 else
00439 ++HEtime_thresh_[int(ti+100)];
00440 if (en<-5 || en>-5)
00441 h_HEThreshEnergy->Fill(en);
00442 else
00443 ++HEenergy_thresh_[20*int(en+5)];
00444 }
00445 }
00446
00447
00448 }
00449
00450 }
00451
00452 if (rechit_makeDiagnostics_)
00453 {
00454 ++HB_occupancy_[hbocc];
00455 ++HE_occupancy_[heocc];
00456 ++HB_occupancy_thresh_[hboccthresh];
00457 ++HE_occupancy_thresh_[heoccthresh];
00458 h_HBTotalEnergy->Fill(hbenergy);
00459 h_HETotalEnergy->Fill(heenergy);
00460 h_HBThreshTotalEnergy->Fill(hbenergythresh);
00461 h_HEThreshTotalEnergy->Fill(heenergythresh);
00462 }
00463
00464
00465
00466 if (checkHO_)
00467 {
00468 int hoocc=0;
00469 int hooccthresh=0;
00470 double hoenergy=0;
00471 double hoenergythresh=0;
00472 for (HORecHitCollection::const_iterator HOiter=hoHits.begin(); HOiter!=hoHits.end(); ++HOiter)
00473 {
00474 float en = HOiter->energy();
00475 float ti = HOiter->time();
00476
00477 HcalDetId id(HOiter->detid().rawId());
00478 int ieta = id.ieta();
00479 int iphi = id.iphi();
00480 int depth = id.depth();
00481
00482 ++occupancy_[ieta+(int)((etaBins_-2)/2)][iphi-1][depth-1];
00483 energy_[ieta+(int)((etaBins_-2)/2)][iphi-1][depth-1]+=en;
00484 time_[ieta+(int)((etaBins_-2)/2)][iphi-1][depth-1]+=ti;
00485
00486 if (en>=HOenergyThreshold_)
00487 {
00488 ++occupancy_thresh_[ieta+(int)((etaBins_-2)/2)][iphi-1][depth-1];
00489 energy_thresh_[ieta+(int)((etaBins_-2)/2)][iphi-1][depth-1]+=en;
00490 time_thresh_[ieta+(int)((etaBins_-2)/2)][iphi-1][depth-1]+=ti;
00491 }
00492 if (rechit_makeDiagnostics_)
00493 {
00494 ++hoocc;
00495 hoenergy+=en;
00496 if (ti<-100 || ti>200)
00497 h_HOTime->Fill(ti);
00498 else
00499 ++HOtime_[int(ti+100)];
00500 if (en<-5 || en>-5)
00501 h_HOEnergy->Fill(en);
00502 else
00503 ++HOenergy_[20*int(en+5)];
00504 if (en>=HOenergyThreshold_)
00505 {
00506 ++hooccthresh;
00507 hoenergythresh+=en;
00508 if (ti<-100 || ti>200)
00509 h_HOThreshTime->Fill(ti);
00510 else
00511 ++HOtime_thresh_[int(ti+100)];
00512 if (en<-5 || en>-5)
00513 h_HOThreshEnergy->Fill(en);
00514 else
00515 ++HOenergy_thresh_[20*int(en+5)];
00516 }
00517 }
00518 }
00519 if (rechit_makeDiagnostics_)
00520 {
00521 ++HO_occupancy_[hoocc];
00522 ++HO_occupancy_thresh_[hooccthresh];
00523 h_HOTotalEnergy->Fill(hoenergy);
00524 h_HOThreshTotalEnergy->Fill(hoenergythresh);
00525 }
00526
00527 }
00528
00529
00530 if (checkHF_)
00531 {
00532 int hfocc=0;
00533 int hfoccthresh=0;
00534 double hfenergy=0;
00535 double hfenergythresh=0;
00536 for (HFRecHitCollection::const_iterator HFiter=hfHits.begin(); HFiter!=hfHits.end(); ++HFiter)
00537 {
00538 float en = HFiter->energy();
00539 float ti = HFiter->time();
00540
00541 HcalDetId id(HFiter->detid().rawId());
00542 int ieta = id.ieta();
00543 int iphi = id.iphi();
00544 int depth = id.depth();
00545
00546 ++occupancy_[ieta+(int)((etaBins_-2)/2)][iphi-1][depth-1];
00547 energy_[ieta+(int)((etaBins_-2)/2)][iphi-1][depth-1]+=en;
00548 time_[ieta+(int)((etaBins_-2)/2)][iphi-1][depth-1]+=ti;
00549
00550 if (en>=HFenergyThreshold_)
00551 {
00552 ++occupancy_thresh_[ieta+(int)((etaBins_-2)/2)][iphi-1][depth-1];
00553 energy_thresh_[ieta+(int)((etaBins_-2)/2)][iphi-1][depth-1]+=en;
00554 time_thresh_[ieta+(int)((etaBins_-2)/2)][iphi-1][depth-1]+=ti;
00555 }
00556 if (rechit_makeDiagnostics_)
00557 {
00558 ++hfocc;
00559 hfenergy+=en;
00560 if (ti<-100 || ti>200)
00561 h_HFTime->Fill(ti);
00562 else
00563 ++HFtime_[int(ti+100)];
00564 if (en<-5 || en>-5)
00565 h_HFEnergy->Fill(en);
00566 else
00567 ++HFenergy_[20*int(en+5)];
00568 if (en>=HFenergyThreshold_)
00569 {
00570 ++hfoccthresh;
00571 hfenergythresh+=en;
00572 if (ti<-100 || ti>200)
00573 h_HFThreshTime->Fill(ti);
00574 else
00575 ++HFtime_thresh_[int(ti+100)];
00576 if (en<-5 || en>-5)
00577 h_HFThreshEnergy->Fill(en);
00578 else
00579 ++HFenergy_thresh_[20*int(en+5)];
00580 }
00581 }
00582 }
00583 if (rechit_makeDiagnostics_)
00584 {
00585 ++HF_occupancy_[hfocc];
00586 ++HF_occupancy_thresh_[hfoccthresh];
00587 h_HFTotalEnergy->Fill(hfenergy);
00588 h_HFThreshTotalEnergy->Fill(hfenergythresh);
00589 }
00590 }
00591
00592 if (showTiming)
00593 {
00594 cpu_timer.stop(); cout <<"TIMER:: HcalRecHitMonitor PROCESSEVENT_RECHITENERGY -> "<<cpu_timer.cpuTime()<<endl;
00595 }
00596 return;
00597 }
00598
00599
00600
00601
00602
00603
00604 void HcalRecHitMonitor::fillNevents(void)
00605 {
00606 if (showTiming)
00607 {
00608 cpu_timer.reset(); cpu_timer.start();
00609 }
00610
00611 int ieta=0;
00612 int iphi=0;
00613 int mydepth=0;
00614
00615 if (ievt_>0)
00616 {
00617 for (int eta=0;eta<(etaBins_-2);++eta)
00618 {
00619 ieta=eta-int((etaBins_-2)/2);
00620 for (int phi=0;phi<72;++phi)
00621 {
00622 iphi=phi+1;
00623 for (int depth=0;depth<6;++depth)
00624 {
00625 mydepth=depth;
00626 OccupancyByDepth[mydepth]->setBinContent(eta+2,phi+2,occupancy_[eta][phi][mydepth]*1./ievt_);
00627 OccupancyThreshByDepth[mydepth]->setBinContent(eta+2,phi+2,occupancy_thresh_[eta][phi][mydepth]*1./ievt_);
00628 EnergyByDepth[mydepth]->setBinContent(eta+2,phi+2,energy_[eta][phi][mydepth]*1./ievt_);
00629 EnergyThreshByDepth[mydepth]->setBinContent(eta+2,phi+2,energy_thresh_[eta][phi][mydepth]*1./ievt_);
00630 TimeByDepth[mydepth]->setBinContent(eta+2,phi+2,time_[eta][phi][mydepth]*1./ievt_);
00631 TimeThreshByDepth[mydepth]->setBinContent(eta+2,phi+2,time_thresh_[eta][phi][mydepth]*1./ievt_);
00632
00633 }
00634 }
00635 }
00636
00637 FillUnphysicalHEHFBins(OccupancyByDepth);
00638 FillUnphysicalHEHFBins(OccupancyThreshByDepth);
00639 FillUnphysicalHEHFBins(EnergyByDepth);
00640 FillUnphysicalHEHFBins(EnergyThreshByDepth);
00641 FillUnphysicalHEHFBins(TimeByDepth);
00642 FillUnphysicalHEHFBins(TimeThreshByDepth);
00643 }
00644
00645
00646
00647 for (int i=0;i<200;++i)
00648 {
00649 if (HBenergy_[i]!=0)
00650 {
00651 h_HBEnergy->setBinContent(i+1,h_HBEnergy->getBinContent(i+1)+HBenergy_[i]);
00652 HBenergy_[i]=0;
00653 }
00654 if (HBenergy_thresh_[i]!=0)
00655 {
00656 h_HBThreshEnergy->setBinContent(i+1,h_HBThreshEnergy->getBinContent(i+1)+HBenergy_thresh_[i]);
00657 HBenergy_thresh_[i]=0;
00658 }
00659 if (HEenergy_[i]!=0)
00660 {
00661 h_HEEnergy->setBinContent(i+1,h_HEEnergy->getBinContent(i+1)+HEenergy_[i]);
00662 HEenergy_[i]=0;
00663 }
00664 if (HEenergy_thresh_[i]!=0)
00665 {
00666 h_HEThreshEnergy->setBinContent(i+1,h_HEThreshEnergy->getBinContent(i+1)+HEenergy_thresh_[i]);
00667 HEenergy_thresh_[i]=0;
00668 }
00669 if (HOenergy_[i]!=0)
00670 {
00671 h_HOEnergy->setBinContent(i+1,h_HOEnergy->getBinContent(i+1)+HOenergy_[i]);
00672 HOenergy_[i]=0;
00673 }
00674 if (HOenergy_thresh_[i]!=0)
00675 {
00676 h_HOThreshEnergy->setBinContent(i+1,h_HOThreshEnergy->getBinContent(i+1)+HOenergy_thresh_[i]);
00677 HOenergy_thresh_[i]=0;
00678 }
00679 if (HFenergy_[i]!=0)
00680 {
00681 h_HFEnergy->setBinContent(i+1,h_HFEnergy->getBinContent(i+1)+HFenergy_[i]);
00682 HFenergy_[i]=0;
00683 }
00684 if (HFenergy_thresh_[i]!=0)
00685 {
00686 h_HFThreshEnergy->setBinContent(i+1,h_HFThreshEnergy->getBinContent(i+1)+HFenergy_thresh_[i]);
00687 HFenergy_thresh_[i]=0;
00688 }
00689 }
00690
00691 for (int i=0;i<(TIME_MAX-TIME_MIN);++i)
00692 {
00693 if (HBtime_[i]!=0)
00694 {
00695 h_HBTime->setBinContent(i+1,h_HBTime->getBinContent(i+1)+HBtime_[i]);
00696 HBtime_[i]=0;
00697 }
00698 if (HBtime_thresh_[i]!=0)
00699 {
00700 h_HBThreshTime->setBinContent(i+1,h_HBThreshTime->getBinContent(i+1)+HBtime_thresh_[i]);
00701 HBtime_thresh_[i]=0;
00702 }
00703 if (HEtime_[i]!=0)
00704 {
00705 h_HETime->setBinContent(i+1,h_HETime->getBinContent(i+1)+HEtime_[i]);
00706 HEtime_[i]=0;
00707 }
00708 if (HEtime_thresh_[i]!=0)
00709 {
00710 h_HEThreshTime->setBinContent(i+1,h_HEThreshTime->getBinContent(i+1)+HEtime_thresh_[i]);
00711 HEtime_thresh_[i]=0;
00712 }
00713 if (HOtime_[i]!=0)
00714 {
00715 h_HOTime->setBinContent(i+1,h_HOTime->getBinContent(i+1)+HOtime_[i]);
00716 HOtime_[i]=0;
00717 }
00718 if (HOtime_thresh_[i]!=0)
00719 {
00720 h_HOThreshTime->setBinContent(i+1,h_HOThreshTime->getBinContent(i+1)+HOtime_thresh_[i]);
00721 HOtime_thresh_[i]=0;
00722 }
00723 if (HFtime_[i]!=0)
00724 {
00725 h_HFTime->setBinContent(i+1,h_HFTime->getBinContent(i+1)+HFtime_[i]);
00726 HFtime_[i]=0;
00727 }
00728 if (HFtime_thresh_[i]!=0)
00729 {
00730 h_HFThreshTime->setBinContent(i+1,h_HFThreshTime->getBinContent(i+1)+HFtime_thresh_[i]);
00731 HFtime_thresh_[i]=0;
00732 }
00733 }
00734
00735 for (int i=0;i<2593;++i)
00736 {
00737 if (HB_occupancy_[i]>0)
00738 {
00739 h_HBOccupancy->setBinContent(i+1,h_HBOccupancy->getBinContent(i+1)+HB_occupancy_[i]);
00740 HB_occupancy_[i]=0;
00741 }
00742 if (HB_occupancy_thresh_[i]>0)
00743 {
00744 h_HBThreshOccupancy->setBinContent(i+1,h_HBThreshOccupancy->getBinContent(i+1)+HB_occupancy_thresh_[i]);
00745 HB_occupancy_thresh_[i]=0;
00746 }
00747 if (HE_occupancy_[i]>0)
00748 {
00749 h_HEOccupancy->setBinContent(i+1,h_HEOccupancy->getBinContent(i+1)+HE_occupancy_[i]);
00750 HE_occupancy_[i]=0;
00751 }
00752 if (HE_occupancy_thresh_[i]>0)
00753 {
00754 h_HEThreshOccupancy->setBinContent(i+1,h_HEThreshOccupancy->getBinContent(i+1)+HE_occupancy_thresh_[i]);
00755 HE_occupancy_thresh_[i]=0;
00756 }
00757 }
00758
00759 for (int i=0;i<2161;++i)
00760 {
00761 if (HO_occupancy_[i]>0)
00762 {
00763 h_HOOccupancy->setBinContent(i+1,h_HOOccupancy->getBinContent(i+1)+HO_occupancy_[i]);
00764 HO_occupancy_[i]=0;
00765 }
00766 if (HO_occupancy_thresh_[i]>0)
00767 {
00768 h_HOThreshOccupancy->setBinContent(i+1,h_HOThreshOccupancy->getBinContent(i+1)+HO_occupancy_thresh_[i]);
00769 HO_occupancy_thresh_[i]=0;
00770 }
00771 }
00772
00773 for (int i=0;i<1729;++i)
00774 {
00775 if (HF_occupancy_[i]>0)
00776 {
00777 h_HFOccupancy->setBinContent(i+1,h_HFOccupancy->getBinContent(i+1)+HF_occupancy_[i]);
00778 HF_occupancy_[i]=0;
00779 }
00780 if (HF_occupancy_thresh_[i]>0)
00781 {
00782 h_HFThreshOccupancy->setBinContent(i+1,h_HFThreshOccupancy->getBinContent(i+1)+HF_occupancy_thresh_[i]);
00783 HF_occupancy_thresh_[i]=0;
00784 }
00785 }
00786
00787
00788
00789 if (fVerbosity>0)
00790 cout <<"<HcalRecHitMonitor::fillNevents_problemCells> FILLING REC HIT CELL PLOTS"<<endl;
00791
00792 if (showTiming)
00793 {
00794 cpu_timer.stop(); cout <<"TIMER:: HcalRecHitMonitor FILLNEVENTS -> "<<cpu_timer.cpuTime()<<endl;
00795 }
00796
00797 }