CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
DQMHcalPhiSymAlCaReco.cc
Go to the documentation of this file.
1 /*
2  * \file DQMHcalPhiSymAlCaReco.cc
3  *
4  * \author Olga Kodolova
5  *
6  *
7  *
8  * Description: Monitoring of Phi Symmetry Calibration Stream
9 */
10 
15 
17 
18 // DQM include files
19 
21 
22 // work on collections
23 
28 
34 
37 
38 using namespace std;
39 using namespace edm;
40 
41 // ******************************************
42 // constructors
43 // *****************************************
44 
46 eventCounter_(0)
47 {
49  //
50  // Input from configurator file
51  //
52  folderName_ = ps.getUntrackedParameter<string>("FolderName","ALCAStreamHcalPhiSym");
53 
54  hbherecoMB = consumes<HBHERecHitCollection>(ps.getParameter<edm::InputTag>("hbheInputMB"));
55  horecoMB = ps.getParameter<edm::InputTag>("hoInputMB");
56  hfrecoMB = consumes<HFRecHitCollection>(ps.getParameter<edm::InputTag>("hfInputMB"));
57 
58  hbherecoNoise = consumes<HBHERecHitCollection>(ps.getParameter<edm::InputTag>("hbheInputNoise"));
59  horecoNoise = ps.getParameter<edm::InputTag>("hoInputNoise");
60  hfrecoNoise = consumes<HFRecHitCollection>(ps.getParameter<edm::InputTag>("hfInputNoise"));
61 
62  rawInLabel_ = consumes<FEDRawDataCollection>(ps.getParameter<edm::InputTag>("rawInputLabel"));
63 
64  period_ = ps.getParameter<unsigned int>("period") ;
65 
66  saveToFile_ = ps.getUntrackedParameter<bool>("SaveToFile",false);
67  fileName_ = ps.getUntrackedParameter<string>("FileName","MonitorAlCaHcalPhiSym.root");
68 
69  // histogram parameters
70 
71  // Distribution of rechits in iPhi, iEta
72  hiDistr_y_nbin_ = ps.getUntrackedParameter<int>("hiDistr_y_nbin",72);
73  hiDistr_y_min_ = ps.getUntrackedParameter<double>("hiDistr_y_min",0.5);
74  hiDistr_y_max_ = ps.getUntrackedParameter<double>("hiDistr_y_max",72.5);
75  hiDistr_x_nbin_ = ps.getUntrackedParameter<int>("hiDistr_x_nbin",41);
76  hiDistr_x_min_ = ps.getUntrackedParameter<double>("hiDistr_x_min",0.5);
77  hiDistr_x_max_ = ps.getUntrackedParameter<double>("hiDistr_x_max",41.5);
78  // Check for NZS
79  hiDistr_r_nbin_ = ps.getUntrackedParameter<int>("hiDistr_r_nbin",100);
80  ihbhe_size_ = ps.getUntrackedParameter<double>("ihbhe_size_",5184.);
81  ihf_size_ = ps.getUntrackedParameter<double>("ihf_size_",1728.);
82 
83 }
84 
86 {}
87 
88 //--------------------------------------------------------
90 
91  // create and cd into new folder
93 
94  eventCounter_ = 0;
95 
96  hFEDsize = dbe_->book1D("hFEDsize","HCAL FED size (kB)",200,-0.5,20.5);
97  hFEDsize->setAxisTitle("kB",1);
98 
99  hHcalIsZS = dbe_->book1D("hHcalIsZS", "Hcal Is ZS", 4, -1.5, 2.5);
100  hHcalIsZS->setBinLabel(2, "NZS");
101  hHcalIsZS->setBinLabel(3, "ZS");
102 
103  char hname[50];
104  sprintf(hname, "L1 Event Number %% %i", period_);
105  hL1Id = dbe_->book1D("hL1Id", hname,4200,-99.5,4099.5);
106  hL1Id->setAxisTitle(hname);
107 
108 
109  // book some histograms 1D
110  double xmin = 0.1;
111  double xmax = 1.1;
113  dbe_->book1D("DistrHBHEsize","Size of HBHE Collection",
115  xmin,
116  xmax
117  );
119  dbe_->book1D("DistrHFsize","Size of HF Collection",
121  xmin,
122  xmax
123  );
124 
125 
126  // First moment
127  hiDistrMBPl2D_ =
128  dbe_->book2D("MBdepthPl1", "iphi- +ieta signal distribution at depth1",
135  );
136 
137  hiDistrMBPl2D_->setAxisTitle("i#phi ", 2);
138  hiDistrMBPl2D_->setAxisTitle("i#eta ", 1);
139 
140 
142  dbe_->book2D("NoisedepthPl1", "iphi-ieta noise distribution at depth1",
143  hiDistr_x_nbin_+1,
144  hiDistr_x_min_-1.,
146  hiDistr_y_nbin_+1,
147  hiDistr_y_min_-1.,
149  );
150 
151  hiDistrNoisePl2D_->setAxisTitle("i#phi ", 2);
152  hiDistrNoisePl2D_->setAxisTitle("i#eta ", 1);
153 // Second moment
155  dbe_->book2D("MB2depthPl1", "iphi- +ieta signal distribution at depth1",
162  );
163 
164  hiDistrMB2Pl2D_->setAxisTitle("i#phi ", 2);
165  hiDistrMB2Pl2D_->setAxisTitle("i#eta ", 1);
166 
167 
169  dbe_->book2D("Noise2depthPl1", "iphi-ieta noise distribution at depth1",
176  );
177 
178  hiDistrNoise2Pl2D_->setAxisTitle("i#phi ", 2);
179  hiDistrNoise2Pl2D_->setAxisTitle("i#eta ", 1);
180 
181 // Variance
183  dbe_->book2D("VarMBdepthPl1", "iphi- +ieta signal distribution at depth1",
190  );
191 
192  hiDistrVarMBPl2D_->setAxisTitle("i#phi ", 2);
193  hiDistrVarMBPl2D_->setAxisTitle("i#eta ", 1);
194 
195 
197  dbe_->book2D("VarNoisedepthPl1", "iphi-ieta noise distribution at depth1",
204  );
205 
206  hiDistrVarNoisePl2D_->setAxisTitle("i#phi ", 2);
207  hiDistrVarNoisePl2D_->setAxisTitle("i#eta ", 1);
208 
209 //==================================================================================
210 // First moment
211  hiDistrMBMin2D_ =
212  dbe_->book2D("MBdepthMin1", "iphi- +ieta signal distribution at depth1",
219  );
220 
221  hiDistrMBMin2D_->setAxisTitle("i#phi ", 2);
222  hiDistrMBMin2D_->setAxisTitle("i#eta ", 1);
223 
224 
226  dbe_->book2D("NoisedepthMin1", "iphi-ieta noise distribution at depth1",
233  );
234 
235  hiDistrNoiseMin2D_->setAxisTitle("i#phi ", 2);
236  hiDistrNoiseMin2D_->setAxisTitle("i#eta ", 1);
237 // Second moment
239  dbe_->book2D("MB2depthMin1", "iphi- +ieta signal distribution at depth1",
246  );
247 
248  hiDistrMB2Min2D_->setAxisTitle("i#phi ", 2);
249  hiDistrMB2Min2D_->setAxisTitle("i#eta ", 1);
250 
251 
253  dbe_->book2D("Noise2depthMin1", "iphi-ieta noise distribution at depth1",
260  );
261 
262  hiDistrNoise2Min2D_->setAxisTitle("i#phi ", 2);
263  hiDistrNoise2Min2D_->setAxisTitle("i#eta ", 1);
264 
265 // Variance
267  dbe_->book2D("VarMBdepthMin1", "iphi- +ieta signal distribution at depth1",
274  );
275 
276  hiDistrVarMBMin2D_->setAxisTitle("i#phi ", 2);
277  hiDistrVarMBMin2D_->setAxisTitle("i#eta ", 1);
278 
279 
281  dbe_->book2D("VarNoisedepthMin1", "iphi-ieta noise distribution at depth1",
288  );
289 
290  hiDistrVarNoiseMin2D_->setAxisTitle("i#phi ", 2);
291  hiDistrVarNoiseMin2D_->setAxisTitle("i#eta ", 1);
292 
293 
294 }
295 
296 //--------------------------------------------------------
297 void DQMHcalPhiSymAlCaReco::beginRun(const edm::Run& r, const EventSetup& context) {
298 // eventCounter_ = 0;
299 }
300 
301 //--------------------------------------------------------
303  const EventSetup& context) {
304 
305 }
306 
307 //-------------------------------------------------------------
308 
310  const EventSetup& iSetup ){
311 
312 
313  eventCounter_++;
314 
316  iEvent.getByToken(rawInLabel_,rawIn);
317 
318  if(!rawIn.isValid()){
319  LogDebug("") << "HcalCalibAlgos: Error! can't get hbhe product!" << std::endl;
320  return ;
321  }
322 
323  //get HCAL FEDs:
324  std::vector<int> selFEDs;
326  {
327  selFEDs.push_back(i);
328  }
329 
330  // std::cout<<" Size of FED "<<selFEDs.size()<<std::endl;
331 
332  const FEDRawDataCollection *rdc=rawIn.product();
333 
334  bool hcalIsZS = false ;
335  for (unsigned int k=0; k<selFEDs.size(); k++)
336  {
337  const FEDRawData & fedData = rdc->FEDData(selFEDs[k]);
338  // std::cout<<fedData.size()*std::pow(1024.,-1)<<std::endl;
339  hFEDsize->Fill(fedData.size()*std::pow(1024.,-1),1);
340 
341  // get HCAL DCC Header for each FEDRawData
342  const HcalDCCHeader* dccHeader=(const HcalDCCHeader*)(fedData.data());
343 
344  if (!dccHeader) continue;
345 
346  // walk through the HTR data...
347  HcalHTRData htr;
348 
349  int nspigot =0;
350  for (int spigot=0; spigot<HcalDCCHeader::SPIGOT_COUNT; spigot++) {
351  nspigot++;
352 
353  if (!dccHeader->getSpigotPresent(spigot)) continue;
354 
355  // Load the given decoder with the pointer and length from this spigot.
356  dccHeader->getSpigotData(spigot,htr, fedData.size());
357 
358  if(k != 20 && nspigot !=14 ) {
359  if ( !htr.isUnsuppressed() ) { hcalIsZS = true; }
360  }
361  }
362 
363  } // loop over HcalFEDs
364 
365  hHcalIsZS->Fill( hcalIsZS );
366 
367  // get Trigger FED-Id
368  const FEDRawData& fedData = rdc->FEDData(FEDNumbering::MINTriggerGTPFEDID) ;
369  FEDHeader header(fedData.data()) ;
370 
372  hL1Id->Fill( (header.lvl1ID())%period_ );
373 
375  iEvent.getByToken(hbherecoNoise, hbheNS);
376 
377  if(!hbheNS.isValid()){
378  LogDebug("") << "HcalCalibAlgos: Error! can't get hbhe product!" << std::endl;
379  return ;
380  }
381 
383  iEvent.getByToken(hbherecoMB, hbheMB);
384 
385  if(!hbheMB.isValid()){
386  LogDebug("") << "HcalCalibAlgos: Error! can't get hbhe product!" << std::endl;
387  return ;
388  }
389 
391  iEvent.getByToken(hfrecoNoise, hfNS);
392 
393  if(!hfNS.isValid()){
394  LogDebug("") << "HcalCalibAlgos: Error! can't get hbhe product!" << std::endl;
395  return ;
396  }
397 
399  iEvent.getByToken(hfrecoMB, hfMB);
400 
401  if(!hfMB.isValid()){
402  LogDebug("") << "HcalCalibAlgos: Error! can't get hbhe product!" << std::endl;
403  return ;
404  }
405 
406  const HBHERecHitCollection HithbheNS = *(hbheNS.product());
407 
408  hiDistrHBHEsize1D_->Fill(HithbheNS.size()/ihbhe_size_);
409 
410 
411  for(HBHERecHitCollection::const_iterator hbheItr=HithbheNS.begin(); hbheItr!=HithbheNS.end(); hbheItr++)
412  {
413  DetId id = (*hbheItr).detid();
414  HcalDetId hid=HcalDetId(id);
415 
416  if(hid.depth() == 1) {
417  if( hid.ieta() > 0 ) {
418  hiDistrNoisePl2D_->Fill(hid.ieta(),hid.iphi(),hbheItr->energy());
419  hiDistrNoise2Pl2D_->Fill(hid.ieta(),hid.iphi(),hbheItr->energy()*hbheItr->energy());
420  } else {
421  hiDistrNoiseMin2D_->Fill(fabs(hid.ieta()),hid.iphi(),hbheItr->energy());
422  hiDistrNoise2Min2D_->Fill(fabs(hid.ieta()),hid.iphi(),hbheItr->energy()*hbheItr->energy());
423  }
424  }
425  }
426 
427  const HBHERecHitCollection HithbheMB = *(hbheMB.product());
428 
429  for(HBHERecHitCollection::const_iterator hbheItr=HithbheMB.begin(); hbheItr!=HithbheMB.end(); hbheItr++)
430  {
431  DetId id = (*hbheItr).detid();
432  HcalDetId hid=HcalDetId(id);
433 
434  if(hid.depth() == 1) {
435  if( hid.ieta() > 0 ) {
436  hiDistrMBPl2D_->Fill(hid.ieta(),hid.iphi(),hbheItr->energy());
437  hiDistrMB2Pl2D_->Fill(hid.ieta(),hid.iphi(),hbheItr->energy()*hbheItr->energy());
438  } else {
439  hiDistrMBMin2D_->Fill(fabs(hid.ieta()),hid.iphi(),hbheItr->energy());
440  hiDistrMB2Min2D_->Fill(fabs(hid.ieta()),hid.iphi(),hbheItr->energy()*hbheItr->energy());
441  }
442  }
443 
444  }
445 
446  const HFRecHitCollection HithfNS = *(hfNS.product());
447 
448  hiDistrHFsize1D_->Fill(HithfNS.size()/ihf_size_);
449 
450  for(HFRecHitCollection::const_iterator hbheItr=HithfNS.begin(); hbheItr!=HithfNS.end(); hbheItr++)
451  {
452 
453  DetId id = (*hbheItr).detid();
454  HcalDetId hid=HcalDetId(id);
455 
456  if(hid.depth() == 1) {
457  if( hid.ieta() > 0 ) {
458  hiDistrNoisePl2D_->Fill(hid.ieta(),hid.iphi(),hbheItr->energy());
459  hiDistrNoise2Pl2D_->Fill(hid.ieta(),hid.iphi(),hbheItr->energy()*hbheItr->energy());
460  } else {
461  hiDistrNoiseMin2D_->Fill(fabs(hid.ieta()),hid.iphi(),hbheItr->energy());
462  hiDistrNoise2Min2D_->Fill(fabs(hid.ieta()),hid.iphi(),hbheItr->energy()*hbheItr->energy());
463  }
464  }
465 
466  }
467 
468  const HFRecHitCollection HithfMB = *(hfMB.product());
469 
470  for(HFRecHitCollection::const_iterator hbheItr=HithfMB.begin(); hbheItr!=HithfMB.end(); hbheItr++)
471  {
472  DetId id = (*hbheItr).detid();
473  HcalDetId hid=HcalDetId(id);
474 
475  if(hid.depth() == 1) {
476  if( hid.ieta() > 0 ) {
477  hiDistrMBPl2D_->Fill(hid.ieta(),hid.iphi(),hbheItr->energy());
478  hiDistrMB2Pl2D_->Fill(hid.ieta(),hid.iphi(),hbheItr->energy()*hbheItr->energy());
479  } else {
480  hiDistrMBMin2D_->Fill(fabs(hid.ieta()),hid.iphi(),hbheItr->energy());
481  hiDistrMB2Min2D_->Fill(fabs(hid.ieta()),hid.iphi(),hbheItr->energy()*hbheItr->energy());
482  }
483  }
484  }
485 
486 
487 } //analyze
488 
489 
490 
491 
492 //--------------------------------------------------------
494  const EventSetup& context) {
495 }
496 //--------------------------------------------------------
497 void DQMHcalPhiSymAlCaReco::endRun(const Run& r, const EventSetup& context){
498 // Keep Variances
499  if(eventCounter_ > 0) {
500  for(int k=0; k<=hiDistr_x_nbin_;k++)
501  {
502  for(int j=0; j<=hiDistr_y_nbin_;j++)
503  {
504 // First moment
505  float cc1=hiDistrMBPl2D_->getBinContent(k,j);
506  cc1 = cc1 * 1./eventCounter_;
507  float cc2=hiDistrNoisePl2D_->getBinContent(k,j);
508  cc2 = cc2 * 1./eventCounter_;
509  float cc3=hiDistrMBMin2D_->getBinContent(k,j);
510  cc3 = cc3 * 1./eventCounter_;
511  float cc4=hiDistrNoiseMin2D_->getBinContent(k,j);
512  cc4 = cc4 * 1./eventCounter_;
513 // Second moment
514  float cc11=hiDistrMB2Pl2D_->getBinContent(k,j);
515  cc11 = cc11 * 1./eventCounter_;
516  hiDistrVarMBPl2D_->setBinContent(k,j,cc11-cc1*cc1);
517  float cc22=hiDistrNoise2Pl2D_->getBinContent(k,j);
518  cc22 = cc22 * 1./eventCounter_;
519  hiDistrVarNoisePl2D_->setBinContent(k,j,cc22-cc2*cc2);
520  float cc33=hiDistrMB2Min2D_->getBinContent(k,j);
521  cc33 = cc33 * 1./eventCounter_;
522  hiDistrVarMBMin2D_->setBinContent(k,j,cc33-cc3*cc3);
523  float cc44=hiDistrNoise2Min2D_->getBinContent(k,j);
524  cc44 = cc44 * 1./eventCounter_;
525  hiDistrVarNoiseMin2D_->setBinContent(k,j,cc44-cc4*cc4);
526  }
527  }
528  }
529 }
530 //--------------------------------------------------------
532  if (saveToFile_) {
533 
534  for(int k=0; k<=hiDistr_x_nbin_;k++)
535  {
536  for(int j=0; j<=hiDistr_y_nbin_;j++)
537  {
538 // First moment
539  float cc1=hiDistrMBPl2D_->getBinContent(k,j);
540  cc1 = cc1 * 1./eventCounter_;
542  float cc2=hiDistrNoisePl2D_->getBinContent(k,j);
543  cc2 = cc2 * 1./eventCounter_;
545  float cc3=hiDistrMBMin2D_->getBinContent(k,j);
546  cc3 = cc3 * 1./eventCounter_;
548  float cc4=hiDistrNoiseMin2D_->getBinContent(k,j);
549  cc4 = cc4 * 1./eventCounter_;
551 // Second moment
552  float cc11=hiDistrMB2Pl2D_->getBinContent(k,j);
553  cc11 = cc11 * 1./eventCounter_;
555  hiDistrVarMBPl2D_->setBinContent(k,j,cc11-cc1*cc1);
556  float cc22=hiDistrNoise2Pl2D_->getBinContent(k,j);
557  cc22 = cc22 * 1./eventCounter_;
559  hiDistrVarNoisePl2D_->setBinContent(k,j,cc22-cc2*cc2);
560  float cc33=hiDistrMB2Min2D_->getBinContent(k,j);
561  cc33 = cc33 * 1./eventCounter_;
563  hiDistrVarMBMin2D_->setBinContent(k,j,cc33-cc3*cc3);
564  float cc44=hiDistrNoise2Min2D_->getBinContent(k,j);
565  cc44 = cc44 * 1./eventCounter_;
567  hiDistrVarNoiseMin2D_->setBinContent(k,j,cc44-cc4*cc4);
568  }
569  }
570  dbe_->save(fileName_);
571  }
572 }
573 
574 
#define LogDebug(id)
T getParameter(std::string const &) const
MonitorElement * hiDistrNoisePl2D_
T getUntrackedParameter(std::string const &, T const &) const
bool saveToFile_
Write to file.
int i
Definition: DBlmapReader.cc:9
void setBinContent(int binx, double content)
set content of bin (1-D)
MonitorElement * hiDistrVarMBPl2D_
MonitorElement * hiDistrVarNoiseMin2D_
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
Definition: DQMStore.cc:942
DQMHcalPhiSymAlCaReco(const edm::ParameterSet &)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:434
edm::EDGetTokenT< HBHERecHitCollection > hbherecoNoise
std::vector< HBHERecHit >::const_iterator const_iterator
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)
edm::EDGetTokenT< FEDRawDataCollection > rawInLabel_
void endRun(const edm::Run &r, const edm::EventSetup &c)
int getSpigotData(int nspigot, HcalHTRData &decodeTool, int validSize) const
size_t size() const
Lenght of the data buffer in bytes.
Definition: FEDRawData.h:47
void Fill(long long x)
bool isUnsuppressed() const
Is this event an unsuppresed event?
Definition: HcalHTRData.cc:353
MonitorElement * hiDistrMBPl2D_
MonitorElement * hiDistrHFsize1D_
int depth() const
get the tower depth
Definition: HcalDetId.h:40
edm::EDGetTokenT< HFRecHitCollection > hfrecoNoise
int iEvent
Definition: GenABIO.cc:230
const FEDRawData & FEDData(int fedid) const
retrieve data for fed
void beginRun(const edm::Run &r, const edm::EventSetup &c)
int ieta() const
get the cell ieta
Definition: HcalDetId.h:36
MonitorElement * hiDistrVarMBMin2D_
int j
Definition: DBlmapReader.cc:9
MonitorElement * hiDistrVarNoisePl2D_
bool getSpigotPresent(unsigned int nspigot) const
Read the &quot;PRESENT&quot; bit for this spigot.
std::string folderName_
DQM folder name.
MonitorElement * hiDistrMB2Pl2D_
bool isValid() const
Definition: HandleBase.h:76
MonitorElement * hiDistrNoise2Min2D_
int k[5][pyjets_maxn]
void analyze(const edm::Event &e, const edm::EventSetup &c)
const_iterator end() const
int iphi() const
get the cell iphi
Definition: HcalDetId.h:38
Definition: DetId.h:18
void beginLuminosityBlock(const edm::LuminosityBlock &lumiSeg, const edm::EventSetup &context)
MonitorElement * hiDistrMBMin2D_
T const * product() const
Definition: Handle.h:81
return(e1-e2)*(e1-e2)+dp *dp
edm::EDGetTokenT< HFRecHitCollection > hfrecoMB
static const int SPIGOT_COUNT
Definition: HcalDCCHeader.h:19
double getBinContent(int binx) const
get content of bin (1-D)
void endLuminosityBlock(const edm::LuminosityBlock &lumiSeg, const edm::EventSetup &c)
size_type size() const
void save(const std::string &filename, const std::string &path="", const std::string &pattern="", const std::string &rewrite="", const uint32_t run=0, const uint32_t lumi=0, SaveReferenceTag ref=SaveWithReference, int minStatus=dqm::qstatus::STATUS_OK, const std::string &fileupdate="RECREATE", const bool resetMEsAfterWriting=false)
Definition: DQMStore.cc:2490
const unsigned char * data() const
Return a const pointer to the beginning of the data buffer.
Definition: FEDRawData.cc:28
MonitorElement * hiDistrNoise2Pl2D_
MonitorElement * hiDistrNoiseMin2D_
std::string fileName_
Output file name if required.
volatile std::atomic< bool > shutdown_flag false
edm::EDGetTokenT< HBHERecHitCollection > hbherecoMB
object to monitor
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:1070
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
Power< A, B >::type pow(const A &a, const B &b)
Definition: Power.h:40
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:655
const_iterator begin() const
Definition: Run.h:41
MonitorElement * hiDistrHBHEsize1D_
MonitorElement * hiDistrMB2Min2D_