CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Member Functions | Private Attributes
HcalDetDiagNoiseMonitor Class Reference

#include <HcalDetDiagNoiseMonitor.h>

Inheritance diagram for HcalDetDiagNoiseMonitor:
HcalBaseDQMonitor edm::EDAnalyzer

Public Member Functions

void analyze (edm::Event const &e, edm::EventSetup const &s)
 
void beginRun (const edm::Run &run, const edm::EventSetup &c)
 
void cleanup ()
 
void done ()
 
void endLuminosityBlock (const edm::LuminosityBlock &lumiSeg, const edm::EventSetup &c)
 
int GetStatistics ()
 
 HcalDetDiagNoiseMonitor (const edm::ParameterSet &ps)
 
void reset ()
 
void setup ()
 
void UpdateHistos ()
 
 ~HcalDetDiagNoiseMonitor ()
 
- Public Member Functions inherited from HcalBaseDQMonitor
 HcalBaseDQMonitor (const edm::ParameterSet &ps)
 
 HcalBaseDQMonitor ()
 
 ~HcalBaseDQMonitor ()
 
- Public Member Functions inherited from edm::EDAnalyzer
 EDAnalyzer ()
 
std::string workerType () const
 
virtual ~EDAnalyzer ()
 

Private Member Functions

void SaveRates ()
 

Private Attributes

int dataset_seq_number
 
edm::InputTag digiLabel_
 
int FirstOrbit
 
int FirstOrbitLS
 
HcalLogicalMapGeneratorgen
 
MonitorElementHB_RBXmapSpikeCnt
 
MonitorElementHBM_Rate300
 
MonitorElementHBM_Rate50
 
MonitorElementHBP_Rate300
 
MonitorElementHBP_Rate50
 
MonitorElementHE_RBXmapSpikeCnt
 
MonitorElementHEM_Rate300
 
MonitorElementHEM_Rate50
 
MonitorElementHEP_Rate300
 
MonitorElementHEP_Rate50
 
MonitorElementHO0_Rate300
 
MonitorElementHO0_Rate50
 
MonitorElementHO1M_Rate300
 
MonitorElementHO1M_Rate50
 
MonitorElementHO1P_Rate300
 
MonitorElementHO1P_Rate50
 
MonitorElementHO_RBXmapSpikeCnt
 
MonitorElementHPDEnergy
 
double HPDthresholdHi
 
double HPDthresholdLo
 
int ievt_
 
edm::InputTag L1ADataLabel_
 
int LastOrbit
 
int LastOrbitLS
 
HcalLogicalMaplmap
 
bool LocalRun
 
MonitorElementmeEVT_
 
bool newLS
 
int NoisyEvents
 
MonitorElementNZeroes
 
std::string OutputFilePath
 
bool Overwrite
 
MonitorElementPixelMult
 
edm::InputTag rawDataLabel_
 
MonitorElementRBXEnergy
 
HcalDetDiagNoiseRMSummaryRMSummary
 
int run_number
 
double SpikeThreshold
 
MonitorElementTriggerBx11
 
MonitorElementTriggerBx12
 
bool UseDB
 

Additional Inherited Members

- Public Types inherited from edm::EDAnalyzer
typedef EDAnalyzer ModuleType
 
typedef WorkerT< EDAnalyzerWorkerType
 
- Static Public Member Functions inherited from edm::EDAnalyzer
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &)
 
- Protected Member Functions inherited from HcalBaseDQMonitor
virtual void beginJob ()
 
virtual void beginLuminosityBlock (const edm::LuminosityBlock &lumiSeg, const edm::EventSetup &c)
 
virtual void endJob (void)
 
virtual void endRun (const edm::Run &run, const edm::EventSetup &c)
 
bool IsAllowedCalibType ()
 
bool LumiInOrder (int lumisec)
 
void SetupEtaPhiHists (EtaPhiHists &hh, std::string Name, std::string Units)
 
- Protected Member Functions inherited from edm::EDAnalyzer
CurrentProcessingContext const * currentContext () const
 
- Protected Attributes inherited from HcalBaseDQMonitor
std::vector< int > AllowedCalibTypes_
 
int badChannelStatusMask_
 
int currentLS
 
int currenttype_
 
DQMStoredbe_
 
int debug_
 
bool enableCleanup_
 
bool eventAllowed_
 
bool HBpresent_
 
bool HEpresent_
 
bool HFpresent_
 
bool HOpresent_
 
int ievt_
 
std::map< unsigned int, int > KnownBadCells_
 
int levt_
 
bool makeDiagnostics_
 
MonitorElementmeIevt_
 
MonitorElementmeLevt_
 
bool mergeRuns_
 
MonitorElementmeTevt_
 
MonitorElementmeTevtHist_
 
int NLumiBlocks_
 
bool Online_
 
std::string prefixME_
 
MonitorElementProblemsCurrentLB
 
MonitorElementProblemsVsLB
 
MonitorElementProblemsVsLB_HB
 
MonitorElementProblemsVsLB_HBHEHF
 
MonitorElementProblemsVsLB_HE
 
MonitorElementProblemsVsLB_HF
 
MonitorElementProblemsVsLB_HO
 
bool skipOutOfOrderLS_
 
std::string subdir_
 
int tevt_
 

Detailed Description

Date:
2011/02/23 14:16:00
Revision:
1.6
Author
D. Vishnevskiy

Definition at line 33 of file HcalDetDiagNoiseMonitor.h.

Constructor & Destructor Documentation

HcalDetDiagNoiseMonitor::HcalDetDiagNoiseMonitor ( const edm::ParameterSet ps)

Definition at line 161 of file HcalDetDiagNoiseMonitor.cc.

References edm::ParameterSet::getUntrackedParameter(), and reco_calib_source_client_cfg::OutputFilePath.

