CMS 3D CMS Logo

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