CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
SiPixelDigiSource.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // Package: SiPixelMonitorDigi
4 // Class: SiPixelDigiSource
5 //
13 //
14 // Original Author: Vincenzo Chiochia
15 // Created:
16 //
17 //
19 // Framework
23 // DQM Framework
26 // Geometry
31 // DataFormats
38 //
39 #include <string>
40 #include <stdlib.h>
41 #include <iostream>
42 #include <fstream>
43 
44 using namespace std;
45 using namespace edm;
46 
48  conf_(iConfig),
49  src_( conf_.getParameter<edm::InputTag>( "src" ) ),
50  saveFile( conf_.getUntrackedParameter<bool>("saveFile",false) ),
51  isPIB( conf_.getUntrackedParameter<bool>("isPIB",false) ),
52  slowDown( conf_.getUntrackedParameter<bool>("slowDown",false) ),
53  modOn( conf_.getUntrackedParameter<bool>("modOn",true) ),
54  twoDimOn( conf_.getUntrackedParameter<bool>("twoDimOn",true) ),
55  twoDimModOn( conf_.getUntrackedParameter<bool>("twoDimModOn",true) ),
56  twoDimOnlyLayDisk( conf_.getUntrackedParameter<bool>("twoDimOnlyLayDisk",false) ),
57  hiRes( conf_.getUntrackedParameter<bool>("hiRes",false) ),
58  reducedSet( conf_.getUntrackedParameter<bool>("reducedSet",false) ),
59  ladOn( conf_.getUntrackedParameter<bool>("ladOn",false) ),
60  layOn( conf_.getUntrackedParameter<bool>("layOn",false) ),
61  phiOn( conf_.getUntrackedParameter<bool>("phiOn",false) ),
62  ringOn( conf_.getUntrackedParameter<bool>("ringOn",false) ),
63  bladeOn( conf_.getUntrackedParameter<bool>("bladeOn",false) ),
64  diskOn( conf_.getUntrackedParameter<bool>("diskOn",false) ),
65  bigEventSize( conf_.getUntrackedParameter<int>("bigEventSize",1000) ),
66  isUpgrade( conf_.getUntrackedParameter<bool>("isUpgrade",false) ),
67  noOfLayers(0),
68  noOfDisks(0)
69 {
70  //set Token(-s)
71  srcToken_ = consumes<edm::DetSetVector<PixelDigi> >(conf_.getParameter<edm::InputTag>( "src" ));
72 
73  topFolderName_ = conf_.getParameter<std::string>("TopFolderName");
74 
75  firstRun = true;
76  // find a FED# for the current detId:
77  ifstream infile(edm::FileInPath("DQM/SiPixelMonitorClient/test/detId.dat").fullPath().c_str(),ios::in);
78  int nModsInFile=0;
79  assert(!infile.fail());
80  int nTOTmodules;
81  if (isUpgrade) { nTOTmodules=1856; } else { nTOTmodules=1440; }
82  while(!infile.eof()&&nModsInFile<nTOTmodules) {
83  infile >> I_name[nModsInFile] >> I_detId[nModsInFile] >> I_fedId[nModsInFile] >> I_linkId1[nModsInFile] >> I_linkId2[nModsInFile];
84  nModsInFile++;
85  }
86  infile.close();
87 
88  LogInfo ("PixelDQM") << "SiPixelDigiSource::SiPixelDigiSource: Got DQM BackEnd interface"<<endl;
89 }
90 
91 
93 {
94  // do anything here that needs to be done at desctruction time
95  // (e.g. close files, deallocate resources etc.)
96  LogInfo ("PixelDQM") << "SiPixelDigiSource::~SiPixelDigiSource: Destructor"<<endl;
97 }
98 
99 
101  LogInfo ("PixelDQM") << " SiPixelDigiSource::beginJob - Initialisation ... " << std::endl;
102  LogInfo ("PixelDQM") << "Mod/Lad/Lay/Phi " << modOn << "/" << ladOn << "/"
103  << layOn << "/" << phiOn << std::endl;
104  LogInfo ("PixelDQM") << "Blade/Disk/Ring" << bladeOn << "/" << diskOn << "/"
105  << ringOn << std::endl;
106 
107  LogInfo ("PixelDQM") << "2DIM IS " << twoDimOn << " and set to high resolution? " << hiRes << "\n";
108 
109  if(firstRun){
110  eventNo = 0;
111  lumSec = 0;
112  nLumiSecs = 0;
113  nBigEvents = 0;
114  nBPIXDigis = 0;
115  nFPIXDigis = 0;
116  for(int i=0; i!=40; i++) nDigisPerFed[i]=0;
117  for(int i=0; i!=4; i++) nDigisPerDisk[i]=0;
118  nDP1P1M1 = 0;
119  nDP1P1M2 = 0;
120  nDP1P1M3 = 0;
121  nDP1P1M4 = 0;
122  nDP1P2M1 = 0;
123  nDP1P2M2 = 0;
124  nDP1P2M3 = 0;
125  nDP2P1M1 = 0;
126  nDP2P1M2 = 0;
127  nDP2P1M3 = 0;
128  nDP2P1M4 = 0;
129  nDP2P2M1 = 0;
130  nDP2P2M2 = 0;
131  nDP2P2M3 = 0;
132  nDP3P1M1 = 0;
133  nDP3P2M1 = 0;
134  nDM1P1M1 = 0;
135  nDM1P1M2 = 0;
136  nDM1P1M3 = 0;
137  nDM1P1M4 = 0;
138  nDM1P2M1 = 0;
139  nDM1P2M2 = 0;
140  nDM1P2M3 = 0;
141  nDM2P1M1 = 0;
142  nDM2P1M2 = 0;
143  nDM2P1M3 = 0;
144  nDM2P1M4 = 0;
145  nDM2P2M1 = 0;
146  nDM2P2M2 = 0;
147  nDM2P2M3 = 0;
148  nDM3P1M1 = 0;
149  nDM3P2M1 = 0;
150  nL1M1 = 0;
151  nL1M2 = 0;
152  nL1M3 = 0;
153  nL1M4 = 0;
154  nL2M1 = 0;
155  nL2M2 = 0;
156  nL2M3 = 0;
157  nL2M4 = 0;
158  nL3M1 = 0;
159  nL3M2 = 0;
160  nL3M3 = 0;
161  nL3M4 = 0;
162  nL4M1 = 0;
163  nL4M2 = 0;
164  nL4M3 = 0;
165  nL4M4 = 0;
166 
167  // Build map
168  buildStructure(iSetup);
169  // Book Monitoring Elements
170  firstRun = false;
171  }
172 }
173 
175  bookMEs(iBooker, iSetup);
176 }
177 
178 //------------------------------------------------------------------
179 // Method called for every event
180 //------------------------------------------------------------------
182 {
183  edm::ESHandle<TrackerTopology> tTopoHandle;
184  iSetup.get<IdealGeometryRecord>().get(tTopoHandle);
185  const TrackerTopology *pTT = tTopoHandle.product();
186 
187  eventNo++;
188 
189  // get input data
191  iEvent.getByToken(srcToken_, input);
192  if (!input.isValid()) return;
193 
194 
195  int bx = iEvent.bunchCrossing();
196 
197  int lumiSection = (int)iEvent.luminosityBlock();
198  int nEventDigis = 0; int nActiveModules = 0;
199 
200  if(modOn){
201  if(averageDigiOccupancy && lumiSection%8==0){
203  nBPIXDigis = 0;
204  nFPIXDigis = 0;
205  for(int i=0; i!=40; i++) nDigisPerFed[i]=0;
206  }
207  }
208  if(!modOn){
209  if(averageDigiOccupancy && lumiSection%1==0){
211  nBPIXDigis = 0;
212  nFPIXDigis = 0;
213  for(int i=0; i!=40; i++) nDigisPerFed[i]=0;
214  }
215  }
216 
217  std::map<uint32_t,SiPixelDigiModule*>::iterator struct_iter;
218  for(int i=0; i!=192; i++) numberOfDigis[i]=0;
219  for(int i=0; i!=1152; i++) nDigisPerChan[i]=0;
220  for(int i=0; i!=4; i++) nDigisPerDisk[i]=0;
221  int NzeroROCs[2] = {0,-672};
222  int NloEffROCs[2] = {0,-672};
223  for (struct_iter = thePixelStructure.begin() ; struct_iter != thePixelStructure.end() ; struct_iter++) {
224  int numberOfDigisMod = (*struct_iter).second->fill(*input, iSetup,
226  modOn, ladOn, layOn, phiOn,
227  bladeOn, diskOn, ringOn,
230  if (modOn && twoDimOnlyLayDisk && lumiSection%10 == 0) (*struct_iter).second->resetRocMap();
231 
232  bool barrel = DetId((*struct_iter).first).subdetId() == static_cast<int>(PixelSubdetector::PixelBarrel);
233  bool endcap = DetId((*struct_iter).first).subdetId() == static_cast<int>(PixelSubdetector::PixelEndcap);
234  if(numberOfDigisMod>0){
235  nEventDigis = nEventDigis + numberOfDigisMod;
236  nActiveModules++;
237  int nBPiXmodules;
238  int nTOTmodules;
239  if (isUpgrade) {
240  nBPiXmodules=1184;
241  nTOTmodules=1856;
242  } else {
243  nBPiXmodules=768;
244  nTOTmodules=1440;
245  }
246  if(barrel){ // Barrel
247  nBPIXDigis = nBPIXDigis + numberOfDigisMod;
248  for(int i=0; i!=nBPiXmodules; ++i){
249  if((*struct_iter).first == I_detId[i]){
250  nDigisPerFed[I_fedId[i]]=nDigisPerFed[I_fedId[i]]+numberOfDigisMod;
251  int index1 = 0; int index2 = 0;
252  if(I_linkId1[i]>0) index1 = I_fedId[i]*36+(I_linkId1[i]-1);
253  if(I_linkId2[i]>0) index2 = I_fedId[i]*36+(I_linkId2[i]-1);
254  if(nDigisA>0 && I_linkId1[i]>0) nDigisPerChan[index1]=nDigisPerChan[index1]+nDigisA;
255  if(nDigisB>0 && I_linkId2[i]>0) nDigisPerChan[index2]=nDigisPerChan[index2]+nDigisB;
256  i=(nBPiXmodules-1);
257  }
258  }
259  }else if(endcap && !isUpgrade){ // Endcap
260  nFPIXDigis = nFPIXDigis + numberOfDigisMod;
261  PixelEndcapName::HalfCylinder side = PixelEndcapName(DetId((*struct_iter).first),pTT,isUpgrade).halfCylinder();
262  int disk = PixelEndcapName(DetId((*struct_iter).first),pTT,isUpgrade).diskName();
263  int blade = PixelEndcapName(DetId((*struct_iter).first),pTT,isUpgrade).bladeName();
264  int panel = PixelEndcapName(DetId((*struct_iter).first),pTT,isUpgrade).pannelName();
265  int module = PixelEndcapName(DetId((*struct_iter).first),pTT,isUpgrade).plaquetteName();
266  int iter=0; int i=0;
267  if(side==PixelEndcapName::mI){
268  if(disk==1){
269  i=0;
270  if(panel==1){ if(module==1) nDM1P1M1+=numberOfDigisMod;
271  else if(module==2) nDM1P1M2+=numberOfDigisMod;
272  else if(module==3) nDM1P1M3+=numberOfDigisMod;
273  else if(module==4) nDM1P1M4+=numberOfDigisMod;}
274  else if(panel==2){ if(module==1) nDM1P2M1+=numberOfDigisMod;
275  else if(module==2) nDM1P2M2+=numberOfDigisMod;
276  else if(module==3) nDM1P2M3+=numberOfDigisMod; }
277  if(blade<13 && blade>0 && (panel==1 || panel==2)) iter = i+2*(blade-1)+(panel-1);
278  }else if(disk==2){
279  i=24;
280  if(panel==1){ if(module==1) nDM2P1M1+=numberOfDigisMod;
281  else if(module==2) nDM2P1M2+=numberOfDigisMod;
282  else if(module==3) nDM2P1M3+=numberOfDigisMod;
283  else if(module==4) nDM2P1M4+=numberOfDigisMod;}
284  else if(panel==2){ if(module==1) nDM2P2M1+=numberOfDigisMod;
285  else if(module==2) nDM2P2M2+=numberOfDigisMod;
286  else if(module==3) nDM2P2M3+=numberOfDigisMod; }
287  if(blade<13 && blade>0 && (panel==1 || panel==2)) iter = i+2*(blade-1)+(panel-1);
288  }
289  }else if(side==PixelEndcapName::mO){
290  if(disk==1){
291  i=48;
292  if(panel==1){ if(module==1) nDM1P1M1+=numberOfDigisMod;
293  else if(module==2) nDM1P1M2+=numberOfDigisMod;
294  else if(module==3) nDM1P1M3+=numberOfDigisMod;
295  else if(module==4) nDM1P1M4+=numberOfDigisMod;}
296  else if(panel==2){ if(module==1) nDM1P2M1+=numberOfDigisMod;
297  else if(module==2) nDM1P2M2+=numberOfDigisMod;
298  else if(module==3) nDM1P2M3+=numberOfDigisMod; }
299  if(blade<13 && blade>0 && (panel==1 || panel==2)) iter = i+2*(blade-1)+(panel-1);
300  }else if(disk==2){
301  i=72;
302  if(panel==1){ if(module==1) nDM2P1M1+=numberOfDigisMod;
303  else if(module==2) nDM2P1M2+=numberOfDigisMod;
304  else if(module==3) nDM2P1M3+=numberOfDigisMod;
305  else if(module==4) nDM2P1M4+=numberOfDigisMod;}
306  else if(panel==2){ if(module==1) nDM2P2M1+=numberOfDigisMod;
307  else if(module==2) nDM2P2M2+=numberOfDigisMod;
308  else if(module==3) nDM2P2M3+=numberOfDigisMod; }
309  if(blade<13 && blade>0 && (panel==1 || panel==2)) iter = i+2*(blade-1)+(panel-1);
310  }
311  }else if(side==PixelEndcapName::pI){
312  if(disk==1){
313  i=96;
314  if(panel==1){ if(module==1) nDP1P1M1+=numberOfDigisMod;
315  else if(module==2) nDP1P1M2+=numberOfDigisMod;
316  else if(module==3) nDP1P1M3+=numberOfDigisMod;
317  else if(module==4) nDP1P1M4+=numberOfDigisMod;}
318  else if(panel==2){ if(module==1) nDP1P2M1+=numberOfDigisMod;
319  else if(module==2) nDP1P2M2+=numberOfDigisMod;
320  else if(module==3) nDP1P2M3+=numberOfDigisMod; }
321  if(blade<13 && blade>0 && (panel==1 || panel==2)) iter = i+2*(blade-1)+(panel-1);
322  }else if(disk==2){
323  i=120;
324  if(panel==1){ if(module==1) nDP2P1M1+=numberOfDigisMod;
325  else if(module==2) nDP2P1M2+=numberOfDigisMod;
326  else if(module==3) nDP2P1M3+=numberOfDigisMod;
327  else if(module==4) nDP2P1M4+=numberOfDigisMod;}
328  else if(panel==2){ if(module==1) nDP2P2M1+=numberOfDigisMod;
329  else if(module==2) nDP2P2M2+=numberOfDigisMod;
330  else if(module==3) nDP2P2M3+=numberOfDigisMod; }
331  if(blade<13 && blade>0 && (panel==1 || panel==2)) iter = i+2*(blade-1)+(panel-1);
332  }
333  }else if(side==PixelEndcapName::pO){
334  if(disk==1){
335  i=144;
336  if(panel==1){ if(module==1) nDP1P1M1+=numberOfDigisMod;
337  else if(module==2) nDP1P1M2+=numberOfDigisMod;
338  else if(module==3) nDP1P1M3+=numberOfDigisMod;
339  else if(module==4) nDP1P1M4+=numberOfDigisMod;}
340  else if(panel==2){ if(module==1) nDP1P2M1+=numberOfDigisMod;
341  else if(module==2) nDP1P2M2+=numberOfDigisMod;
342  else if(module==3) nDP1P2M3+=numberOfDigisMod; }
343  if(blade<13 && blade>0 && (panel==1 || panel==2)) iter = i+2*(blade-1)+(panel-1);
344  }else if(disk==2){
345  i=168;
346  if(panel==1){ if(module==1) nDP2P1M1+=numberOfDigisMod;
347  else if(module==2) nDP2P1M2+=numberOfDigisMod;
348  else if(module==3) nDP2P1M3+=numberOfDigisMod;
349  else if(module==4) nDP2P1M4+=numberOfDigisMod;}
350  else if(panel==2){ if(module==1) nDP2P2M1+=numberOfDigisMod;
351  else if(module==2) nDP2P2M2+=numberOfDigisMod;
352  else if(module==3) nDP2P2M3+=numberOfDigisMod; }
353  if(blade<13 && blade>0 && (panel==1 || panel==2)) iter = i+2*(blade-1)+(panel-1);
354  }
355  }
356  numberOfDigis[iter]=numberOfDigis[iter]+numberOfDigisMod;
357 
358  for(int i=nBPiXmodules; i!=nTOTmodules; i++){
359  if((*struct_iter).first == I_detId[i]){
360  nDigisPerFed[I_fedId[i]]=nDigisPerFed[I_fedId[i]]+numberOfDigisMod;
361  i=nTOTmodules-1;
362  }
363  }
364  } //endif Barrel/(Endcap && !isUpgrade)
365  else if (endcap && isUpgrade) {
366  nFPIXDigis = nFPIXDigis + numberOfDigisMod;
367  PixelEndcapName::HalfCylinder side = PixelEndcapName(DetId((*struct_iter).first),pTT,isUpgrade).halfCylinder();
368  int disk = PixelEndcapName(DetId((*struct_iter).first),pTT,isUpgrade).diskName();
369  int blade = PixelEndcapName(DetId((*struct_iter).first),pTT,isUpgrade).bladeName();
370  int panel = PixelEndcapName(DetId((*struct_iter).first),pTT,isUpgrade).pannelName();
371  int module = PixelEndcapName(DetId((*struct_iter).first),pTT,isUpgrade).plaquetteName();
372 
373  int iter=0; int i=0;
374  if(side==PixelEndcapName::mI){
375  if(disk==1){
376  i=0;
377  if(panel==1){ if(module==1) nDM1P1M1+=numberOfDigisMod; }
378  else if(panel==2){ if(module==1) nDM1P2M1+=numberOfDigisMod; }
379  if(blade<12 && blade>0 && (panel==1 || panel==2)) iter = i+2*(blade-1)+(panel-1);
380  }else if(disk==2){
381  i=22;
382  if(panel==1){ if(module==1) nDM2P1M1+=numberOfDigisMod; }
383  else if(panel==2){ if(module==1) nDM2P2M1+=numberOfDigisMod; }
384  if(blade<12 && blade>0 && (panel==1 || panel==2)) iter = i+2*(blade-1)+(panel-1);
385  }else if(disk==3){
386  i=44;
387  if(panel==1){ if(module==1) nDM3P1M1+=numberOfDigisMod; }
388  else if(panel==2){ if(module==1) nDM3P2M1+=numberOfDigisMod; }
389  if(blade<12 && blade>0 && (panel==1 || panel==2)) iter = i+2*(blade-1)+(panel-1);
390  }
391  }else if(side==PixelEndcapName::mO){
392  if(disk==1){
393  i=66;
394  if(panel==1){ if(module==1) nDM1P1M1+=numberOfDigisMod; }
395  else if(panel==2){ if(module==1) nDM1P2M1+=numberOfDigisMod; }
396  if(blade<18 && blade>0 && (panel==1 || panel==2)) iter = i+2*(blade-1)+(panel-1);
397  }else if(disk==2){
398  i=100;
399  if(panel==1){ if(module==1) nDM2P1M1+=numberOfDigisMod; }
400  else if(panel==2){ if(module==1) nDM2P2M1+=numberOfDigisMod; }
401  if(blade<18 && blade>0 && (panel==1 || panel==2)) iter = i+2*(blade-1)+(panel-1);
402  }else if (disk==3){
403  i=134;
404  if(panel==1){ if(module==1) nDM3P1M1+=numberOfDigisMod; }
405  else if(panel==2){ if(module==1) nDM3P2M1+=numberOfDigisMod; }
406  if(blade<18 && blade>0 && (panel==1 || panel==2)) iter = i+2*(blade-1)+(panel-1);
407  }
408  }else if(side==PixelEndcapName::pI){
409  if(disk==1){
410  i=168;
411  if(panel==1){ if(module==1) nDP1P1M1+=numberOfDigisMod; }
412  else if(panel==2){ if(module==1) nDP1P2M1+=numberOfDigisMod; }
413  if(blade<12 && blade>0 && (panel==1 || panel==2)) iter = i+2*(blade-1)+(panel-1);
414  }else if(disk==2){
415  i=190;
416  if(panel==1){ if(module==1) nDP2P1M1+=numberOfDigisMod; }
417  else if(panel==2){ if(module==1) nDP2P2M1+=numberOfDigisMod; }
418  if(blade<12 && blade>0 && (panel==1 || panel==2)) iter = i+2*(blade-1)+(panel-1);
419  }else if(disk==3){
420  i=212;
421  if(panel==1){ if(module==1) nDP3P1M1+=numberOfDigisMod; }
422  else if(panel==2){ if(module==1) nDP3P2M1+=numberOfDigisMod; }
423  if(blade<12 && blade>0 && (panel==1 || panel==2)) iter = i+2*(blade-1)+(panel-1);
424  }
425  }else if(side==PixelEndcapName::pO){
426  if(disk==1){
427  i=234;
428  if(panel==1){ if(module==1) nDP1P1M1+=numberOfDigisMod; }
429  else if(panel==2){ if(module==1) nDP1P2M1+=numberOfDigisMod; }
430  if(blade<18 && blade>0 && (panel==1 || panel==2)) iter = i+2*(blade-1)+(panel-1);
431  }else if(disk==2){
432  i=268;
433  if(panel==1){ if(module==1) nDP2P1M1+=numberOfDigisMod; }
434  else if(panel==2){ if(module==1) nDP2P2M1+=numberOfDigisMod; }
435  if(blade<18 && blade>0 && (panel==1 || panel==2)) iter = i+2*(blade-1)+(panel-1);
436  }else if(disk==3){
437  i=302;
438  if(panel==1){ if(module==1) nDP3P1M1+=numberOfDigisMod; }
439  else if(panel==2){ if(module==1) nDP3P2M1+=numberOfDigisMod; }
440  if(blade<18 && blade>0 && (panel==1 || panel==2)) iter = i+2*(blade-1)+(panel-1);
441  }
442  }
443  numberOfDigis[iter]=numberOfDigis[iter]+numberOfDigisMod;
444  for(int i=nBPiXmodules; i!=nTOTmodules; i++){
445  if((*struct_iter).first == I_detId[i]){
446  nDigisPerFed[I_fedId[i]]=nDigisPerFed[I_fedId[i]]+numberOfDigisMod;
447  i=nTOTmodules-1;
448  }
449  }
450  }//endif(Endcap && isUpgrade)
451  } // endif any digis in this module
452  if (twoDimOnlyLayDisk && lumiSection%10 > 2){
453  std::pair<int,int> tempPair = (*struct_iter).second->getZeroLoEffROCs();
454  if (barrel){
455  NzeroROCs[0] += tempPair.first;
456  NloEffROCs[0] += tempPair.second;
457  }
458  else if (endcap){
459  NzeroROCs[1] += tempPair.first;
460  NloEffROCs[1] += tempPair.second;
461  }
462  }
463  } // endfor loop over all modules
464 
465  if (lumiSection%10> 2){
466  for (int i =0; i < 2; ++i) NloEffROCs[i] = NloEffROCs[i] - NzeroROCs[i];
467  if(noOccROCsBarrel) noOccROCsBarrel->setBinContent(1+lumiSection/10, NzeroROCs[0]);
468  if(loOccROCsBarrel) loOccROCsBarrel->setBinContent(1+lumiSection/10, NloEffROCs[0]);
469  if(noOccROCsEndcap) noOccROCsEndcap->setBinContent(1+lumiSection/10, NzeroROCs[1]);
470  if(loOccROCsEndcap) loOccROCsEndcap->setBinContent(1+lumiSection/10, NloEffROCs[1]);
471  }
472 
473  if (noOfDisks == 2) { // if (!isUpgrade)
474  if(meNDigisCHANEndcap_){ for(int j=0; j!=192; j++) if(numberOfDigis[j]>0) meNDigisCHANEndcap_->Fill((float)numberOfDigis[j]);}
475  if(meNDigisCHANEndcapDms_.at(0)){ for(int j=0; j!=72; j++) if((j<24||j>47)&&numberOfDigis[j]>0) meNDigisCHANEndcapDms_.at(0)->Fill((float)numberOfDigis[j]);}
476  if(meNDigisCHANEndcapDms_.at(1)){ for(int j=24; j!=96; j++) if((j<48||j>71)&&numberOfDigis[j]>0) meNDigisCHANEndcapDms_.at(1)->Fill((float)numberOfDigis[j]);}
477  if(meNDigisCHANEndcapDps_.at(0)){ for(int j=96; j!=168; j++) if((j<120||j>143)&&numberOfDigis[j]>0) meNDigisCHANEndcapDps_.at(0)->Fill((float)numberOfDigis[j]);}
478  if(meNDigisCHANEndcapDps_.at(1)){ for(int j=120; j!=192; j++) if((j<144||j>167)&&numberOfDigis[j]>0) meNDigisCHANEndcapDps_.at(1)->Fill((float)numberOfDigis[j]);}
479  }
480  else if (noOfDisks == 3) { // else if (isUpgrade)
481  if(meNDigisCHANEndcap_){ for(int j=0; j!=336; j++) if(numberOfDigis[j]>0) meNDigisCHANEndcap_->Fill((float)numberOfDigis[j]);}
482  if(meNDigisCHANEndcapDms_.at(0)){ for(int j=0; j!=100; j++) if((j<22||j>65)&&numberOfDigis[j]>0) meNDigisCHANEndcapDms_.at(0)->Fill((float)numberOfDigis[j]);}
483  if(meNDigisCHANEndcapDms_.at(1)){ for(int j=22; j!=134; j++) if((j<44||j>99)&&numberOfDigis[j]>0) meNDigisCHANEndcapDms_.at(1)->Fill((float)numberOfDigis[j]);}
484  if(meNDigisCHANEndcapDms_.at(2)){ for(int j=44; j!=168; j++) if((j<66||j>133)&&numberOfDigis[j]>0) meNDigisCHANEndcapDms_.at(2)->Fill((float)numberOfDigis[j]);}
485  if(meNDigisCHANEndcapDps_.at(0)){ for(int j=168; j!=268; j++) if((j<190||j>233)&&numberOfDigis[j]>0) meNDigisCHANEndcapDps_.at(0)->Fill((float)numberOfDigis[j]);}
486  if(meNDigisCHANEndcapDps_.at(1)){ for(int j=190; j!=302; j++) if((j<212||j>267)&&numberOfDigis[j]>0) meNDigisCHANEndcapDps_.at(1)->Fill((float)numberOfDigis[j]);}
487  if(meNDigisCHANEndcapDps_.at(2)){ for(int j=212; j!=336; j++) if((j<234||j>301)&&numberOfDigis[j]>0) meNDigisCHANEndcapDps_.at(2)->Fill((float)numberOfDigis[j]);}
488  }
489 
490  if(meNDigisCHANBarrelCh1_){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+0]>0) meNDigisCHANBarrelCh1_->Fill((float)nDigisPerChan[i*36+0]);}
491  if(meNDigisCHANBarrelCh2_){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+1]>0) meNDigisCHANBarrelCh2_->Fill((float)nDigisPerChan[i*36+1]);}
492  if(meNDigisCHANBarrelCh3_){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+2]>0) meNDigisCHANBarrelCh3_->Fill((float)nDigisPerChan[i*36+2]);}
493  if(meNDigisCHANBarrelCh4_){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+3]>0) meNDigisCHANBarrelCh4_->Fill((float)nDigisPerChan[i*36+3]);}
494  if(meNDigisCHANBarrelCh5_){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+4]>0) meNDigisCHANBarrelCh5_->Fill((float)nDigisPerChan[i*36+4]);}
495  if(meNDigisCHANBarrelCh6_){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+5]>0) meNDigisCHANBarrelCh6_->Fill((float)nDigisPerChan[i*36+5]);}
496  if(meNDigisCHANBarrelCh7_){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+6]>0) meNDigisCHANBarrelCh7_->Fill((float)nDigisPerChan[i*36+6]);}
497  if(meNDigisCHANBarrelCh8_){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+7]>0) meNDigisCHANBarrelCh8_->Fill((float)nDigisPerChan[i*36+7]);}
498  if(meNDigisCHANBarrelCh9_){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+8]>0) meNDigisCHANBarrelCh9_->Fill((float)nDigisPerChan[i*36+8]);}
499  if(meNDigisCHANBarrelCh10_){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+9]>0) meNDigisCHANBarrelCh10_->Fill((float)nDigisPerChan[i*36+9]);}
500  if(meNDigisCHANBarrelCh11_){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+10]>0) meNDigisCHANBarrelCh11_->Fill((float)nDigisPerChan[i*36+10]);}
501  if(meNDigisCHANBarrelCh12_){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+11]>0) meNDigisCHANBarrelCh12_->Fill((float)nDigisPerChan[i*36+11]);}
502  if(meNDigisCHANBarrelCh13_){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+12]>0) meNDigisCHANBarrelCh13_->Fill((float)nDigisPerChan[i*36+12]);}
503  if(meNDigisCHANBarrelCh14_){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+13]>0) meNDigisCHANBarrelCh14_->Fill((float)nDigisPerChan[i*36+13]);}
504  if(meNDigisCHANBarrelCh15_){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+14]>0) meNDigisCHANBarrelCh15_->Fill((float)nDigisPerChan[i*36+14]);}
505  if(meNDigisCHANBarrelCh16_){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+15]>0) meNDigisCHANBarrelCh16_->Fill((float)nDigisPerChan[i*36+15]);}
506  if(meNDigisCHANBarrelCh17_){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+16]>0) meNDigisCHANBarrelCh17_->Fill((float)nDigisPerChan[i*36+16]);}
507  if(meNDigisCHANBarrelCh18_){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+17]>0) meNDigisCHANBarrelCh18_->Fill((float)nDigisPerChan[i*36+17]);}
508  if(meNDigisCHANBarrelCh19_){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+18]>0) meNDigisCHANBarrelCh19_->Fill((float)nDigisPerChan[i*36+18]);}
509  if(meNDigisCHANBarrelCh20_){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+19]>0) meNDigisCHANBarrelCh20_->Fill((float)nDigisPerChan[i*36+19]);}
510  if(meNDigisCHANBarrelCh21_){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+20]>0) meNDigisCHANBarrelCh21_->Fill((float)nDigisPerChan[i*36+20]);}
511  if(meNDigisCHANBarrelCh22_){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+21]>0) meNDigisCHANBarrelCh22_->Fill((float)nDigisPerChan[i*36+21]);}
512  if(meNDigisCHANBarrelCh23_){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+22]>0) meNDigisCHANBarrelCh23_->Fill((float)nDigisPerChan[i*36+22]);}
513  if(meNDigisCHANBarrelCh24_){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+23]>0) meNDigisCHANBarrelCh24_->Fill((float)nDigisPerChan[i*36+23]);}
514  if(meNDigisCHANBarrelCh25_){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+24]>0) meNDigisCHANBarrelCh25_->Fill((float)nDigisPerChan[i*36+24]);}
515  if(meNDigisCHANBarrelCh26_){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+25]>0) meNDigisCHANBarrelCh26_->Fill((float)nDigisPerChan[i*36+25]);}
516  if(meNDigisCHANBarrelCh27_){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+26]>0) meNDigisCHANBarrelCh27_->Fill((float)nDigisPerChan[i*36+26]);}
517  if(meNDigisCHANBarrelCh28_){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+27]>0) meNDigisCHANBarrelCh28_->Fill((float)nDigisPerChan[i*36+27]);}
518  if(meNDigisCHANBarrelCh29_){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+28]>0) meNDigisCHANBarrelCh29_->Fill((float)nDigisPerChan[i*36+28]);}
519  if(meNDigisCHANBarrelCh30_){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+29]>0) meNDigisCHANBarrelCh30_->Fill((float)nDigisPerChan[i*36+29]);}
520  if(meNDigisCHANBarrelCh31_){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+30]>0) meNDigisCHANBarrelCh31_->Fill((float)nDigisPerChan[i*36+30]);}
521  if(meNDigisCHANBarrelCh32_){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+31]>0) meNDigisCHANBarrelCh32_->Fill((float)nDigisPerChan[i*36+31]);}
522  if(meNDigisCHANBarrelCh33_){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+32]>0) meNDigisCHANBarrelCh33_->Fill((float)nDigisPerChan[i*36+32]);}
523  if(meNDigisCHANBarrelCh34_){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+33]>0) meNDigisCHANBarrelCh34_->Fill((float)nDigisPerChan[i*36+33]);}
524  if(meNDigisCHANBarrelCh35_){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+34]>0) meNDigisCHANBarrelCh35_->Fill((float)nDigisPerChan[i*36+34]);}
525  if(meNDigisCHANBarrelCh36_){ for(int i=0; i!=32; i++) if(nDigisPerChan[i*36+35]>0) meNDigisCHANBarrelCh36_->Fill((float)nDigisPerChan[i*36+35]);}
526 
527  // Rate of events with >N digis:
528  if(nEventDigis>bigEventSize){
529  if(bigEventRate) bigEventRate->Fill(lumiSection,1./23.);
530  }
531 
532  // Rate of pixel events and total number of pixel events per BX:
533  if(nActiveModules>=4){
534  if(pixEvtsPerBX) pixEvtsPerBX->Fill(float(bx));
535  if(pixEventRate) pixEventRate->Fill(lumiSection, 1./23.);
536  }
537 
538  // Actual digi occupancy in a FED compared to average digi occupancy per FED
540  int maxfed=0;
541  for(int i=0; i!=32; i++){
542  if(nDigisPerFed[i]>maxfed) maxfed=nDigisPerFed[i];
543  }
544  for(int i=0; i!=40; i++){
545  float averageOcc = 0.;
546  if(i<32){
547  float averageBPIXFed = float(nBPIXDigis-maxfed)/31.;
548  if(averageBPIXFed>0.) averageOcc = nDigisPerFed[i]/averageBPIXFed;
549  }else{
550  float averageFPIXFed = float(nFPIXDigis)/8.;
551  if(averageFPIXFed>0.) averageOcc = nDigisPerFed[i]/averageFPIXFed;
552  }
553  averageDigiOccupancy->setBinContent(i+1,averageOcc);
554  int lumiSections8 = int(lumiSection/8);
555  if (modOn){
556  if (avgfedDigiOccvsLumi){
557  avgfedDigiOccvsLumi->setBinContent(1+lumiSections8, i+1, averageOcc);
558  }//endif meX5
559  }//endif modOn
560  }
561  }
562 
563  // slow down...
564  if(slowDown) usleep(10000);
565 
566 }
567 
568 //------------------------------------------------------------------
569 // Build data structure
570 //------------------------------------------------------------------
572 
573  edm::ESHandle<TrackerTopology> tTopoHandle;
574  iSetup.get<IdealGeometryRecord>().get(tTopoHandle);
575  const TrackerTopology *pTT = tTopoHandle.product();
576 
577  LogInfo ("PixelDQM") <<" SiPixelDigiSource::buildStructure" ;
579  iSetup.get<TrackerDigiGeometryRecord>().get( pDD );
580 
581  LogVerbatim ("PixelDQM") << " *** Geometry node for TrackerGeom is "<<&(*pDD)<<std::endl;
582  LogVerbatim ("PixelDQM") << " *** I have " << pDD->dets().size() <<" detectors"<<std::endl;
583  LogVerbatim ("PixelDQM") << " *** I have " << pDD->detTypes().size() <<" types"<<std::endl;
584 
585  for(TrackerGeometry::DetContainer::const_iterator it = pDD->dets().begin(); it != pDD->dets().end(); it++){
586 
587  if(dynamic_cast<PixelGeomDetUnit const *>((*it))!=0){
588 
589  DetId detId = (*it)->geographicalId();
590  const GeomDetUnit * geoUnit = pDD->idToDetUnit( detId );
591  const PixelGeomDetUnit * pixDet = dynamic_cast<const PixelGeomDetUnit*>(geoUnit);
592  int nrows = (pixDet->specificTopology()).nrows();
593  int ncols = (pixDet->specificTopology()).ncolumns();
594 
595  if(detId.subdetId() == static_cast<int>(PixelSubdetector::PixelBarrel)) {
596  if(isPIB) continue;
597  LogDebug ("PixelDQM") << " ---> Adding Barrel Module " << detId.rawId() << endl;
598  uint32_t id = detId();
599  int layer = PixelBarrelName(DetId(id),pTT,isUpgrade).layerName();
600  if (layer > noOfLayers) noOfLayers = layer;
601  SiPixelDigiModule* theModule = new SiPixelDigiModule(id, ncols, nrows);
602  thePixelStructure.insert(pair<uint32_t,SiPixelDigiModule*> (id,theModule));
603 
604  } else if((detId.subdetId() == static_cast<int>(PixelSubdetector::PixelEndcap)) && (!isUpgrade)) {
605  LogDebug ("PixelDQM") << " ---> Adding Endcap Module " << detId.rawId() << endl;
606  uint32_t id = detId();
607  SiPixelDigiModule* theModule = new SiPixelDigiModule(id, ncols, nrows);
608 
610  int disk = PixelEndcapName(DetId(id),pTT,isUpgrade).diskName();
611  if (disk > noOfDisks) noOfDisks = disk;
612  int blade = PixelEndcapName(DetId(id),pTT,isUpgrade).bladeName();
613  int panel = PixelEndcapName(DetId(id),pTT,isUpgrade).pannelName();
615 
616  char sside[80]; sprintf(sside, "HalfCylinder_%i",side);
617  char sdisk[80]; sprintf(sdisk, "Disk_%i",disk);
618  char sblade[80]; sprintf(sblade, "Blade_%02i",blade);
619  char spanel[80]; sprintf(spanel, "Panel_%i",panel);
620  char smodule[80];sprintf(smodule,"Module_%i",module);
621  std::string side_str = sside;
622  std::string disk_str = sdisk;
623  bool mask = side_str.find("HalfCylinder_1")!=string::npos||
624  side_str.find("HalfCylinder_2")!=string::npos||
625  side_str.find("HalfCylinder_4")!=string::npos||
626  disk_str.find("Disk_2")!=string::npos;
627  // clutch to take all of FPIX, but no BPIX:
628  mask = false;
629  if(isPIB && mask) continue;
630 
631  thePixelStructure.insert(pair<uint32_t,SiPixelDigiModule*> (id,theModule));
632  } else if( (detId.subdetId() == static_cast<int>(PixelSubdetector::PixelEndcap)) && (isUpgrade)) {
633  LogDebug ("PixelDQM") << " ---> Adding Endcap Module " << detId.rawId() << endl;
634  uint32_t id = detId();
635  SiPixelDigiModule* theModule = new SiPixelDigiModule(id, ncols, nrows);
636 
638  int disk = PixelEndcapName(DetId(id),pTT,isUpgrade).diskName();
639  if (disk > noOfDisks) noOfDisks = disk;
640  int blade = PixelEndcapName(DetId(id),pTT,isUpgrade).bladeName();
641  int panel = PixelEndcapName(DetId(id),pTT,isUpgrade).pannelName();
643 
644  char sside[80]; sprintf(sside, "HalfCylinder_%i",side);
645  char sdisk[80]; sprintf(sdisk, "Disk_%i",disk);
646  char sblade[80]; sprintf(sblade, "Blade_%02i",blade);
647  char spanel[80]; sprintf(spanel, "Panel_%i",panel);
648  char smodule[80];sprintf(smodule,"Module_%i",module);
649  std::string side_str = sside;
650  std::string disk_str = sdisk;
651  bool mask = side_str.find("HalfCylinder_1")!=string::npos||
652  side_str.find("HalfCylinder_2")!=string::npos||
653  side_str.find("HalfCylinder_4")!=string::npos||
654  disk_str.find("Disk_2")!=string::npos;
655  // clutch to take all of FPIX, but no BPIX:
656  mask = false;
657  if(isPIB && mask) continue;
658 
659  thePixelStructure.insert(pair<uint32_t,SiPixelDigiModule*> (id,theModule));
660  }//end_elseif(isUpgrade)
661 
662  }
663  }
664  LogInfo ("PixelDQM") << " *** Pixel Structure Size " << thePixelStructure.size() << endl;
665 }
666 //------------------------------------------------------------------
667 // Book MEs
668 //------------------------------------------------------------------
670 
671  // Get DQM interface
673  char title[80]; sprintf(title, "Rate of events with >%i digis;LumiSection;Rate [Hz]",bigEventSize);
674  bigEventRate = iBooker.book1D("bigEventRate",title,5000,0.,5000.);
675  char title1[80]; sprintf(title1, "Pixel events vs. BX;BX;# events");
676  pixEvtsPerBX = iBooker.book1D("pixEvtsPerBX",title1,3565,0.,3565.);
677  char title2[80]; sprintf(title2, "Rate of Pixel events;LumiSection;Rate [Hz]");
678  pixEventRate = iBooker.book1D("pixEventRate",title2,5000,0.,5000.);
679  char title3[80]; sprintf(title3, "Number of Zero-Occupancy Barrel ROCs;LumiSection;N_{ZERO-OCCUPANCY} Barrel ROCs");
680  noOccROCsBarrel = iBooker.book1D("noOccROCsBarrel",title3,500,0.,5000.);
681  char title4[80]; sprintf(title4, "Number of Low-Efficiency Barrel ROCs;LumiSection;N_{LO EFF} Barrel ROCs");
682  loOccROCsBarrel = iBooker.book1D("loOccROCsBarrel",title4,500,0.,5000.);
683  char title5[80]; sprintf(title5, "Number of Zero-Occupancy Endcap ROCs;LumiSection;N_{ZERO-OCCUPANCY} Endcap ROCs");
684  noOccROCsEndcap = iBooker.book1D("noOccROCsEndcap",title5,500,0.,5000.);
685  char title6[80]; sprintf(title6, "Number of Low-Efficiency Endcap ROCs;LumiSection;N_{LO EFF} Endcap ROCs");
686  loOccROCsEndcap = iBooker.book1D("loOccROCsEndcap",title6,500,0.,5000.);
687  char title7[80]; sprintf(title7, "Average digi occupancy per FED;FED;NDigis/<NDigis>");
688  averageDigiOccupancy = iBooker.book1D("averageDigiOccupancy",title7,40,-0.5,39.5);
690  if(modOn){
691  char title4[80]; sprintf(title4, "FED Digi Occupancy (NDigis/<NDigis>) vs LumiSections;Lumi Section;FED");
692  avgfedDigiOccvsLumi = iBooker.book2D ("avgfedDigiOccvsLumi", title4, 400,0., 3200., 40, -0.5, 39.5);
693  }
694  std::map<uint32_t,SiPixelDigiModule*>::iterator struct_iter;
695 
696  SiPixelFolderOrganizer theSiPixelFolder(false);
697 
698  for(struct_iter = thePixelStructure.begin(); struct_iter != thePixelStructure.end(); struct_iter++){
700  if(modOn){
701  if(theSiPixelFolder.setModuleFolder(iBooker,(*struct_iter).first,0,isUpgrade)){
702  (*struct_iter).second->book( conf_,iSetup,iBooker,0,twoDimOn,hiRes, reducedSet, twoDimModOn, isUpgrade);
703  } else {
704 
705  if(!isPIB) throw cms::Exception("LogicError")
706  << "[SiPixelDigiSource::bookMEs] Creation of DQM folder failed";
707  }
708  }
709  if(ladOn){
710  if(theSiPixelFolder.setModuleFolder(iBooker,(*struct_iter).first,1,isUpgrade)){
711  (*struct_iter).second->book( conf_,iSetup,iBooker,1,twoDimOn,hiRes, reducedSet, isUpgrade);
712  } else {
713  LogDebug ("PixelDQM") << "PROBLEM WITH LADDER-FOLDER\n";
714  }
715 
716  }
717  if(layOn || twoDimOnlyLayDisk){
718  if(theSiPixelFolder.setModuleFolder(iBooker,(*struct_iter).first,2,isUpgrade)){
719  (*struct_iter).second->book( conf_,iSetup,iBooker,2,twoDimOn,hiRes, reducedSet, twoDimOnlyLayDisk, isUpgrade);
720  } else {
721  LogDebug ("PixelDQM") << "PROBLEM WITH LAYER-FOLDER\n";
722  }
723  }
724 
725  if(phiOn){
726  if(theSiPixelFolder.setModuleFolder(iBooker,(*struct_iter).first,3,isUpgrade)){
727  (*struct_iter).second->book( conf_,iSetup,iBooker,3,twoDimOn,hiRes, reducedSet, isUpgrade);
728  } else {
729  LogDebug ("PixelDQM") << "PROBLEM WITH PHI-FOLDER\n";
730  }
731  }
732  if(bladeOn){
733  if(theSiPixelFolder.setModuleFolder(iBooker,(*struct_iter).first,4,isUpgrade)){
734  (*struct_iter).second->book( conf_,iSetup,iBooker,4,twoDimOn,hiRes, reducedSet, isUpgrade);
735  } else {
736  LogDebug ("PixelDQM") << "PROBLEM WITH BLADE-FOLDER\n";
737  }
738  }
739  if(diskOn || twoDimOnlyLayDisk){
740  if(theSiPixelFolder.setModuleFolder(iBooker,(*struct_iter).first,5,isUpgrade)){
741  (*struct_iter).second->book( conf_,iSetup,iBooker,5,twoDimOn,hiRes, reducedSet, twoDimOnlyLayDisk, isUpgrade);
742  } else {
743  LogDebug ("PixelDQM") << "PROBLEM WITH DISK-FOLDER\n";
744  }
745  }
746  if(ringOn){
747  if(theSiPixelFolder.setModuleFolder(iBooker,(*struct_iter).first,6,isUpgrade)){
748  (*struct_iter).second->book( conf_,iSetup,iBooker,6,twoDimOn,hiRes, reducedSet, isUpgrade);
749  } else {
750  LogDebug ("PixelDQM") << "PROBLEM WITH RING-FOLDER\n";
751  }
752  }
753  }
754  iBooker.cd(topFolderName_+"/Barrel");
755  meNDigisCOMBBarrel_ = iBooker.book1D("ALLMODS_ndigisCOMB_Barrel","Number of Digis",200,0.,400.);
756  meNDigisCOMBBarrel_->setAxisTitle("Number of digis per module per event",1);
757  meNDigisCHANBarrel_ = iBooker.book1D("ALLMODS_ndigisCHAN_Barrel","Number of Digis",100,0.,1000.);
758  meNDigisCHANBarrel_->setAxisTitle("Number of digis per FED channel per event",1);
759  std::stringstream ss1, ss2;
760  for (int i = 1; i <= noOfLayers; i++)
761  {
762  ss1.str(std::string()); ss1 << "ALLMODS_ndigisCHAN_BarrelL" << i;
763  ss2.str(std::string()); ss2 << "Number of Digis L" << i;
764  meNDigisCHANBarrelLs_.push_back(iBooker.book1D(ss1.str(),ss2.str(),100,0.,1000.));
765  meNDigisCHANBarrelLs_.at(i-1)->setAxisTitle("Number of digis per FED channel per event",1);
766  }
767  meNDigisCHANBarrelCh1_ = iBooker.book1D("ALLMODS_ndigisCHAN_BarrelCh1","Number of Digis Ch1",100,0.,1000.);
768  meNDigisCHANBarrelCh1_->setAxisTitle("Number of digis per FED channel per event",1);
769  meNDigisCHANBarrelCh2_ = iBooker.book1D("ALLMODS_ndigisCHAN_BarrelCh2","Number of Digis Ch2",100,0.,1000.);
770  meNDigisCHANBarrelCh2_->setAxisTitle("Number of digis per FED channel per event",1);
771  meNDigisCHANBarrelCh3_ = iBooker.book1D("ALLMODS_ndigisCHAN_BarrelCh3","Number of Digis Ch3",100,0.,1000.);
772  meNDigisCHANBarrelCh3_->setAxisTitle("Number of digis per FED channel per event",1);
773  meNDigisCHANBarrelCh4_ = iBooker.book1D("ALLMODS_ndigisCHAN_BarrelCh4","Number of Digis Ch4",100,0.,1000.);
774  meNDigisCHANBarrelCh4_->setAxisTitle("Number of digis per FED channel per event",1);
775  meNDigisCHANBarrelCh5_ = iBooker.book1D("ALLMODS_ndigisCHAN_BarrelCh5","Number of Digis Ch5",100,0.,1000.);
776  meNDigisCHANBarrelCh5_->setAxisTitle("Number of digis per FED channel per event",1);
777  meNDigisCHANBarrelCh6_ = iBooker.book1D("ALLMODS_ndigisCHAN_BarrelCh6","Number of Digis Ch6",100,0.,1000.);
778  meNDigisCHANBarrelCh6_->setAxisTitle("Number of digis per FED channel per event",1);
779  meNDigisCHANBarrelCh7_ = iBooker.book1D("ALLMODS_ndigisCHAN_BarrelCh7","Number of Digis Ch7",100,0.,1000.);
780  meNDigisCHANBarrelCh7_->setAxisTitle("Number of digis per FED channel per event",1);
781  meNDigisCHANBarrelCh8_ = iBooker.book1D("ALLMODS_ndigisCHAN_BarrelCh8","Number of Digis Ch8",100,0.,1000.);
782  meNDigisCHANBarrelCh8_->setAxisTitle("Number of digis per FED channel per event",1);
783  meNDigisCHANBarrelCh9_ = iBooker.book1D("ALLMODS_ndigisCHAN_BarrelCh9","Number of Digis Ch9",100,0.,1000.);
784  meNDigisCHANBarrelCh9_->setAxisTitle("Number of digis per FED channel per event",1);
785  meNDigisCHANBarrelCh10_ = iBooker.book1D("ALLMODS_ndigisCHAN_BarrelCh10","Number of Digis Ch10",100,0.,1000.);
786  meNDigisCHANBarrelCh10_->setAxisTitle("Number of digis per FED channel per event",1);
787  meNDigisCHANBarrelCh11_ = iBooker.book1D("ALLMODS_ndigisCHAN_BarrelCh11","Number of Digis Ch11",100,0.,1000.);
788  meNDigisCHANBarrelCh11_->setAxisTitle("Number of digis per FED channel per event",1);
789  meNDigisCHANBarrelCh12_ = iBooker.book1D("ALLMODS_ndigisCHAN_BarrelCh12","Number of Digis Ch12",100,0.,1000.);
790  meNDigisCHANBarrelCh12_->setAxisTitle("Number of digis per FED channel per event",1);
791  meNDigisCHANBarrelCh13_ = iBooker.book1D("ALLMODS_ndigisCHAN_BarrelCh13","Number of Digis Ch13",100,0.,1000.);
792  meNDigisCHANBarrelCh13_->setAxisTitle("Number of digis per FED channel per event",1);
793  meNDigisCHANBarrelCh14_ = iBooker.book1D("ALLMODS_ndigisCHAN_BarrelCh14","Number of Digis Ch14",100,0.,1000.);
794  meNDigisCHANBarrelCh14_->setAxisTitle("Number of digis per FED channel per event",1);
795  meNDigisCHANBarrelCh15_ = iBooker.book1D("ALLMODS_ndigisCHAN_BarrelCh15","Number of Digis Ch15",100,0.,1000.);
796  meNDigisCHANBarrelCh15_->setAxisTitle("Number of digis per FED channel per event",1);
797  meNDigisCHANBarrelCh16_ = iBooker.book1D("ALLMODS_ndigisCHAN_BarrelCh16","Number of Digis Ch16",100,0.,1000.);
798  meNDigisCHANBarrelCh16_->setAxisTitle("Number of digis per FED channel per event",1);
799  meNDigisCHANBarrelCh17_ = iBooker.book1D("ALLMODS_ndigisCHAN_BarrelCh17","Number of Digis Ch17",100,0.,1000.);
800  meNDigisCHANBarrelCh17_->setAxisTitle("Number of digis per FED channel per event",1);
801  meNDigisCHANBarrelCh18_ = iBooker.book1D("ALLMODS_ndigisCHAN_BarrelCh18","Number of Digis Ch18",100,0.,1000.);
802  meNDigisCHANBarrelCh18_->setAxisTitle("Number of digis per FED channel per event",1);
803  meNDigisCHANBarrelCh19_ = iBooker.book1D("ALLMODS_ndigisCHAN_BarrelCh19","Number of Digis Ch19",100,0.,1000.);
804  meNDigisCHANBarrelCh19_->setAxisTitle("Number of digis per FED channel per event",1);
805  meNDigisCHANBarrelCh20_ = iBooker.book1D("ALLMODS_ndigisCHAN_BarrelCh20","Number of Digis Ch20",100,0.,1000.);
806  meNDigisCHANBarrelCh20_->setAxisTitle("Number of digis per FED channel per event",1);
807  meNDigisCHANBarrelCh21_ = iBooker.book1D("ALLMODS_ndigisCHAN_BarrelCh21","Number of Digis Ch21",100,0.,1000.);
808  meNDigisCHANBarrelCh21_->setAxisTitle("Number of digis per FED channel per event",1);
809  meNDigisCHANBarrelCh22_ = iBooker.book1D("ALLMODS_ndigisCHAN_BarrelCh22","Number of Digis Ch22",100,0.,1000.);
810  meNDigisCHANBarrelCh22_->setAxisTitle("Number of digis per FED channel per event",1);
811  meNDigisCHANBarrelCh23_ = iBooker.book1D("ALLMODS_ndigisCHAN_BarrelCh23","Number of Digis Ch23",100,0.,1000.);
812  meNDigisCHANBarrelCh23_->setAxisTitle("Number of digis per FED channel per event",1);
813  meNDigisCHANBarrelCh24_ = iBooker.book1D("ALLMODS_ndigisCHAN_BarrelCh24","Number of Digis Ch24",100,0.,1000.);
814  meNDigisCHANBarrelCh24_->setAxisTitle("Number of digis per FED channel per event",1);
815  meNDigisCHANBarrelCh25_ = iBooker.book1D("ALLMODS_ndigisCHAN_BarrelCh25","Number of Digis Ch25",100,0.,1000.);
816  meNDigisCHANBarrelCh25_->setAxisTitle("Number of digis per FED channel per event",1);
817  meNDigisCHANBarrelCh26_ = iBooker.book1D("ALLMODS_ndigisCHAN_BarrelCh26","Number of Digis Ch26",100,0.,1000.);
818  meNDigisCHANBarrelCh26_->setAxisTitle("Number of digis per FED channel per event",1);
819  meNDigisCHANBarrelCh27_ = iBooker.book1D("ALLMODS_ndigisCHAN_BarrelCh27","Number of Digis Ch27",100,0.,1000.);
820  meNDigisCHANBarrelCh27_->setAxisTitle("Number of digis per FED channel per event",1);
821  meNDigisCHANBarrelCh28_ = iBooker.book1D("ALLMODS_ndigisCHAN_BarrelCh28","Number of Digis Ch28",100,0.,1000.);
822  meNDigisCHANBarrelCh28_->setAxisTitle("Number of digis per FED channel per event",1);
823  meNDigisCHANBarrelCh29_ = iBooker.book1D("ALLMODS_ndigisCHAN_BarrelCh29","Number of Digis Ch29",100,0.,1000.);
824  meNDigisCHANBarrelCh29_->setAxisTitle("Number of digis per FED channel per event",1);
825  meNDigisCHANBarrelCh30_ = iBooker.book1D("ALLMODS_ndigisCHAN_BarrelCh30","Number of Digis Ch30",100,0.,1000.);
826  meNDigisCHANBarrelCh30_->setAxisTitle("Number of digis per FED channel per event",1);
827  meNDigisCHANBarrelCh31_ = iBooker.book1D("ALLMODS_ndigisCHAN_BarrelCh31","Number of Digis Ch31",100,0.,1000.);
828  meNDigisCHANBarrelCh31_->setAxisTitle("Number of digis per FED channel per event",1);
829  meNDigisCHANBarrelCh32_ = iBooker.book1D("ALLMODS_ndigisCHAN_BarrelCh32","Number of Digis Ch32",100,0.,1000.);
830  meNDigisCHANBarrelCh32_->setAxisTitle("Number of digis per FED channel per event",1);
831  meNDigisCHANBarrelCh33_ = iBooker.book1D("ALLMODS_ndigisCHAN_BarrelCh33","Number of Digis Ch33",100,0.,1000.);
832  meNDigisCHANBarrelCh33_->setAxisTitle("Number of digis per FED channel per event",1);
833  meNDigisCHANBarrelCh34_ = iBooker.book1D("ALLMODS_ndigisCHAN_BarrelCh34","Number of Digis Ch34",100,0.,1000.);
834  meNDigisCHANBarrelCh34_->setAxisTitle("Number of digis per FED channel per event",1);
835  meNDigisCHANBarrelCh35_ = iBooker.book1D("ALLMODS_ndigisCHAN_BarrelCh35","Number of Digis Ch35",100,0.,1000.);
836  meNDigisCHANBarrelCh35_->setAxisTitle("Number of digis per FED channel per event",1);
837  meNDigisCHANBarrelCh36_ = iBooker.book1D("ALLMODS_ndigisCHAN_BarrelCh36","Number of Digis Ch36",100,0.,1000.);
838  meNDigisCHANBarrelCh36_->setAxisTitle("Number of digis per FED channel per event",1);
839  iBooker.cd(topFolderName_+"/Endcap");
840  meNDigisCOMBEndcap_ = iBooker.book1D("ALLMODS_ndigisCOMB_Endcap","Number of Digis",200,0.,400.);
841  meNDigisCOMBEndcap_->setAxisTitle("Number of digis per module per event",1);
842  meNDigisCHANEndcap_ = iBooker.book1D("ALLMODS_ndigisCHAN_Endcap","Number of Digis",100,0.,1000.);
843  meNDigisCHANEndcap_->setAxisTitle("Number of digis per FED channel per event",1);
844  for (int i = 1; i <= noOfDisks; i++)
845  {
846  ss1.str(std::string()); ss1 << "ALLMODS_ndigisCHAN_EndcapDp" << i;
847  ss2.str(std::string()); ss2 << "Number of Digis Disk p" << i;
848  meNDigisCHANEndcapDps_.push_back(iBooker.book1D(ss1.str(),ss2.str(),100,0.,1000.));
849  meNDigisCHANEndcapDps_.at(i-1)->setAxisTitle("Number of digis per FED channel per event",1);
850  }
851  for (int i = 1; i <= noOfDisks; i++)
852  {
853  ss1.str(std::string()); ss1 << "ALLMODS_ndigisCHAN_EndcapDm" << i;
854  ss2.str(std::string()); ss2 << "Number of Digis Disk m" << i;
855  meNDigisCHANEndcapDms_.push_back(iBooker.book1D(ss1.str(),ss2.str(),100,0.,1000.));
856  meNDigisCHANEndcapDms_.at(i-1)->setAxisTitle("Number of digis per FED channel per event",1);
857  }
858  iBooker.cd(topFolderName_);
859 }
860 
861 //define this as a plug-in
#define LogDebug(id)
int plaquetteName() const
plaquetteId (in pannel)
T getParameter(std::string const &) const
MonitorElement * meNDigisCHANBarrelCh19_
MonitorElement * meNDigisCHANBarrelCh35_
int i
Definition: DBlmapReader.cc:9
MonitorElement * meNDigisCHANBarrelCh2_
MonitorElement * meNDigisCHANBarrelCh30_
void setBinContent(int binx, double content)
set content of bin (1-D)
MonitorElement * meNDigisCHANBarrelCh31_
MonitorElement * meNDigisCHANBarrelCh8_
MonitorElement * meNDigisCHANBarrelCh36_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:449
void cd(void)
Definition: DQMStore.cc:266
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:17
MonitorElement * loOccROCsEndcap
MonitorElement * meNDigisCHANBarrelCh17_
MonitorElement * meNDigisCHANBarrelCh25_
assert(m_qm.get())
MonitorElement * meNDigisCHANBarrelCh6_
MonitorElement * meNDigisCOMBBarrel_
int bunchCrossing() const
Definition: EventBase.h:66
std::string topFolderName_
edm::LuminosityBlockNumber_t luminosityBlock() const
Definition: EventBase.h:63
MonitorElement * meNDigisCOMBEndcap_
MonitorElement * meNDigisCHANBarrelCh14_
MonitorElement * meNDigisCHANBarrelCh12_
MonitorElement * meNDigisCHANBarrelCh29_
static std::string const input
Definition: EdmProvDump.cc:43
void Fill(long long x)
edm::EDGetTokenT< edm::DetSetVector< PixelDigi > > srcToken_
uint32_t rawId() const
get the raw id
Definition: DetId.h:43
MonitorElement * meNDigisCHANBarrelCh27_
int bladeName() const
blade id
virtual void bookMEs(DQMStore::IBooker &, const edm::EventSetup &iSetup)
SiPixelDigiSource(const edm::ParameterSet &conf)
int iEvent
Definition: GenABIO.cc:230
MonitorElement * meNDigisCHANBarrelCh3_
MonitorElement * meNDigisCHANBarrelCh9_
MonitorElement * meNDigisCHANBarrelCh4_
MonitorElement * meNDigisCHANBarrelCh34_
MonitorElement * meNDigisCHANBarrelCh26_
bool setModuleFolder(const uint32_t &rawdetid=0, int type=0, bool isUpgrade=false)
Set folder name for a module or plaquette.
MonitorElement * noOccROCsBarrel
MonitorElement * meNDigisCHANEndcap_
MonitorElement * book1D(Args &&...args)
Definition: DQMStore.h:115
MonitorElement * meNDigisCHANBarrelCh28_
int j
Definition: DBlmapReader.cc:9
MonitorElement * noOccROCsEndcap
virtual void analyze(const edm::Event &, const edm::EventSetup &)
MonitorElement * meNDigisCHANBarrel_
std::vector< MonitorElement * > meNDigisCHANEndcapDms_
virtual void dqmBeginRun(const edm::Run &, edm::EventSetup const &)
MonitorElement * meNDigisCHANBarrelCh33_
MonitorElement * pixEventRate
MonitorElement * meNDigisCHANBarrelCh21_
unsigned int I_detId[1856]
bool isValid() const
Definition: HandleBase.h:75
int subdetId() const
get the contents of the subdetector field (not cast into any detector&#39;s numbering enum) ...
Definition: DetId.h:37
MonitorElement * meNDigisCHANBarrelCh32_
MonitorElement * meNDigisCHANBarrelCh10_
MonitorElement * loOccROCsBarrel
MonitorElement * meNDigisCHANBarrelCh1_
MonitorElement * averageDigiOccupancy
Definition: DetId.h:18
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:274
MonitorElement * meNDigisCHANBarrelCh5_
MonitorElement * book2D(Args &&...args)
Definition: DQMStore.h:133
virtual void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
MonitorElement * meNDigisCHANBarrelCh7_
MonitorElement * meNDigisCHANBarrelCh15_
MonitorElement * meNDigisCHANBarrelCh13_
const T & get() const
Definition: EventSetup.h:55
virtual const PixelTopology & specificTopology() const
Returns a reference to the pixel proxy topology.
MonitorElement * meNDigisCHANBarrelCh23_
int layerName() const
layer id
T const * product() const
Definition: ESHandle.h:86
MonitorElement * meNDigisCHANBarrelCh18_
MonitorElement * bigEventRate
MonitorElement * meNDigisCHANBarrelCh20_
MonitorElement * avgfedDigiOccvsLumi
edm::ParameterSet conf_
int pannelName() const
pannel id
MonitorElement * meNDigisCHANBarrelCh22_
int diskName() const
disk id
std::vector< MonitorElement * > meNDigisCHANEndcapDps_
MonitorElement * pixEvtsPerBX
volatile std::atomic< bool > shutdown_flag false
std::vector< MonitorElement * > meNDigisCHANBarrelLs_
std::map< uint32_t, SiPixelDigiModule * > thePixelStructure
void setLumiFlag(void)
this ME is meant to be stored for each luminosity section
HalfCylinder halfCylinder() const
MonitorElement * meNDigisCHANBarrelCh16_
MonitorElement * meNDigisCHANBarrelCh11_
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
void Reset(void)
reset ME (ie. contents, errors, etc)
Definition: vlib.h:208
virtual void buildStructure(edm::EventSetup const &)
std::string I_name[1856]
MonitorElement * meNDigisCHANBarrelCh24_
Definition: Run.h:41