162 {
163  ievt_=0;
164  run_number=-1;
165  NoisyEvents=0;
166  LocalRun=false;
168  FirstOrbit=FirstOrbitLS=0xFFFFFFFF;
170 
171  Online_ = ps.getUntrackedParameter<bool>("online",false);
172  mergeRuns_ = ps.getUntrackedParameter<bool>("mergeRuns",false);
173  enableCleanup_ = ps.getUntrackedParameter<bool>("enableCleanup",false);
174  debug_ = ps.getUntrackedParameter<int>("debug",0);
175  prefixME_ = ps.getUntrackedParameter<std::string>("subSystemFolder","Hcal/");
176  if (prefixME_.substr(prefixME_.size()-1,prefixME_.size())!="/")
177  prefixME_.append("/");
178  subdir_ = ps.getUntrackedParameter<std::string>("TaskFolder","DetDiagNoiseMonitor_Hcal");
179  if (subdir_.size()>0 && subdir_.substr(subdir_.size()-1,subdir_.size())!="/")
180  subdir_.append("/");
181  subdir_=prefixME_+subdir_;
182  AllowedCalibTypes_ = ps.getUntrackedParameter<std::vector<int> > ("AllowedCalibTypes");
183  skipOutOfOrderLS_ = ps.getUntrackedParameter<bool>("skipOutOfOrderLS",false);
184  NLumiBlocks_ = ps.getUntrackedParameter<int>("NLumiBlocks",4000);
185  makeDiagnostics_ = ps.getUntrackedParameter<bool>("makeDiagnostics",false);
186 
187  UseDB = ps.getUntrackedParameter<bool> ("UseDB" , false);
188  OutputFilePath = ps.getUntrackedParameter<std::string>("OutputFilePath", "");
189  HPDthresholdHi = ps.getUntrackedParameter<double>("NoiseThresholdHPDhi",49.0);
190  HPDthresholdLo = ps.getUntrackedParameter<double>("NoiseThresholdHPDlo",10.0);
191  SpikeThreshold = ps.getUntrackedParameter<double>("NoiseSpikeThreshold",0.5);
192  Overwrite = ps.getUntrackedParameter<bool> ("Overwrite",true);
193 
194  rawDataLabel_ = ps.getUntrackedParameter<edm::InputTag>("RawDataLabel",edm::InputTag("source",""));
195  digiLabel_ = ps.getUntrackedParameter<edm::InputTag>("digiLabel",edm::InputTag("hcalDigis"));
197 
198  RMSummary = 0;
199 
200 }
T getUntrackedParameter(std::string const &, T const &) const
std::vector< int > AllowedCalibTypes_
HcalDetDiagNoiseRMSummary * RMSummary
HcalDetDiagNoiseMonitor::~HcalDetDiagNoiseMonitor ( )

Member Function Documentation

void HcalDetDiagNoiseMonitor::analyze ( edm::Event const &  e,
edm::EventSetup const &  s 
)
virtual

Reimplemented from HcalBaseDQMonitor.

Definition at line 287 of file HcalDetDiagNoiseMonitor.cc.

References adc2fC, HcalBaseDQMonitor::analyze(), gather_cfg::cout, FEDRawData::data(), dbe_, relval_parameters_module::energy, HcalDetDiagNoiseRMEvent::energy, reco::tau::disc::Eta(), edm::Event::getByLabel(), edm::Event::getByType(), hc_Null, i, edm::EventBase::id(), getHLTprescales::index, edm::HandleBase::isValid(), edm::EventBase::luminosityBlock(), max(), FEDNumbering::MAXHCALFEDID, HcalFrontEndId::maxRmIndex, FEDNumbering::MINHCALFEDID, HcalDetDiagNoiseRMEvent::n_pix_hi, HcalDetDiagNoiseRMEvent::n_pix_lo, HcalDetDiagNoiseRMEvent::n_zero, lumiPlot::rawdata, submit::rm, HcalFrontEndId::rmIndex(), edm::EventID::run(), sd, FEDRawData::size(), and subdets.

