CMS 3D CMS Logo

SiStripMonitorDigi.cc
Go to the documentation of this file.
1 // -*- c++ -*-
4 // Original Author: Dorian Kcira
5 // Created: Sat Feb 4 20:49:10 CET 2006
6 // Updated: May 2020, Suvankar Roy Chowdhury
7 #include <fstream>
8 #include "TNamed.h"
27 
30 
31 #include "TMath.h"
33 
34 #include <iostream>
35 
42 
43 /* mia: but is there not a smarter way ?!?!?! */
44 namespace {
45  const double NORBITS_PER_LS = 262144.; // per-second value would be 11223
46 }
47 
48 //--------------------------------------------------------------------------------------------
50  : //dqmStore_(edm::Service<DQMStore>().operator->()),
51  conf_(iConfig),
52  show_mechanical_structure_view(true),
53  show_readout_view(false),
54  show_control_view(false),
55  select_all_detectors(true),
56  reset_each_run(false),
57  folder_organizer(),
58  m_cacheID_(0) {
59  firstEvent = -1;
60  eventNb = 0;
61 
62  // Detector Partitions
63  SubDetPhasePartMap["TIB"] = "TI";
64  SubDetPhasePartMap["TID__MINUS"] = "TI";
65  SubDetPhasePartMap["TID__PLUS"] = "TI";
66  SubDetPhasePartMap["TOB"] = "TO";
67  SubDetPhasePartMap["TEC__MINUS"] = "TM";
68  SubDetPhasePartMap["TEC__PLUS"] = "TP";
69 
70  topFolderName_ = conf_.getParameter<std::string>("TopFolderName");
71 
72  // get Digi Producer List
73  digiProducerList = conf_.getParameter<std::vector<edm::InputTag> >("DigiProducersList");
74  for (auto const& tag : digiProducerList) {
76  }
77 
78  //get on/off option for every cluster from cfi
79  edm::ParameterSet ParametersNumberOfDigis = conf_.getParameter<edm::ParameterSet>("TH1NumberOfDigis");
80  layerswitchnumdigison = ParametersNumberOfDigis.getParameter<bool>("layerswitchon");
81  moduleswitchnumdigison = ParametersNumberOfDigis.getParameter<bool>("moduleswitchon");
82 
83  edm::ParameterSet ParametersNumberOfDigisPerStrip = conf_.getParameter<edm::ParameterSet>("TH1NumberOfDigisPerStrip");
84  moduleswitchnumdigispstripon = ParametersNumberOfDigisPerStrip.getParameter<bool>("moduleswitchon");
85 
86  edm::ParameterSet ParametersADCsHottestStrip = conf_.getParameter<edm::ParameterSet>("TH1ADCsHottestStrip");
87  layerswitchadchotteston = ParametersADCsHottestStrip.getParameter<bool>("layerswitchon");
88  moduleswitchadchotteston = ParametersADCsHottestStrip.getParameter<bool>("moduleswitchon");
89 
90  edm::ParameterSet ParametersADCsCoolestStrip = conf_.getParameter<edm::ParameterSet>("TH1ADCsCoolestStrip");
91  layerswitchadccooleston = ParametersADCsCoolestStrip.getParameter<bool>("layerswitchon");
92  moduleswitchadccooleston = ParametersADCsCoolestStrip.getParameter<bool>("moduleswitchon");
93 
94  edm::ParameterSet ParametersDigiADCs = conf_.getParameter<edm::ParameterSet>("TH1DigiADCs");
95  layerswitchdigiadcson = ParametersDigiADCs.getParameter<bool>("layerswitchon");
96  moduleswitchdigiadcson = ParametersDigiADCs.getParameter<bool>("moduleswitchon");
97 
98  edm::ParameterSet ParametersStripOccupancy = conf_.getParameter<edm::ParameterSet>("TH1StripOccupancy");
99  layerswitchstripoccupancyon = ParametersStripOccupancy.getParameter<bool>("layerswitchon");
100  moduleswitchstripoccupancyon = ParametersStripOccupancy.getParameter<bool>("moduleswitchon");
101 
102  edm::ParameterSet ParametersDigiProf = conf_.getParameter<edm::ParameterSet>("TProfNumberOfDigi");
103  layerswitchnumdigisprofon = ParametersDigiProf.getParameter<bool>("layerswitchon");
104 
105  edm::ParameterSet ParametersDigiADC = conf_.getParameter<edm::ParameterSet>("TProfDigiADC");
106  layerswitchdigiadcprofon = ParametersDigiProf.getParameter<bool>("layerswitchon");
107 
108  edm::ParameterSet ParametersTotDigiProf = conf_.getParameter<edm::ParameterSet>("TProfTotalNumberOfDigis");
109  subdetswitchtotdigiprofon = ParametersTotDigiProf.getParameter<bool>("subdetswitchon");
110 
111  edm::ParameterSet ParametersTotDigiFailure = conf_.getParameter<edm::ParameterSet>("TotalNumberOfDigisFailure");
112  subdetswitchtotdigifailureon = ParametersTotDigiFailure.getParameter<bool>("subdetswitchon");
113 
114  edm::ParameterSet ParametersDigiApvProf = conf_.getParameter<edm::ParameterSet>("TProfDigiApvCycle");
115  subdetswitchapvcycleprofon = ParametersDigiApvProf.getParameter<bool>("subdetswitchon");
116 
117  edm::ParameterSet ParametersDigiApvTH2 = conf_.getParameter<edm::ParameterSet>("TH2DigiApvCycle");
118  subdetswitchapvcycleth2on = ParametersDigiApvTH2.getParameter<bool>("subdetswitchon");
119 
120  edm::ParameterSet ParametersNApvShots = conf_.getParameter<edm::ParameterSet>("TH1NApvShots");
121  subdetswitchnapvshotson = ParametersNApvShots.getParameter<bool>("subdetswitchon");
122 
123  edm::ParameterSet ParametersNStripApvShots = conf_.getParameter<edm::ParameterSet>("TH1NStripsApvShots");
124  subdetswitchnstripsapvshotson = ParametersNStripApvShots.getParameter<bool>("subdetswitchon");
125 
126  edm::ParameterSet ParametersChargeMedianApvShots = conf_.getParameter<edm::ParameterSet>("TH1ChargeMedianApvShots");
127  subdetswitchchargemedianapvshotson = ParametersChargeMedianApvShots.getParameter<bool>("subdetswitchon");
128 
129  edm::ParameterSet ParametersApvNumberApvShots = conf_.getParameter<edm::ParameterSet>("TH1ApvNumApvShots");
130  subdetswitchapvshotsApvon = ParametersChargeMedianApvShots.getParameter<bool>("subdetswitchon");
131 
132  edm::ParameterSet ParametersNApvShotsProf = conf_.getParameter<edm::ParameterSet>("TProfNShotsVsTime");
133  subdetswitchapvshotsonprof = ParametersNApvShotsProf.getParameter<bool>("subdetswitchon");
134 
135  //Global Histograms
136 
137  edm::ParameterSet ParametersGlobalNApvShots = conf_.getParameter<edm::ParameterSet>("TH1NApvShots");
138  globalswitchnapvshotson = ParametersGlobalNApvShots.getParameter<bool>("globalswitchon");
139 
140  edm::ParameterSet ParametersGlobalNApvShotsProf = conf_.getParameter<edm::ParameterSet>("TProfGlobalNShots");
141  globalsummaryapvshotson = ParametersGlobalNApvShotsProf.getParameter<bool>("globalswitchon");
142 
143  edm::ParameterSet ParametersGlobalNStripApvShots = conf_.getParameter<edm::ParameterSet>("TH1NStripsApvShots");
144  globalswitchnstripsapvshotson = ParametersGlobalNStripApvShots.getParameter<bool>("globalswitchon");
145 
146  edm::ParameterSet ParametersGlobalApvNumApvShots = conf_.getParameter<edm::ParameterSet>("TH1ApvNumApvShots");
147  globalswitchapvshotsApvon = ParametersGlobalApvNumApvShots.getParameter<bool>("globalswitchon");
148 
149  edm::ParameterSet ParametersGlobalChargeMedianApvShots =
150  conf_.getParameter<edm::ParameterSet>("TH1ChargeMedianApvShots");
151  globalswitchchargemedianapvshotson = ParametersGlobalChargeMedianApvShots.getParameter<bool>("globalswitchon");
152 
153  edm::ParameterSet ParametersGlobalNApvShotsTimeProf = conf_.getParameter<edm::ParameterSet>("TProfNShotsVsTime");
154  globalswitchapvshotsonprof = ParametersGlobalNApvShotsTimeProf.getParameter<bool>("globalswitchon");
155 
156  edm::ParameterSet ParametersGlobalNDigisFEDID = conf_.getParameter<edm::ParameterSet>("TProfNDigisFED");
157  globalswitchNDigisFEDID = ParametersGlobalNDigisFEDID.getParameter<bool>("globalswitchon");
158 
159  //Digi and APV Shots Maps
160 
161  digitkhistomapon = conf_.getParameter<bool>("TkHistoMap_On");
162 
163  shotshistomapon = conf_.getParameter<bool>("TkHistoMapNApvShots_On");
164  shotsstripshistomapon = conf_.getParameter<bool>("TkHistoMapNStripApvShots_On");
165  shotschargehistomapon = conf_.getParameter<bool>("TkHistoMapMedianChargeApvShots_On");
166 
167  createTrendMEs = conf_.getParameter<bool>("CreateTrendMEs");
168  Mod_On_ = conf_.getParameter<bool>("Mod_On");
169  m_trendVs10LS = conf_.getParameter<bool>("TrendVs10LS");
170  // xLumiProf = conf_.getParameter<int>("xLumiProf");
171  // Event History Producer
172  historyProducer_ = conf_.getParameter<edm::InputTag>("HistoryProducer");
173  historyProducerToken_ = consumes<EventWithHistory>(conf_.getParameter<edm::InputTag>("HistoryProducer"));
174 
175  // Apv Phase Producer
176  apvPhaseProducer_ = conf_.getParameter<edm::InputTag>("ApvPhaseProducer");
177  apvPhaseProducerToken_ = consumes<APVCyclePhaseCollection>(conf_.getParameter<edm::InputTag>("ApvPhaseProducer"));
178 
179  gtEvmToken_ = consumes<L1GlobalTriggerEvmReadoutRecord>(edm::InputTag("gtEvmDigis"));
180 
181  // Create DCS Status
182  bool checkDCS = conf_.getParameter<bool>("UseDCSFiltering");
183  if (checkDCS)
185  else
186  dcsStatus_ = nullptr;
187 
188  //initialize boolean for the data-presence check (needed for TotalNumberOfDigisFailure histogram)
189  SBTransitionDone = false;
190  SBDeclaredAt = 0;
191  ignoreFirstNLumisections_ = TMath::Max(0, ParametersTotDigiFailure.getParameter<int32_t>("ignoreFirstNLumisections"));
192  integrateNLumisections_ = TMath::Max(1, ParametersTotDigiFailure.getParameter<int32_t>("integrateNLumisections"));
193  vecSubDetTotDigiProfLS.reserve(7);
194 }
195 //------------------------------------------------------------------------------------------
196 
198  if (dcsStatus_)
199  delete dcsStatus_;
200 }
201 
202 void SiStripMonitorDigi::bookHistograms(DQMStore::IBooker& ibooker, const edm::Run& run, const edm::EventSetup& es) {
204  unsigned long long cacheID = es.get<SiStripDetCablingRcd>().cacheIdentifier();
205  if (m_cacheID_ != cacheID) {
206  m_cacheID_ = cacheID;
207  edm::LogInfo("SiStripMonitorDigi") << "SiStripMonitorDigi::bookHistograms: "
208  << " Creating MEs for new Cabling ";
209  createMEs(ibooker, es);
210  }
211  } else if (reset_each_run) {
212  edm::LogInfo("SiStripMonitorDigi") << "SiStripMonitorDigi::bookHistograms: "
213  << " Resetting MEs ";
214  for (std::map<uint32_t, ModMEs>::const_iterator idet = DigiMEs.begin(); idet != DigiMEs.end(); idet++) {
215  ResetModuleMEs(idet->first);
216  }
217  }
218 }
219 
220 //--------------------------------------------------------------------------------------------
223  //get FED cabling to know if SiStrip is in DAQ or no
224  unsigned long long cacheID = es.get<SiStripDetCablingRcd>().cacheIdentifier();
225  if (m_cacheID_ != cacheID) {
226  m_cacheID_ = cacheID;
227  }
229  es.get<SiStripDetCablingRcd>().get(detCabling_);
230 
231  //nFEDConnected = 0;
232  nFedTIB = 0;
233  nFedTIDm = 0;
234  nFedTIDp = 0;
235  nFedTECm = 0;
236  nFedTECp = 0;
237  nFedTOB = 0;
238 
239  //const int siStripFedIdMin = FEDNumbering::MINSiStripFEDID;
240  //const int siStripFedIdMax = FEDNumbering::MAXSiStripFEDID;
241 
242  if (auto runInfoRec = es.tryToGet<RunInfoRcd>()) {
243  edm::ESHandle<RunInfo> sumFED;
244  runInfoRec->get(sumFED);
245 
246  if (sumFED.isValid()) {
247  std::vector<int> FedsInIds = sumFED->m_fed_in;
248  for (unsigned int it = 0; it < FedsInIds.size(); ++it) {
249  int fedID = FedsInIds[it];
250  // if(fedID>=siStripFedIdMin && fedID<=siStripFedIdMax) ++nFEDConnected;
251  /* mia: but is there not a smarter way !?!?!? */
252  if (fedID >= 50 && fedID <= 133)
253  ++nFedTIB;
254  if (fedID >= 134 && fedID <= 148)
255  ++nFedTIDm;
256  if (fedID >= 149 && fedID <= 163)
257  ++nFedTIDp;
258  if (fedID >= 164 && fedID <= 259)
259  ++nFedTECm;
260  if (fedID >= 260 && fedID <= 355)
261  ++nFedTECp;
262  if (fedID >= 356 && fedID <= 489)
263  ++nFedTOB;
264  }
265  }
266  }
267  }
268 }
269 
270 //--------------------------------------------------------------------------------------------
272  const edm::EventSetup& es) const {
273  bool isStableBeams = false;
274  return std::make_shared<bool>(isStableBeams);
275 }
276 
277 //--------------------------------------------------------------------------------------------
279  unsigned int currentLS = lb.id().luminosityBlock();
280  const bool isStableBeams = luminosityBlockCache(lb.index());
281  if (subdetswitchtotdigifailureon && isStableBeams && !SBTransitionDone) {
282  SBDeclaredAt = (int)currentLS;
283  SBTransitionDone = true;
284  }
285 
286  if (subdetswitchtotdigifailureon && currentLS % integrateNLumisections_ == 0) {
287  int nFeds[6] = {96, 96, 84, 15, 15, 134}; // tec- , tec+ , tib , tid- , tid+ , tob
288  int nFedsConnected[6] = {nFedTECm, nFedTECp, nFedTIB, nFedTIDm, nFedTIDp, nFedTOB};
289 
291  for (int ibin = 1; ibin < 7; ibin++) {
292  //the vector now has the sum from previous integrateNLumisections_
293  //whereas digiFailureMEs.SubDetTotDigiProfLS now has sum for all LS upto now.
296 
297  float fillvalue = 2;
298  if (isStableBeams
299  // && (int)lb.id().luminosityBlock() > ignoreFirstNLumisections_ //ignore first X lumisections for HV rampup
300  && ((int)currentLS - SBDeclaredAt) > ignoreFirstNLumisections_ &&
301  (float)nFedsConnected[ibin - 1] / nFeds[ibin - 1] > 0.5 && value < 50.) {
302  fillvalue = 1.01;
303  }
304  //account for integrated LS: fill previous bins as well
305  for (int fillbin = (int)currentLS - integrateNLumisections_ + 1; fillbin <= (int)currentLS; fillbin++)
306  digiFailureMEs.SubDetDigiFailures2D->Fill(fillbin, ibin - 1, fillvalue);
307  }
308  }
309  }
310 }
311 //--------------------------------------------------------------------------------------------
312 void SiStripMonitorDigi::createMEs(DQMStore::IBooker& ibooker, const edm::EventSetup& es) {
314  //Retrieve tracker topology from geometry
315  edm::ESHandle<TrackerTopology> tTopoHandle;
316  es.get<TrackerTopologyRcd>().get(tTopoHandle);
317  const TrackerTopology* const tTopo = tTopoHandle.product();
318  edm::ESHandle<TkDetMap> tkDetMapHandle;
319  es.get<TrackerTopologyRcd>().get(tkDetMapHandle);
320  const TkDetMap* tkDetMap = tkDetMapHandle.product();
321 
322  // take from eventSetup the SiStripDetCabling object - here will use SiStripDetControl later on
324 
325  // get list of active detectors from SiStripDetCabling
326  std::vector<uint32_t> activeDets;
327  activeDets.clear(); // just in case
329 
330  // remove any eventual zero elements - there should be none, but just in case
331  for (std::vector<uint32_t>::iterator idets = activeDets.begin(); idets != activeDets.end(); idets++) {
332  if (*idets == 0)
333  activeDets.erase(idets);
334  }
335 
336  // create SiStripFolderOrganizer
338 
339  // Create TkHistoMap for Digi and APV shots properies
340 
341  if (digitkhistomapon)
342  tkmapdigi = std::make_unique<TkHistoMap>(tkDetMap, ibooker, topFolderName_, "TkHMap_NumberOfDigi", 0.0, true);
343  if (shotshistomapon)
344  tkmapNApvshots = std::make_unique<TkHistoMap>(tkDetMap, ibooker, topFolderName_, "TkHMap_NApvShots", 0.0, true);
347  std::make_unique<TkHistoMap>(tkDetMap, ibooker, topFolderName_, "TkHMap_NStripApvShots", 0.0, true);
350  std::make_unique<TkHistoMap>(tkDetMap, ibooker, topFolderName_, "TkHMap_MedianChargeApvShots", 0.0, true);
351 
352  std::vector<uint32_t> tibDetIds;
353 
354  // loop over detectors and book MEs
355  edm::LogInfo("SiStripTkDQM|SiStripMonitorDigi") << "nr. of activeDets: " << activeDets.size();
356  for (std::vector<uint32_t>::const_iterator detid_iterator = activeDets.begin(); detid_iterator != activeDets.end();
357  detid_iterator++) {
358  uint32_t detid = (*detid_iterator);
359 
360  ModMEs local_modmes;
361 
362  local_modmes.NumberOfDigis = nullptr;
363  local_modmes.NumberOfDigisPerStrip = nullptr;
364  local_modmes.ADCsHottestStrip = nullptr;
365  local_modmes.ADCsCoolestStrip = nullptr;
366  local_modmes.DigiADCs = nullptr;
367  local_modmes.StripOccupancy = nullptr;
368 
369  if (Mod_On_) {
370  // set appropriate folder using SiStripFolderOrganizer
371  folder_organizer.setDetectorFolder(detid, tTopo); // pass the detid to this method
372  if (reset_each_run)
373  ResetModuleMEs(detid);
374  createModuleMEs(ibooker, local_modmes, detid);
375 
376  // append to DigiMEs
377  DigiMEs.insert(std::make_pair(detid, local_modmes));
378  }
379 
380  // Create Layer Level MEs if they are not created already
381  std::pair<std::string, int32_t> det_layer_pair = folder_organizer.GetSubDetAndLayer(detid, tTopo);
382  SiStripHistoId hidmanager;
383  std::string label = hidmanager.getSubdetid(detid, tTopo, false);
384 
385  // get detids for the layer
386  std::map<std::string, LayerMEs>::iterator iLayerME = LayerMEsMap.find(label);
387 
388  if (iLayerME == LayerMEsMap.end()) {
389  int32_t lnumber = det_layer_pair.second;
390  std::vector<uint32_t> layerDetIds;
391  if (det_layer_pair.first == "TIB") {
392  SiStripSubStructure::getTIBDetectors(activeDets, layerDetIds, tTopo, lnumber, 0, 0, 0);
393  } else if (det_layer_pair.first == "TOB") {
394  SiStripSubStructure::getTOBDetectors(activeDets, layerDetIds, tTopo, lnumber, 0, 0);
395  } else if (det_layer_pair.first == "TID" && lnumber > 0) {
396  SiStripSubStructure::getTIDDetectors(activeDets, layerDetIds, tTopo, 2, abs(lnumber), 0, 0);
397  } else if (det_layer_pair.first == "TID" && lnumber < 0) {
398  SiStripSubStructure::getTIDDetectors(activeDets, layerDetIds, tTopo, 1, abs(lnumber), 0, 0);
399  } else if (det_layer_pair.first == "TEC" && lnumber > 0) {
400  SiStripSubStructure::getTECDetectors(activeDets, layerDetIds, tTopo, 2, abs(lnumber), 0, 0, 0, 0);
401  } else if (det_layer_pair.first == "TEC" && lnumber < 0) {
402  SiStripSubStructure::getTECDetectors(activeDets, layerDetIds, tTopo, 1, abs(lnumber), 0, 0, 0, 0);
403  }
404 
405  LayerDetMap[label] = layerDetIds;
406 
407  // book Layer plots
408  folder_organizer.setLayerFolder(detid, tTopo, det_layer_pair.second);
409  createLayerMEs(ibooker, label, layerDetIds.size());
410  }
411 
412  // book sub-detector plots
413  auto sdet_pair = folder_organizer.getSubDetFolderAndTag(detid, tTopo);
414  if (SubDetMEsMap.find(sdet_pair.second) == SubDetMEsMap.end()) {
415  ibooker.setCurrentFolder(sdet_pair.first);
416  createSubDetMEs(ibooker, sdet_pair.second);
417  }
418 
419  } //end of loop over detectors
420 
421  //book some Summary histograms on APV shots in the MechanicalView
422 
423  ibooker.setCurrentFolder(topFolderName_ + "/MechanicalView/");
424 
426  const char* HistoName = "Summary Mean Apv shots for SubDets";
427  NApvShotsGlobalProf = ibooker.bookProfile(HistoName, HistoName, 6, 0.5, 6.5, 100, 0., 0., "");
434  NApvShotsGlobalProf->setAxisTitle(" mean APV shots # / evt", 2);
435  }
436 
437  //cumulative number of APV shots Vs Time
440  const char* HistoName = "NApv_Shots_vs_Time";
441  ShotsVsTimeApvShotsGlobal = ibooker.bookProfile(HistoName,
442  HistoName,
443  Parameters.getParameter<int32_t>("Nbins"),
444  Parameters.getParameter<double>("xmin"),
445  Parameters.getParameter<double>("xmax"),
446  200, //that parameter should not be there !?
447  Parameters.getParameter<double>("ymin"),
448  Parameters.getParameter<double>("ymax"),
449  "");
450  ShotsVsTimeApvShotsGlobal->setAxisTitle("Time (s)", 1);
451  ShotsVsTimeApvShotsGlobal->setAxisTitle("# Apv Shots", 2);
453  ShotsVsTimeApvShotsGlobal->getTH1()->SetCanExtend(TH1::kAllAxes);
454  }
455 
456  //cumulative number of Strips in APV shots
459  const char* HistoName = "Number_of_Strips_in_Apv_Shots";
461  HistoName,
462  Parameters.getParameter<int32_t>("Nbins"),
463  Parameters.getParameter<double>("xmin"),
464  Parameters.getParameter<double>("xmax"));
465  StripMultiplicityApvShotsGlobal->setAxisTitle("# strips in Apv Shots", 1);
466  }
467 
468  //cumulative number of APV shots
471  const char* HistoName = "Number_of_Apv_Shots";
472  NApvShotsGlobal = ibooker.book1D(HistoName,
473  HistoName,
474  Parameters.getParameter<int32_t>("Nbins"),
475  Parameters.getParameter<double>("xmin"),
476  Parameters.getParameter<double>("xmax"));
477  NApvShotsGlobal->setAxisTitle("# Apv Shots", 1);
478  }
479 
480  //cumulative Median Charge in APV shots
482  edm::ParameterSet Parameters = conf_.getParameter<edm::ParameterSet>("TH1ChargeMedianApvShots");
483  //dqmStore_->setCurrentFolder("SiStrip/MechanicalView/"+label);
484  const char* HistoName = "Apv_Shots_Charge_Median";
485  MedianChargeApvShotsGlobal = ibooker.book1D(HistoName,
486  HistoName,
487  Parameters.getParameter<int32_t>("Nbins"),
488  Parameters.getParameter<double>("xmin"),
489  Parameters.getParameter<double>("xmax"));
490  MedianChargeApvShotsGlobal->setAxisTitle("Apv Shots Charge Median (ADC)", 1);
491  }
492 
493  //cmulative APV number with shots
496  //dqmStore_->setCurrentFolder("SiStrip/MechanicalView/"+label);
497  const char* HistoName = "Apv_Shots_Apv_Number";
498  NApvApvShotsGlobal = ibooker.book1D(HistoName,
499  HistoName,
500  Parameters.getParameter<int32_t>("Nbins"),
501  Parameters.getParameter<double>("xmin"),
502  Parameters.getParameter<double>("xmax"));
503  NApvApvShotsGlobal->setAxisTitle("Apv Number", 1);
504  }
505 
507  // Number of digis per FED
508  edm::ParameterSet FEDDigi = conf_.getParameter<edm::ParameterSet>("TProfNDigisFED");
509  const char* HistoName = "NumberOfDigisinFED_v_FEDID";
510  //Using TProfile for average.
511  NumberOfFEDDigis = ibooker.bookProfile(HistoName,
512  HistoName,
513  FEDDigi.getParameter<int32_t>("Nbinsx"),
514  FEDDigi.getParameter<double>("xmin"),
515  FEDDigi.getParameter<double>("xmax"),
516  FEDDigi.getParameter<int32_t>("Nbinsy"),
517  FEDDigi.getParameter<double>("ymin"),
518  FEDDigi.getParameter<double>("ymax"),
519  "");
520  NumberOfFEDDigis->setAxisTitle("FED ID", 1);
521  NumberOfFEDDigis->setAxisTitle("Mean # of Digis in FED", 2);
522  }
523 
524  //
525  // Book new histogram to monitor digi in last LS
526  //
527 
530 
531  std::stringstream ss;
532 
534  ibooker.setCurrentFolder(ss.str());
535 
537  const char* HistoName = "NumberOfDigisInLastLS";
538  digiFailureMEs.SubDetTotDigiProfLS = ibooker.bookProfile(HistoName, HistoName, 6, 0.5, 6.5, 0., 0., "");
545  }
546 
548  std::string HistoName = "DataPresentInLS";
549  edm::ParameterSet Parameters = conf_.getParameter<edm::ParameterSet>("TotalNumberOfDigisFailure");
550 
552  HistoName,
553  Parameters.getParameter<int32_t>("Nbins"), //bins X
554  1, //xmin
555  Parameters.getParameter<int32_t>("Nbins") + 1, //xmax
556  6, //bins Y
557  0, //ymin
558  6); //ymax
559 
566  digiFailureMEs.SubDetDigiFailures2D->setAxisTitle("Luminosity Section");
567  }
568  } //end of if
569 
570 } //end of method
571 
572 //--------------------------------------------------------------------------------------------
574  // Filter out events if DCS Event if requested
575  if (dcsStatus_ && !dcsStatus_->getStatus(iEvent, iSetup))
576  return;
577 
578  //Retrieve tracker topology from geometry
579  edm::ESHandle<TrackerTopology> tTopoHandle;
580  iSetup.get<TrackerTopologyRcd>().get(tTopoHandle);
581  const TrackerTopology* const tTopo = tTopoHandle.product();
582 
583  TotalNShots = 0;
584 
585  runNb = iEvent.id().run();
586  eventNb++;
587 
588  float iOrbitVar =
589  m_trendVs10LS ? iEvent.orbitNumber() / (10 * NORBITS_PER_LS) : iEvent.orbitNumber() / NORBITS_PER_LS;
590 
591  digi_detset_handles.clear();
592 
593  std::vector<edm::EDGetTokenT<edm::DetSetVector<SiStripDigi> > >::const_iterator iToken =
594  digiProducerTokenList.begin();
595  for (std::vector<edm::InputTag>::const_iterator iter = digiProducerList.begin(), iEnd = digiProducerList.end();
596  iter != iEnd;
597  ++iter, ++iToken) {
599  iEvent.getByToken(*iToken, digi_handle);
600  if (digi_handle.isValid())
601  digi_detset_handles.push_back(digi_handle.product());
602  }
603 
604  // initialise # of clusters to zero
605  for (std::map<std::string, SubDetMEs>::iterator iSubdet = SubDetMEsMap.begin(); iSubdet != SubDetMEsMap.end();
606  iSubdet++) {
607  iSubdet->second.totNDigis = 0;
608  iSubdet->second.SubDetApvShots.clear();
609  }
610 
611  std::map<int, int> FEDID_v_digisum;
612 
613  for (std::map<std::string, std::vector<uint32_t> >::const_iterator iterLayer = LayerDetMap.begin();
614  iterLayer != LayerDetMap.end();
615  iterLayer++) {
616  std::string layer_label = iterLayer->first;
617 
618  std::vector<uint32_t> layer_dets = iterLayer->second;
619  std::map<std::string, LayerMEs>::iterator iLayerME = LayerMEsMap.find(layer_label);
620 
621  //get Layer MEs
622  LayerMEs local_layermes;
623 
624  if (iLayerME == LayerMEsMap.end())
625  continue;
626  else
627  local_layermes = iLayerME->second;
628 
629  int largest_adc_layer = 0;
630  int smallest_adc_layer = 99999;
631 
632  int ndigi_layer = 0;
633 
634  uint16_t iDet = 0;
635 
636  std::string subdet_label = "";
637 
638  // loop over all modules in the layer
639  for (std::vector<uint32_t>::const_iterator iterDets = layer_dets.begin(); iterDets != layer_dets.end();
640  iterDets++) {
641  iDet++;
642 
643  // detid and type of ME
644  uint32_t detid = (*iterDets);
645 
646  // Get SubDet label once
647  if (subdet_label.empty())
648  subdet_label = folder_organizer.getSubDetFolderAndTag(detid, tTopo).second;
649 
650  // DetId and corresponding set of MEs
651 
652  std::map<uint32_t, ModMEs>::iterator pos = DigiMEs.find(detid);
653  ModMEs local_modmes = pos->second;
654 
655  // search digis of detid
656  int loc = getDigiSourceIndex(detid);
657 
658  int ndigi_det = 0;
659 
660  if (loc > -1) {
661  ndigi_det = (*(digi_detset_handles[loc]))[detid].size();
662 
664 
665  //Get all FED connections associated with given detID.
666  // All connections for a detid have same FED Id therefore one FEDID is associated with a given detID.
667  std::vector<const FedChannelConnection*> fedConnections = SiStripDetCabling_->getConnections(detid);
668 
669  // Filling FED Id associated clusters map.
670 
671  int good_fcc_index = -999;
672  for (unsigned int x = 0; x < fedConnections.size(); x++) {
673  if (fedConnections[x] != nullptr) {
674  good_fcc_index = x;
675  break;
676  }
677  }
678  if (fedConnections[good_fcc_index] != nullptr) {
679  int temp_fedid = fedConnections[good_fcc_index]->fedId();
680  if (FEDID_v_digisum.find(temp_fedid) != FEDID_v_digisum.end()) {
681  if (ndigi_det < 1000 && ndigi_det > 0) {
682  FEDID_v_digisum[temp_fedid] = FEDID_v_digisum.find(temp_fedid)->second + ndigi_det;
683  }
684  } else {
685  if (ndigi_det < 1000 && ndigi_det > 0) {
686  FEDID_v_digisum[temp_fedid] = ndigi_det;
687  }
688  }
689  } else {
690  edm::LogInfo("SiStripMonitorDigi")
691  << "SiStripMonitorDigi::analyze WARNING! no good connections for detid = " << detid << std::endl;
692  }
694 
695  APVShotFinder theShotFinder = APVShotFinder((*(digi_detset_handles[loc]))[detid]);
696  const std::vector<APVShot>& shots = theShotFinder.getShots();
697  AddApvShotsToSubDet(shots, SubDetMEsMap[subdet_label].SubDetApvShots);
698  if (shotshistomapon)
699  tkmapNApvshots->fill(detid, shots.size());
701  FillApvShotsMap(tkmapNstripApvshot.get(), shots, detid, 1);
703  FillApvShotsMap(tkmapMedianChargeApvshots.get(), shots, detid, 2);
704  }
705 
706  if (Mod_On_ && moduleswitchnumdigison && (local_modmes.NumberOfDigis != nullptr))
707  (local_modmes.NumberOfDigis)->Fill(ndigi_det);
708 
710  local_layermes.LayerNumberOfDigisProfile->Fill(iDet * 1.0, ndigi_det);
711 
712  if (digitkhistomapon)
713  tkmapdigi->fill(detid, ndigi_det);
714 
715  if (ndigi_det == 0)
716  continue; // no digis for this detid => jump to next step of loop
717 
718  const edm::DetSet<SiStripDigi>& digi_detset = (*(digi_detset_handles[loc]))[detid];
719 
720  ndigi_layer += ndigi_det;
721 
722  // ADCs
723  int largest_adc = (digi_detset.data.begin())->adc();
724  int smallest_adc = (digi_detset.data.begin())->adc();
725 
726  // Check if these parameters are really needed
727  float det_occupancy = 0.0;
728 
729  for (edm::DetSet<SiStripDigi>::const_iterator digiIter = digi_detset.data.begin();
730  digiIter != digi_detset.data.end();
731  digiIter++) {
732  int this_adc = digiIter->adc();
733 
734  if (this_adc > 0.0)
735  det_occupancy++;
736 
737  if (this_adc > largest_adc)
738  largest_adc = this_adc;
739  if (this_adc < smallest_adc)
740  smallest_adc = this_adc;
741 
742  if (Mod_On_ && moduleswitchnumdigispstripon && (local_modmes.NumberOfDigisPerStrip != nullptr) &&
743  (this_adc > 0.0))
744  (local_modmes.NumberOfDigisPerStrip)->Fill(digiIter->strip());
745 
746  if (Mod_On_ && moduleswitchdigiadcson && (local_modmes.DigiADCs != nullptr))
747  (local_modmes.DigiADCs)->Fill(static_cast<float>(this_adc));
748 
749  //Fill #ADCs for this digi at layer level
750  if (layerswitchdigiadcson) {
751  fillME(local_layermes.LayerDigiADCs, this_adc);
752  if (createTrendMEs)
753  fillTrend(local_layermes.LayerDigiADCsTrend, this_adc, iOrbitVar);
754  }
755 
757  local_layermes.LayerDigiADCProfile->Fill(iDet * 1.0, this_adc);
758 
759  } //end of loop over digis in this det
760 
761  // Occupancy
762  short nstrips = SiStripDetCabling_->nApvPairs(detid) * 2 * 128;
763  if (nstrips > 0 && det_occupancy > 0) {
764  det_occupancy = det_occupancy / nstrips;
765  if (Mod_On_ && moduleswitchstripoccupancyon && (local_modmes.StripOccupancy != nullptr))
766  (local_modmes.StripOccupancy)->Fill(det_occupancy);
768  fillME(local_layermes.LayerStripOccupancy, det_occupancy);
769  if (createTrendMEs)
770  fillTrend(local_layermes.LayerStripOccupancyTrend, det_occupancy, iOrbitVar);
771  }
772  }
773 
774  if (largest_adc > largest_adc_layer)
775  largest_adc_layer = largest_adc;
776  if (smallest_adc < smallest_adc_layer)
777  smallest_adc_layer = smallest_adc;
778 
779  // nr. of adcs for hottest strip
780  if (Mod_On_ && moduleswitchadchotteston && (local_modmes.ADCsHottestStrip != nullptr))
781  (local_modmes.ADCsHottestStrip)->Fill(static_cast<float>(largest_adc));
782 
783  // nr. of adcs for coolest strip
784  if (Mod_On_ && moduleswitchadccooleston && (local_modmes.ADCsCoolestStrip != nullptr))
785  (local_modmes.ADCsCoolestStrip)->Fill(static_cast<float>(smallest_adc));
786 
787  } //end of loop over DetIds
788 
789  if (layerswitchnumdigison) {
790  fillME(local_layermes.LayerNumberOfDigis, ndigi_layer);
791  if (createTrendMEs)
792  fillTrend(local_layermes.LayerNumberOfDigisTrend, ndigi_layer, iOrbitVar);
793  }
795  fillME(local_layermes.LayerADCsHottestStrip, largest_adc_layer);
796  if (createTrendMEs)
797  fillTrend(local_layermes.LayerADCsHottestStripTrend, largest_adc_layer, iOrbitVar);
798  }
800  fillME(local_layermes.LayerADCsCoolestStrip, smallest_adc_layer);
801  if (createTrendMEs)
802  fillTrend(local_layermes.LayerADCsCoolestStripTrend, smallest_adc_layer, iOrbitVar);
803  }
804 
805  std::map<std::string, SubDetMEs>::iterator iSubdet = SubDetMEsMap.find(subdet_label);
806  if (iSubdet != SubDetMEsMap.end()) {
807  iSubdet->second.totNDigis += ndigi_layer;
808  //std::cout << " totDigis" << iSubdet->second.totNDigis << " in " << subdet_label << std::endl;
809  }
810  }
811 
812  bool& isStableBeams = *luminosityBlockCache(iEvent.getLuminosityBlock().index());
814  //check Stable beams bit
816  iEvent.getByToken(gtEvmToken_, gtEvm_handle);
817  L1GlobalTriggerEvmReadoutRecord const* gtevm = gtEvm_handle.product();
818 
819  L1GtfeExtWord gtfeEvmExtWord;
820  if (gtevm) {
821  gtfeEvmExtWord = gtevm->gtfeWord();
822  } else
823  edm::LogInfo("DQMProvInfo") << " gtfeEvmWord inaccessible";
824 
825  /* mia: is there not a smarter way !?!?!?!? */
826  if (gtfeEvmExtWord.beamMode() == 11)
827  isStableBeams = true;
828  }
829 
830  for (std::map<std::string, SubDetMEs>::iterator it = SubDetMEsMap.begin(); it != SubDetMEsMap.end(); it++) {
832  if (strcmp(it->first.c_str(), "TEC__MINUS") == 0) {
833  digiFailureMEs.SubDetTotDigiProfLS->Fill(1, it->second.totNDigis);
834  } else if (strcmp(it->first.c_str(), "TEC__PLUS") == 0) {
835  digiFailureMEs.SubDetTotDigiProfLS->Fill(2, it->second.totNDigis);
836  } else if (strcmp(it->first.c_str(), "TIB") == 0) {
837  digiFailureMEs.SubDetTotDigiProfLS->Fill(3, it->second.totNDigis);
838  } else if (strcmp(it->first.c_str(), "TID__MINUS") == 0) {
839  digiFailureMEs.SubDetTotDigiProfLS->Fill(4, it->second.totNDigis);
840  } else if (strcmp(it->first.c_str(), "TID__PLUS") == 0) {
841  digiFailureMEs.SubDetTotDigiProfLS->Fill(5, it->second.totNDigis);
842  } else if (strcmp(it->first.c_str(), "TOB") == 0) {
843  digiFailureMEs.SubDetTotDigiProfLS->Fill(6, it->second.totNDigis);
844  }
845  }
846 
848  if (strcmp(it->first.c_str(), "TEC__MINUS") == 0) {
849  NApvShotsGlobalProf->Fill(1, it->second.SubDetApvShots.size());
850  } else if (strcmp(it->first.c_str(), "TEC__PLUS") == 0) {
851  NApvShotsGlobalProf->Fill(2, it->second.SubDetApvShots.size());
852  } else if (strcmp(it->first.c_str(), "TIB") == 0) {
853  NApvShotsGlobalProf->Fill(3, it->second.SubDetApvShots.size());
854  } else if (strcmp(it->first.c_str(), "TID__MINUS") == 0) {
855  NApvShotsGlobalProf->Fill(4, it->second.SubDetApvShots.size());
856  } else if (strcmp(it->first.c_str(), "TID__PLUS") == 0) {
857  NApvShotsGlobalProf->Fill(5, it->second.SubDetApvShots.size());
858  } else if (strcmp(it->first.c_str(), "TOB") == 0) {
859  NApvShotsGlobalProf->Fill(6, it->second.SubDetApvShots.size());
860  }
861  }
862 
863  SubDetMEs subdetmes = it->second;
864  std::string subdet = it->first;
865 
866  // Fill APV shots histograms for SubDet
867 
868  uint ShotsSize = subdetmes.SubDetApvShots.size();
869  TotalNShots += ShotsSize; //Counter for total Shots in the SiStrip Tracker
870 
872  subdetmes.SubDetNApvShotsTH1->Fill(ShotsSize); // N shots
874  subdetmes.SubDetNApvShotsProf->Fill(iOrbitVar, ShotsSize); //N shots vs time
875 
876  for (uint i = 0; i < ShotsSize;
877  ++i) { // Strip multiplicity, charge median and APV number distributions for APV shots
878 
880  subdetmes.SubDetNApvShotsNApvTH1->Fill(
881  (subdetmes.SubDetApvShots[i].apvNumber() + 1)); //APV are defined by 0 to 5 I want 1 to 6
883  NApvApvShotsGlobal->Fill((subdetmes.SubDetApvShots[i].apvNumber() + 1));
884 
886  subdetmes.SubDetNStripsApvShotsTH1->Fill(subdetmes.SubDetApvShots[i].nStrips());
888  StripMultiplicityApvShotsGlobal->Fill(subdetmes.SubDetApvShots[i].nStrips());
889 
891  subdetmes.SubDetChargeMedianApvShotsTH1->Fill(subdetmes.SubDetApvShots[i].median());
893  MedianChargeApvShotsGlobal->Fill(subdetmes.SubDetApvShots[i].median());
894  }
895 
897  subdetmes.SubDetTotDigiProf->Fill(iOrbitVar, subdetmes.totNDigis);
898  }
899 
904 
906  std::map<int, int>::iterator it;
907  for (it = FEDID_v_digisum.begin(); it != FEDID_v_digisum.end(); it++) {
908  NumberOfFEDDigis->Fill(it->first, it->second);
909  }
910  }
911 
912  // get EventHistory
913 
914  edm::Handle<EventWithHistory> event_history;
915  iEvent.getByToken(historyProducerToken_, event_history);
916 
917  // get Phase of APV
918  edm::Handle<APVCyclePhaseCollection> apv_phase_collection;
919  iEvent.getByToken(apvPhaseProducerToken_, apv_phase_collection);
920 
921  if (event_history.isValid() && !event_history.failedToGet() && apv_phase_collection.isValid() &&
922  !apv_phase_collection.failedToGet()) {
923  long long tbx = event_history->absoluteBX();
924 
925  for (std::map<std::string, SubDetMEs>::iterator it = SubDetMEsMap.begin(); it != SubDetMEsMap.end(); it++) {
926  SubDetMEs subdetmes;
927  std::string subdet = it->first;
928  subdetmes = it->second;
929 
930  int the_phase = APVCyclePhaseCollection::invalid;
931  long long tbx_corr = tbx;
932 
933  if (SubDetPhasePartMap.find(subdet) != SubDetPhasePartMap.end())
934  the_phase = apv_phase_collection->getPhase(SubDetPhasePartMap[subdet]);
937  the_phase = 30;
938  tbx_corr -= the_phase;
939 
941  subdetmes.SubDetDigiApvProf->Fill(tbx_corr % 70, subdetmes.totNDigis);
943  subdetmes.SubDetDigiApvTH2->Fill(tbx_corr % 70, subdetmes.totNDigis);
944  }
945  }
946 } //end of method analyze
947 //--------------------------------------------------------------------------------------------
949  std::map<uint32_t, ModMEs>::iterator pos = DigiMEs.find(idet);
950  ModMEs mod_me = pos->second;
951 
953  mod_me.NumberOfDigis->Reset();
955  mod_me.NumberOfDigisPerStrip->Reset();
957  mod_me.ADCsHottestStrip->Reset();
959  mod_me.ADCsCoolestStrip->Reset();
961  mod_me.DigiADCs->Reset();
963  mod_me.StripOccupancy->Reset();
964 }
965 //------------------------------------------------------------------------------------------
967  const char* ParameterSetLabel,
968  const char* HistoName) {
969  edm::ParameterSet ParametersTrend = conf_.getParameter<edm::ParameterSet>("Trending");
970  MonitorElement* me =
971  ibooker.bookProfile(HistoName,
972  HistoName,
973  ParametersTrend.getParameter<int32_t>("Nbins"),
974  // 0,
975  ParametersTrend.getParameter<double>("xmin"),
976  ParametersTrend.getParameter<double>("xmax"),
977  // ParametersTrend.getParameter<int32_t>("Nbins"),
978  100, //that parameter should not be there !?
979  ParametersTrend.getParameter<double>("ymin"),
980  ParametersTrend.getParameter<double>("ymax"),
981  "");
982  if (!me)
983  return me;
984 
985  me->setAxisTitle("Lumisection", 1);
986  if (me->kind() == MonitorElement::Kind::TPROFILE)
987  me->getTH1()->SetCanExtend(TH1::kAllAxes);
988  return me;
989 }
990 
991 //------------------------------------------------------------------------------------------
993  const char* ParameterSetLabel,
994  const char* HistoName) {
996  return ibooker.book1D(HistoName,
997  HistoName,
998  Parameters.getParameter<int32_t>("Nbinx"),
999  Parameters.getParameter<double>("xmin"),
1000  Parameters.getParameter<double>("xmax"));
1001 }
1002 
1003 //--------------------------------------------------------------------------------
1004 void SiStripMonitorDigi::fillTrend(MonitorElement* me, float value, float timeinorbit) {
1005  if (!me)
1006  return;
1007  me->Fill(timeinorbit, value);
1008 }
1009 
1010 //
1011 // -- Create Module Level MEs
1012 //
1013 void SiStripMonitorDigi::createModuleMEs(DQMStore::IBooker& ibooker, ModMEs& mod_single, uint32_t detid) {
1014  // use SistripHistoId for producing histogram id (and title)
1015  SiStripHistoId hidmanager;
1016  std::string hid;
1017 
1018  //nr. of digis per module
1019  if (moduleswitchnumdigison) {
1020  hid = hidmanager.createHistoId("NumberOfDigis", "det", detid);
1021  mod_single.NumberOfDigis = ibooker.book1D(hid, hid, 21, -0.5, 20.5);
1022  mod_single.NumberOfDigis->setAxisTitle("number of digis in one detector module");
1023  mod_single.NumberOfDigis->setStatOverflows(kTRUE); // over/underflows in Mean calculation
1024  }
1025 
1026  //nr. of digis per strip in module
1028  hid = hidmanager.createHistoId("NumberOfDigisPerStrip", "det", detid);
1029  short nstrips = SiStripDetCabling_->nApvPairs(detid) * 2 * 128;
1030  mod_single.NumberOfDigisPerStrip = ibooker.book1D(hid, hid, nstrips, -0.5, nstrips + 0.5);
1031  mod_single.NumberOfDigisPerStrip->setAxisTitle("number of (digis > 0) per strip");
1032  mod_single.NumberOfDigisPerStrip->setStatOverflows(kTRUE); // over/underflows in Mean calculation
1033  }
1034  //#ADCs for hottest strip
1036  hid = hidmanager.createHistoId("ADCsHottestStrip", "det", detid);
1037  mod_single.ADCsHottestStrip = bookME1D(ibooker, "TH1ADCsHottestStrip", hid.c_str());
1038  mod_single.ADCsHottestStrip->setAxisTitle("number of ADCs for hottest strip");
1039  }
1040 
1041  //#ADCs for coolest strip
1043  hid = hidmanager.createHistoId("ADCsCoolestStrip", "det", detid);
1044  mod_single.ADCsCoolestStrip = bookME1D(ibooker, "TH1ADCsCoolestStrip", hid.c_str());
1045  mod_single.ADCsCoolestStrip->setAxisTitle("number of ADCs for coolest strip");
1046  }
1047 
1048  //#ADCs for each digi
1049  if (moduleswitchdigiadcson) {
1050  hid = hidmanager.createHistoId("DigiADCs", "det", detid);
1051  mod_single.DigiADCs = bookME1D(ibooker, "TH1DigiADCs", hid.c_str());
1052  mod_single.DigiADCs->setAxisTitle("number of ADCs for each digi");
1053  }
1054 
1055  //Strip occupancy
1057  hid = hidmanager.createHistoId("StripOccupancy", "det", detid);
1058  mod_single.StripOccupancy = bookME1D(ibooker, "TH1StripOccupancy", hid.c_str());
1059  mod_single.StripOccupancy->setAxisTitle("strip occupancy");
1060  }
1061 }
1062 
1063 //
1064 // -- Create Module Level MEs
1065 //
1066 
1067 void SiStripMonitorDigi::createLayerMEs(DQMStore::IBooker& ibooker, std::string label, int ndets) {
1068  std::map<std::string, LayerMEs>::iterator iLayerME = LayerMEsMap.find(label);
1069  if (iLayerME == LayerMEsMap.end()) {
1070  SiStripHistoId hidmanager;
1071  LayerMEs layerMEs;
1072  layerMEs.LayerNumberOfDigis = nullptr;
1073  layerMEs.LayerNumberOfDigisTrend = nullptr;
1074  layerMEs.LayerADCsHottestStrip = nullptr;
1075  layerMEs.LayerADCsHottestStripTrend = nullptr;
1076  layerMEs.LayerADCsCoolestStrip = nullptr;
1077  layerMEs.LayerADCsCoolestStripTrend = nullptr;
1078  layerMEs.LayerDigiADCs = nullptr;
1079  layerMEs.LayerDigiADCsTrend = nullptr;
1080  layerMEs.LayerStripOccupancy = nullptr;
1081  layerMEs.LayerStripOccupancyTrend = nullptr;
1082  layerMEs.LayerNumberOfDigisProfile = nullptr;
1083  layerMEs.LayerDigiADCProfile = nullptr;
1084 
1085  //#Digis
1086  if (layerswitchnumdigison) {
1087  layerMEs.LayerNumberOfDigis =
1088  bookME1D(ibooker,
1089  "TH1NumberOfDigis",
1090  hidmanager.createHistoLayer("Summary_TotalNumberOfDigis", "layer", label, "").c_str());
1091  if (createTrendMEs)
1092  layerMEs.LayerNumberOfDigisTrend =
1093  bookMETrend(ibooker,
1094  "TH1NumberOfDigis",
1095  hidmanager.createHistoLayer("Trend_NumberOfDigis", "layer", label, "").c_str());
1096  }
1097 
1098  //#ADCs for hottest strip
1100  layerMEs.LayerADCsHottestStrip =
1101  bookME1D(ibooker,
1102  "TH1ADCsHottestStrip",
1103  hidmanager.createHistoLayer("Summary_ADCsHottestStrip", "layer", label, "").c_str());
1104  if (createTrendMEs)
1105  layerMEs.LayerADCsHottestStripTrend =
1106  bookMETrend(ibooker,
1107  "TH1ADCsHottestStrip",
1108  hidmanager.createHistoLayer("Trend_ADCsHottestStrip", "layer", label, "").c_str());
1109  }
1110 
1111  //#ADCs for coolest strip
1113  layerMEs.LayerADCsCoolestStrip =
1114  bookME1D(ibooker,
1115  "TH1ADCsCoolestStrip",
1116  hidmanager.createHistoLayer("Summary_ADCsCoolestStrip", "layer", label, "").c_str());
1117  if (createTrendMEs)
1118  layerMEs.LayerADCsCoolestStripTrend =
1119  bookMETrend(ibooker,
1120  "TH1ADCsCoolestStrip",
1121  hidmanager.createHistoLayer("Trend_ADCsCoolestStrip", "layer", label, "").c_str());
1122  }
1123 
1124  //#ADCs for each digi
1125  if (layerswitchdigiadcson) {
1126  layerMEs.LayerDigiADCs =
1127  bookME1D(ibooker, "TH1DigiADCs", hidmanager.createHistoLayer("Summary_DigiADCs", "layer", label, "").c_str());
1128  if (createTrendMEs)
1129  layerMEs.LayerDigiADCsTrend = bookMETrend(
1130  ibooker, "TH1DigiADCs", hidmanager.createHistoLayer("Trend_DigiADCs", "layer", label, "").c_str());
1131  }
1132 
1133  //Strip Occupancy
1135  layerMEs.LayerStripOccupancy =
1136  bookME1D(ibooker,
1137  "TH1StripOccupancy",
1138  hidmanager.createHistoLayer("Summary_StripOccupancy", "layer", label, "").c_str());
1139  if (createTrendMEs)
1140  layerMEs.LayerStripOccupancyTrend =
1141  bookMETrend(ibooker,
1142  "TH1StripOccupancy",
1143  hidmanager.createHistoLayer("Trend_StripOccupancy", "layer", label, "").c_str());
1144  }
1145  // # of Digis
1147  std::string hid = hidmanager.createHistoLayer("NumberOfDigiProfile", "layer", label, "");
1148  layerMEs.LayerNumberOfDigisProfile = ibooker.bookProfile(hid, hid, ndets, 0.5, ndets + 0.5, 21, -0.5, 200.5);
1149  }
1150 
1151  // # of Digis
1153  std::string hid = hidmanager.createHistoLayer("DigiADCProfile", "layer", label, "");
1154  layerMEs.LayerDigiADCProfile = ibooker.bookProfile(hid, hid, ndets, 0.5, ndets + 0.5, 64, -0.5, 255.5);
1155  }
1156 
1157  LayerMEsMap[label] = layerMEs;
1158  }
1159 }
1160 //
1161 // -- Create SubDetector MEs
1162 //
1163 void SiStripMonitorDigi::createSubDetMEs(DQMStore::IBooker& ibooker, std::string label) {
1164  SubDetMEs subdetMEs;
1165  subdetMEs.totNDigis = 0;
1166  subdetMEs.SubDetTotDigiProf = nullptr;
1167  subdetMEs.SubDetDigiApvProf = nullptr;
1168  subdetMEs.SubDetDigiApvTH2 = nullptr;
1169 
1170  subdetMEs.SubDetApvShots.clear();
1171  subdetMEs.SubDetNApvShotsTH1 = nullptr;
1172  subdetMEs.SubDetChargeMedianApvShotsTH1 = nullptr;
1173  subdetMEs.SubDetNStripsApvShotsTH1 = nullptr;
1174  subdetMEs.SubDetNApvShotsProf = nullptr;
1175 
1177 
1178  // Total Number of Digi - Profile
1180  edm::ParameterSet Parameters = conf_.getParameter<edm::ParameterSet>("TProfTotalNumberOfDigis");
1181  HistoName = "TotalNumberOfDigiProfile__" + label;
1182  subdetMEs.SubDetTotDigiProf = ibooker.bookProfile(HistoName,
1183  HistoName,
1184  Parameters.getParameter<int32_t>("Nbins"),
1185  Parameters.getParameter<double>("xmin"),
1186  Parameters.getParameter<double>("xmax"),
1187  100, //that parameter should not be there !?
1188  Parameters.getParameter<double>("ymin"),
1189  Parameters.getParameter<double>("ymax"),
1190  "");
1191  subdetMEs.SubDetTotDigiProf->setAxisTitle("Lumisection", 1);
1192 
1194  subdetMEs.SubDetTotDigiProf->getTH1()->SetCanExtend(TH1::kAllAxes);
1195  }
1196 
1197  // Number of Digi vs Bx - Profile
1200  HistoName = "Digi_vs_ApvCycle__" + label;
1201  subdetMEs.SubDetDigiApvProf = ibooker.bookProfile(HistoName,
1202  HistoName,
1203  Parameters.getParameter<int32_t>("Nbins"),
1204  Parameters.getParameter<double>("xmin"),
1205  Parameters.getParameter<double>("xmax"),
1206  200, //that parameter should not be there !?
1207  Parameters.getParameter<double>("ymin"),
1208  Parameters.getParameter<double>("ymax"),
1209  "");
1210  subdetMEs.SubDetDigiApvProf->setAxisTitle("ApvCycle (Corrected Absolute Bx % 70)", 1);
1211  }
1212 
1213  // Number of Digi vs Bx - TH2
1216  //dqmStore_->setCurrentFolder("SiStrip/MechanicalView/"+label);
1217  HistoName = "Digi_vs_ApvCycle_2D__" + label;
1218  // Adjusting the scale for 2D histogram
1219  double h2ymax = 9999.0;
1220  double yfact = Parameters.getParameter<double>("yfactor");
1221  if (label.find("TIB") != std::string::npos)
1222  h2ymax = (6984. * 256.) * yfact;
1223  else if (label.find("TID") != std::string::npos)
1224  h2ymax = (2208. * 256.) * yfact;
1225  else if (label.find("TOB") != std::string::npos)
1226  h2ymax = (12906. * 256.) * yfact;
1227  else if (label.find("TEC") != std::string::npos)
1228  h2ymax = (7552. * 2. * 256.) * yfact;
1229  subdetMEs.SubDetDigiApvTH2 =
1230  ibooker.book2D(HistoName,
1231  HistoName,
1232  Parameters.getParameter<int32_t>("Nbins"),
1233  Parameters.getParameter<double>("xmin"),
1234  Parameters.getParameter<double>("xmax"),
1235  Parameters.getParameter<int32_t>("Nbinsy"), //it was 100 that parameter should not be there !?
1236  Parameters.getParameter<double>("ymin"),
1237  h2ymax);
1238  subdetMEs.SubDetDigiApvTH2->setAxisTitle("absolute Bx mod(70)", 1);
1239  }
1240 
1241  //Number of APV Shots
1244  //dqmStore_->setCurrentFolder("SiStrip/MechanicalView/"+label);
1245  HistoName = "Number_of_Apv_Shots_" + label;
1246  subdetMEs.SubDetNApvShotsTH1 = ibooker.book1D(HistoName,
1247  HistoName,
1248  Parameters.getParameter<int32_t>("Nbins"),
1249  Parameters.getParameter<double>("xmin"),
1250  Parameters.getParameter<double>("xmax"));
1251  subdetMEs.SubDetNApvShotsTH1->setAxisTitle("# Apv Shots", 1);
1252  }
1253 
1254  //Strip multiplicity of APV Shots
1257  //dqmStore_->setCurrentFolder("SiStrip/MechanicalView/"+label);
1258  HistoName = "Number_of_Strips_in_Apv_Shots_" + label;
1259  subdetMEs.SubDetNStripsApvShotsTH1 = ibooker.book1D(HistoName,
1260  HistoName,
1261  Parameters.getParameter<int32_t>("Nbins"),
1262  Parameters.getParameter<double>("xmin"),
1263  Parameters.getParameter<double>("xmax"));
1264  subdetMEs.SubDetNStripsApvShotsTH1->setAxisTitle("# strips in Apv Shots", 1);
1265  }
1266 
1267  //Charge median of APV Shots
1269  edm::ParameterSet Parameters = conf_.getParameter<edm::ParameterSet>("TH1ChargeMedianApvShots");
1270  //dqmStore_->setCurrentFolder("SiStrip/MechanicalView/"+label);
1271  HistoName = "Apv_Shots_Charge_Median_" + label;
1272  subdetMEs.SubDetChargeMedianApvShotsTH1 = ibooker.book1D(HistoName,
1273  HistoName,
1274  Parameters.getParameter<int32_t>("Nbins"),
1275  Parameters.getParameter<double>("xmin"),
1276  Parameters.getParameter<double>("xmax"));
1277  subdetMEs.SubDetChargeMedianApvShotsTH1->setAxisTitle("Apv Shots Charge Median (ADC)", 1);
1278  }
1279 
1282  //dqmStore_->setCurrentFolder("SiStrip/MechanicalView/"+label);
1283  HistoName = "Apv_Shots_Apv_Number_" + label;
1284  subdetMEs.SubDetNApvShotsNApvTH1 = ibooker.book1D(HistoName,
1285  HistoName,
1286  Parameters.getParameter<int32_t>("Nbins"),
1287  Parameters.getParameter<double>("xmin"),
1288  Parameters.getParameter<double>("xmax"));
1289  subdetMEs.SubDetNApvShotsNApvTH1->setAxisTitle("Apv Number", 1);
1290  }
1291 
1292  //APV Shots number Vs time
1295  HistoName = "NApv_Shots_vs_Time_" + label;
1296  subdetMEs.SubDetNApvShotsProf = ibooker.bookProfile(HistoName,
1297  HistoName,
1298  Parameters.getParameter<int32_t>("Nbins"),
1299  Parameters.getParameter<double>("xmin"),
1300  Parameters.getParameter<double>("xmax"),
1301  200, //that parameter should not be there !?
1302  Parameters.getParameter<double>("ymin"),
1303  Parameters.getParameter<double>("ymax"),
1304  "");
1305  subdetMEs.SubDetNApvShotsProf->setAxisTitle("Time (s)", 1);
1306  subdetMEs.SubDetNApvShotsProf->setAxisTitle("# Apv Shots", 2);
1308  subdetMEs.SubDetNApvShotsProf->getTH1()->SetCanExtend(TH1::kAllAxes);
1309  }
1310 
1311  SubDetMEsMap[label] = subdetMEs;
1312 }
1313 //
1314 // -- Get DetSet vector for a given Detector
1315 //
1317  int location = -1;
1318  for (unsigned int ival = 0; ival < digi_detset_handles.size(); ++ival) {
1320  if (isearch != digi_detset_handles[ival]->end()) {
1321  location = ival;
1322  break;
1323  }
1324  }
1325  return location;
1326 }
1327 
1328 void SiStripMonitorDigi::AddApvShotsToSubDet(const std::vector<APVShot>& moduleShots,
1329  std::vector<APVShot>& subdetShots) {
1330  for (uint i = 0; i < moduleShots.size(); i++) {
1331  subdetShots.push_back(moduleShots[i]);
1332  }
1333 }
1334 
1335 void SiStripMonitorDigi::FillApvShotsMap(TkHistoMap* the_map, const std::vector<APVShot>& shots, uint32_t id, int mode) {
1336  for (uint i = 0; i < shots.size(); i++) {
1337  if (mode == 1)
1338  the_map->fill(id, shots[i].nStrips()); //mode == 1 fill with strip multiplicity
1339  if (mode == 2)
1340  the_map->fill(id, shots[i].median()); // mode == 2 fill with charge median
1341  }
1342 }
1343 
1344 //define this as a plug-in
SiStripMonitorDigi::LayerMEs::LayerADCsCoolestStrip
MonitorElement * LayerADCsCoolestStrip
Definition: SiStripMonitorDigi.h:61
SiStripHistoId::createHistoLayer
std::string createHistoLayer(std::string description, std::string id_type, std::string path, std::string flag)
Definition: SiStripHistoId.cc:51
edm::ESHandle::product
T const * product() const
Definition: ESHandle.h:86
SiStripMonitorDigi::globalEndLuminosityBlock
void globalEndLuminosityBlock(const edm::LuminosityBlock &lumi, const edm::EventSetup &iSetup) override
Definition: SiStripMonitorDigi.cc:278
edm::DetSetVector< SiStripDigi >
SiStripMonitorDigi::nFedTECp
int nFedTECp
Definition: SiStripMonitorDigi.h:207
SiStripMonitorDigi::LayerMEs::LayerADCsHottestStripTrend
MonitorElement * LayerADCsHottestStripTrend
Definition: SiStripMonitorDigi.h:60
SiStripDetCabling::addActiveDetectorsRawIds
void addActiveDetectorsRawIds(std::vector< uint32_t > &) const
Definition: SiStripDetCabling.cc:134
ecalMGPA::adc
constexpr int adc(sample_type sample)
get the ADC sample (12 bits)
Definition: EcalMGPASample.h:11
dqm::impl::MonitorElement
Definition: MonitorElement.h:98
SiStripMonitorDigi::SubDetMEs::SubDetNApvShotsNApvTH1
MonitorElement * SubDetNApvShotsNApvTH1
Definition: SiStripMonitorDigi.h:83
SiStripMonitorDigi::nFedTIB
int nFedTIB
Definition: SiStripMonitorDigi.h:204
Handle.h
SiStripDCSStatus
Definition: SiStripDCSStatus.h:19
mps_fire.i
i
Definition: mps_fire.py:355
SiStripMonitorDigi::SubDetMEs::SubDetDigiApvProf
MonitorElement * SubDetDigiApvProf
Definition: SiStripMonitorDigi.h:74
SiStripMonitorDigi::layerswitchstripoccupancyon
bool layerswitchstripoccupancyon
Definition: SiStripMonitorDigi.h:169
SiStripMonitorDigi::nFedTOB
int nFedTOB
Definition: SiStripMonitorDigi.h:209
SiStripMonitorDigi::LayerMEs::LayerADCsCoolestStripTrend
MonitorElement * LayerADCsCoolestStripTrend
Definition: SiStripMonitorDigi.h:62
MessageLogger.h
SiStripFolderOrganizer.h
funct::false
false
Definition: Factorize.h:34
SiStripHistoId.h
SiStripMonitorDigi::integrateNLumisections_
int integrateNLumisections_
Definition: SiStripMonitorDigi.h:201
SiStripMonitorDigi::moduleswitchadccooleston
bool moduleswitchadccooleston
Definition: SiStripMonitorDigi.h:176
SiStripMonitorDigi::SubDetPhasePartMap
std::map< std::string, std::string > SubDetPhasePartMap
Definition: SiStripMonitorDigi.h:140
edm::Handle::product
T const * product() const
Definition: Handle.h:70
DcsStatus.h
SiStripSubStructure::getTIDDetectors
void getTIDDetectors(const std::vector< uint32_t > &inputDetRawIds, std::vector< uint32_t > &tidDetRawIds, const TrackerTopology *trackerTopology, uint32_t side=0, uint32_t wheel=0, uint32_t ring=0, uint32_t ster=0)
SiStripMonitorDigi::subdetswitchapvcycleth2on
bool subdetswitchapvcycleth2on
Definition: SiStripMonitorDigi.h:182
SiStripMonitorDigi::NumberOfFEDDigis
MonitorElement * NumberOfFEDDigis
Definition: SiStripMonitorDigi.h:91
ESHandle.h
SiStripSubStructure::getTIBDetectors
void getTIBDetectors(const std::vector< uint32_t > &inputDetRawIds, std::vector< uint32_t > &tibDetRawIds, const TrackerTopology *trackerTopology, uint32_t layer=0, uint32_t bkw_frw=0, uint32_t int_ext=0, uint32_t string=0)
APVCyclePhaseCollection::multiphase
Definition: APVCyclePhaseCollection.h:21
SiStripMonitorDigi::LayerMEs::LayerDigiADCs
MonitorElement * LayerDigiADCs
Definition: SiStripMonitorDigi.h:63
edm::DetSet< SiStripDigi >
edm::LuminosityBlock
Definition: LuminosityBlock.h:50
SiStripMonitorDigi::SBDeclaredAt
int SBDeclaredAt
Definition: SiStripMonitorDigi.h:202
edm::Run
Definition: Run.h:45
SiStripMonitorDigi::DigiMEs
std::map< uint32_t, ModMEs > DigiMEs
Definition: SiStripMonitorDigi.h:133
edm::LuminosityBlock::index
LuminosityBlockIndex index() const
Definition: LuminosityBlock.cc:20
SiStripDCSStatus.h
TrackerTopology
Definition: TrackerTopology.h:16
pos
Definition: PixelAliasList.h:18
SiStripMonitorDigi::globalswitchapvshotsonprof
bool globalswitchapvshotsonprof
Definition: SiStripMonitorDigi.h:194
L1GlobalTriggerEvmReadoutRecord::gtfeWord
const L1GtfeExtWord gtfeWord() const
get / set GTFE word (record) in the GT readout record
Definition: L1GlobalTriggerEvmReadoutRecord.cc:249
ALCARECOPromptCalibProdSiPixelAli0T_cff.mode
mode
Definition: ALCARECOPromptCalibProdSiPixelAli0T_cff.py:96
edm::LogInfo
Definition: MessageLogger.h:254
SiStripMonitorDigi::LayerMEs
Definition: SiStripMonitorDigi.h:56
SiStripMonitorDigi::SubDetMEs::SubDetTotDigiProf
MonitorElement * SubDetTotDigiProf
Definition: SiStripMonitorDigi.h:73
SiStripMonitorDigi::reset_each_run
bool reset_each_run
Definition: SiStripMonitorDigi.h:134
SiStripMonitorDigi::MedianChargeApvShotsGlobal
MonitorElement * MedianChargeApvShotsGlobal
Definition: SiStripMonitorDigi.h:153
SiStripMonitorDigi::moduleswitchdigiadcson
bool moduleswitchdigiadcson
Definition: SiStripMonitorDigi.h:177
edm::EDConsumerBase::consumesCollector
ConsumesCollector consumesCollector()
Use a ConsumesCollector to gather consumes information from helper functions.
Definition: EDConsumerBase.cc:71
DQMStore.h
RunInfo::m_fed_in
std::vector< int > m_fed_in
Definition: RunInfo.h:25
dqm::legacy::MonitorElement
Definition: MonitorElement.h:461
SiStripMonitorDigi::LayerMEs::LayerDigiADCProfile
MonitorElement * LayerDigiADCProfile
Definition: SiStripMonitorDigi.h:68
EventWithHistory.h
SiStripMonitorDigi::moduleswitchnumdigison
bool moduleswitchnumdigison
Definition: SiStripMonitorDigi.h:173
SiStripMonitorDigi::firstEvent
int firstEvent
Definition: SiStripMonitorDigi.h:159
DDAxes::x
SiStripMonitorDigi::gtEvmToken_
edm::EDGetTokenT< L1GlobalTriggerEvmReadoutRecord > gtEvmToken_
Definition: SiStripMonitorDigi.h:229
SiStripMonitorDigi::nFedTIDm
int nFedTIDm
Definition: SiStripMonitorDigi.h:206
SiStripMonitorDigi::SubDetMEs::SubDetNApvShotsProf
MonitorElement * SubDetNApvShotsProf
Definition: SiStripMonitorDigi.h:82
edm::Handle
Definition: AssociativeIterator.h:50
dqm::impl::MonitorElement::kind
Kind kind() const
Get the type of the monitor element.
Definition: MonitorElement.h:247
parallelization.uint
uint
Definition: parallelization.py:124
SiStripMonitorDigi
Definition: SiStripMonitorDigi.h:34
SiStripMonitorDigi::subdetswitchchargemedianapvshotson
bool subdetswitchchargemedianapvshotson
Definition: SiStripMonitorDigi.h:189
end
#define end
Definition: vmac.h:39
SiStripMonitorDigi::LayerMEs::LayerNumberOfDigisTrend
MonitorElement * LayerNumberOfDigisTrend
Definition: SiStripMonitorDigi.h:58
SiStripMonitorDigi::show_mechanical_structure_view
bool show_mechanical_structure_view
Definition: SiStripMonitorDigi.h:134
SiStripMonitorDigi::createTrendMEs
bool createTrendMEs
Definition: SiStripMonitorDigi.h:219
SiStripMonitorDigi::layerswitchdigiadcprofon
bool layerswitchdigiadcprofon
Definition: SiStripMonitorDigi.h:171
SiStripMonitorDigi::LayerMEs::LayerDigiADCsTrend
MonitorElement * LayerDigiADCsTrend
Definition: SiStripMonitorDigi.h:64
SiStripFolderOrganizer::GetSubDetAndLayer
std::pair< std::string, int32_t > GetSubDetAndLayer(const uint32_t &detid, const TrackerTopology *tTopo, bool ring_flag=false)
Definition: SiStripFolderOrganizer.cc:106
SiStripMonitorDigi::subdetswitchtotdigiprofon
bool subdetswitchtotdigiprofon
Definition: SiStripMonitorDigi.h:180
SiStripMonitorDigi::shotschargehistomapon
bool shotschargehistomapon
Definition: SiStripMonitorDigi.h:217
SiStripMonitorDigi::digi_detset_handles
std::vector< const edm::DetSetVector< SiStripDigi > * > digi_detset_handles
Definition: SiStripMonitorDigi.h:146
SiStripMonitorDigi::ModMEs::StripOccupancy
MonitorElement * StripOccupancy
Definition: SiStripMonitorDigi.h:53
SiStripMonitorDigi::ModMEs::NumberOfDigisPerStrip
MonitorElement * NumberOfDigisPerStrip
Definition: SiStripMonitorDigi.h:49
SiStripMonitorDigi::layerswitchnumdigisprofon
bool layerswitchnumdigisprofon
Definition: SiStripMonitorDigi.h:170
SiStripMonitorDigi::LayerMEs::LayerNumberOfDigis
MonitorElement * LayerNumberOfDigis
Definition: SiStripMonitorDigi.h:57
contentValuesCheck.ss
ss
Definition: contentValuesCheck.py:33
L1GlobalTriggerEvmReadoutRecord.h
SiStripMonitorDigi::nFedTIDp
int nFedTIDp
Definition: SiStripMonitorDigi.h:205
SiStripMonitorDigi::apvPhaseProducer_
edm::InputTag apvPhaseProducer_
Definition: SiStripMonitorDigi.h:225
SiStripDetCabling.h
edm::EventSetup::tryToGet
std::optional< T > tryToGet() const
Definition: EventSetup.h:94
TkHistoMap::fill
void fill(DetId detid, float value)
Definition: TkHistoMap.cc:176
TrackerTopologyRcd.h
SiStripMonitorDigi::LayerMEsMap
std::map< std::string, LayerMEs > LayerMEsMap
Definition: SiStripMonitorDigi.h:138
edm::EventSetup::get
T get() const
Definition: EventSetup.h:73
DEFINE_FWK_MODULE
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
SiStripMonitorDigi::vecSubDetTotDigiProfLS
std::vector< float > vecSubDetTotDigiProfLS
Definition: SiStripMonitorDigi.h:223
SiStripMonitorDigi::ModMEs::ADCsCoolestStrip
MonitorElement * ADCsCoolestStrip
Definition: SiStripMonitorDigi.h:51
L1GlobalTriggerEvmReadoutRecord
Definition: L1GlobalTriggerEvmReadoutRecord.h:36
GlobalPosition_Frontier_DevDB_cff.tag
tag
Definition: GlobalPosition_Frontier_DevDB_cff.py:11
Service.h
SiStripMonitorDigi::SiStripMonitorDigi
SiStripMonitorDigi(const edm::ParameterSet &)
Definition: SiStripMonitorDigi.cc:49
SiStripMonitorDigi::subdetswitchapvcycleprofon
bool subdetswitchapvcycleprofon
Definition: SiStripMonitorDigi.h:181
SiStripDigi.h
SiStripMonitorDigi::moduleswitchstripoccupancyon
bool moduleswitchstripoccupancyon
Definition: SiStripMonitorDigi.h:178
dqm::impl::MonitorElement::Fill
void Fill(long long x)
Definition: MonitorElement.h:290
SiStripMonitorDigi::bookHistograms
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
Definition: SiStripMonitorDigi.cc:202
SiStripMonitorDigi::SubDetMEs::SubDetNApvShotsTH1
MonitorElement * SubDetNApvShotsTH1
Definition: SiStripMonitorDigi.h:79
SiStripMonitorDigi::createSubDetMEs
void createSubDetMEs(DQMStore::IBooker &ibooker, std::string label)
Definition: SiStripMonitorDigi.cc:1163
dqm::impl::MonitorElement::Reset
virtual void Reset()
Remove all data from the ME, keept the empty histogram with all its settings.
Definition: MonitorElement.cc:354
SiStripMonitorDigi::moduleswitchadchotteston
bool moduleswitchadchotteston
Definition: SiStripMonitorDigi.h:175
edm::ESHandle< SiStripDetCabling >
SiStripMonitorDigi::globalswitchNDigisFEDID
bool globalswitchNDigisFEDID
Definition: SiStripMonitorDigi.h:197
SiStripSubStructure::getTECDetectors
void getTECDetectors(const std::vector< uint32_t > &inputDetRawIds, std::vector< uint32_t > &tecDetRawIds, const TrackerTopology *trackerTopology, uint32_t side=0, uint32_t wheel=0, uint32_t petal_bkw_frw=0, uint32_t petal=0, uint32_t ring=0, uint32_t ster=0)
SiStripMonitorDigi::getDigiSourceIndex
int getDigiSourceIndex(uint32_t id)
Definition: SiStripMonitorDigi.cc:1316
SiStripMonitorDigi::globalswitchchargemedianapvshotson
bool globalswitchchargemedianapvshotson
Definition: SiStripMonitorDigi.h:195
TkDetMap
Definition: TkDetMap.h:175
SiStripMonitorDigi::historyProducer_
edm::InputTag historyProducer_
Definition: SiStripMonitorDigi.h:224
SiStripMonitorDigi::runNb
int runNb
Definition: SiStripMonitorDigi.h:158
SiStripMonitorDigi::NApvApvShotsGlobal
MonitorElement * NApvApvShotsGlobal
Definition: SiStripMonitorDigi.h:153
L1GtFdlWord.h
SiStripMonitorDigi::digiFailureMEs
DigiFailureMEs digiFailureMEs
Definition: SiStripMonitorDigi.h:141
SiStripMonitorDigi::NApvShotsGlobal
MonitorElement * NApvShotsGlobal
Definition: SiStripMonitorDigi.h:153
SiStripDetCablingRcd
Definition: SiStripDependentRecords.h:19
SiStripFolderOrganizer::getSubDetFolderAndTag
std::pair< const std::string, const char * > getSubDetFolderAndTag(const uint32_t &detid, const TrackerTopology *tTopo)
Definition: SiStripFolderOrganizer.cc:475
dqm::impl::MonitorElement::getTH1
virtual TH1 * getTH1()
Definition: MonitorElement.cc:969
SiStripMonitorDigi::globalswitchnapvshotson
bool globalswitchnapvshotson
Definition: SiStripMonitorDigi.h:192
SiStripMonitorDigi::fillME
void fillME(MonitorElement *ME, float value1)
Definition: SiStripMonitorDigi.h:102
SiStripMonitorDigi::layerswitchnumdigison
bool layerswitchnumdigison
Definition: SiStripMonitorDigi.h:164
RunInfoRcd
Definition: RunSummaryRcd.h:26
SiStripMonitorDigi::AddApvShotsToSubDet
void AddApvShotsToSubDet(const std::vector< APVShot > &, std::vector< APVShot > &)
Definition: SiStripMonitorDigi.cc:1328
SiStripMonitorDigi::bookME1D
MonitorElement * bookME1D(DQMStore::IBooker &ibooker, const char *ParameterSetLabel, const char *HistoName)
Definition: SiStripMonitorDigi.cc:992
AlCaHLTBitMon_QueryRunRegistry.string
string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
SiStripMonitorDigi::globalsummaryapvshotson
bool globalsummaryapvshotson
Definition: SiStripMonitorDigi.h:162
SiStripMonitorDigi::tkmapNstripApvshot
std::unique_ptr< TkHistoMap > tkmapNstripApvshot
Definition: SiStripMonitorDigi.h:156
funct::true
true
Definition: Factorize.h:173
SiStripConstants.h
SiStripMonitorDigi::globalswitchapvshotsApvon
bool globalswitchapvshotsApvon
Definition: SiStripMonitorDigi.h:196
SiStripMonitorDigi::dcsStatus_
SiStripDCSStatus * dcsStatus_
Definition: SiStripMonitorDigi.h:231
edm::HandleBase::failedToGet
bool failedToGet() const
Definition: HandleBase.h:72
SiStripMonitorDigi.h
SiStripMonitorDigi::nFedTECm
int nFedTECm
Definition: SiStripMonitorDigi.h:208
edm::ParameterSet
Definition: ParameterSet.h:36
SiStripMonitorDigi::topFolderName_
std::string topFolderName_
Definition: SiStripMonitorDigi.h:45
SiStripMonitorDigi::digitkhistomapon
bool digitkhistomapon
Definition: SiStripMonitorDigi.h:214
SiStripMonitorDigi::dqmBeginRun
void dqmBeginRun(const edm::Run &r, const edm::EventSetup &c) override
Definition: SiStripMonitorDigi.cc:221
SiStripMonitorDigi::StripMultiplicityApvShotsGlobal
MonitorElement * StripMultiplicityApvShotsGlobal
Definition: SiStripMonitorDigi.h:153
SiStripMonitorDigi::SubDetMEsMap
std::map< std::string, SubDetMEs > SubDetMEsMap
Definition: SiStripMonitorDigi.h:139
SiStripMonitorDigi::FillApvShotsMap
void FillApvShotsMap(TkHistoMap *, const std::vector< APVShot > &, uint32_t id, int)
Definition: SiStripMonitorDigi.cc:1335
edm::DetSetVector::const_iterator
collection_type::const_iterator const_iterator
Definition: DetSetVector.h:102
EventWithHistory::absoluteBX
long long absoluteBX(const unsigned int ev1) const
Definition: EventWithHistory.cc:292
SiStripMonitorDigi::SiStripDetCabling_
edm::ESHandle< SiStripDetCabling > SiStripDetCabling_
Definition: SiStripMonitorDigi.h:149
APVCyclePhaseCollection.h
SiStripMonitorDigi::folder_organizer
SiStripFolderOrganizer folder_organizer
Definition: SiStripMonitorDigi.h:144
SiStripMonitorDigi::ModMEs::ADCsHottestStrip
MonitorElement * ADCsHottestStrip
Definition: SiStripMonitorDigi.h:50
pfParticleNetPreprocessParams_cfi.median
median
Definition: pfParticleNetPreprocessParams_cfi.py:16
createfilelist.int
int
Definition: createfilelist.py:10
iEvent
int iEvent
Definition: GenABIO.cc:224
SiStripMonitorDigi::ShotsVsTimeApvShotsGlobal
MonitorElement * ShotsVsTimeApvShotsGlobal
Definition: SiStripMonitorDigi.h:153
edm::LuminosityBlockID::luminosityBlock
LuminosityBlockNumber_t luminosityBlock() const
Definition: LuminosityBlockID.h:42
edm::LuminosityBlockBase::id
LuminosityBlockID id() const
Definition: LuminosityBlockBase.h:44
SiStripMonitorDigi::apvPhaseProducerToken_
edm::EDGetTokenT< APVCyclePhaseCollection > apvPhaseProducerToken_
Definition: SiStripMonitorDigi.h:228
value
Definition: value.py:1
SiStripMonitorDigi::historyProducerToken_
edm::EDGetTokenT< EventWithHistory > historyProducerToken_
Definition: SiStripMonitorDigi.h:227
dqm::impl::MonitorElement::setBinLabel
virtual void setBinLabel(int bin, const std::string &label, int axis=1)
set bin label for x, y or z axis (axis=1, 2, 3 respectively)
Definition: MonitorElement.cc:771
cscdqm::HistoName
std::string HistoName
Definition: CSCDQM_HistoDef.h:32
SiStripMonitorDigi::~SiStripMonitorDigi
~SiStripMonitorDigi() override
Definition: SiStripMonitorDigi.cc:197
SiStripMonitorDigi::LayerDetMap
std::map< std::string, std::vector< uint32_t > > LayerDetMap
Definition: SiStripMonitorDigi.h:137
SiStripMonitorDigi::SBTransitionDone
bool SBTransitionDone
Definition: SiStripMonitorDigi.h:203
SiStripMonitorDigi::SubDetMEs::SubDetChargeMedianApvShotsTH1
MonitorElement * SubDetChargeMedianApvShotsTH1
Definition: SiStripMonitorDigi.h:80
dqm::impl::MonitorElement::setStatOverflows
virtual DQM_DEPRECATED void setStatOverflows(unsigned int value)
Definition: MonitorElement.cc:907
Max
T Max(T a, T b)
Definition: MathUtil.h:44
edm::EventSetup
Definition: EventSetup.h:57
DetSetVector.h
SiStripMonitorDigi::DigiFailureMEs::SubDetDigiFailures2D
MonitorElement * SubDetDigiFailures2D
Definition: SiStripMonitorDigi.h:88
SiStripMonitorDigi::SubDetMEs::SubDetApvShots
std::vector< APVShot > SubDetApvShots
Definition: SiStripMonitorDigi.h:78
SiStripMonitorDigi::digiProducerTokenList
std::vector< edm::EDGetTokenT< edm::DetSetVector< SiStripDigi > > > digiProducerTokenList
Definition: SiStripMonitorDigi.h:130
SiStripMonitorDigi::m_cacheID_
unsigned long long m_cacheID_
Definition: SiStripMonitorDigi.h:148
get
#define get
SiStripHistoId::createHistoId
std::string createHistoId(std::string description, std::string id_type, uint32_t component_id)
Definition: SiStripHistoId.cc:26
SiStripMonitorDigi::ModMEs
Definition: SiStripMonitorDigi.h:47
edm::ESHandleBase::isValid
bool isValid() const
Definition: ESHandle.h:44
SiStripMonitorDigi::SubDetMEs::totNDigis
int totNDigis
Definition: SiStripMonitorDigi.h:72
HcalObjRepresent::Fill
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
Definition: HcalObjRepresent.h:1053
L1GtfeExtWord
Definition: L1GtfeExtWord.h:31
SiStripFolderOrganizer::setDetectorFolder
void setDetectorFolder(uint32_t rawdetid, const TrackerTopology *tTopo)
Definition: SiStripFolderOrganizer.cc:202
me0TriggerPseudoDigis_cff.nStrips
nStrips
1.2 is to make the matching window safely the two nearest strips 0.35 is the size of an ME0 chamber i...
Definition: me0TriggerPseudoDigis_cff.py:26
SiStripMonitorDigi::SubDetMEs
Definition: SiStripMonitorDigi.h:71
SiStripMonitorDigi::shotsstripshistomapon
bool shotsstripshistomapon
Definition: SiStripMonitorDigi.h:216
TkHistoMap
Definition: TkHistoMap.h:12
edm::ParameterSet::getParameter
T getParameter(std::string const &) const
SiStripMonitorDigi::LayerMEs::LayerNumberOfDigisProfile
MonitorElement * LayerNumberOfDigisProfile
Definition: SiStripMonitorDigi.h:67
SiStripMonitorDigi::ignoreFirstNLumisections_
int ignoreFirstNLumisections_
Definition: SiStripMonitorDigi.h:200
RunInfo.h
SiStripMonitorDigi::ModMEs::NumberOfDigis
MonitorElement * NumberOfDigis
Definition: SiStripMonitorDigi.h:48
SiStripHistoId
Definition: SiStripHistoId.h:25
APVCyclePhaseCollection::nopartition
Definition: APVCyclePhaseCollection.h:21
SiStripDCSStatus::getStatus
bool getStatus(edm::Event const &e, edm::EventSetup const &eSetup)
Definition: SiStripDCSStatus.cc:42
SiStripMonitorDigi::bookMETrend
MonitorElement * bookMETrend(DQMStore::IBooker &ibooker, const char *ParameterSetLabel, const char *HistoName)
Definition: SiStripMonitorDigi.cc:966
writedatasetfile.run
run
Definition: writedatasetfile.py:27
SiStripMonitorDigi::globalBeginLuminosityBlock
std::shared_ptr< bool > globalBeginLuminosityBlock(const edm::LuminosityBlock &lumi, const edm::EventSetup &iSetup) const override
Definition: SiStripMonitorDigi.cc:271
SiStripSubStructure::getTOBDetectors
void getTOBDetectors(const std::vector< uint32_t > &inputDetRawIds, std::vector< uint32_t > &tobDetRawIds, const TrackerTopology *trackerTopology, uint32_t layer=0, uint32_t bkw_frw=0, uint32_t rod=0)
FedChannelConnection.h
SiStripMonitorDigi::eventNb
int eventNb
Definition: SiStripMonitorDigi.h:158
SiStripMonitorDigi::DigiFailureMEs::SubDetTotDigiProfLS
MonitorElement * SubDetTotDigiProfLS
Definition: SiStripMonitorDigi.h:87
APVShotFinder
Definition: APVShotFinder.h:16
SiStripFolderOrganizer::setLayerFolder
void setLayerFolder(uint32_t rawdetid, const TrackerTopology *tTopo, int32_t layer=0, bool ring_flag=false)
Definition: SiStripFolderOrganizer.cc:304
SiStripFolderOrganizer
Definition: SiStripFolderOrganizer.h:27
SiStripDetCabling::nApvPairs
const uint16_t nApvPairs(uint32_t det_id) const
Definition: SiStripDetCabling.cc:209
SiStripMonitorDigi::conf_
edm::ParameterSet conf_
Definition: SiStripMonitorDigi.h:129
SiStripMonitorDigi::layerswitchdigiadcson
bool layerswitchdigiadcson
Definition: SiStripMonitorDigi.h:168
SiStripMonitorDigi::globalswitchnstripsapvshotson
bool globalswitchnstripsapvshotson
Definition: SiStripMonitorDigi.h:193
SiStripMonitorDigi::shotshistomapon
bool shotshistomapon
Definition: SiStripMonitorDigi.h:215
SiStripHistoId::getSubdetid
std::string getSubdetid(uint32_t id, const TrackerTopology *tTopo, bool flag_ring)
Definition: SiStripHistoId.cc:82
edm::DetSet::data
collection_type data
Definition: DetSet.h:80
SiStripMonitorDigi::subdetswitchnapvshotson
bool subdetswitchnapvshotson
Definition: SiStripMonitorDigi.h:186
SiStripMonitorDigi::Mod_On_
bool Mod_On_
Definition: SiStripMonitorDigi.h:212
SiStripMonitorDigi::ModMEs::DigiADCs
MonitorElement * DigiADCs
Definition: SiStripMonitorDigi.h:52
APVCyclePhaseCollection::getPhase
const int getPhase(const std::string partition) const
Definition: APVCyclePhaseCollection.cc:5
DetSetNew.h
SiStripMonitorDigi::SubDetMEs::SubDetDigiApvTH2
MonitorElement * SubDetDigiApvTH2
Definition: SiStripMonitorDigi.h:75
EcalCondDBWriter_cfi.location
location
Definition: EcalCondDBWriter_cfi.py:63
SiStripFolderOrganizer::getLayerFolderName
void getLayerFolderName(std::stringstream &ss, uint32_t rawdetid, const TrackerTopology *tTopo, bool ring_flag=false)
Definition: SiStripFolderOrganizer.cc:415
SiStripMonitorDigi::tkmapdigi
std::unique_ptr< TkHistoMap > tkmapdigi
Definition: SiStripMonitorDigi.h:156
SiStripMonitorDigi::subdetswitchapvshotsonprof
bool subdetswitchapvshotsonprof
Definition: SiStripMonitorDigi.h:188
SiStripMonitorDigi::tkmapNApvshots
std::unique_ptr< TkHistoMap > tkmapNApvshots
Definition: SiStripMonitorDigi.h:156
SiStripDetCablingRcd.h
funct::abs
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
genParticles_cff.map
map
Definition: genParticles_cff.py:11
TrackerTopologyRcd
Definition: TrackerTopologyRcd.h:10
SiStripMonitorDigi::createLayerMEs
void createLayerMEs(DQMStore::IBooker &ibooker, std::string label, int ndet)
Definition: SiStripMonitorDigi.cc:1067
SiStripMonitorDigi::layerswitchadccooleston
bool layerswitchadccooleston
Definition: SiStripMonitorDigi.h:167
edm::EDConsumerBase::consumes
EDGetTokenT< ProductType > consumes(edm::InputTag const &tag)
Definition: EDConsumerBase.h:126
SiStripMonitorDigi::ResetModuleMEs
void ResetModuleMEs(uint32_t idet)
Definition: SiStripMonitorDigi.cc:948
hlt_dqm_clientPB-live_cfg.me
me
Definition: hlt_dqm_clientPB-live_cfg.py:61
SiStripMonitorDigi::createModuleMEs
void createModuleMEs(DQMStore::IBooker &ibooker, ModMEs &mod_single, uint32_t detid)
Definition: SiStripMonitorDigi.cc:1013
edm::HandleBase::isValid
bool isValid() const
Definition: HandleBase.h:70
SiStripMonitorDigi::subdetswitchapvshotsApvon
bool subdetswitchapvshotsApvon
Definition: SiStripMonitorDigi.h:190
SiStripMonitorDigi::analyze
void analyze(const edm::Event &, const edm::EventSetup &) override
Definition: SiStripMonitorDigi.cc:573
SiStripMonitorDigi::NApvShotsGlobalProf
MonitorElement * NApvShotsGlobalProf
Definition: SiStripMonitorDigi.h:153
edm::Event
Definition: Event.h:73
SiStripMonitorDigi::fillTrend
void fillTrend(MonitorElement *me, float value, float timeinorbit)
Definition: SiStripMonitorDigi.cc:1004
Parameters
vector< ParameterSet > Parameters
Definition: HLTMuonPlotter.cc:25
SiStripMonitorDigi::SubDetMEs::SubDetNStripsApvShotsTH1
MonitorElement * SubDetNStripsApvShotsTH1
Definition: SiStripMonitorDigi.h:81
APVShotFinder::getShots
const std::vector< APVShot > & getShots() const
Definition: APVShotFinder.cc:69
SiStripMonitorDigi::m_trendVs10LS
bool m_trendVs10LS
Definition: SiStripMonitorDigi.h:221
APVCyclePhaseCollection::invalid
Definition: APVCyclePhaseCollection.h:21
MonitorElementData::Kind::TPROFILE
SiStripMonitorDigi::TotalNShots
int TotalNShots
Definition: SiStripMonitorDigi.h:160
SiStripMonitorDigi::subdetswitchtotdigifailureon
bool subdetswitchtotdigifailureon
Definition: SiStripMonitorDigi.h:184
dqm::impl::MonitorElement::setAxisTitle
virtual void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
Definition: MonitorElement.cc:800
dqm::impl::MonitorElement::getBinContent
virtual double getBinContent(int binx) const
get content of bin (1-D)
Definition: MonitorElement.cc:592
StripSubdetector.h
SiStripMonitorDigi::createMEs
void createMEs(DQMStore::IBooker &ibooker, const edm::EventSetup &es)
Definition: SiStripMonitorDigi.cc:312
SiStripSubStructure.h
DetSetVectorNew.h
L1GtfeExtWord::beamMode
const cms_uint16_t beamMode() const
Definition: L1GtfeExtWord.cc:215
edm::InputTag
Definition: InputTag.h:15
L1GlobalTriggerReadoutRecord.h
label
const char * label
Definition: PFTauDecayModeTools.cc:11
SiStripDetCabling::getConnections
const std::vector< const FedChannelConnection * > & getConnections(uint32_t det_id) const
Definition: SiStripDetCabling.cc:161
SiStripMonitorDigi::moduleswitchnumdigispstripon
bool moduleswitchnumdigispstripon
Definition: SiStripMonitorDigi.h:174
SiStripMonitorDigi::LayerMEs::LayerStripOccupancy
MonitorElement * LayerStripOccupancy
Definition: SiStripMonitorDigi.h:65
SiStripMonitorDigi::subdetswitchnstripsapvshotson
bool subdetswitchnstripsapvshotson
Definition: SiStripMonitorDigi.h:187
SiStripMonitorDigi::digiProducerList
std::vector< edm::InputTag > digiProducerList
Definition: SiStripMonitorDigi.h:131
SiStripMonitorDigi::tkmapMedianChargeApvshots
std::unique_ptr< TkHistoMap > tkmapMedianChargeApvshots
Definition: SiStripMonitorDigi.h:156
SiStripMonitorDigi::layerswitchadchotteston
bool layerswitchadchotteston
Definition: SiStripMonitorDigi.h:166
edm::DetSet::const_iterator
collection_type::const_iterator const_iterator
Definition: DetSet.h:31
SiStripMonitorDigi::LayerMEs::LayerADCsHottestStrip
MonitorElement * LayerADCsHottestStrip
Definition: SiStripMonitorDigi.h:59
SiStripMonitorDigi::LayerMEs::LayerStripOccupancyTrend
MonitorElement * LayerStripOccupancyTrend
Definition: SiStripMonitorDigi.h:66