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