CMS 3D CMS Logo

Phase2TrackerMonitorDigi.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // Package: Phase2TrackerMonitorDigi
4 // Class: Phase2TrackerMonitorDigi
5 //
11 //
12 // Author: Suchandra Dutta, Gourab Saha, Suvankar Roy Chowdhury, Subir Sarkar
13 // Date: January 29, 2016
14 // Date: November 8, 2019 (Modified for adding in phase2 DQM Offline)
15 //
16 // system include files
17 
18 #include <memory>
19 
21 
24 
28 
34 
40 
41 // DQM Histograming
44 
45 //
46 // constructors
47 //
49  : config_(iConfig),
50  pixelFlag_(config_.getParameter<bool>("PixelPlotFillingFlag")),
51  clsFlag_(config_.getParameter<bool>("StandAloneClusteriserFlag")),
52  geomType_(config_.getParameter<std::string>("GeometryType")),
53  otDigiSrc_(config_.getParameter<edm::InputTag>("OuterTrackerDigiSource")),
54  itPixelDigiSrc_(config_.getParameter<edm::InputTag>("InnerPixelDigiSource")),
55  otDigiToken_(consumes<edm::DetSetVector<Phase2TrackerDigi>>(otDigiSrc_)),
56  itPixelDigiToken_(consumes<edm::DetSetVector<PixelDigi>>(itPixelDigiSrc_)),
57  geomToken_(esConsumes<TrackerGeometry, TrackerDigiGeometryRecord, edm::Transition::BeginRun>()),
58  topoToken_(esConsumes<TrackerTopology, TrackerTopologyRcd, edm::Transition::BeginRun>()) {
59  edm::LogInfo("Phase2TrackerMonitorDigi") << ">>> Construct Phase2TrackerMonitorDigi ";
60 }
61 
62 //
63 // destructor
64 //
66  // do anything here that needs to be done at desctruction time
67  // (e.g. close files, deallocate resources etc.)
68  edm::LogInfo("Phase2TrackerMonitorDigi") << ">>> Destroy Phase2TrackerMonitorDigi ";
69 }
70 
73  tkGeom_ = &(*geomHandle);
75  tTopo_ = tTopoHandle.product();
76 }
77 
78 // -- Analyze
79 //
81  using namespace edm;
82 
83  // Get digis
85  iEvent.getByToken(itPixelDigiToken_, pixDigiHandle);
86 
88  iEvent.getByToken(otDigiToken_, otDigiHandle);
89 
90  // Tracker Topology
91  edm::ESWatcher<TrackerDigiGeometryRecord> theTkDigiGeomWatcher;
92  if (theTkDigiGeomWatcher.check(iSetup)) {
93  if (pixelFlag_)
94  fillITPixelDigiHistos(pixDigiHandle);
95  else
96  fillOTDigiHistos(otDigiHandle);
97  }
98 }
100  const edm::DetSetVector<PixelDigi>* digis = handle.product();
101 
102  for (typename edm::DetSetVector<PixelDigi>::const_iterator DSViter = digis->begin(); DSViter != digis->end();
103  DSViter++) {
104  unsigned int rawid = DSViter->id;
105  edm::LogInfo("Phase2TrackerMonitorDigi") << " Det Id = " << rawid;
106 
107  int layer = tTopo_->getITPixelLayerNumber(rawid);
108 
109  if (layer < 0)
110  continue;
111  const DetId detId(rawid);
112 
114  std::map<std::string, DigiMEs>::iterator pos = layerMEs.find(key);
115 
116  if (pos == layerMEs.end())
117  continue;
118 
119  if (DetId(detId).det() != DetId::Detector::Tracker)
120  continue;
121 
122  const GeomDetUnit* gDetUnit = tkGeom_->idToDetUnit(detId);
123  const GeomDet* geomDet = tkGeom_->idToDet(detId);
124 
125  const Phase2TrackerGeomDetUnit* tkDetUnit = dynamic_cast<const Phase2TrackerGeomDetUnit*>(gDetUnit);
126  int nRows = tkDetUnit->specificTopology().nrows();
127  int nColumns = tkDetUnit->specificTopology().ncolumns();
128  if (nRows * nColumns == 0)
129  continue;
130 
131  DigiMEs& local_mes = pos->second;
132 
133  local_mes.nHitDetsPerLayer++;
134 
135  int nDigi = 0;
136  int row_last = -1;
137  int col_last = -1;
138  std::vector<Ph2DigiCluster> digiClusters;
139  for (typename edm::DetSet<PixelDigi>::const_iterator di = DSViter->begin(); di != DSViter->end(); di++) {
140  int col = di->column(); // column
141  int row = di->row(); // row
142  int adc = di->adc(); // digi charge
143  if (geomDet) {
144  MeasurementPoint mp(row + 0.5, col + 0.5);
145  GlobalPoint pdPos = geomDet->surface().toGlobal(gDetUnit->topology().localPosition(mp));
146  if (XYPositionMap)
147  XYPositionMap->Fill(pdPos.x() * 10., pdPos.y() * 10.);
148  if (RZPositionMap)
149  RZPositionMap->Fill(pdPos.z() * 10., std::hypot(pdPos.x(), pdPos.y()) * 10.);
150  }
151  nDigi++;
152  edm::LogInfo("Phase2TrackerMonitorDigi") << " column " << col << " row " << row << std::dec << std::endl;
153  if (local_mes.ChargeXYMap)
154  local_mes.ChargeXYMap->Fill(col, row, adc);
155  if (local_mes.PositionOfDigisP)
156  local_mes.PositionOfDigisP->Fill(row + 1, col + 1);
157  if (local_mes.ChargeOfDigis)
158  local_mes.ChargeOfDigis->Fill(adc);
159  if (clsFlag_) {
160  if (row_last == -1 || abs(row - row_last) != 1 || col != col_last) {
161  Ph2DigiCluster dClus;
162  dClus.position = row + 1;
163  dClus.column = col;
164  dClus.width = 1;
165  dClus.charge = 255;
166  digiClusters.push_back(dClus);
167  } else {
168  int pos = digiClusters.back().position + row + 1;
169  int width = digiClusters.back().width + 1;
170  pos /= width;
171 
172  digiClusters.back().position = pos;
173  digiClusters.back().width += 1;
174  }
175  edm::LogInfo("Phase2TrackerMonitorDigi") << " row " << row << " col " << col << " row_last " << row_last
176  << " col_last " << col_last << " width " << digiClusters.back().width;
177  row_last = row;
178  col_last = col;
179  }
180  }
181  if (local_mes.NumberOfDigisPerDet)
182  local_mes.NumberOfDigisPerDet->Fill(nDigi);
183  if (clsFlag_)
184  fillDigiClusters(local_mes, digiClusters);
185  local_mes.nDigiPerLayer += nDigi;
186  float occupancy = 1.0;
187  if (nRows * nColumns > 0)
188  occupancy = nDigi * 1.0 / (nRows * nColumns);
189  if (geomDet) {
190  GlobalPoint gp = geomDet->surface().toGlobal(
191  gDetUnit->topology().localPosition(MeasurementPoint(nRows / 2.0, nColumns / 2.0)));
192  if (XYOccupancyMap)
193  XYOccupancyMap->Fill(gp.x() * 10., gp.y() * 10, occupancy);
194  if (RZOccupancyMap)
195  RZOccupancyMap->Fill(gp.z() * 10., std::hypot(gp.x(), gp.y()) * 10., occupancy);
196  if (local_mes.EtaOccupancyProfP)
197  local_mes.EtaOccupancyProfP->Fill(gp.eta(), occupancy);
198  }
199 
200  if (local_mes.DigiOccupancyP)
201  local_mes.DigiOccupancyP->Fill(occupancy);
202  }
203  // Fill histograms after loop over digis are complete
204  for (auto& ilayer : layerMEs) {
205  DigiMEs& local_mes = ilayer.second;
206  if (local_mes.TotalNumberOfDigisPerLayer)
207  local_mes.TotalNumberOfDigisPerLayer->Fill(local_mes.nDigiPerLayer);
208  if (local_mes.NumberOfHitDetectorsPerLayer)
209  local_mes.NumberOfHitDetectorsPerLayer->Fill(local_mes.nHitDetsPerLayer);
210  local_mes.nDigiPerLayer = 0;
211  local_mes.nHitDetsPerLayer = 0;
212  }
213 }
215  const edm::DetSetVector<Phase2TrackerDigi>* digis = handle.product();
216 
217  for (typename edm::DetSetVector<Phase2TrackerDigi>::const_iterator DSViter = digis->begin(); DSViter != digis->end();
218  DSViter++) {
219  unsigned int rawid = DSViter->id;
220  DetId detId(rawid);
221  edm::LogInfo("Phase2TrackerMonitorDigi") << " Det Id = " << rawid;
222  int layer = tTopo_->getOTLayerNumber(rawid);
223  if (layer < 0)
224  continue;
226  std::map<std::string, DigiMEs>::iterator pos = layerMEs.find(key);
227  if (pos == layerMEs.end())
228  continue;
229  DigiMEs& local_mes = pos->second;
230 
231  local_mes.nHitDetsPerLayer++;
232  if (DetId(detId).det() != DetId::Detector::Tracker)
233  continue;
234 
235  const GeomDetUnit* gDetUnit = tkGeom_->idToDetUnit(detId);
236  const GeomDet* geomDet = tkGeom_->idToDet(detId);
237 
238  const Phase2TrackerGeomDetUnit* tkDetUnit = dynamic_cast<const Phase2TrackerGeomDetUnit*>(gDetUnit);
239  int nRows = tkDetUnit->specificTopology().nrows();
240  int nColumns = tkDetUnit->specificTopology().ncolumns();
241  if (nRows * nColumns == 0)
242  continue;
243 
244  int nDigi = 0;
245  int row_last = -1;
246  int col_last = -1;
247  float frac_ot = 0.;
248  std::vector<Ph2DigiCluster> digiClusters;
249  for (typename edm::DetSet<Phase2TrackerDigi>::const_iterator di = DSViter->begin(); di != DSViter->end(); di++) {
250  int col = di->column(); // column
251  int row = di->row(); // row
252  const DetId detId(rawid);
253 
254  if (geomDet) {
255  MeasurementPoint mp(row + 0.5, col + 0.5);
256  GlobalPoint pdPos = geomDet->surface().toGlobal(gDetUnit->topology().localPosition(mp));
257  if (XYPositionMap)
258  XYPositionMap->Fill(pdPos.x() * 10., pdPos.y() * 10.);
259  if (RZPositionMap)
260  RZPositionMap->Fill(pdPos.z() * 10., std::hypot(pdPos.x(), pdPos.y()) * 10.);
261  }
262  nDigi++;
263  if (di->overThreshold())
264  frac_ot++;
265  edm::LogInfo("Phase2TrackerMonitorDigi") << " column " << col << " row " << row << std::dec << std::endl;
266  if (nColumns > 2 && local_mes.PositionOfDigisP)
267  local_mes.PositionOfDigisP->Fill(row + 1, col + 1);
268  if (nColumns <= 2 && local_mes.PositionOfDigisS)
269  local_mes.PositionOfDigisS->Fill(row + 1, col + 1);
270 
271  if (clsFlag_) {
272  if (row_last == -1 || abs(row - row_last) != 1 || col != col_last) {
273  Ph2DigiCluster dClus;
274  dClus.position = row + 1;
275  dClus.column = col;
276  dClus.width = 1;
277  dClus.charge = 255;
278  digiClusters.push_back(dClus);
279  } else {
280  int pos = digiClusters.back().position + row + 1;
281  int width = digiClusters.back().width + 1;
282  pos /= width;
283 
284  digiClusters.back().position = pos;
285  digiClusters.back().width += 1;
286  }
287  row_last = row;
288  col_last = col;
289  edm::LogInfo("Phase2TrackerMonitorDigi") << " row " << row << " col " << col << " row_last " << row_last
290  << " col_last " << col_last << " width " << digiClusters.back().width;
291  }
292  }
293  if (local_mes.NumberOfDigisPerDet)
294  local_mes.NumberOfDigisPerDet->Fill(nDigi);
295  if (clsFlag_)
296  fillDigiClusters(local_mes, digiClusters);
297  local_mes.nDigiPerLayer += nDigi;
298  if (nDigi)
299  frac_ot /= nDigi;
300  if (local_mes.FractionOfOvTBits && nColumns <= 2)
301  local_mes.FractionOfOvTBits->Fill(frac_ot);
302 
303  float occupancy = 1.0;
304  if (nRows * nColumns > 0)
305  occupancy = nDigi * 1.0 / (nRows * nColumns);
306  if (geomDet) {
307  GlobalPoint gp = geomDet->surface().toGlobal(gDetUnit->topology().localPosition(MeasurementPoint(0.0, 0.0)));
308  if (XYOccupancyMap)
309  XYOccupancyMap->Fill(gp.x() * 10., gp.y() * 10., occupancy);
310  if (RZOccupancyMap)
311  RZOccupancyMap->Fill(gp.z() * 10., std::hypot(gp.x(), gp.y()) * 10., occupancy);
312  if (nColumns > 2) {
313  if (local_mes.DigiOccupancyP)
314  local_mes.DigiOccupancyP->Fill(occupancy);
315  if (local_mes.EtaOccupancyProfP)
316  local_mes.EtaOccupancyProfP->Fill(gp.eta(), occupancy);
317  } else {
318  if (local_mes.DigiOccupancyS)
319  local_mes.DigiOccupancyS->Fill(occupancy);
320  if (local_mes.EtaOccupancyProfS)
321  local_mes.EtaOccupancyProfS->Fill(gp.eta(), occupancy);
322  if (local_mes.FractionOfOvTBitsVsEta)
323  local_mes.FractionOfOvTBitsVsEta->Fill(gp.eta(), frac_ot);
324  }
325  }
326  }
327  // Fill histograms after loop over digis are complete
328  for (auto& ilayer : layerMEs) {
329  DigiMEs& local_mes = ilayer.second;
330  if (local_mes.TotalNumberOfDigisPerLayer)
331  local_mes.TotalNumberOfDigisPerLayer->Fill(local_mes.nDigiPerLayer);
332  if (local_mes.NumberOfHitDetectorsPerLayer)
333  local_mes.NumberOfHitDetectorsPerLayer->Fill(local_mes.nHitDetsPerLayer);
334  local_mes.nDigiPerLayer = 0;
335  local_mes.nHitDetsPerLayer = 0;
336  }
337 }
338 //
339 // -- Book Histograms
340 //
342  edm::Run const& iRun,
343  edm::EventSetup const& iSetup) {
344  std::string top_folder = config_.getParameter<std::string>("TopFolderName");
345  edm::ESWatcher<TrackerDigiGeometryRecord> theTkDigiGeomWatcher;
346 
347  if (theTkDigiGeomWatcher.check(iSetup)) {
348  for (auto const& det_u : tkGeom_->detUnits()) {
349  unsigned int detId_raw = det_u->geographicalId().rawId();
350  bookLayerHistos(ibooker, detId_raw);
351  }
352  }
353  ibooker.cd();
354  std::stringstream folder_name;
355  folder_name << top_folder << "/"
356  << "DigiMonitor";
357  ibooker.setCurrentFolder(folder_name.str());
358 
360  edm::ParameterSet ParametersOcc = config_.getParameter<edm::ParameterSet>("DigiOccupancyPH");
361  if (Parameters.getParameter<bool>("switch"))
362  XYPositionMap = ibooker.book2D("DigiXPosVsYPos",
363  "DigiXPosVsYPos",
364  Parameters.getParameter<int32_t>("Nxbins"),
365  Parameters.getParameter<double>("xmin"),
366  Parameters.getParameter<double>("xmax"),
367  Parameters.getParameter<int32_t>("Nybins"),
368  Parameters.getParameter<double>("ymin"),
369  Parameters.getParameter<double>("ymax"));
370  else
371  XYPositionMap = nullptr;
372 
373  if (Parameters.getParameter<bool>("switch") && ParametersOcc.getParameter<bool>("switch"))
374  XYOccupancyMap = ibooker.bookProfile2D("OccupancyInXY",
375  "OccupancyInXY",
376  Parameters.getParameter<int32_t>("Nxbins"),
377  Parameters.getParameter<double>("xmin"),
378  Parameters.getParameter<double>("xmax"),
379  Parameters.getParameter<int32_t>("Nybins"),
380  Parameters.getParameter<double>("ymin"),
381  Parameters.getParameter<double>("ymax"),
382  ParametersOcc.getParameter<double>("xmin"),
383  ParametersOcc.getParameter<double>("xmax"));
384  else
385  XYOccupancyMap = nullptr;
386 
387  Parameters = config_.getParameter<edm::ParameterSet>("RZPositionMapH");
388  if (Parameters.getParameter<bool>("switch"))
389  RZPositionMap = ibooker.book2D("DigiRPosVsZPos",
390  "DigiRPosVsZPos",
391  Parameters.getParameter<int32_t>("Nxbins"),
392  Parameters.getParameter<double>("xmin"),
393  Parameters.getParameter<double>("xmax"),
394  Parameters.getParameter<int32_t>("Nybins"),
395  Parameters.getParameter<double>("ymin"),
396  Parameters.getParameter<double>("ymax"));
397  else
398  RZPositionMap = nullptr;
399 
400  if (Parameters.getParameter<bool>("switch") && ParametersOcc.getParameter<bool>("switch"))
401  RZOccupancyMap = ibooker.bookProfile2D("OccupancyInRZ",
402  "OccupancyInRZ",
403  Parameters.getParameter<int32_t>("Nxbins"),
404  Parameters.getParameter<double>("xmin"),
405  Parameters.getParameter<double>("xmax"),
406  Parameters.getParameter<int32_t>("Nybins"),
407  Parameters.getParameter<double>("ymin"),
408  Parameters.getParameter<double>("ymax"),
409  ParametersOcc.getParameter<double>("xmin"),
410  ParametersOcc.getParameter<double>("xmax"));
411  else
412  RZOccupancyMap = nullptr;
413 }
414 //
415 // -- Book Layer Histograms
416 //
418  int layer;
419  if (pixelFlag_)
420  layer = tTopo_->getITPixelLayerNumber(det_id);
421  else
422  layer = tTopo_->getOTLayerNumber(det_id);
423 
424  if (layer < 0)
425  return;
427  std::map<std::string, DigiMEs>::iterator pos = layerMEs.find(key);
428 
429  if (pos == layerMEs.end()) {
430  std::string top_folder = config_.getParameter<std::string>("TopFolderName");
431  std::stringstream folder_name;
432 
433  //For endCap: P-type sensors are present only upto ring 10 for discs 1&2 (TEDD-1) and upto ring 7 for discs 3,4&5 (TEDD-2)
434  bool isPStypeModForTEDD_1 =
435  (!pixelFlag_ && layer > 100 && tTopo_->tidWheel(det_id) < 3 && tTopo_->tidRing(det_id) <= 10) ? true : false;
436  bool isPStypeModForTEDD_2 =
437  (!pixelFlag_ && layer > 100 && tTopo_->tidWheel(det_id) >= 3 && tTopo_->tidRing(det_id) <= 7) ? true : false;
438 
439  bool isPtypeSensor =
440  (pixelFlag_ || (layer < 4 || (layer > 6 && (isPStypeModForTEDD_1 || isPStypeModForTEDD_2)))) ? true : false;
441 
442  ibooker.cd();
443  ibooker.setCurrentFolder(top_folder + "/DigiMonitor/" + key);
444  edm::LogInfo("Phase2TrackerMonitorDigi") << " Booking Histograms in : " << key;
445 
446  std::ostringstream HistoName;
447  DigiMEs local_mes;
448 
449  local_mes.nDigiPerLayer = 0;
450  local_mes.nHitDetsPerLayer = 0;
451 
453  edm::ParameterSet EtaParameters = config_.getParameter<edm::ParameterSet>("EtaH");
454  HistoName.str("");
455  HistoName << "NumberOfDigisPerDet";
456  if (Parameters.getParameter<bool>("switch"))
457  local_mes.NumberOfDigisPerDet = ibooker.book1D(HistoName.str(),
458  HistoName.str(),
459  Parameters.getParameter<int32_t>("Nbins"),
460  Parameters.getParameter<double>("xmin"),
461  Parameters.getParameter<double>("xmax"));
462  else
463  local_mes.NumberOfDigisPerDet = nullptr;
464 
465  Parameters = config_.getParameter<edm::ParameterSet>("TotalNumberOfDigisPerLayerH");
466  HistoName.str("");
467  HistoName << "TotalNumberOfDigisPerLayer";
468  if (Parameters.getParameter<bool>("switch"))
469  local_mes.TotalNumberOfDigisPerLayer = ibooker.book1D(HistoName.str(),
470  HistoName.str(),
471  Parameters.getParameter<int32_t>("Nbins"),
472  Parameters.getParameter<double>("xmin"),
473  Parameters.getParameter<double>("xmax"));
474  else
475  local_mes.TotalNumberOfDigisPerLayer = nullptr;
476 
477  Parameters = config_.getParameter<edm::ParameterSet>("NumberOfHitDetsPerLayerH");
478  HistoName.str("");
479  HistoName << "NumberOfHitDetectorsPerLayer";
480  if (Parameters.getParameter<bool>("switch"))
481  local_mes.NumberOfHitDetectorsPerLayer = ibooker.book1D(HistoName.str(),
482  HistoName.str(),
483  Parameters.getParameter<int32_t>("Nbins"),
484  Parameters.getParameter<double>("xmin"),
485  Parameters.getParameter<double>("xmax"));
486  else
487  local_mes.NumberOfHitDetectorsPerLayer = nullptr;
488 
489  // Plots only for the inner pixel
490  if (pixelFlag_) {
492  HistoName.str("");
493  HistoName << "ChargeXYMap";
494  if (Parameters.getParameter<bool>("switch"))
495  local_mes.ChargeXYMap = ibooker.book2D(HistoName.str(),
496  HistoName.str(),
497  Parameters.getParameter<int32_t>("Nxbins"),
498  Parameters.getParameter<double>("xmin"),
499  Parameters.getParameter<double>("xmax"),
500  Parameters.getParameter<int32_t>("Nybins"),
501  Parameters.getParameter<double>("ymin"),
502  Parameters.getParameter<double>("ymax"));
503  else
504  local_mes.ChargeXYMap = nullptr;
505 
507  HistoName.str("");
508  HistoName << "ChargeOfDigis";
509  if (Parameters.getParameter<bool>("switch"))
510  local_mes.ChargeOfDigis = ibooker.book1D(HistoName.str(),
511  HistoName.str(),
512  Parameters.getParameter<int32_t>("Nbins"),
513  Parameters.getParameter<double>("xmin"),
514  Parameters.getParameter<double>("xmax"));
515  else
516  local_mes.ChargeOfDigis = nullptr;
517 
518  // For standalone clusteriser
519  if (clsFlag_) {
520  edm::ParameterSet WidthParameters = config_.getParameter<edm::ParameterSet>("ClusterWidthH");
521  HistoName.str("");
522  HistoName << "ChargeOfDigisVsWidth";
523  if (Parameters.getParameter<bool>("switch") && WidthParameters.getParameter<bool>("switch"))
524  local_mes.ChargeOfDigisVsWidth = ibooker.book2D(HistoName.str(),
525  HistoName.str(),
526  Parameters.getParameter<int32_t>("Nbins"),
527  Parameters.getParameter<double>("xmin"),
528  Parameters.getParameter<double>("xmax"),
529  WidthParameters.getParameter<int32_t>("Nbins"),
530  WidthParameters.getParameter<double>("xmin"),
531  WidthParameters.getParameter<double>("xmax"));
532  else
533  local_mes.ChargeOfDigisVsWidth = nullptr;
534  }
535  }
536  // For outer tracker modules (S-type histograms)
537  else {
538  Parameters = config_.getParameter<edm::ParameterSet>("DigiOccupancySH");
539  HistoName.str("");
540  HistoName << "DigiOccupancyS";
541  if (Parameters.getParameter<bool>("switch"))
542  local_mes.DigiOccupancyS = ibooker.book1D(HistoName.str(),
543  HistoName.str(),
544  Parameters.getParameter<int32_t>("Nbins"),
545  Parameters.getParameter<double>("xmin"),
546  Parameters.getParameter<double>("xmax"));
547  else
548  local_mes.DigiOccupancyS = nullptr;
549 
550  HistoName.str("");
551  HistoName << "DigiOccupancyVsEtaS";
552  if (Parameters.getParameter<bool>("switch") && EtaParameters.getParameter<bool>("switch"))
553  local_mes.EtaOccupancyProfS = ibooker.bookProfile(HistoName.str(),
554  HistoName.str(),
555  EtaParameters.getParameter<int32_t>("Nbins"),
556  EtaParameters.getParameter<double>("xmin"),
557  EtaParameters.getParameter<double>("xmax"),
558  Parameters.getParameter<double>("xmin"),
559  Parameters.getParameter<double>("xmax"),
560  "");
561  else
562  local_mes.EtaOccupancyProfS = nullptr;
563 
564  Parameters = config_.getParameter<edm::ParameterSet>("PositionOfDigisSH");
565  HistoName.str("");
566  HistoName << "PositionOfDigisS";
567  if (Parameters.getParameter<bool>("switch"))
568  local_mes.PositionOfDigisS = ibooker.book2D(HistoName.str(),
569  HistoName.str(),
570  Parameters.getParameter<int32_t>("Nxbins"),
571  Parameters.getParameter<double>("xmin"),
572  Parameters.getParameter<double>("xmax"),
573  Parameters.getParameter<int32_t>("Nybins"),
574  Parameters.getParameter<double>("ymin"),
575  Parameters.getParameter<double>("ymax"));
576  else
577  local_mes.PositionOfDigisS = nullptr;
578 
579  // For standalone clusteriser
580  if (clsFlag_) {
581  Parameters = config_.getParameter<edm::ParameterSet>("ClusterPositionSH");
582  HistoName.str("");
583  HistoName << "ClusterPositionS";
584  if (Parameters.getParameter<bool>("switch"))
585  local_mes.ClusterPositionS = ibooker.book2D(HistoName.str(),
586  HistoName.str(),
587  Parameters.getParameter<int32_t>("Nxbins"),
588  Parameters.getParameter<double>("xmin"),
589  Parameters.getParameter<double>("xmax"),
590  Parameters.getParameter<int32_t>("Nybins"),
591  Parameters.getParameter<double>("ymin"),
592  Parameters.getParameter<double>("ymax"));
593  else
594  local_mes.ClusterPositionS = nullptr;
595  }
596  // Only for the S-type sensor of PS module
597  // FracOfOverThresholdBits is only available for S-type sensor of PS module
598  if (isPStypeModForTEDD_1 || isPStypeModForTEDD_2) {
599  HistoName.str("");
600  HistoName << "FractionOfOverThresholdDigis";
601  local_mes.FractionOfOvTBits = ibooker.book1D(HistoName.str(), HistoName.str(), 11, -0.05, 1.05);
602 
603  Parameters = config_.getParameter<edm::ParameterSet>("NumberOfDigisPerDetH");
604  HistoName.str("");
605  HistoName << "FractionOfOverThresholdDigisVaEta";
606  if (Parameters.getParameter<bool>("switch") && EtaParameters.getParameter<bool>("switch"))
607  local_mes.FractionOfOvTBitsVsEta = ibooker.bookProfile(HistoName.str(),
608  HistoName.str(),
609  EtaParameters.getParameter<int32_t>("Nbins"),
610  EtaParameters.getParameter<double>("xmin"),
611  EtaParameters.getParameter<double>("xmax"),
612  Parameters.getParameter<double>("xmin"),
613  Parameters.getParameter<double>("xmax"),
614  "");
615  else
616  local_mes.FractionOfOvTBitsVsEta = nullptr;
617  }
618  }
619 
620  // Plots for P-type sensor (Pixel or P-side of PS module)
621  if (isPtypeSensor) {
622  Parameters = config_.getParameter<edm::ParameterSet>("DigiOccupancyPH");
623  HistoName.str("");
624  HistoName << "DigiOccupancyP";
625  if (Parameters.getParameter<bool>("switch"))
626  local_mes.DigiOccupancyP = ibooker.book1D(HistoName.str(),
627  HistoName.str(),
628  Parameters.getParameter<int32_t>("Nbins"),
629  Parameters.getParameter<double>("xmin"),
630  Parameters.getParameter<double>("xmax"));
631  else
632  local_mes.DigiOccupancyP = nullptr;
633 
634  HistoName.str("");
635  HistoName << "DigiOccupancyVsEtaP";
636  if (Parameters.getParameter<bool>("switch") && EtaParameters.getParameter<bool>("switch"))
637  local_mes.EtaOccupancyProfP = ibooker.bookProfile(HistoName.str(),
638  HistoName.str(),
639  EtaParameters.getParameter<int32_t>("Nbins"),
640  EtaParameters.getParameter<double>("xmin"),
641  EtaParameters.getParameter<double>("xmax"),
642  Parameters.getParameter<double>("xmin"),
643  Parameters.getParameter<double>("xmax"),
644  "");
645  else
646  local_mes.EtaOccupancyProfP = nullptr;
647 
648  Parameters = config_.getParameter<edm::ParameterSet>("PositionOfDigisPH");
649  HistoName.str("");
650  HistoName << "PositionOfDigisP";
651  if (Parameters.getParameter<bool>("switch"))
652  local_mes.PositionOfDigisP = ibooker.book2D(HistoName.str(),
653  HistoName.str(),
654  Parameters.getParameter<int32_t>("Nxbins"),
655  Parameters.getParameter<double>("xmin"),
656  Parameters.getParameter<double>("xmax"),
657  Parameters.getParameter<int32_t>("Nybins"),
658  Parameters.getParameter<double>("ymin"),
659  Parameters.getParameter<double>("ymax"));
660  else
661  local_mes.PositionOfDigisP = nullptr;
662 
663  if (clsFlag_) {
664  Parameters = config_.getParameter<edm::ParameterSet>("ClusterPositionPH");
665  HistoName.str("");
666  HistoName << "ClusterPositionP";
667  if (Parameters.getParameter<bool>("switch"))
668  local_mes.ClusterPositionP = ibooker.book2D(HistoName.str(),
669  HistoName.str(),
670  Parameters.getParameter<int32_t>("Nxbins"),
671  Parameters.getParameter<double>("xmin"),
672  Parameters.getParameter<double>("xmax"),
673  Parameters.getParameter<int32_t>("Nybins"),
674  Parameters.getParameter<double>("ymin"),
675  Parameters.getParameter<double>("ymax"));
676  else
677  local_mes.ClusterPositionP = nullptr;
678  }
679  }
680 
681  // Plots for Standalone clusters (Can be switched on from configs)
682  if (clsFlag_) {
683  Parameters = config_.getParameter<edm::ParameterSet>("NumberOfClustersPerDetH");
684  HistoName.str("");
685  HistoName << "NumberOfClustersPerDet";
686  if (Parameters.getParameter<bool>("switch"))
687  local_mes.NumberOfClustersPerDet = ibooker.book1D(HistoName.str(),
688  HistoName.str(),
689  Parameters.getParameter<int32_t>("Nbins"),
690  Parameters.getParameter<double>("xmin"),
691  Parameters.getParameter<double>("xmax"));
692  else
693  local_mes.NumberOfClustersPerDet = nullptr;
694 
695  Parameters = config_.getParameter<edm::ParameterSet>("ClusterWidthH");
696  HistoName.str("");
697  HistoName << "ClusterWidth";
698  if (Parameters.getParameter<bool>("switch"))
699  local_mes.ClusterWidth = ibooker.book1D(HistoName.str(),
700  HistoName.str(),
701  Parameters.getParameter<int32_t>("Nbins"),
702  Parameters.getParameter<double>("xmin"),
703  Parameters.getParameter<double>("xmax"));
704  else
705  local_mes.ClusterWidth = nullptr;
706  }
707 
708  layerMEs.insert(std::make_pair(key, local_mes));
709  }
710 }
711 
713  if (flag)
714  return phase2tkutil::getITHistoId(det_id, tTopo_);
715  else
716  return phase2tkutil::getOTHistoId(det_id, tTopo_);
717 }
718 
719 void Phase2TrackerMonitorDigi::fillDigiClusters(DigiMEs& mes, std::vector<Ph2DigiCluster>& digi_clusters) {
720  int nclus = digi_clusters.size();
721  if (mes.NumberOfClustersPerDet)
722  mes.NumberOfClustersPerDet->Fill(nclus);
723  for (auto& iclus : digi_clusters) {
724  if (mes.ClusterWidth)
725  mes.ClusterWidth->Fill(iclus.width);
726  if (pixelFlag_ && mes.ChargeOfDigisVsWidth)
727  mes.ChargeOfDigisVsWidth->Fill(iclus.charge, iclus.width);
728  if (mes.ClusterPositionP)
729  mes.ClusterPositionP->Fill(iclus.position, iclus.column + 1);
730  if (!pixelFlag_ && mes.ClusterPositionS && iclus.column <= 2)
731  mes.ClusterPositionS->Fill(iclus.position, iclus.column + 1);
732  }
733 }
734 //define this as a plug-in
TrackerGeometry::idToDet
const TrackerGeomDet * idToDet(DetId) const override
Definition: TrackerGeometry.cc:193
edm::ESWatcher::check
bool check(const edm::EventSetup &iSetup)
Definition: ESWatcher.h:52
edm::ESHandle::product
T const * product() const
Definition: ESHandle.h:86
Phase2TrackerMonitorDigi::DigiMEs::PositionOfDigisS
MonitorElement * PositionOfDigisS
Definition: Phase2TrackerMonitorDigi.h:35
edm::DetSetVector
Definition: DetSetVector.h:61
Point2DBase
Definition: Point2DBase.h:9
PixelDigiCollection.h
Phase2TrackerMonitorDigi::otDigiToken_
const edm::EDGetTokenT< edm::DetSetVector< Phase2TrackerDigi > > otDigiToken_
Definition: Phase2TrackerMonitorDigi.h:77
ApeEstimator_cff.width
width
Definition: ApeEstimator_cff.py:24
Handle.h
electrons_cff.bool
bool
Definition: electrons_cff.py:393
MessageLogger.h
TrackerGeometry.h
Phase2TrackerMonitorDigi::config_
edm::ParameterSet config_
Definition: Phase2TrackerMonitorDigi.h:70
GeomDet
Definition: GeomDet.h:27
Phase2TrackerMonitorDigi::RZOccupancyMap
MonitorElement * RZOccupancyMap
Definition: Phase2TrackerMonitorDigi.h:62
edm::ESWatcher< TrackerDigiGeometryRecord >
edm::DetSetVector::end
iterator end()
Return the off-the-end iterator.
Definition: DetSetVector.h:325
Phase2TrackerMonitorDigi::DigiMEs::TotalNumberOfDigisPerLayer
MonitorElement * TotalNumberOfDigisPerLayer
Definition: Phase2TrackerMonitorDigi.h:38
PV3DBase::x
T x() const
Definition: PV3DBase.h:59
Phase2TrackerMonitorDigi::geomToken_
const edm::ESGetToken< TrackerGeometry, TrackerDigiGeometryRecord > geomToken_
Definition: Phase2TrackerMonitorDigi.h:79
patZpeak.handle
handle
Definition: patZpeak.py:23
edm::Run
Definition: Run.h:45
TrackerTopology::getITPixelLayerNumber
int getITPixelLayerNumber(const DetId &id) const
Definition: TrackerTopology.cc:436
TrackerTopology::getOTLayerNumber
int getOTLayerNumber(const DetId &id) const
Definition: TrackerTopology.cc:421
edm
HLT enums.
Definition: AlignableModifier.h:19
Phase2TrackerMonitorDigi::DigiMEs::ChargeXYMap
MonitorElement * ChargeXYMap
Definition: Phase2TrackerMonitorDigi.h:33
TrackerTopology
Definition: TrackerTopology.h:16
dqm::implementation::IBooker::bookProfile2D
MonitorElement * bookProfile2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, double lowZ, double highZ, char const *option="s", FUNC onbooking=NOOP())
Definition: DQMStore.h:399
DetId::det
constexpr Detector det() const
get the detector field from this detid
Definition: DetId.h:46
Phase2TrackerMonitorDigi.h
cuy.col
col
Definition: cuy.py:1010
pos
Definition: PixelAliasList.h:18
Phase2TrackerMonitorDigi::Ph2DigiCluster::column
int column
Definition: Phase2TrackerMonitorDigi.h:56
HLT_FULL_cff.InputTag
InputTag
Definition: HLT_FULL_cff.py:85964
dqm::implementation::NavigatorBase::setCurrentFolder
virtual void setCurrentFolder(std::string const &fullpath)
Definition: DQMStore.cc:32
PixelDigi
Definition: PixelDigi.h:14
edm::DetSetVector::begin
iterator begin()
Return an iterator to the first DetSet.
Definition: DetSetVector.h:314
Phase2TrackerMonitorDigi::DigiMEs::EtaOccupancyProfS
MonitorElement * EtaOccupancyProfS
Definition: Phase2TrackerMonitorDigi.h:47
Phase2TrackerMonitorDigi::analyze
void analyze(const edm::Event &iEvent, const edm::EventSetup &iSetup) override
Definition: Phase2TrackerMonitorDigi.cc:80
GeomDet::topology
virtual const Topology & topology() const
Definition: GeomDet.cc:67
Phase2TrackerMonitorDigi::clsFlag_
bool clsFlag_
Definition: Phase2TrackerMonitorDigi.h:73
Topology::localPosition
virtual LocalPoint localPosition(const MeasurementPoint &) const =0
Phase2TrackerMonitorDigi::fillOTDigiHistos
void fillOTDigiHistos(const edm::Handle< edm::DetSetVector< Phase2TrackerDigi >> handle)
Definition: Phase2TrackerMonitorDigi.cc:214
Phase2TrackerMonitorDigi::Ph2DigiCluster
Definition: Phase2TrackerMonitorDigi.h:52
PixelDigi.h
Phase2TrackerMonitorDigi::XYOccupancyMap
MonitorElement * XYOccupancyMap
Definition: Phase2TrackerMonitorDigi.h:61
edm::LogInfo
Log< level::Info, false > LogInfo
Definition: MessageLogger.h:125
Phase2TrackerMonitorDigi::Ph2DigiCluster::width
int width
Definition: Phase2TrackerMonitorDigi.h:55
edm::Handle
Definition: AssociativeIterator.h:50
Phase2TrackerMonitorDigi::DigiMEs::FractionOfOvTBitsVsEta
MonitorElement * FractionOfOvTBitsVsEta
Definition: Phase2TrackerMonitorDigi.h:45
Phase2TrackerMonitorDigi::Ph2DigiCluster::position
int position
Definition: Phase2TrackerMonitorDigi.h:54
TrackerTopology::tidRing
unsigned int tidRing(const DetId &id) const
Definition: TrackerTopology.h:218
TrackerTopology::tidWheel
unsigned int tidWheel(const DetId &id) const
Definition: TrackerTopology.h:201
Phase2TrackerMonitorDigi::DigiMEs::NumberOfClustersPerDet
MonitorElement * NumberOfClustersPerDet
Definition: Phase2TrackerMonitorDigi.h:40
align::Tracker
Definition: StructureType.h:70
TrackerGeometry::idToDetUnit
const TrackerGeomDet * idToDetUnit(DetId) const override
Return the pointer to the GeomDetUnit corresponding to a given DetId.
Definition: TrackerGeometry.cc:183
Phase2TrackerMonitorDigi::DigiMEs
Definition: Phase2TrackerMonitorDigi.h:29
PV3DBase::z
T z() const
Definition: PV3DBase.h:61
ecalLiteDTU::adc
constexpr int adc(sample_type sample)
get the ADC sample (12 bits)
Definition: EcalLiteDTUSample.h:12
Phase2TrackerMonitorDigi::XYPositionMap
MonitorElement * XYPositionMap
Definition: Phase2TrackerMonitorDigi.h:59
DetId
Definition: DetId.h:17
GeomDet::surface
const Plane & surface() const
The nominal surface of the GeomDet.
Definition: GeomDet.h:37
MakerMacros.h
Phase2TrackerMonitorDigi::DigiMEs::nHitDetsPerLayer
unsigned int nHitDetsPerLayer
Definition: Phase2TrackerMonitorDigi.h:49
Phase2TrackerMonitorDigi::DigiMEs::nDigiPerLayer
unsigned int nDigiPerLayer
Definition: Phase2TrackerMonitorDigi.h:48
DEFINE_FWK_MODULE
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
TrackerGeometry::detUnits
const DetContainer & detUnits() const override
Returm a vector of all GeomDet.
Definition: TrackerGeometry.h:61
Service.h
PixelGeomDetUnit
Definition: PixelGeomDetUnit.h:15
TrackerDigiGeometryRecord
Definition: TrackerDigiGeometryRecord.h:15
dqm::impl::MonitorElement::Fill
void Fill(long long x)
Definition: MonitorElement.h:290
TrackerPhase2DQMUtil.h
Surface::toGlobal
GlobalPoint toGlobal(const Point2DBase< Scalar, LocalTag > lp) const
Definition: Surface.h:79
Phase2TrackerMonitorDigi::DigiMEs::NumberOfDigisPerDet
MonitorElement * NumberOfDigisPerDet
Definition: Phase2TrackerMonitorDigi.h:30
edm::ESHandle< TrackerGeometry >
dqm::implementation::NavigatorBase::cd
virtual void cd()
Definition: DQMStore.cc:29
dqm::implementation::IBooker::bookProfile
MonitorElement * bookProfile(TString const &name, TString const &title, int nchX, double lowX, double highX, int, double lowY, double highY, char const *option="s", FUNC onbooking=NOOP())
Definition: DQMStore.h:322
PixelTopology::ncolumns
virtual int ncolumns() const =0
Phase2TrackerMonitorDigi::tTopo_
const TrackerTopology * tTopo_
Definition: Phase2TrackerMonitorDigi.h:82
Phase2TrackerMonitorDigi::DigiMEs::ChargeOfDigis
MonitorElement * ChargeOfDigis
Definition: Phase2TrackerMonitorDigi.h:36
Point3DBase< float, GlobalTag >
PixelGeomDetType.h
Phase2TrackerMonitorDigi::DigiMEs::ClusterWidth
MonitorElement * ClusterWidth
Definition: Phase2TrackerMonitorDigi.h:41
Phase2TrackerMonitorDigi::DigiMEs::ClusterPositionS
MonitorElement * ClusterPositionS
Definition: Phase2TrackerMonitorDigi.h:43
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
Phase2TrackerMonitorDigi::fillITPixelDigiHistos
void fillITPixelDigiHistos(const edm::Handle< edm::DetSetVector< PixelDigi >> handle)
Definition: Phase2TrackerMonitorDigi.cc:99
Phase2TrackerMonitorDigi::Phase2TrackerMonitorDigi
Phase2TrackerMonitorDigi(const edm::ParameterSet &)
Definition: Phase2TrackerMonitorDigi.cc:48
runTauDisplay.gp
gp
Definition: runTauDisplay.py:431
MeasurementPoint
Measurement2DPoint MeasurementPoint
Measurement points are two-dimensional by default.
Definition: MeasurementPoint.h:12
funct::true
true
Definition: Factorize.h:173
TrackerDigiGeometryRecord.h
Phase2TrackerDigi.h
MonitorElement.h
edm::ParameterSet
Definition: ParameterSet.h:47
edm::Transition
Transition
Definition: Transition.h:12
Phase2TrackerMonitorDigi::DigiMEs::PositionOfDigisP
MonitorElement * PositionOfDigisP
Definition: Phase2TrackerMonitorDigi.h:34
edm::DetSetVector::const_iterator
collection_type::const_iterator const_iterator
Definition: DetSetVector.h:102
PixelGeomDetUnit::specificTopology
virtual const PixelTopology & specificTopology() const
Returns a reference to the pixel proxy topology.
Definition: PixelGeomDetUnit.cc:17
Phase2TrackerMonitorDigi::getHistoId
std::string getHistoId(uint32_t det_id, bool flag)
Definition: Phase2TrackerMonitorDigi.cc:712
fed_dqm_sourceclient-live_cfg.folder_name
folder_name
Definition: fed_dqm_sourceclient-live_cfg.py:42
PV3DBase::y
T y() const
Definition: PV3DBase.h:60
iEvent
int iEvent
Definition: GenABIO.cc:224
cscdqm::HistoName
std::string HistoName
Definition: CSCDQM_HistoDef.h:32
Phase2TrackerMonitorDigi::layerMEs
std::map< std::string, DigiMEs > layerMEs
Definition: Phase2TrackerMonitorDigi.h:71
edm::EventSetup::getHandle
ESHandle< T > getHandle(const ESGetToken< T, R > &iToken) const
Definition: EventSetup.h:148
Phase2TrackerMonitorDigi::bookLayerHistos
void bookLayerHistos(DQMStore::IBooker &ibooker, unsigned int det_id)
Definition: Phase2TrackerMonitorDigi.cc:417
Phase2TrackerMonitorDigi::bookHistograms
void bookHistograms(DQMStore::IBooker &ibooker, edm::Run const &iRun, edm::EventSetup const &iSetup) override
Definition: Phase2TrackerMonitorDigi.cc:341
Phase2TrackerMonitorDigi::itPixelDigiToken_
const edm::EDGetTokenT< edm::DetSetVector< PixelDigi > > itPixelDigiToken_
Definition: Phase2TrackerMonitorDigi.h:78
edm::EventSetup
Definition: EventSetup.h:57
Phase2TrackerMonitorDigi::DigiMEs::DigiOccupancyS
MonitorElement * DigiOccupancyS
Definition: Phase2TrackerMonitorDigi.h:32
InputTag.h
Phase2TrackerMonitorDigi::fillDigiClusters
void fillDigiClusters(DigiMEs &mes, std::vector< Ph2DigiCluster > &digi_clusters)
Definition: Phase2TrackerMonitorDigi.cc:719
Phase2TrackerMonitorDigi::~Phase2TrackerMonitorDigi
~Phase2TrackerMonitorDigi() override
Definition: Phase2TrackerMonitorDigi.cc:65
Phase2TrackerDigi
Definition: Phase2TrackerDigi.h:12
GeomDet.h
std
Definition: JetResolutionObject.h:76
phase2tkutil::getITHistoId
std::string getITHistoId(uint32_t det_id, const TrackerTopology *tTopo)
Definition: TrackerPhase2DQMUtil.cc:2
Phase2TrackerMonitorDigi::dqmBeginRun
void dqmBeginRun(const edm::Run &iRun, const edm::EventSetup &iSetup) override
Definition: Phase2TrackerMonitorDigi.cc:71
Phase2TrackerMonitorDigi::DigiMEs::FractionOfOvTBits
MonitorElement * FractionOfOvTBits
Definition: Phase2TrackerMonitorDigi.h:44
Phase2TrackerMonitorDigi
Definition: Phase2TrackerMonitorDigi.h:20
ESWatcher.h
dqm::implementation::IBooker::book2D
MonitorElement * book2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, FUNC onbooking=NOOP())
Definition: DQMStore.h:177
Phase2TrackerMonitorDigi::DigiMEs::DigiOccupancyP
MonitorElement * DigiOccupancyP
Definition: Phase2TrackerMonitorDigi.h:31
PixelGeomDetUnit.h
Phase2TrackerMonitorDigi::DigiMEs::ChargeOfDigisVsWidth
MonitorElement * ChargeOfDigisVsWidth
Definition: Phase2TrackerMonitorDigi.h:37
Phase2TrackerMonitorDigi::DigiMEs::EtaOccupancyProfP
MonitorElement * EtaOccupancyProfP
Definition: Phase2TrackerMonitorDigi.h:46
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
Phase2TrackerMonitorDigi::tkGeom_
const TrackerGeometry * tkGeom_
Definition: Phase2TrackerMonitorDigi.h:81
Phase2TrackerMonitorDigi::DigiMEs::NumberOfHitDetectorsPerLayer
MonitorElement * NumberOfHitDetectorsPerLayer
Definition: Phase2TrackerMonitorDigi.h:39
dqm::implementation::IBooker
Definition: DQMStore.h:43
Phase2TrackerMonitorDigi::topoToken_
const edm::ESGetToken< TrackerTopology, TrackerTopologyRcd > topoToken_
Definition: Phase2TrackerMonitorDigi.h:80
Phase2TrackerMonitorDigi::Ph2DigiCluster::charge
int charge
Definition: Phase2TrackerMonitorDigi.h:53
Phase2TrackerDigitizerFwd.h
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
TrackerTopologyRcd
Definition: TrackerTopologyRcd.h:10
edm::Event
Definition: Event.h:73
PixelTopology::nrows
virtual int nrows() const =0
Phase2TrackerMonitorDigi::DigiMEs::ClusterPositionP
MonitorElement * ClusterPositionP
Definition: Phase2TrackerMonitorDigi.h:42
Parameters
vector< ParameterSet > Parameters
Definition: HLTMuonPlotter.cc:25
crabWrapper.key
key
Definition: crabWrapper.py:19
TauDecayModes.dec
dec
Definition: TauDecayModes.py:143
phase2tkutil::getOTHistoId
std::string getOTHistoId(uint32_t det_id, const TrackerTopology *tTopo)
Definition: TrackerPhase2DQMUtil.cc:25
dqm::implementation::IBooker::book1D
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
Definition: DQMStore.h:98
RemoveAddSevLevel.flag
flag
Definition: RemoveAddSevLevel.py:116
Phase2TrackerMonitorDigi::pixelFlag_
bool pixelFlag_
Definition: Phase2TrackerMonitorDigi.h:72
Phase2TrackerMonitorDigi::RZPositionMap
MonitorElement * RZPositionMap
Definition: Phase2TrackerMonitorDigi.h:60
TrackerGeometry
Definition: TrackerGeometry.h:14
edm::DetSet::const_iterator
collection_type::const_iterator const_iterator
Definition: DetSet.h:31