CMS 3D CMS Logo

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