287  {
288  if (!IsAllowedCalibType()) return;
289  if (LumiInOrder(iEvent.luminosityBlock())==false) return;
291  bool isNoiseEvent=false;
292  if(!dbe_) return;
293  int orbit=-1111;
294  int bx=-1111;
295 
296  // for local runs
297  edm::Handle<HcalTBTriggerData> trigger_data;
298  iEvent.getByType(trigger_data);
299  if(trigger_data.isValid()){
300  if(trigger_data->triggerWord()>1000) isNoiseEvent=true;
301  LocalRun=true;
302  }
303 
304  // We do not want to look at Abort Gap events
306  iEvent.getByLabel(rawDataLabel_,rawdata);
307  //checking FEDs for calibration information
309  const FEDRawData& fedData = rawdata->FEDData(i) ;
310  if ( fedData.size() < 24 ) continue ;
311  orbit= ((const HcalDCCHeader*)(fedData.data()))->getOrbitNumber();
312  bx=((const HcalDCCHeader*)(fedData.data()))->getBunchId();
313  if(((const HcalDCCHeader*)(fedData.data()))->getCalibType()!=hc_Null) return;
314  }
315 
316  // Check GCT trigger bits
318  iEvent.getByLabel(L1ADataLabel_, gtRecord);
319  if(gtRecord.isValid()){
320  const TechnicalTriggerWord tWord = gtRecord->technicalTriggerWord();
321  if(tWord.at(11) || tWord.at(12)) isNoiseEvent=true;
322  if(tWord.at(11)){ TriggerBx11->Fill(bx);}
323  if(tWord.at(12)){ TriggerBx12->Fill(bx);}
324  }
325 
326  if(!isNoiseEvent) return;
327  if(ievt_==0){ FirstOrbit=orbit; FirstOrbitLS=orbit; newLS=true;}
328  if(LastOrbit <orbit) LastOrbit=orbit;
329  if(FirstOrbit>orbit) FirstOrbit=orbit;
330  if(LastOrbitLS <orbit) LastOrbitLS=orbit;
331  if(FirstOrbitLS>orbit) FirstOrbitLS=orbit;
332  if(newLS){
333  FirstOrbitLS=orbit;
334  newLS=false;
335  }
336 
337  if(!LocalRun){
338  double TIME=(double)(LastOrbit-FirstOrbit)/11223.0;
339  if(TIME>1800.0){
340  UpdateHistos();
341  SaveRates();
342  RMSummary->reset();
343  FirstOrbit=orbit;
344  }
345  }
346 
347  meEVT_->Fill(++ievt_);
348 
349  run_number=iEvent.id().run();
350 
352 
354  iEvent.getByLabel(digiLabel_,hbhe);
355  for(HBHEDigiCollection::const_iterator digi=hbhe->begin();digi!=hbhe->end();digi++){
356  double max=-100/*,sum*/,energy=0; int n_zero=0;
357  for(int i=0;i<digi->size();i++){
358  // sum=adc2fC[digi->sample(i).adc()&0xff];
359  if(max<adc2fC[digi->sample(i).adc()&0xff]) max=adc2fC[digi->sample(i).adc()&0xff];
360  if(adc2fC[digi->sample(i).adc()&0xff]==0) n_zero++;
361  }
362  HcalFrontEndId lmap_entry=lmap->getHcalFrontEndId(digi->id());
363  int index=lmap_entry.rmIndex(); if(index>=HcalFrontEndId::maxRmIndex) continue;
364  RMs[index].n_zero++;
365  if(max>HPDthresholdLo){
366  for(int i=0;i<digi->size();i++) energy+=adc2fC[digi->sample(i).adc()&0xff]-2.5;
367  RMs[index].n_pix_lo++;
368  if(max>HPDthresholdHi){ RMs[index].n_pix_hi++; isNoiseEvent=true;}
369  RMs[index].energy+=energy;
370  }
371  }
372 
374  iEvent.getByLabel(digiLabel_,ho);
375  for(HODigiCollection::const_iterator digi=ho->begin();digi!=ho->end();digi++){
376  double max=-100,energy=0; int Eta=digi->id().ieta(); int Phi=digi->id().iphi(); int n_zero=0;
377  for(int i=0;i<digi->size()-1;i++){
378  if(max<adc2fC[digi->sample(i).adc()&0xff]) max=adc2fC[digi->sample(i).adc()&0xff];
379  if(adc2fC[digi->sample(i).adc()&0xff]==0) n_zero++;
380  }
381  if((Eta>=11 && Eta<=15 && Phi>=59 && Phi<=70) || (Eta>=5 && Eta<=10 && Phi>=47 && Phi<=58)){
382  continue; // ignory SiPMs
383  }else{
384  HcalFrontEndId lmap_entry=lmap->getHcalFrontEndId(digi->id());
385  int index=lmap_entry.rmIndex(); if(index>=HcalFrontEndId::maxRmIndex) continue;
386  RMs[index].n_zero++;
387  if(max>HPDthresholdLo){
388  for(int i=0;i<digi->size();i++) energy+=adc2fC[digi->sample(i).adc()&0xff]-2.5;
389  RMs[index].n_pix_lo++;
390  if(max>HPDthresholdHi){ RMs[index].n_pix_hi++; isNoiseEvent=true;}
391  RMs[index].energy+=energy;
392  }
393  }
394  }
395 
396  NoisyEvents++;
397 
398  // RMs loop
399  for(int i=0;i<HcalFrontEndId::maxRmIndex;i++){
400  if(RMs[i].n_pix_hi>0){
401  HPDEnergy->Fill(RMs[i].energy);
402  RMSummary->rm[i].n_th_hi++;
403  RMSummary->rm[i].n_th_hi_LS++;
404  if(RMs[i].energy>300) RMSummary->rm[i].n_th_300++;
405  if(RMs[i].energy>300) RMSummary->rm[i].n_th_300_LS++;
406  if(RMs[i].n_pix_lo>1) RMSummary->rm[i].n_pix_1++;
407  if(RMs[i].n_pix_lo>8) RMSummary->rm[i].n_pix_8++;
408  RMSummary->rm[i].pix+=RMs[i].n_pix_lo;
409  RMSummary->rm[i].n_pix++;
410  }
411  }
412 
413  // RBX loop
414  for(int sd=0;sd<7;sd++) for(int sect=1;sect<=18;sect++){
415  std::stringstream tempss;
416  tempss << std::setw(2) << std::setfill('0') << sect;
417  std::string rbx= subdets[sd]+tempss.str();
418 
419  double rbx_energy=0;int pix_mult=0; int n_zero=0; bool isValidRBX=false;
420  for(int rm=1;rm<=4;rm++){
421  int index=RMSummary->GetRMindex(rbx,rm);
422  if(index>0 && index<HcalFrontEndId::maxRmIndex){
423  rbx_energy+=RMs[index].energy;
424  pix_mult+=RMs[index].n_pix_lo;
425  n_zero+=RMs[index].n_zero;
426  isValidRBX=true;
427  }
428  }
429  if(isValidRBX){
430  PixelMult->Fill(pix_mult);
431  RBXEnergy->Fill(rbx_energy);
432  NZeroes->Fill(n_zero);
433  }
434  }
435 
436  if((ievt_%100)==0 && debug_>0)
437  std::cout <<ievt_<<"\t"<<NoisyEvents<<std::endl;
438  return;
439 }
int i
Definition: DBlmapReader.cc:9
bool LumiInOrder(int lumisec)
static const float adc2fC[128]
virtual void analyze(const edm::Event &e, const edm::EventSetup &c)
HcalDetDiagNoiseRMData rm[HcalFrontEndId::maxRmIndex]
std::vector< T >::const_iterator const_iterator
HcalDetDiagNoiseRMSummary * RMSummary
size_t size() const
Lenght of the data buffer in bytes.
Definition: FEDRawData.h:49
void Fill(long long x)
int iEvent
Definition: GenABIO.cc:243
int GetRMindex(const std::string &rbx, int rm)
static std::string subdets[11]
const T & max(const T &a, const T &b)
int rmIndex() const
string rm
Definition: submit.py:76
static const int maxRmIndex
std::vector< bool > TechnicalTriggerWord
technical trigger bits (64 bits)
bool isValid() const
Definition: HandleBase.h:76
const HcalFrontEndId getHcalFrontEndId(const DetId &)
double sd
const unsigned char * data() const
Return a const pointer to the beginning of the data buffer.
Definition: FEDRawData.cc:29
tuple cout
Definition: gather_cfg.py:121
dictionary rawdata
Definition: lumiPlot.py:393
void HcalDetDiagNoiseMonitor::beginRun ( const edm::Run run,
const edm::EventSetup c 
)
virtual

