CMS 3D CMS Logo

SiStripMonitorPedestals.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // Package: SiStripMonitorPedestals
4 // Class: SiStripMonitorPedestals
5 //
14 //
15 // Original Author: Simone Gennai and Suchandra Dutta
16 // Created: Sat Feb 4 20:49:10 CET 2006
17 //
18 //
19 
36 
37 // ROOT profile
38 #include "TProfile.h"
39 
40 // std includes
41 #include <algorithm>
42 #include <cmath>
43 #include <cstdlib>
44 #include <numeric>
45 
46 const std::string SiStripMonitorPedestals::RunMode1 = "ConDBPlotsOnly";
47 const std::string SiStripMonitorPedestals::RunMode2 = "CalculatedPlotsOnly";
49 
51  : dqmStore_(edm::Service<DQMStore>().operator->()),
52  conf_(iConfig),
53  pedsPSet_(iConfig.getParameter<edm::ParameterSet>("PedestalsPSet")),
54  analyzed(false),
56  signalCutPeds_(4),
57  nEvTot_(0),
58  nIteration_(0),
59  apvFactory_(nullptr),
60  tTopoToken_(esConsumes<edm::Transition::BeginRun>()),
61  detCablingToken_(esConsumes<edm::Transition::BeginRun>()) {
62  // retrieve producer name of input StripDigiCollection
64  std::string digiType = "VirginRaw";
65  digiToken_ = consumes<edm::DetSetVector<SiStripRawDigi>>(edm::InputTag(digiProducer, digiType));
66 
67  edm::LogInfo("SiStripMonitorPedestals") << "SiStripMonitorPedestals "
68  << " Constructing....... ";
69 
70  theEventInitNumber_ = pedsPSet_.getParameter<int>("NumberOfEventsForInit");
71  theEventIterNumber_ = pedsPSet_.getParameter<int>("NumberOfEventsForIteration");
72  NumCMstripsInGroup_ = pedsPSet_.getParameter<int>("NumCMstripsInGroup");
73  runTypeFlag_ = conf_.getParameter<std::string>("RunTypeFlag");
74 
76  pedestalToken_ = esConsumes<edm::Transition::BeginRun>();
77  noiseToken_ = esConsumes<edm::Transition::BeginRun>();
78  qualityToken_ = esConsumes<edm::Transition::BeginRun>(
79  edm::ESInputTag{"", iConfig.getParameter<std::string>("StripQualityLabel")});
80  }
81 }
82 //
83 // -- Destructor
84 //
86  edm::LogInfo("SiStripMonitorPedestals") << "SiStripMonitorPedestals "
87  << " Destructing...... ";
88  if (apvFactory_) {
89  delete apvFactory_;
90  }
91 }
92 //
93 // -- BeginRun
94 //
95 
97  const edm::Run &run,
98  const edm::EventSetup &eSetup) {
99  if (detCablingWatcher_.check(eSetup)) {
101  edm::LogInfo("SiStripMonitorPedestals") << "SiStripMonitorPedestals::bookHistograms: "
102  << " Creating MEs for new Cabling ";
103  createMEs(ibooker, eSetup);
104  }
105 
107  fillCondDBMEs(eSetup);
108 }
109 
110 //
111 // -- Create Monitor Elements
112 //
114  const auto tTopo = &es.getData(tTopoToken_);
115 
116  std::vector<uint32_t> SelectedDetIds;
117 
118  // ApvAnalysisFactory
119  if (apvFactory_) {
120  delete apvFactory_;
121  }
123 
124  detcabling->addActiveDetectorsRawIds(SelectedDetIds);
125 
126  // use SistripHistoId for producing histogram id (and title)
127  SiStripHistoId hidmanager;
128  // create SiStripFolderOrganizer
129  SiStripFolderOrganizer folder_organizer;
130 
131  edm::LogInfo("SiStripMonitorPedestals") << "SiStripMonitorPedestals::createMEs: "
132  << "Number of Detector Present in cabling " << SelectedDetIds.size();
133 
134  for (std::vector<uint32_t>::const_iterator idetid = SelectedDetIds.begin(), iEnd = SelectedDetIds.end();
135  idetid != iEnd;
136  ++idetid) {
137  uint32_t detid = *idetid;
138 
139  // Check consistency in DetId
140  if (detid == 0 || detid == 0xFFFFFFFF) {
141  edm::LogError("SiStripMonitorPedestals") << "SiStripMonitorPedestals::createMEs: "
142  << "Wrong DetId !!!!!! " << detid << " Neglecting !!!!!! ";
143  continue;
144  }
145 
146  unsigned int apv_pairs = detcabling->nApvPairs(detid);
147 
148  // Check consistency in Apv numbers
149  if (apv_pairs < 1 || apv_pairs > 3) {
150  edm::LogError("SiStripMonitorPedestals") << "SiStripMonitorPedestals::createMEs: Wrong APV Pairs => detId "
151  << detid << " APV pairs " << apv_pairs << " Neglecting !!!!!! ";
152  continue;
153  }
154  unsigned int napvs = apv_pairs * 2;
155  unsigned int nStrip = napvs * 128;
156 
157  bool newDetId = apvFactory_->instantiateApvs(detid, napvs);
158 
159  if (newDetId) {
160  ModMEs local_modmes;
161  local_modmes.PedsPerStrip = nullptr;
162  local_modmes.PedsDistribution = nullptr;
163  local_modmes.PedsEvolution = nullptr;
164  local_modmes.CMSubNoisePerStrip = nullptr;
165  local_modmes.RawNoisePerStrip = nullptr;
166  local_modmes.CMSubNoiseProfile = nullptr;
167  local_modmes.RawNoiseProfile = nullptr;
168  local_modmes.NoisyStrips = nullptr;
169  local_modmes.NoisyStripDistribution = nullptr;
170  local_modmes.CMDistribution = nullptr;
171  local_modmes.CMSlopeDistribution = nullptr;
172  local_modmes.PedsPerStripDB = nullptr;
173  local_modmes.CMSubNoisePerStripDB = nullptr;
174  local_modmes.BadStripsDB = nullptr;
175 
176  std::string hid;
177  // set appropriate folder using SiStripFolderOrganizer
178  folder_organizer.setDetectorFolder(detid, tTopo); // pass the detid to this method
179 
180  // if the deid already exists in the map, then reset MEs otherwise create
181  // them
182  resetMEs(detid);
183 
185  // Pedestals histos
186  hid = hidmanager.createHistoId("PedestalFromCondDB", "det", detid);
187  local_modmes.PedsPerStripDB =
188  ibooker.book1D(hid, hid, nStrip, 0.5, nStrip + 0.5); // to modify the size binning
189  (local_modmes.PedsPerStripDB)->setAxisTitle("Pedestal from CondDB(ADC) vs Strip Number", 1);
190 
191  hid = hidmanager.createHistoId("NoiseFromCondDB", "det", detid);
192  local_modmes.CMSubNoisePerStripDB = ibooker.book1D(hid, hid, nStrip, 0.5, nStrip + 0.5);
193  (local_modmes.CMSubNoisePerStripDB)->setAxisTitle("CMSubNoise from CondDB(ADC) vs Strip Number", 1);
194 
195  hid = hidmanager.createHistoId("BadStripFlagCondDB", "det", detid);
196  local_modmes.BadStripsDB = ibooker.book2D(hid, hid, nStrip, 0.5, nStrip + 0.5, 6, -0.5, 5.5);
197  (local_modmes.BadStripsDB)->setAxisTitle("Strip Flag from CondDB(ADC) vs Strip Number", 1);
198  }
200  // Pedestals histos
201  hid = hidmanager.createHistoId("PedsPerStrip", "det", detid);
202  local_modmes.PedsPerStrip = ibooker.book1D(hid, hid, nStrip, 0.5, nStrip + 0.5); // to modify the size binning
203  (local_modmes.PedsPerStrip)->setAxisTitle("Pedestal (ADC) vs Strip Number ", 1);
204 
205  hid = hidmanager.createHistoId("PedsDistribution", "det", detid);
206  local_modmes.PedsDistribution = ibooker.book2D(hid,
207  hid,
208  napvs,
209  -0.5,
210  napvs - 0.5,
211  300,
212  200,
213  500); // to modify the size binning
214  (local_modmes.PedsDistribution)->setAxisTitle("Apv Number", 1);
215  (local_modmes.PedsDistribution)->setAxisTitle("Mean Pedestal Value (ADC)", 2);
216 
217  hid = hidmanager.createHistoId("PedsEvolution", "det", detid);
218  local_modmes.PedsEvolution = ibooker.book2D(hid,
219  hid,
220  napvs,
221  -0.5,
222  napvs - 0.5,
223  50,
224  0.,
225  50.); // to modify the size binning
226  (local_modmes.PedsEvolution)->setAxisTitle("Apv Number", 1);
227  (local_modmes.PedsEvolution)->setAxisTitle("Iteration Number", 2);
228 
229  // Noise histos
230  hid = hidmanager.createHistoId("CMSubNoisePerStrip", "det", detid);
231  local_modmes.CMSubNoisePerStrip = ibooker.book1D(hid, hid, nStrip, 0.5, nStrip + 0.5);
232  (local_modmes.CMSubNoisePerStrip)->setAxisTitle("CMSubNoise (ADC) vs Strip Number", 1);
233 
234  hid = hidmanager.createHistoId("RawNoisePerStrip", "det", detid);
235  local_modmes.RawNoisePerStrip = ibooker.book1D(hid, hid, nStrip, 0.5, nStrip + 0.5);
236  (local_modmes.RawNoisePerStrip)->setAxisTitle("RawNoise(ADC) vs Strip Number", 1);
237 
238  hid = hidmanager.createHistoId("CMSubNoiseProfile", "det", detid);
239  local_modmes.CMSubNoiseProfile = ibooker.bookProfile(hid, hid, nStrip, 0.5, nStrip + 0.5, 100, 0., 100.);
240  (local_modmes.CMSubNoiseProfile)->setAxisTitle("Mean of CMSubNoise (ADC) vs Strip Number", 1);
241 
242  hid = hidmanager.createHistoId("RawNoiseProfile", "det", detid);
243  local_modmes.RawNoiseProfile = ibooker.bookProfile(hid, hid, nStrip, 0.5, nStrip + 0.5, 100, 0., 100.);
244  (local_modmes.RawNoiseProfile)->setAxisTitle("Mean of RawNoise (ADC) vs Strip Number", 1);
245 
246  hid = hidmanager.createHistoId("NoisyStrips", "det", detid);
247  local_modmes.NoisyStrips = ibooker.book2D(hid, hid, nStrip, 0.5, nStrip + 0.5, 6, -0.5, 5.5);
248  (local_modmes.NoisyStrips)->setAxisTitle("Strip Number", 1);
249  (local_modmes.NoisyStrips)->setAxisTitle("Flag Value", 2);
250 
251  hid = hidmanager.createHistoId("NoisyStripDistribution", "det", detid);
252  local_modmes.NoisyStripDistribution = ibooker.book1D(hid, hid, 11, -0.5, 10.5);
253  (local_modmes.NoisyStripDistribution)->setAxisTitle("Flag Value", 1);
254 
255  // Common Mode histos
256  hid = hidmanager.createHistoId("CMDistribution", "det", detid);
257  local_modmes.CMDistribution = ibooker.book2D(hid, hid, napvs, -0.5, napvs - 0.5, 150, -15., 15.);
258  (local_modmes.CMDistribution)->setAxisTitle("Common Mode (ADC) vs APV Number", 1);
259 
260  hid = hidmanager.createHistoId("CMSlopeDistribution", "det", detid);
261  local_modmes.CMSlopeDistribution = ibooker.book2D(hid, hid, napvs, -0.5, napvs - 0.5, 100, -0.05, 0.05);
262  (local_modmes.CMSlopeDistribution)->setAxisTitle("Common Mode Slope vs APV Number", 1);
263  }
264  // data from CondDB
265  // append to PedMEs
266  PedMEs.insert(std::make_pair(detid, local_modmes));
267  } // newDetId
268  }
269  edm::LogInfo("SiStripMonitorPedestals")
270  << "SiStripMonitorPedestals::createMEs: Number of DETS used " << PedMEs.size();
271 }
272 // ------------ method called to produce the data ------------
274  edm::LogInfo("SiStripMonitorPedestals")
275  << "SiStripMonitorPedestals::analyze: Run " << iEvent.id().run() << " Event " << iEvent.id().event();
276 
278 
280  return;
281 
282  // Increment # of Events
283  nEvTot_++;
284 
285  // get DigiCollection object from Event
287  // you have a collection as there are all the digis for the event for every
288  // detector
289  iEvent.getByToken(digiToken_, digi_collection);
290 
291  // Increase the number of iterations ...
293  nIteration_++;
294 
295  // loop over all MEs
296  for (std::map<uint32_t, ModMEs>::const_iterator i = PedMEs.begin(); i != PedMEs.end(); i++) {
297  uint32_t detid = i->first;
298  ModMEs local_modmes = i->second;
299  // get iterators for digis belonging to one DetId, it is an iterator, i.e.
300  // one element of the vector
301  std::vector<edm::DetSet<SiStripRawDigi>>::const_iterator digis = digi_collection->find(detid);
302  if (digis == digi_collection->end() || digis->data.empty() || digis->data.size() > 768) {
303  if (digis == digi_collection->end()) {
304  edm::LogError("SiStripMonitorPedestals") << " SiStripMonitorPedestals::analyze: Event " << nEvTot_ << " DetId "
305  << detid << " at the end of Digi Collection!!!";
306  } else {
307  edm::LogError("SiStripMonitorPedestals") << " [SiStripMonitorPedestals::analyze: Event " << nEvTot_ << " DetId "
308  << detid << " # of Digis " << digis->data.size();
309  }
310  std::vector<const FedChannelConnection *> fed_conns = detcabling->getConnections(detid);
311  bool firstchannel(true);
312  for (unsigned int k = 0; k < fed_conns.size(); k++) {
313  if (fed_conns[k] && fed_conns[k]->isConnected()) {
314  if (firstchannel) {
315  edm::LogError("SiStripMonitorPedestals") << " SiStripMonitorPedestals::analyze: Fed Id "
316  << fed_conns[k]->fedId() << " Channel " << fed_conns[k]->fedCh();
317  firstchannel = false;
318  } else
319  edm::LogError("SiStripMonitorPedestals")
320  << " SiStripMonitorPedestals::analyze: Channel " << fed_conns[k]->fedCh();
321  }
322  }
323  std::cout << std::endl;
324  continue;
325  }
326 
327  if (digis->data.empty()) {
328  edm::LogError("MonitorDigi_tmp") << "[SiStripRawDigiToRaw::createFedBuffers] Zero digis found!";
329  }
330  uint32_t id = detid;
331  // cout <<"Data size "<<digis->data.size()<<endl;
332  apvFactory_->update(id, (*digis));
333 
335  if (local_modmes.CMDistribution != nullptr) {
336  std::vector<float> tmp;
337  tmp.clear();
339  // unpacking the info looking at the right topology
340  int numberCMBlocks = int(128. / NumCMstripsInGroup_);
341  int ibin = 0;
342  for (std::vector<float>::const_iterator iped = tmp.begin(); iped != tmp.end(); iped++) {
343  int iapv = int(ibin / numberCMBlocks);
344  (local_modmes.CMDistribution)->Fill(iapv, static_cast<float>(*iped));
345  ibin++;
346  }
347  }
348  if (local_modmes.CMSlopeDistribution != nullptr) {
349  std::vector<float> tmp;
350  tmp.clear();
351  int iapv = 0;
353  for (std::vector<float>::const_iterator it = tmp.begin(); it != tmp.end(); it++) {
354  (local_modmes.CMSlopeDistribution)->Fill(iapv, static_cast<float>(*it));
355  iapv++;
356  }
357  }
358  }
359 
360  // asking for the status
362  std::vector<float> tmp;
363  tmp.clear();
365  if (local_modmes.PedsPerStrip != nullptr) {
366  int numberOfApvs = int(tmp.size() / 128.);
367  for (int i = 0; i < numberOfApvs; i++) {
368  std::vector<float> myPedPerApv;
369  apvFactory_->getPedestal(id, i, myPedPerApv);
370  float avarage = 0;
371  avarage = std::accumulate(myPedPerApv.begin(), myPedPerApv.end(), avarage);
372  avarage = avarage / 128.;
373  (local_modmes.PedsEvolution)->setBinContent(i + 1, nIteration_, avarage);
374  }
375  int ibin = 0;
376 
377  for (std::vector<float>::const_iterator iped = tmp.begin(); iped != tmp.end(); iped++) {
378  int napv = int(ibin / 128.);
379  ibin++;
380  float last_value = (local_modmes.PedsPerStrip)->getBinContent(ibin);
381  if (last_value != 0.) {
382  (local_modmes.PedsPerStrip)->setBinContent(ibin, (static_cast<float>(*iped) + last_value) / 2.);
383  } else {
384  (local_modmes.PedsPerStrip)->setBinContent(ibin, static_cast<float>(*iped));
385  }
386  (local_modmes.PedsDistribution)->Fill(napv, static_cast<float>(*iped));
387  }
388  }
389 
390  if (local_modmes.CMSubNoisePerStrip != nullptr && local_modmes.CMSubNoiseProfile != nullptr) {
391  tmp.clear();
392  apvFactory_->getNoise(id, tmp);
393  int ibin = 0;
394  for (std::vector<float>::const_iterator iped = tmp.begin(); iped != tmp.end(); iped++) {
395  ibin++;
396  (local_modmes.CMSubNoiseProfile)->Fill(static_cast<double>(ibin * 1.), static_cast<float>(*iped));
397 
398  float last_value = (local_modmes.CMSubNoisePerStrip)->getBinContent(ibin);
399  if (last_value != 0.) {
400  (local_modmes.CMSubNoisePerStrip)->setBinContent(ibin, (static_cast<float>(*iped) + last_value) / 2.);
401  } else {
402  (local_modmes.CMSubNoisePerStrip)->setBinContent(ibin, static_cast<float>(*iped));
403  }
404  }
405  }
406 
407  if (local_modmes.RawNoisePerStrip != nullptr && local_modmes.RawNoiseProfile != nullptr) {
408  tmp.clear();
410  int ibin = 0;
411  for (std::vector<float>::const_iterator iped = tmp.begin(); iped != tmp.end(); iped++) {
412  ibin++;
413  (local_modmes.RawNoiseProfile)->Fill(static_cast<double>(ibin * 1.), static_cast<float>(*iped));
414  float last_value = (local_modmes.RawNoisePerStrip)->getBinContent(ibin);
415  if (last_value != 0.) {
416  (local_modmes.RawNoisePerStrip)->setBinContent(ibin, (static_cast<float>(*iped) + last_value) / 2.);
417  } else {
418  (local_modmes.RawNoisePerStrip)->setBinContent(ibin, static_cast<float>(*iped));
419  }
420  }
421  }
422 
423  if (local_modmes.NoisyStrips != nullptr) {
425  apvFactory_->getMask(id, temp);
426  int ibin = 0;
427  for (TkApvMask::MaskType::const_iterator iped = temp.begin(); iped != temp.end(); iped++) {
428  ibin++;
429 
430  if (nIteration_ < 2) {
431  if (*iped == 1)
432  (local_modmes.NoisyStrips)->Fill(ibin, 3.);
433  if (*iped == 2)
434  (local_modmes.NoisyStrips)->Fill(ibin, 4.);
435  if (*iped == 0)
436  (local_modmes.NoisyStrips)->Fill(ibin, 0.);
437  } else {
438  (local_modmes.NoisyStrips)->Fill(ibin, static_cast<float>(*iped));
439  (local_modmes.NoisyStripDistribution)->Fill(static_cast<float>(*iped));
440  }
441  }
442  }
443  }
444  }
445  if (firstEvent)
446  firstEvent = false;
447 }
448 //
449 // -- End Run
450 //
452  bool outputMEsInRootFile = conf_.getParameter<bool>("OutputMEsInRootFile");
453  if (outputMEsInRootFile) {
456  }
457 }
458 //
459 // -- End Job
460 //
462  edm::LogInfo("SiStripMonitorPedestals") << "SiStripMonitorPedestals::EndJob: "
463  << " Finishing!! ";
464 }
465 //
466 // -- Reset Monitor Elements corresponding to a detetor
467 //
469  std::map<uint32_t, ModMEs>::iterator pos = PedMEs.find(idet);
470  if (pos != PedMEs.end()) {
471  ModMEs mod_me = pos->second;
472 
474  mod_me.PedsPerStripDB->Reset();
475  mod_me.CMSubNoisePerStripDB->Reset();
476  mod_me.BadStripsDB->Reset();
477  }
479  mod_me.PedsPerStrip->Reset();
480  mod_me.PedsDistribution->Reset();
481  mod_me.PedsEvolution->Reset();
482  mod_me.CMSubNoisePerStrip->Reset();
483  mod_me.RawNoisePerStrip->Reset();
484  mod_me.CMSubNoiseProfile->Reset();
485  mod_me.RawNoiseProfile->Reset();
486  mod_me.NoisyStrips->Reset();
487  mod_me.CMDistribution->Reset();
488  mod_me.CMSlopeDistribution->Reset();
489  }
490  }
491 }
492 //
493 // -- Fill CondDB Monitoring Elements
494 //
496  const auto &pedestals = eSetup.getData(pedestalToken_);
497  const auto &noises = eSetup.getData(noiseToken_);
498  const auto &quality = eSetup.getData(qualityToken_);
499 
500  for (std::map<uint32_t, ModMEs>::const_iterator i = PedMEs.begin(); i != PedMEs.end(); i++) {
501  uint32_t detid = i->first;
502  ModMEs local_modmes = i->second;
503  edm::LogInfo("SiStripMonitorPedestals") << " SiStripMonitorPedestals::analyze: "
504  << " Get Ped/Noise/Bad Strips from CondDb for DetId " << detid;
505  int nStrip = detcabling->nApvPairs(detid) * 256;
506  // Get range of pedestal and noise for the detid
507  SiStripNoises::Range noiseRange = noises.getRange(detid);
508  SiStripPedestals::Range pedRange = pedestals.getRange(detid);
509  SiStripQuality::Range qualityRange = quality.getRange(detid);
510 
511  for (int istrip = 0; istrip < nStrip; ++istrip) {
512  try {
513  // Fill Pedestals
514  (local_modmes.PedsPerStripDB)->Fill(istrip + 1, pedestals.getPed(istrip, pedRange));
515  } catch (cms::Exception &e) {
516  edm::LogError("SiStripMonitorPedestals") << "[SiStripMonitorPedestals::analyze] cms::Exception accessing "
517  "SiStripPedestalsService_.getPedestal("
518  << detid << "," << istrip << ") : "
519  << " " << e.what();
520  }
521  try {
522  // Fill Noises
523  (local_modmes.CMSubNoisePerStripDB)->Fill(istrip + 1, noises.getNoise(istrip, noiseRange));
524 
525  } catch (cms::Exception &e) {
526  edm::LogError("SiStripMonitorPedestals") << "[SiStripMonitorPedestals::analyze] cms::Exception accessing "
527  "SiStripNoiseService_.getNoise("
528  << detid << "," << istrip << ") : "
529  << " " << e.what();
530  }
531  try {
532  // Fill BadStripsNoise
533  (local_modmes.BadStripsDB)->Fill(istrip + 1, quality.IsStripBad(qualityRange, istrip) ? 1. : 0.);
534 
535  } catch (cms::Exception &e) {
536  edm::LogError("SiStripMonitorPedestals") << "[SiStripMonitorPedestals::analyze] cms::Exception accessing "
537  "SiStripNoiseService_.getDisable("
538  << detid << "," << istrip << ") : "
539  << " " << e.what();
540  }
541  } // close istrip loop
542  }
543 }
std::vector< StripMaskType > MaskType
Definition: TkApvMask.h:15
void fillCondDBMEs(edm::EventSetup const &eSetup)
ESGetTokenH3DDVariant esConsumes(std::string const &Record, edm::ConsumesCollector &)
Definition: DeDxTools.cc:283
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
edm::ESGetToken< SiStripQuality, SiStripQualityRcd > qualityToken_
T const & getData(const ESGetToken< T, R > &iToken) const noexcept(false)
Definition: EventSetup.h:119
const std::vector< const FedChannelConnection * > & getConnections(uint32_t det_id) const
void getPedestal(uint32_t det_id, int apvNumber, ApvAnalysis::PedestalType &peds)
void getCommonModeSlope(uint32_t det_id, ApvAnalysis::PedestalType &tmp)
void getNoise(uint32_t det_id, int apvNumber, ApvAnalysis::PedestalType &noise)
void update(uint32_t det_id, const edm::DetSet< SiStripRawDigi > &in)
void getMask(uint32_t det_id, TkApvMask::MaskType &tmp)
const SiStripDetCabling * detcabling
std::pair< ContainerIterator, ContainerIterator > Range
Log< level::Error, false > LogError
edm::ESGetToken< SiStripNoises, SiStripNoisesRcd > noiseToken_
static const std::string RunMode1
void getRawNoise(uint32_t det_id, int apvNumber, ApvAnalysis::PedestalType &noise)
void setDetectorFolder(uint32_t rawdetid, const TrackerTopology *tTopo)
virtual void Reset()
Remove all data from the ME, keept the empty histogram with all its settings.
string quality
edm::EDGetTokenT< edm::DetSetVector< SiStripRawDigi > > digiToken_
int iEvent
Definition: GenABIO.cc:224
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:399
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
void analyze(const edm::Event &, const edm::EventSetup &) override
static const std::string RunMode3
bool instantiateApvs(uint32_t det_id, int numberOfApvs)
SiStripMonitorPedestals(const edm::ParameterSet &)
edm::ESGetToken< SiStripPedestals, SiStripPedestalsRcd > pedestalToken_
Transition
Definition: Transition.h:12
ApvAnalysisFactory * apvFactory_
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
edm::ESGetToken< SiStripDetCabling, SiStripDetCablingRcd > detCablingToken_
void getCommonMode(uint32_t det_id, ApvAnalysis::PedestalType &tmp)
Log< level::Info, false > LogInfo
std::string createHistoId(std::string description, std::string id_type, uint32_t component_id)
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:212
bool check(const edm::EventSetup &iSetup)
Definition: ESWatcher.h:57
DQM_DEPRECATED void save(std::string const &filename, std::string const &path="")
Definition: DQMStore.cc:808
HLT enums.
std::pair< ContainerIterator, ContainerIterator > Range
static const std::string RunMode2
std::pair< ContainerIterator, ContainerIterator > Range
Definition: SiStripNoises.h:47
MonitorElement * book1D(TString const &name, TString const &title, int const nchX, double const lowX, double const highX, FUNC onbooking=NOOP())
Definition: DQMStore.h:98
void createMEs(DQMStore::IBooker &, edm::EventSetup const &eSetup)
void dqmEndRun(edm::Run const &run, edm::EventSetup const &eSetup) override
tmp
align.sh
Definition: createJobs.py:716
edm::ESWatcher< SiStripDetCablingRcd > detCablingWatcher_
const uint16_t nApvPairs(uint32_t det_id) const
void bookHistograms(DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
std::map< uint32_t, ModMEs > PedMEs
Definition: Run.h:45
edm::ESGetToken< TrackerTopology, TrackerTopologyRcd > tTopoToken_
void addActiveDetectorsRawIds(std::vector< uint32_t > &) const