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