Reimplemented from HcalBaseDQMonitor.

Definition at line 212 of file HcalDetDiagNoiseMonitor.cc.

References HcalBaseDQMonitor::beginRun(), gather_cfg::cout, reset(), and HcalObjRepresent::setup().

213 {
214  if (debug_>1) std::cout <<"HcalDetDiagNoiseMonitor::beginRun"<<std::endl;
216 
217  if (tevt_==0) this->setup(); // set up histograms if they have not been created before
218  if (mergeRuns_==false)
219  this->reset();
220 
221  return;
222 
223 }
virtual void beginRun(const edm::Run &run, const edm::EventSetup &c)
tuple cout
Definition: gather_cfg.py:121
void HcalDetDiagNoiseMonitor::cleanup ( void  )
virtual

Reimplemented from HcalBaseDQMonitor.

Definition at line 202 of file HcalDetDiagNoiseMonitor.cc.

References dbe_, DQMStore::removeContents(), and DQMStore::setCurrentFolder().

202  {
203  if(dbe_){
205  dbe_->removeContents();
206  dbe_ = 0;
207  }
208 }
void removeContents(void)
erase all monitoring elements in current directory (not including subfolders);
Definition: DQMStore.cc:2564
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:429
void HcalDetDiagNoiseMonitor::done ( )

Definition at line 631 of file HcalDetDiagNoiseMonitor.cc.

631 {}
void HcalDetDiagNoiseMonitor::endLuminosityBlock ( const edm::LuminosityBlock lumiSeg,
const edm::EventSetup c 
)
virtual

Reimplemented from HcalBaseDQMonitor.

Definition at line 441 of file HcalDetDiagNoiseMonitor.cc.

References HB_RBX, HE_RBX, HO_RBX, getHLTprescales::index, HcalFrontEndId::maxRmIndex, submit::rm, and sd.

441  {
442 int first_rbx=0,last_rbx=0;
443  //double TIME=(double)(LastOrbitLS-FirstOrbitLS)/11223.0;
444  double TIME=23.0;
445  newLS=true;
446  if(TIME==0) return;
447 
448  for(int sd=0;sd<9;sd++){
449  if(sd==0){ first_rbx=0; last_rbx=18;} //HBM
450  if(sd==1){ first_rbx=18; last_rbx=36;} //HBP
451  if(sd==0 || sd==1){ // update HB plots
452  for(int rbx=first_rbx;rbx<last_rbx;rbx++)for(int rm=1;rm<=4;rm++){
453  int index=RMSummary->GetRMindex(HB_RBX[rbx],rm);
454  if(index<0 || index>=HcalFrontEndId::maxRmIndex) continue;
455  double val=RMSummary->rm[index].n_th_hi_LS/TIME;
456  if(val>SpikeThreshold){
457  HB_RBXmapSpikeCnt->Fill(rm,rbx+1,1);
458  //printf("%s %i %f (%f)\n",HO_RBX[rbx].c_str(),rm,RMSummary->rm[index].n_th_hi_LS/TIME,TIME);
459  }
461  }
462  }
463  if(sd==2){ first_rbx=0; last_rbx=18;} //HEM
464  if(sd==3){ first_rbx=18; last_rbx=36;} //HEP
465  if(sd==2 || sd==3){ // update HB plots
466  for(int rbx=first_rbx;rbx<last_rbx;rbx++)for(int rm=1;rm<=4;rm++){
467  int index=RMSummary->GetRMindex(HE_RBX[rbx],rm);
468  if(index<0 || index>=HcalFrontEndId::maxRmIndex) continue;
469  double val=RMSummary->rm[index].n_th_hi_LS/TIME;
470  if(val>SpikeThreshold){
471  HE_RBXmapSpikeCnt->Fill(rm,rbx+1,1);
472  //printf("%s %i %f (%f)\n",HO_RBX[rbx].c_str(),rm,RMSummary->rm[index].n_th_hi_LS/TIME,TIME);
473  }
475  }
476  }
477  if(sd==4){ first_rbx=6; last_rbx=12;} //HO1M
478  if(sd==5){ first_rbx=12; last_rbx=24;} //HO0
479  if(sd==6){ first_rbx=24; last_rbx=30;} //HO1P
480  if(sd>3){
481  for(int rbx=first_rbx;rbx<last_rbx;rbx++)for(int rm=1;rm<=4;rm++){
482  int index=RMSummary->GetRMindex(HO_RBX[rbx],rm);
483  if(index<0 || index>=HcalFrontEndId::maxRmIndex) continue;
484  double val=RMSummary->rm[index].n_th_hi_LS/TIME;
485  if(val>SpikeThreshold){
486  HO_RBXmapSpikeCnt->Fill(rm,rbx+1,1);
487  //printf("%s %i %f (%f)\n",HO_RBX[rbx].c_str(),rm,RMSummary->rm[index].n_th_hi_LS/TIME,TIME);
488  }
490  }
491  }
492  } //sd=0;sd<9
493 }
static std::string HO_RBX[36]
HcalDetDiagNoiseRMData rm[HcalFrontEndId::maxRmIndex]
static std::string HE_RBX[36]
HcalDetDiagNoiseRMSummary * RMSummary
void Fill(long long x)
int GetRMindex(const std::string &rbx, int rm)
string rm
Definition: submit.py:76
static const int maxRmIndex
double sd
static std::string HB_RBX[36]
int HcalDetDiagNoiseMonitor::GetStatistics ( )
inline

