CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
SiPixelDigiModule.cc
Go to the documentation of this file.
6 // STL
7 #include <vector>
8 #include <memory>
9 #include <string>
10 #include <iostream>
11 #include <stdlib.h>
12 #include <sstream>
13 #include <cstdio>
14 
15 // Data Formats
22 
23 //
24 // Constructors
25 //
27  ncols_(416),
28  nrows_(160)
29 {
30 }
33  id_(id),
34  ncols_(416),
35  nrows_(160)
36 {
37 }
39 SiPixelDigiModule::SiPixelDigiModule(const uint32_t& id, const int& ncols, const int& nrows) :
40  id_(id),
41  ncols_(ncols),
42  nrows_(nrows)
43 {
44 }
45 //
46 // Destructor
47 //
49 //
50 // Book histograms
51 //
52 void SiPixelDigiModule::book(const edm::ParameterSet& iConfig, int type, bool twoD, bool hiRes, bool reducedSet, bool additInfo, bool isUpgrade) {
53 
54  //isUpgrade = iConfig.getUntrackedParameter<bool>("isUpgrade");
55 
56  bool barrel = DetId(id_).subdetId() == static_cast<int>(PixelSubdetector::PixelBarrel);
57  bool endcap = DetId(id_).subdetId() == static_cast<int>(PixelSubdetector::PixelEndcap);
58  bool isHalfModule = false;
59  if(barrel){
60  if (!isUpgrade) {
61  isHalfModule = PixelBarrelName(DetId(id_)).isHalfModule();
62  } else if (isUpgrade) {
63  isHalfModule = PixelBarrelNameUpgrade(DetId(id_)).isHalfModule();
64  }
65  }
66 
67  std::string hid;
68  // Get collection name and instantiate Histo Id builder
69  edm::InputTag src = iConfig.getParameter<edm::InputTag>( "src" );
70 
71 
72  // Get DQM interface
73  DQMStore* theDMBE = edm::Service<DQMStore>().operator->();
74 
75  int nbinx=ncols_/2, nbiny=nrows_/2;
76  std::string twodtitle = "Number of Digis (1bin=four pixels)";
77  std::string pxtitle = "Number of Digis (1bin=two columns)";
78  std::string pytitle = "Number of Digis (1bin=two rows)";
79  std::string twodroctitle = "ROC Occupancy (1bin=one ROC)";
80  std::string twodzeroOccroctitle = "Zero Occupancy ROC Map (1bin=one ROC) for ";
81  if(hiRes){
82  nbinx = ncols_;
83  nbiny = nrows_;
84  twodtitle = "Number of Digis (1bin=one pixel)";
85  pxtitle = "Number of Digis (1bin=one column)";
86  pytitle = "Number of Digis (1bin=one row)";
87  }
88  if(type==0){
89  SiPixelHistogramId* theHistogramId = new SiPixelHistogramId( src.label() );
90  // Number of digis
91  hid = theHistogramId->setHistoId("ndigis",id_);
92  meNDigis_ = theDMBE->book1D(hid,"Number of Digis",25,0.,25.);
93  meNDigis_->setAxisTitle("Number of digis",1);
94  // Charge in ADC counts
95  hid = theHistogramId->setHistoId("adc",id_);
96  meADC_ = theDMBE->book1D(hid,"Digi charge",128,0.,256.);
97  meADC_->setAxisTitle("ADC counts",1);
98  if(!reducedSet)
99  {
100  if(twoD){
101  if(additInfo){
102  // 2D hit map
103  hid = theHistogramId->setHistoId("hitmap",id_);
104  mePixDigis_ = theDMBE->book2D(hid,twodtitle,nbinx,0.,float(ncols_),nbiny,0.,float(nrows_));
105  mePixDigis_->setAxisTitle("Columns",1);
106  mePixDigis_->setAxisTitle("Rows",2);
107  //std::cout << "During booking: type is "<< type << ", ID is "<< id_ << ", pwd for booking is " << theDMBE->pwd() << ", Plot name: " << hid << std::endl;
108  }
109  }
110  else{
111  // projections of 2D hit map
112  hid = theHistogramId->setHistoId("hitmap",id_);
113  mePixDigis_px_ = theDMBE->book1D(hid+"_px",pxtitle,nbinx,0.,float(ncols_));
114  mePixDigis_py_ = theDMBE->book1D(hid+"_py",pytitle,nbiny,0.,float(nrows_));
115  mePixDigis_px_->setAxisTitle("Columns",1);
116  mePixDigis_py_->setAxisTitle("Rows",1);
117  }
118  }
119  delete theHistogramId;
120 
121  }
122 
123  if(type==1 && barrel){
124  uint32_t DBladder;
125  if (!isUpgrade) { DBladder = PixelBarrelName(DetId(id_)).ladderName();}
126  else { DBladder = PixelBarrelNameUpgrade(DetId(id_)).ladderName();}
127  char sladder[80]; sprintf(sladder,"Ladder_%02i",DBladder);
128  hid = src.label() + "_" + sladder;
129  if(isHalfModule) hid += "H";
130  else hid += "F";
131  // Number of digis
132  meNDigisLad_ = theDMBE->book1D("ndigis_"+hid,"Number of Digis",25,0.,25.);
133  meNDigisLad_->setAxisTitle("Number of digis",1);
134  // Charge in ADC counts
135  meADCLad_ = theDMBE->book1D("adc_" + hid,"Digi charge",128,0.,256.);
136  meADCLad_->setAxisTitle("ADC counts",1);
137  if(!reducedSet)
138  {
139  if(twoD){
140  // 2D hit map
141  mePixDigisLad_ = theDMBE->book2D("hitmap_"+hid,twodtitle,nbinx,0.,float(ncols_),nbiny,0.,float(nrows_));
142  mePixDigisLad_->setAxisTitle("Columns",1);
143  mePixDigisLad_->setAxisTitle("Rows",2);
144  //std::cout << "During booking: type is "<< type << ", ID is "<< id_ << ", pwd for booking is " << theDMBE->pwd() << ", Plot name: " << hid << std::endl;
145  }
146  else{
147  // projections of 2D hit map
148  mePixDigisLad_px_ = theDMBE->book1D("hitmap_"+hid+"_px",pxtitle,nbinx,0.,float(ncols_));
149  mePixDigisLad_py_ = theDMBE->book1D("hitmap_"+hid+"_py",pytitle,nbiny,0.,float(nrows_));
150  mePixDigisLad_px_->setAxisTitle("Columns",1);
151  mePixDigisLad_py_->setAxisTitle("Rows",1);
152  }
153  }
154  }
155  if(type==2 && barrel){
156  uint32_t DBlayer;
157  if (!isUpgrade) { DBlayer = PixelBarrelName(DetId(id_)).layerName(); }
158  else { DBlayer = PixelBarrelNameUpgrade(DetId(id_)).layerName(); }
159  char slayer[80]; sprintf(slayer,"Layer_%i",DBlayer);
160  hid = src.label() + "_" + slayer;
161  if(!additInfo){
162  // Number of digis
163  meNDigisLay_ = theDMBE->book1D("ndigis_"+hid,"Number of Digis",25,0.,25.);
164  meNDigisLay_->setAxisTitle("Number of digis",1);
165  // Charge in ADC counts
166  meADCLay_ = theDMBE->book1D("adc_" + hid,"Digi charge",128,0.,256.);
167  meADCLay_->setAxisTitle("ADC counts",1);
168  }
169  if(!reducedSet){
170  if(twoD || additInfo){
171  // 2D hit map
172  if(isHalfModule){
173  mePixDigisLay_ = theDMBE->book2D("hitmap_"+hid,twodtitle,nbinx,0.,float(ncols_),2*nbiny,0.,float(2*nrows_));
174  }
175  else{
176  mePixDigisLay_ = theDMBE->book2D("hitmap_"+hid,twodtitle,nbinx,0.,float(ncols_),nbiny,0.,float(nrows_));
177 
178  }
179  mePixDigisLay_->setAxisTitle("Columns",1);
180  mePixDigisLay_->setAxisTitle("Rows",2);
181 
182  //std::cout << "During booking: type is "<< type << ", ID is "<< id_ << ", pwd for booking is " << theDMBE->pwd() << ", Plot name: " << hid << std::endl;
183  int yROCbins[3] = {18,30,42};
184  mePixRocsLay_ = theDMBE->book2D("rocmap_"+hid,twodroctitle,32,0.,32.,yROCbins[DBlayer-1],1.5,1.5+float(yROCbins[DBlayer-1]/2));
185  mePixRocsLay_->setAxisTitle("ROCs per Module",1);
186  mePixRocsLay_->setAxisTitle("ROCs per 1/2 Ladder",2);
187  meZeroOccRocsLay_ = theDMBE->book2D("zeroOccROC_map",twodzeroOccroctitle+hid,32,0.,32.,yROCbins[DBlayer-1],1.5,1.5+float(yROCbins[DBlayer-1]/2));
188  meZeroOccRocsLay_->setAxisTitle("ROCs per Module",1);
189  meZeroOccRocsLay_->setAxisTitle("ROCs per 1/2 Ladder",2);
190  }
191  if(!twoD && !additInfo){
192  // projections of 2D hit map
193  mePixDigisLay_px_ = theDMBE->book1D("hitmap_"+hid+"_px",pxtitle,nbinx,0.,float(ncols_));
194  if(isHalfModule){
195  mePixDigisLay_py_ = theDMBE->book1D("hitmap_"+hid+"_py",pytitle,2*nbiny,0.,float(2*nrows_));
196  }
197  else{
198  mePixDigisLay_py_ = theDMBE->book1D("hitmap_"+hid+"_py",pytitle,nbiny,0.,float(nrows_));
199  }
200  mePixDigisLay_px_->setAxisTitle("Columns",1);
201  mePixDigisLay_py_->setAxisTitle("Rows",1);
202  }
203  }
204  }
205  if(type==3 && barrel){
206  uint32_t DBmodule;
207  if (!isUpgrade) { DBmodule = PixelBarrelName(DetId(id_)).moduleName(); }
208  else { DBmodule = PixelBarrelNameUpgrade(DetId(id_)).moduleName(); }
209  char smodule[80]; sprintf(smodule,"Ring_%i",DBmodule);
210  hid = src.label() + "_" + smodule;
211  // Number of digis
212  meNDigisPhi_ = theDMBE->book1D("ndigis_"+hid,"Number of Digis",25,0.,25.);
213  meNDigisPhi_->setAxisTitle("Number of digis",1);
214  // Charge in ADC counts
215  meADCPhi_ = theDMBE->book1D("adc_" + hid,"Digi charge",128,0.,256.);
216  meADCPhi_->setAxisTitle("ADC counts",1);
217  if(!reducedSet)
218  {
219  if(twoD){
220 
221  // 2D hit map
222  if(isHalfModule){
223  mePixDigisPhi_ = theDMBE->book2D("hitmap_"+hid,twodtitle,nbinx,0.,float(ncols_),2*nbiny,0.,float(2*nrows_));
224  }
225  else {
226  mePixDigisPhi_ = theDMBE->book2D("hitmap_"+hid,twodtitle,nbinx,0.,float(ncols_),nbiny,0.,float(nrows_));
227  }
228  mePixDigisPhi_->setAxisTitle("Columns",1);
229  mePixDigisPhi_->setAxisTitle("Rows",2);
230  //std::cout << "During booking: type is "<< type << ", ID is "<< id_ << ", pwd for booking is " << theDMBE->pwd() << ", Plot name: " << hid << std::endl;
231  }
232  else{
233  // projections of 2D hit map
234  mePixDigisPhi_px_ = theDMBE->book1D("hitmap_"+hid+"_px",pxtitle,nbinx,0.,float(ncols_));
235  if(isHalfModule){
236  mePixDigisPhi_py_ = theDMBE->book1D("hitmap_"+hid+"_py",pytitle,2*nbiny,0.,float(2*nrows_));
237  }
238  else{
239  mePixDigisPhi_py_ = theDMBE->book1D("hitmap_"+hid+"_py",pytitle,nbiny,0.,float(nrows_));
240  }
241  mePixDigisPhi_px_->setAxisTitle("Columns",1);
242  mePixDigisPhi_py_->setAxisTitle("Rows",1);
243  }
244  }
245  }
246  if(type==4 && endcap){
247  uint32_t blade;
248  if (!isUpgrade) { blade= PixelEndcapName(DetId(id_)).bladeName(); }
249  else { blade= PixelEndcapNameUpgrade(DetId(id_)).bladeName(); }
250 
251  char sblade[80]; sprintf(sblade, "Blade_%02i",blade);
252  hid = src.label() + "_" + sblade;
253  // Number of digis
254  meNDigisBlade_ = theDMBE->book1D("ndigis_"+hid,"Number of Digis",25,0.,25.);
255  meNDigisBlade_->setAxisTitle("Number of digis",1);
256  // Charge in ADC counts
257  meADCBlade_ = theDMBE->book1D("adc_" + hid,"Digi charge",128,0.,256.);
258  meADCBlade_->setAxisTitle("ADC counts",1);
259  }
260  if(type==5 && endcap){
261  uint32_t disk;
262  if (!isUpgrade) { disk = PixelEndcapName(DetId(id_)).diskName(); }
263  else { disk = PixelEndcapNameUpgrade(DetId(id_)).diskName(); }
264 
265  char sdisk[80]; sprintf(sdisk, "Disk_%i",disk);
266  hid = src.label() + "_" + sdisk;
267  if(!additInfo){
268  // Number of digis
269  meNDigisDisk_ = theDMBE->book1D("ndigis_"+hid,"Number of Digis",25,0.,25.);
270  meNDigisDisk_->setAxisTitle("Number of digis",1);
271  // Charge in ADC counts
272  meADCDisk_ = theDMBE->book1D("adc_" + hid,"Digi charge",128,0.,256.);
273  meADCDisk_->setAxisTitle("ADC counts",1);
274  }
275  if(additInfo){
276  mePixDigisDisk_ = theDMBE->book2D("hitmap_"+hid,twodtitle,260,0.,260.,160,0.,160.);
277  mePixDigisDisk_->setAxisTitle("Columns",1);
278  mePixDigisDisk_->setAxisTitle("Rows",2);
279  //ROC information in disks
280  mePixRocsDisk_ = theDMBE->book2D("rocmap_"+hid,twodroctitle,26,0.,26.,24,1.,13.);
281  mePixRocsDisk_ ->setAxisTitle("ROCs per Module (2 Panels)",1);
282  mePixRocsDisk_ ->setAxisTitle("Blade Number",2);
283  meZeroOccRocsDisk_ = theDMBE->book2D("zeroOccROC_map",twodzeroOccroctitle+hid,26,0.,26.,24,1.,13.);
284  meZeroOccRocsDisk_ ->setAxisTitle("Zero-Occupancy ROCs per Module (2 Panels)",1);
285  meZeroOccRocsDisk_ ->setAxisTitle("Blade Number",2);
286  }
287  }
288  if(type==6 && endcap){
289  uint32_t panel;
290  uint32_t module;
291  if (!isUpgrade) {
292  panel= PixelEndcapName(DetId(id_)).pannelName();
294  } else {
297  }
298 
299  char slab[80]; sprintf(slab, "Panel_%i_Ring_%i",panel, module);
300  hid = src.label() + "_" + slab;
301  // Number of digis
302  meNDigisRing_ = theDMBE->book1D("ndigis_"+hid,"Number of Digis",25,0.,25.);
303  meNDigisRing_->setAxisTitle("Number of digis",1);
304  // Charge in ADC counts
305  meADCRing_ = theDMBE->book1D("adc_" + hid,"Digi charge",128,0.,256.);
306  meADCRing_->setAxisTitle("ADC counts",1);
307  if(!reducedSet)
308  {
309  if(twoD){
310  // 2D hit map
311  mePixDigisRing_ = theDMBE->book2D("hitmap_"+hid,twodtitle,nbinx,0.,float(ncols_),nbiny,0.,float(nrows_));
312  mePixDigisRing_->setAxisTitle("Columns",1);
313  mePixDigisRing_->setAxisTitle("Rows",2);
314  //std::cout << "During booking: type is "<< type << ", ID is "<< id_ << ", pwd for booking is " << theDMBE->pwd() << ", Plot name: " << hid << std::endl;
315  }
316  else{
317  // projections of 2D hit map
318  mePixDigisRing_px_ = theDMBE->book1D("hitmap_"+hid+"_px",pxtitle,nbinx,0.,float(ncols_));
319  mePixDigisRing_py_ = theDMBE->book1D("hitmap_"+hid+"_py",pytitle,nbiny,0.,float(nrows_));
320  mePixDigisRing_px_->setAxisTitle("Columns",1);
321  mePixDigisRing_py_->setAxisTitle("Rows",1);
322  }
323  }
324  }
325 }
326 
327 
328 //
329 // Fill histograms
330 //
332  bool ladon, bool layon, bool phion,
333  bool bladeon, bool diskon, bool ringon,
334  bool twoD, bool reducedSet, bool twoDimModOn, bool twoDimOnlyLayDisk,
335  int &nDigisA, int &nDigisB, bool isUpgrade) {
336  bool barrel = DetId(id_).subdetId() == static_cast<int>(PixelSubdetector::PixelBarrel);
337  bool endcap = DetId(id_).subdetId() == static_cast<int>(PixelSubdetector::PixelEndcap);
338  bool isHalfModule = false;
339  uint32_t DBladder = 0;
340  if(barrel && !isUpgrade){
341  isHalfModule = PixelBarrelName(DetId(id_)).isHalfModule();
342  DBladder = PixelBarrelName(DetId(id_)).ladderName();
343  } else if (barrel && isUpgrade) {
344  isHalfModule = PixelBarrelNameUpgrade(DetId(id_)).isHalfModule();
346  }
347 
348  // Get DQM interface
349  DQMStore* theDMBE = edm::Service<DQMStore>().operator->();
350  //std::cout<<"id_ = "<<id_<<" , dmbe="<<theDMBE->pwd()<<std::endl;
351  //std::cout<<"********************"<<std::endl;
352  edm::DetSetVector<PixelDigi>::const_iterator isearch = input.find(id_); // search digis of detid
353 
354  unsigned int numberOfDigisMod = 0;
355  int msize;
356  if (isUpgrade) {msize=10;} else {msize=8;}
357  int numberOfDigis[msize]; for(int i=0; i!=msize; i++) numberOfDigis[i]=0;
358  nDigisA=0; nDigisB=0;
359  if( isearch != input.end() ) { // Not an empty iterator
360 
361  // Look at digis now
363  for(di = isearch->data.begin(); di != isearch->data.end(); di++) {
364  int adc = di->adc(); // charge
365  int col = di->column(); // column
366  int row = di->row(); // row
367  numberOfDigisMod++;
368 
369  int DBlayer = 0;
370  int DBmodule =0;
371 
372  if (!isUpgrade) {
374  DBlayer = PixelBarrelName(DetId(id_)).layerName();
375  DBmodule = PixelBarrelName(DetId(id_)).moduleName();
376  if(barrel){
377  if(isHalfModule){
378  if(DBshell==PixelBarrelName::pI||DBshell==PixelBarrelName::pO){
379  numberOfDigis[0]++; nDigisA++;
380  if(DBlayer==1) numberOfDigis[2]++;
381  if(DBlayer==2) numberOfDigis[3]++;
382  if(DBlayer==3) numberOfDigis[4]++;
383  }
384  if(DBshell==PixelBarrelName::mI||DBshell==PixelBarrelName::mO){
385  numberOfDigis[1]++; nDigisB++;
386  if(DBlayer==1) numberOfDigis[5]++;
387  if(DBlayer==2) numberOfDigis[6]++;
388  if(DBlayer==3) numberOfDigis[7]++;
389  }
390  }else{
391  if(row<80){
392  numberOfDigis[0]++; nDigisA++;
393  if(DBlayer==1) numberOfDigis[2]++;
394  if(DBlayer==2) numberOfDigis[3]++;
395  if(DBlayer==3) numberOfDigis[4]++;
396  }else{
397  numberOfDigis[1]++; nDigisB++;
398  if(DBlayer==1) numberOfDigis[5]++;
399  if(DBlayer==2) numberOfDigis[6]++;
400  if(DBlayer==3) numberOfDigis[7]++;
401  }
402  }
403  }
404  } else if (isUpgrade) {
405  //PixelBarrelNameUpgrade::Shell DBshell = PixelBarrelNameUpgrade(DetId(id_)).shell();
408  if(barrel){
409  if(row<80){
410  numberOfDigis[0]++; nDigisA++;
411  if(DBlayer==1) numberOfDigis[2]++;
412  if(DBlayer==2) numberOfDigis[3]++;
413  if(DBlayer==3) numberOfDigis[4]++;
414  if(DBlayer==4) numberOfDigis[5]++;
415  }else{
416  numberOfDigis[1]++; nDigisB++;
417  if(DBlayer==1) numberOfDigis[6]++;
418  if(DBlayer==2) numberOfDigis[7]++;
419  if(DBlayer==3) numberOfDigis[8]++;
420  if(DBlayer==4) numberOfDigis[9]++;
421  }
422  }
423  }
424 
425  if(modon){
426  if(!reducedSet){
427  if(twoD) {
428  if(twoDimModOn) (mePixDigis_)->Fill((float)col,(float)row);
429  //std::cout << "Col: " << col << ", Row: " << row << ", for DBlayer " << DBlayer << " and isladder " << DBladder << " and module " << PixelBarrelName(DetId(id_)).moduleName() << " and side is " << DBshell << std::endl;
430  //std::cout<<"id_ = "<<id_<<" , dmbe="<<theDMBE->pwd()<<std::endl;
431  }
432  else {
433  (mePixDigis_px_)->Fill((float)col);
434  (mePixDigis_py_)->Fill((float)row);
435  }
436  }
437  (meADC_)->Fill((float)adc);
438  }
439  if(ladon && barrel){
440  (meADCLad_)->Fill((float)adc);
441  if(!reducedSet){
442  if(twoD) (mePixDigisLad_)->Fill((float)col,(float)row);
443  else {
444  (mePixDigisLad_px_)->Fill((float)col);
445  (mePixDigisLad_py_)->Fill((float)row);
446  }
447  }
448  }
449  if((layon || twoDimOnlyLayDisk) && barrel){
450  if(!twoDimOnlyLayDisk) (meADCLay_)->Fill((float)adc);
451  if(!reducedSet){
452  if((layon && twoD) || twoDimOnlyLayDisk){
453  //ROC histos...
454  float rocx = (float)col/52. + 8.0*float(DBmodule-1);
455  float rocy = (float)row/160.+float(DBladder);
456  //Shift 1st ladder (half modules) up by 1 bin
457  if(DBladder==1) rocy = rocy + 0.5;
458  mePixRocsLay_->Fill(rocx,rocy);
459  //Copying full 1/2 module to empty 1/2 module...
460  //if(isHalfModule) mePixRocsLay_->Fill(rocx,rocy+0.5);
461  //end of ROC filling...
462 
463  if(isHalfModule && DBladder==1){
464  (mePixDigisLay_)->Fill((float)col,(float)row+80);
465  }
466  else (mePixDigisLay_)->Fill((float)col,(float)row);
467  }
468  if((layon && !twoD) && !twoDimOnlyLayDisk){
469  (mePixDigisLay_px_)->Fill((float)col);
470  if(isHalfModule && DBladder==1) {
471  (mePixDigisLay_py_)->Fill((float)row+80);
472  }
473  else (mePixDigisLay_py_)->Fill((float)row);
474  }
475  }
476  }
477  if(phion && barrel){
478  (meADCPhi_)->Fill((float)adc);
479  if(!reducedSet)
480  {
481  if(twoD){
482  if(isHalfModule && DBladder==1){
483  (mePixDigisPhi_)->Fill((float)col,(float)row+80);
484  }
485  else (mePixDigisPhi_)->Fill((float)col,(float)row);
486  }
487  else {
488  (mePixDigisPhi_px_)->Fill((float)col);
489  if(isHalfModule && DBladder==1) {
490  (mePixDigisPhi_py_)->Fill((float)row+80);
491  }
492  else (mePixDigisPhi_py_)->Fill((float)row);
493  }
494  }
495  }
496  if(bladeon && endcap){
497  (meADCBlade_)->Fill((float)adc);
498  }
499 
500  if((diskon || twoDimOnlyLayDisk) && endcap){
501  if(!twoDimOnlyLayDisk) (meADCDisk_)->Fill((float)adc);
502  if(twoDimOnlyLayDisk){
503  (mePixDigisDisk_)->Fill((float)col,(float)row);
504  //ROC monitoring
505  int DBpanel;
506  int DBblade;
507  if (!isUpgrade) {
508  DBpanel= PixelEndcapName(DetId(id_)).pannelName();
509  DBblade= PixelEndcapName(DetId(id_)).bladeName();
510  } else {
513  }
514  float offx = 0.;
515  //This crazy offset takes into account the roc and module fpix configuration
516  for (int i = DBpanel; i < DBmodule; ++i) {offx = offx + float(5+DBpanel-i);}
517  float rocx = (float)col/52. + offx + 14.0*float(DBpanel-1);
518  float rocy = (float)row/160.+float(DBblade);
519  mePixRocsDisk_->Fill(rocx,rocy);
520  //Now handle the 1/2 module cases by cloning those bins and filling...
521  //if (DBpanel==1 && (DBmodule==1||DBmodule==4)){
522  //rocy = rocy + 0.5;
523  //mePixRocsDisk_->Fill(rocx,rocy);}
524  //end ROC monitoring
525  }
526  }
527  if(ringon && endcap){
528  (meADCRing_)->Fill((float)adc);
529  if(!reducedSet)
530  {
531  if(twoD) (mePixDigisRing_)->Fill((float)col,(float)row);
532  else {
533  (mePixDigisRing_px_)->Fill((float)col);
534  (mePixDigisRing_py_)->Fill((float)row);
535  }
536  }
537  }
538  }
539  if(modon) (meNDigis_)->Fill((float)numberOfDigisMod);
540  if(ladon && barrel) (meNDigisLad_)->Fill((float)numberOfDigisMod);
541  if(layon && barrel && !twoDimOnlyLayDisk) (meNDigisLay_)->Fill((float)numberOfDigisMod);
542  if(phion && barrel) (meNDigisPhi_)->Fill((float)numberOfDigisMod);
543  if(bladeon && endcap) (meNDigisBlade_)->Fill((float)numberOfDigisMod);
544  if(diskon && endcap && !twoDimOnlyLayDisk) (meNDigisDisk_)->Fill((float)numberOfDigisMod);
545  if(ringon && endcap) (meNDigisRing_)->Fill((float)numberOfDigisMod);
546  if(barrel){
547  MonitorElement* me=theDMBE->get("Pixel/Barrel/ALLMODS_ndigisCOMB_Barrel");
548  if(me) me->Fill((float)numberOfDigisMod);
549  me=theDMBE->get("Pixel/Barrel/ALLMODS_ndigisCHAN_Barrel");
550  if(me){ if(numberOfDigis[0]>0) me->Fill((float)numberOfDigis[0]); if(numberOfDigis[1]>0) me->Fill((float)numberOfDigis[1]); }
551  me=theDMBE->get("Pixel/Barrel/ALLMODS_ndigisCHAN_BarrelL1");
552  if(me){ if(numberOfDigis[2]>0) me->Fill((float)numberOfDigis[2]); }
553  me=theDMBE->get("Pixel/Barrel/ALLMODS_ndigisCHAN_BarrelL2");
554  if(me){ if(numberOfDigis[3]>0) me->Fill((float)numberOfDigis[3]); }
555  me=theDMBE->get("Pixel/Barrel/ALLMODS_ndigisCHAN_BarrelL3");
556  if(me){ if(numberOfDigis[4]>0) me->Fill((float)numberOfDigis[4]); }
557  me=theDMBE->get("Pixel/Barrel/ALLMODS_ndigisCHAN_BarrelL4");
558  if(me){ if(numberOfDigis[5]>0) me->Fill((float)numberOfDigis[5]); }
559  }else if(endcap){
560  MonitorElement* me=theDMBE->get("Pixel/Endcap/ALLMODS_ndigisCOMB_Endcap");
561  if(me) me->Fill((float)numberOfDigisMod);
562  }
563  }
564 
565  //std::cout<<"numberOfDigis for this module: "<<numberOfDigis<<std::endl;
566  return numberOfDigisMod;
567 }
int adc(sample_type sample)
get the ADC sample (12 bits)
int plaquetteName() const
plaquetteId (in pannel)
type
Definition: HCALResponse.h:21
T getParameter(std::string const &) const
int i
Definition: DBlmapReader.cc:9
MonitorElement * meNDigisRing_
MonitorElement * mePixDigisLad_py_
MonitorElement * mePixDigis_
MonitorElement * mePixDigisPhi_py_
iterator find(det_id_type id)
Definition: DetSetVector.h:292
int moduleName() const
module id (index in z)
MonitorElement * meADCRing_
MonitorElement * meNDigis_
MonitorElement * mePixDigisRing_px_
MonitorElement * mePixDigis_py_
bool isHalfModule() const
full or half module
void book(const edm::ParameterSet &iConfig, int type=0, bool twoD=true, bool hiRes=false, bool reducedSet=false, bool additInfo=false, bool isUpgrade=false)
Book histograms.
~SiPixelDigiModule()
Destructor.
MonitorElement * meADC_
MonitorElement * mePixDigisDisk_
int plaquetteName() const
plaquetteId (in pannel)
static std::string const input
Definition: EdmProvDump.cc:44
void Fill(long long x)
MonitorElement * meNDigisBlade_
int bladeName() const
blade id
MonitorElement * meADCDisk_
MonitorElement * mePixDigisPhi_px_
bool isHalfModule() const
full or half module
MonitorElement * mePixDigisRing_py_
MonitorElement * mePixRocsDisk_
MonitorElement * mePixRocsLay_
MonitorElement * meZeroOccRocsLay_
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
MonitorElement * mePixDigisLay_py_
MonitorElement * meADCLad_
MonitorElement * meADCBlade_
MonitorElement * meNDigisLay_
SiPixelDigiModule()
Default constructor.
int bladeName() const
blade id
MonitorElement * get(const std::string &path) const
get ME from full pathname (e.g. &quot;my/long/dir/my_histo&quot;)
Definition: DQMStore.cc:1679
MonitorElement * mePixDigisLad_
int subdetId() const
get the contents of the subdetector field (not cast into any detector&#39;s numbering enum) ...
Definition: DetId.h:37
iterator end()
Return the off-the-end iterator.
Definition: DetSetVector.h:363
MonitorElement * meADCLay_
int diskName() const
disk id
std::string setHistoId(std::string variable, uint32_t &rawId)
Set Histogram Id.
Definition: DetId.h:18
int ladderName() const
ladder id (index in phi)
int ladderName() const
ladder id (index in phi)
MonitorElement * mePixDigis_px_
int moduleName() const
module id (index in z)
int layerName() const
layer id
MonitorElement * mePixDigisLad_px_
Shell shell() const
MonitorElement * mePixDigisLay_
int fill(const edm::DetSetVector< PixelDigi > &input, const bool modon, const bool ladon, const bool layon, const bool phion, const bool bladeon, const bool diskon, const bool ringon, const bool twoD, const bool reducedSet, const bool twoDimModOn, const bool twoDimOnlyLayDisk, int &nDigisA, int &nDigisB, bool isUpgrade)
Fill histograms.
std::string const & label() const
Definition: InputTag.h:42
MonitorElement * meNDigisPhi_
int pannelName() const
pannel id
MonitorElement * meZeroOccRocsDisk_
MonitorElement * mePixDigisRing_
MonitorElement * meADCPhi_
int diskName() const
disk id
iterator begin()
Return an iterator to the first DetSet.
Definition: DetSetVector.h:348
MonitorElement * mePixDigisPhi_
collection_type::const_iterator const_iterator
Definition: DetSet.h:33
int col
Definition: cuy.py:1008
collection_type::const_iterator const_iterator
Definition: DetSetVector.h:106
MonitorElement * meNDigisDisk_
int pannelName() const
pannel id
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
int layerName() const
layer id
MonitorElement * meNDigisLad_
MonitorElement * mePixDigisLay_px_