Definition at line 47 of file HcalDetDiagNoiseMonitor.h.

References ievt_.

void HcalDetDiagNoiseMonitor::reset ( void  )
virtual

Reimplemented from HcalBaseDQMonitor.

Definition at line 209 of file HcalDetDiagNoiseMonitor.cc.

209 {}
void HcalDetDiagNoiseMonitor::SaveRates ( )
private

Definition at line 557 of file HcalDetDiagNoiseMonitor.cc.

References patZpeak::events, HB_RBX, HE_RBX, HO_RBX, getHLTprescales::index, HcalFrontEndId::maxRmIndex, reco_calib_source_client_cfg::OutputFilePath, submit::rm, DTTTrigCorrFirst::run, lumiQTWidget::t, interactiveExample::theFile, cond::rpcobgas::time, and MainPageGenerator::tree.

557  {
558 char RBX[20];
559 int RM;
560 float VAL1,VAL2,VAL3,VAL4,VAL5;
561 char str[500];
562  double TIME=(double)(LastOrbit-FirstOrbit)/11223.0;
563  if(TIME==0) return;
564  if(OutputFilePath.size()>0){
565  if(!Overwrite){
566  sprintf(str,"%sHcalDetDiagNoiseData_run%06i_%i.root",OutputFilePath.c_str(),run_number,dataset_seq_number);
567  }else{
568  sprintf(str,"%sHcalDetDiagNoiseData.root",OutputFilePath.c_str());
569  }
570  TFile *theFile = new TFile(str, "RECREATE");
571  if(!theFile->IsOpen()) return;
572  theFile->cd();
573  sprintf(str,"%d",run_number); TObjString run(str); run.Write("run number");
574  sprintf(str,"%d",ievt_); TObjString events(str); events.Write("Total events processed");
575  sprintf(str,"%d",dataset_seq_number); TObjString dsnum(str); dsnum.Write("Dataset number");
576  Long_t t; t=time(0); strftime(str,30,"%F %T",localtime(&t)); TObjString tm(str); tm.Write("Dataset creation time");
577 
578  TTree *tree =new TTree("HCAL Noise data","HCAL Noise data");
579  if(tree==0) return;
580  tree->Branch("RBX", &RBX, "RBX/C");
581  tree->Branch("rm", &RM, "rm/I");
582  tree->Branch("RATE_50", &VAL1, "RATE_50");
583  tree->Branch("RATE_300", &VAL2, "RATE_300");
584  tree->Branch("RATE_PIX1", &VAL3, "RATE_PIX1");
585  tree->Branch("RATE_PIX8", &VAL4, "RATE_PIX8");
586  tree->Branch("RATE_PIXMEAN", &VAL5, "RATE_PIXMEAN");
587  for(int rbx=0;rbx<36;rbx++) for(int rm=1;rm<=4;rm++){
588  int index=RMSummary->GetRMindex(HB_RBX[rbx],rm);
589  if(index<0 || index>=HcalFrontEndId::maxRmIndex) continue;
590  sprintf(RBX,"%s",HB_RBX[rbx].c_str());
591  RM=rm;
592  VAL1=RMSummary->rm[index].n_th_hi/TIME;
593  VAL2=RMSummary->rm[index].n_th_300/TIME;
594  VAL3=RMSummary->rm[index].n_pix_1/TIME;
595  VAL4=RMSummary->rm[index].n_pix_8/TIME;
596  if(RMSummary->rm[index].n_pix>0)VAL5=RMSummary->rm[index].pix/RMSummary->rm[index].n_pix; else VAL5=0;
597  tree->Fill();
598  }
599  for(int rbx=0;rbx<36;rbx++) for(int rm=1;rm<=4;rm++){
600  int index=RMSummary->GetRMindex(HE_RBX[rbx],rm);
601  if(index<0 || index>=HcalFrontEndId::maxRmIndex) continue;
602  sprintf(RBX,"%s",HE_RBX[rbx].c_str());
603  RM=rm;
604  VAL1=RMSummary->rm[index].n_th_hi/TIME;
605  VAL2=RMSummary->rm[index].n_th_300/TIME;
606  VAL3=RMSummary->rm[index].n_pix_1/TIME;
607  VAL4=RMSummary->rm[index].n_pix_8/TIME;
608  if(RMSummary->rm[index].n_pix>0)VAL5=RMSummary->rm[index].pix/RMSummary->rm[index].n_pix; else VAL5=0;
609  tree->Fill();
610  }
611  for(int rbx=0;rbx<36;rbx++) for(int rm=1;rm<=4;rm++){
612  int index=RMSummary->GetRMindex(HO_RBX[rbx],rm);
613  if(index<0 || index>=HcalFrontEndId::maxRmIndex) continue;
614  sprintf(RBX,"%s",HO_RBX[rbx].c_str());
615  RM=rm;
616  VAL1=RMSummary->rm[index].n_th_hi/TIME;
617  VAL2=RMSummary->rm[index].n_th_300/TIME;
618  VAL3=RMSummary->rm[index].n_pix_1/TIME;
619  VAL4=RMSummary->rm[index].n_pix_8/TIME;
620  if(RMSummary->rm[index].n_pix>0)VAL5=RMSummary->rm[index].pix/RMSummary->rm[index].n_pix; else VAL5=0;
621  tree->Fill();
622  }
623  theFile->Write();
624  theFile->Close();
626 
627  }
628 }
static std::string HO_RBX[36]
HcalDetDiagNoiseRMData rm[HcalFrontEndId::maxRmIndex]
static std::string HE_RBX[36]
HcalDetDiagNoiseRMSummary * RMSummary
int GetRMindex(const std::string &rbx, int rm)
string rm
Definition: submit.py:76
static const int maxRmIndex
tuple events
Definition: patZpeak.py:19
static std::string HB_RBX[36]
void HcalDetDiagNoiseMonitor::setup ( void  )
virtual

Reimplemented from HcalBaseDQMonitor.

Definition at line 225 of file HcalDetDiagNoiseMonitor.cc.

References DQMStore::book1D(), DQMStore::book2D(), DQMStore::bookInt(), dbe_, relval_steps::gen(), HB_RBX, HE_RBX, HO_RBX, i, mergeVDriftHistosByStation::name, NULL, DQMStore::setCurrentFolder(), HcalBaseDQMonitor::setup(), and indexGen::title.

225  {
226  // Call base class setup
228  if (!dbe_) return;
230 
231  std::string name;
232  if(dbe_!=NULL){
234  meEVT_ = dbe_->bookInt("HcalNoiseMonitor Event Number");
235  dbe_->setCurrentFolder(subdir_+"Common Plots");
236 
237  name="RBX Pixel multiplicity"; PixelMult = dbe_->book1D(name,name,73,0,73);
238  name="HPD energy"; HPDEnergy = dbe_->book1D(name,name,200,0,2500);
239  name="RBX energy"; RBXEnergy = dbe_->book1D(name,name,200,0,3500);
240  name="Number of zero TS per RBX"; NZeroes = dbe_->book1D(name,name,100,0,100);
241  name="Trigger BX Tbit11"; TriggerBx11 = dbe_->book1D(name,name,4000,0,4000);
242  name="Trigger BX Tbit12"; TriggerBx12 = dbe_->book1D(name,name,4000,0,4000);
243 
244  dbe_->setCurrentFolder(subdir_+"HBHE Plots");
245  name="HBP HPD Noise Rate Pixel above 50fC"; HBP_Rate50 = dbe_->book1D(name,name,73,0,73);
246  name="HBM HPD Noise Rate Pixel above 50fC"; HBM_Rate50 = dbe_->book1D(name,name,73,0,73);
247  name="HEP HPD Noise Rate Pixel above 50fC"; HEP_Rate50 = dbe_->book1D(name,name,73,0,73);
248  name="HEM HPD Noise Rate Pixel above 50fC"; HEM_Rate50 = dbe_->book1D(name,name,73,0,73);
249  name="HBP HPD Noise Rate HPD above 300fC"; HBP_Rate300 = dbe_->book1D(name,name,73,0,73);
250  name="HBM HPD Noise Rate HPD above 300fC"; HBM_Rate300 = dbe_->book1D(name,name,73,0,73);
251  name="HEP HPD Noise Rate HPD above 300fC"; HEP_Rate300 = dbe_->book1D(name,name,73,0,73);
252  name="HEM HPD Noise Rate HPD above 300fC"; HEM_Rate300 = dbe_->book1D(name,name,73,0,73);
253 
254  dbe_->setCurrentFolder(subdir_+"HO Plots");
255  name="HO0 HPD Noise Rate Pixel above 50fC"; HO0_Rate50 = dbe_->book1D(name,name,49,0,49);
256  name="HO1P HPD Noise Rate Pixel above 50fC"; HO1P_Rate50 = dbe_->book1D(name,name,48,0,48);
257  name="HO1M HPD Noise Rate Pixel above 50fC"; HO1M_Rate50 = dbe_->book1D(name,name,48,0,48);
258  name="HO0 HPD Noise Rate HPD above 300fC"; HO0_Rate300 = dbe_->book1D(name,name,48,0,48);
259  name="HO1P HPD Noise Rate HPD abGetRMindexove 300fC"; HO1P_Rate300 = dbe_->book1D(name,name,48,0,48);
260  name="HO1M HPD Noise Rate HPD above 300fC"; HO1M_Rate300 = dbe_->book1D(name,name,48,0,48);
261 
262 
263  dbe_->setCurrentFolder(subdir_+"Noise Spike Plots");
264 
265  name="HB RM Spike Map"; HB_RBXmapSpikeCnt= dbe_->book2D(name,name,4,0.5,4.5,36,0.5,36.5);
266  name="HE RM Spike Map"; HE_RBXmapSpikeCnt= dbe_->book2D(name,name,4,0.5,4.5,36,0.5,36.5);
267  name="HO RM Spike Map"; HO_RBXmapSpikeCnt= dbe_->book2D(name,name,4,0.5,4.5,36,0.5,36.5);
268 
269  std::string title="RM";
273 
274  for(int i=0;i<36;i++){
278  }
279  }
280 
282  lmap =new HcalLogicalMap(gen->createMap());
283 
284  return;
285 }
int i
Definition: DBlmapReader.cc:9
static std::string HO_RBX[36]
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
Definition: DQMStore.cc:717
HcalLogicalMap createMap(unsigned int mapIOV=5)
static std::string HE_RBX[36]
void setBinLabel(int bin, const std::string &label, int axis=1)
set bin label for x, y or z axis (axis=1, 2, 3 respectively)
#define NULL
Definition: scimark2.h:8
HcalDetDiagNoiseRMSummary * RMSummary
HcalLogicalMapGenerator * gen
static std::string HB_RBX[36]
MonitorElement * bookInt(const char *name)
Book int.
Definition: DQMStore.cc:624
MonitorElement * book2D(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY)
Book 2D histogram.
Definition: DQMStore.cc:845
virtual void setup(void)
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:429
void HcalDetDiagNoiseMonitor::UpdateHistos ( )

Definition at line 495 of file HcalDetDiagNoiseMonitor.cc.

References HB_RBX, HE_RBX, HO_RBX, getHLTprescales::index, HcalFrontEndId::maxRmIndex, n, submit::rm, and sd.

495  {
496  int first_rbx=0;
497  double TIME=(double)(LastOrbit-FirstOrbit)/11223.0;
498  if(TIME==0) return;
499  for(int sd=0;sd<9;sd++){
500  if(sd==0){ first_rbx=0; } //HBM
501  if(sd==1){ first_rbx=18;} //HBP
502  if(sd==0 || sd==1){ // update HB plots
503  for(int rbx=0;rbx<18;rbx++)for(int rm=1;rm<=4;rm++){
504  int index=RMSummary->GetRMindex(HB_RBX[rbx+first_rbx],rm);
505  if(index<0 || index>=HcalFrontEndId::maxRmIndex) continue;
506  if(sd==0){
507  HBM_Rate50->setBinContent(rbx*4+rm,RMSummary->rm[index].n_th_hi/TIME);
508  HBM_Rate300->setBinContent(rbx*4+rm,RMSummary->rm[index].n_th_300/TIME);
509  }
510  if(sd==1){
511  HBP_Rate50->setBinContent(rbx*4+rm,RMSummary->rm[index].n_th_hi/TIME);
512  HBP_Rate300->setBinContent(rbx*4+rm,RMSummary->rm[index].n_th_300/TIME);
513  }
514  }
515  }
516  if(sd==2){ first_rbx=0;} //HEM
517  if(sd==3){ first_rbx=18;} //HEP
518  if(sd==2 || sd==3){ // update HB plots
519  for(int rbx=0;rbx<18;rbx++)for(int rm=1;rm<=4;rm++){
520  int index=RMSummary->GetRMindex(HE_RBX[rbx+first_rbx],rm);
521  if(index<0 || index>=HcalFrontEndId::maxRmIndex) continue;
522  if(sd==2){
523  HEM_Rate50->setBinContent(rbx*4+rm,RMSummary->rm[index].n_th_hi/TIME);
524  HEM_Rate300->setBinContent(rbx*4+rm,RMSummary->rm[index].n_th_300/TIME);
525  }
526  if(sd==3){
527  HEP_Rate50->setBinContent(rbx*4+rm,RMSummary->rm[index].n_th_hi/TIME);
528  HEP_Rate300->setBinContent(rbx*4+rm,RMSummary->rm[index].n_th_300/TIME);
529  }
530  }
531  }
532  int n=0;
533  if(sd==4){ first_rbx=6; n=6;} //HO1M
534  if(sd==5){ first_rbx=12;n=12;} //HO0
535  if(sd==6){ first_rbx=24;n=6;} //HO1P
536  if(sd>3){ // update HO plots
537  for(int rbx=0;rbx<n;rbx++)for(int rm=1;rm<=4;rm++){
538  int index=RMSummary->GetRMindex(HO_RBX[rbx+first_rbx],rm);
539  if(index<0 || index>=HcalFrontEndId::maxRmIndex) continue;
540  if(sd==4){
541  HO1M_Rate50->setBinContent(rbx*4*2+rm,RMSummary->rm[index].n_th_hi/TIME);
542  HO1M_Rate300->setBinContent(rbx*4*2+rm,RMSummary->rm[index].n_th_300/TIME);
543  }
544  if(sd==5){
545  HO0_Rate50->setBinContent(rbx*4+rm,RMSummary->rm[index].n_th_hi/TIME);
546  HO0_Rate300->setBinContent(rbx*4+rm,RMSummary->rm[index].n_th_300/TIME);
547  }
548  if(sd==5){
549  HO1P_Rate50->setBinContent(rbx*4*2+rm,RMSummary->rm[index].n_th_hi/TIME);
550  HO1P_Rate300->setBinContent(rbx*4+rm,RMSummary->rm[index].n_th_300/TIME);
551  }
552  }
553  }
554  } //sd=0;sd<9
555 }
void setBinContent(int binx, double content)
set content of bin (1-D)
static std::string HO_RBX[36]
HcalDetDiagNoiseRMData rm[HcalFrontEndId::maxRmIndex]
static std::string HE_RBX[36]
HcalDetDiagNoiseRMSummary * RMSummary
int GetRMindex(const std::string &rbx, int rm)
string rm
Definition: submit.py:76
static const int maxRmIndex
double sd
static std::string HB_RBX[36]

Member Data Documentation

int HcalDetDiagNoiseMonitor::dataset_seq_number
private

Definition at line 58 of file HcalDetDiagNoiseMonitor.h.

edm::InputTag HcalDetDiagNoiseMonitor::digiLabel_
private

Definition at line 50 of file HcalDetDiagNoiseMonitor.h.

int HcalDetDiagNoiseMonitor::FirstOrbit
private

Definition at line 70 of file HcalDetDiagNoiseMonitor.h.

int HcalDetDiagNoiseMonitor::FirstOrbitLS
private

Definition at line 72 of file HcalDetDiagNoiseMonitor.h.

HcalLogicalMapGenerator* HcalDetDiagNoiseMonitor::gen
private

Definition at line 54 of file HcalDetDiagNoiseMonitor.h.

MonitorElement* HcalDetDiagNoiseMonitor::HB_RBXmapSpikeCnt
private

Definition at line 96 of file HcalDetDiagNoiseMonitor.h.

MonitorElement* HcalDetDiagNoiseMonitor::HBM_Rate300
private

Definition at line 85 of file HcalDetDiagNoiseMonitor.h.

MonitorElement* HcalDetDiagNoiseMonitor::HBM_Rate50
private

Definition at line 81 of file HcalDetDiagNoiseMonitor.h.

MonitorElement* HcalDetDiagNoiseMonitor::HBP_Rate300
private

Definition at line 84 of file HcalDetDiagNoiseMonitor.h.

MonitorElement* HcalDetDiagNoiseMonitor::HBP_Rate50
private

Definition at line 80 of file HcalDetDiagNoiseMonitor.h.

MonitorElement* HcalDetDiagNoiseMonitor::HE_RBXmapSpikeCnt
private

Definition at line 97 of file HcalDetDiagNoiseMonitor.h.

MonitorElement* HcalDetDiagNoiseMonitor::HEM_Rate300
private

Definition at line 87 of file HcalDetDiagNoiseMonitor.h.

MonitorElement* HcalDetDiagNoiseMonitor::HEM_Rate50
private

Definition at line 83 of file HcalDetDiagNoiseMonitor.h.

MonitorElement* HcalDetDiagNoiseMonitor::HEP_Rate300
private

Definition at line 86 of file HcalDetDiagNoiseMonitor.h.

MonitorElement* HcalDetDiagNoiseMonitor::HEP_Rate50
private

Definition at line 82 of file HcalDetDiagNoiseMonitor.h.

MonitorElement* HcalDetDiagNoiseMonitor::HO0_Rate300
private

Definition at line 92 of file HcalDetDiagNoiseMonitor.h.

MonitorElement* HcalDetDiagNoiseMonitor::HO0_Rate50
private

Definition at line 89 of file HcalDetDiagNoiseMonitor.h.

MonitorElement* HcalDetDiagNoiseMonitor::HO1M_Rate300
private

Definition at line 94 of file HcalDetDiagNoiseMonitor.h.

MonitorElement* HcalDetDiagNoiseMonitor::HO1M_Rate50
private

Definition at line 91 of file HcalDetDiagNoiseMonitor.h.

MonitorElement* HcalDetDiagNoiseMonitor::HO1P_Rate300
private

Definition at line 93 of file HcalDetDiagNoiseMonitor.h.

MonitorElement* HcalDetDiagNoiseMonitor::HO1P_Rate50
private

Definition at line 90 of file HcalDetDiagNoiseMonitor.h.

MonitorElement* HcalDetDiagNoiseMonitor::HO_RBXmapSpikeCnt
private

Definition at line 98 of file HcalDetDiagNoiseMonitor.h.

MonitorElement* HcalDetDiagNoiseMonitor::HPDEnergy
private

Definition at line 101 of file HcalDetDiagNoiseMonitor.h.

double HcalDetDiagNoiseMonitor::HPDthresholdHi
private

Definition at line 62 of file HcalDetDiagNoiseMonitor.h.

double HcalDetDiagNoiseMonitor::HPDthresholdLo
private

Definition at line 63 of file HcalDetDiagNoiseMonitor.h.

int HcalDetDiagNoiseMonitor::ievt_
private

Definition at line 68 of file HcalDetDiagNoiseMonitor.h.

Referenced by GetStatistics().

edm::InputTag HcalDetDiagNoiseMonitor::L1ADataLabel_
private

Definition at line 49 of file HcalDetDiagNoiseMonitor.h.

int HcalDetDiagNoiseMonitor::LastOrbit
private

Definition at line 71 of file HcalDetDiagNoiseMonitor.h.

int HcalDetDiagNoiseMonitor::LastOrbitLS
private

Definition at line 73 of file HcalDetDiagNoiseMonitor.h.

HcalLogicalMap* HcalDetDiagNoiseMonitor::lmap
private

Definition at line 53 of file HcalDetDiagNoiseMonitor.h.

bool HcalDetDiagNoiseMonitor::LocalRun
private

Definition at line 76 of file HcalDetDiagNoiseMonitor.h.

MonitorElement* HcalDetDiagNoiseMonitor::meEVT_
private

Definition at line 78 of file HcalDetDiagNoiseMonitor.h.

bool HcalDetDiagNoiseMonitor::newLS
private

Definition at line 69 of file HcalDetDiagNoiseMonitor.h.

int HcalDetDiagNoiseMonitor::NoisyEvents
private

Definition at line 75 of file HcalDetDiagNoiseMonitor.h.

MonitorElement* HcalDetDiagNoiseMonitor::NZeroes
private

Definition at line 103 of file HcalDetDiagNoiseMonitor.h.

std::string HcalDetDiagNoiseMonitor::OutputFilePath
private

Definition at line 56 of file HcalDetDiagNoiseMonitor.h.

bool HcalDetDiagNoiseMonitor::Overwrite
private

Definition at line 57 of file HcalDetDiagNoiseMonitor.h.

MonitorElement* HcalDetDiagNoiseMonitor::PixelMult
private

Definition at line 100 of file HcalDetDiagNoiseMonitor.h.

edm::InputTag HcalDetDiagNoiseMonitor::rawDataLabel_
private

Definition at line 51 of file HcalDetDiagNoiseMonitor.h.

MonitorElement* HcalDetDiagNoiseMonitor::RBXEnergy
private

Definition at line 102 of file HcalDetDiagNoiseMonitor.h.

HcalDetDiagNoiseRMSummary* HcalDetDiagNoiseMonitor::RMSummary
private

Definition at line 108 of file HcalDetDiagNoiseMonitor.h.

int HcalDetDiagNoiseMonitor::run_number
private

Definition at line 74 of file HcalDetDiagNoiseMonitor.h.

double HcalDetDiagNoiseMonitor::SpikeThreshold
private

Definition at line 64 of file HcalDetDiagNoiseMonitor.h.

MonitorElement* HcalDetDiagNoiseMonitor::TriggerBx11
private

Definition at line 104 of file HcalDetDiagNoiseMonitor.h.

MonitorElement* HcalDetDiagNoiseMonitor::TriggerBx12
private

Definition at line 105 of file HcalDetDiagNoiseMonitor.h.

bool HcalDetDiagNoiseMonitor::UseDB
private

Definition at line 60 of file HcalDetDiagNoiseMonitor.h.