CMS 3D CMS Logo

List of all members | Classes | Public Member Functions | Private Member Functions | Private Attributes | Static Private Attributes
SiStripMonitorPedestals Class Reference

#include <SiStripMonitorPedestals.h>

Inheritance diagram for SiStripMonitorPedestals:
one::DQMEDAnalyzer< T > one::dqmimplementation::DQMBaseClass< T... >

Classes

struct  ModMEs
 

Public Member Functions

void analyze (const edm::Event &, const edm::EventSetup &) override
 
void bookHistograms (DQMStore::IBooker &, edm::Run const &, edm::EventSetup const &) override
 
void endJob () override
 
void endRun (edm::Run const &run, edm::EventSetup const &eSetup) override
 
 SiStripMonitorPedestals (const edm::ParameterSet &)
 
 ~SiStripMonitorPedestals () override
 
- Public Member Functions inherited from one::DQMEDAnalyzer< T >
 DQMEDAnalyzer ()=default
 
 DQMEDAnalyzer (DQMEDAnalyzer< T... > const &)=delete
 
 DQMEDAnalyzer (DQMEDAnalyzer< T... > &&)=delete
 
 ~DQMEDAnalyzer () override=default
 

Private Member Functions

void createMEs (DQMStore::IBooker &, edm::EventSetup const &eSetup)
 
void fillCondDBMEs (edm::EventSetup const &eSetup)
 
void resetMEs (uint32_t idet)
 

Private Attributes

bool analyzed
 
ApvAnalysisFactoryapvFactory_
 
edm::ParameterSet conf_
 
edm::ESHandle< SiStripDetCablingdetcabling
 
edm::EDGetTokenT< edm::DetSetVector< SiStripRawDigi > > digiToken_
 
DQMStoredqmStore_
 
bool firstEvent
 
unsigned long long m_cacheID_
 
int16_t nEvInit_
 
int16_t nEvTot_
 
int16_t nEvUpdate_
 
int nIteration_
 
int NumCMstripsInGroup_
 
std::string outPutFileName
 
std::map< uint32_t, ModMEsPedMEs
 
edm::ParameterSet pedsPSet_
 
std::string runTypeFlag_
 
int16_t signalCutPeds_
 
int theEventInitNumber_
 
int theEventIterNumber_
 

Static Private Attributes

static const std::string RunMode1 = "ConDBPlotsOnly"
 
static const std::string RunMode2 = "CalculatedPlotsOnly"
 
static const std::string RunMode3 = "AllPlots"
 

Detailed Description

Description: <one line="" class="" summary>="">

Usage: <usage>

Definition at line 55 of file SiStripMonitorPedestals.h.

Constructor & Destructor Documentation

SiStripMonitorPedestals::SiStripMonitorPedestals ( const edm::ParameterSet )
explicit

Definition at line 54 of file SiStripMonitorPedestals.cc.

References conf_, EcnaPython_AdcPeg12_S1_10_R170298_1_0_150_Dee0::digiProducer, digiToken_, edm::ParameterSet::getParameter(), NumCMstripsInGroup_, pedsPSet_, runTypeFlag_, AlCaHLTBitMon_QueryRunRegistry::string, theEventInitNumber_, and theEventIterNumber_.

56  conf_(iConfig),
57  pedsPSet_(iConfig.getParameter<edm::ParameterSet>("PedestalsPSet")),
58  analyzed(false),
59  firstEvent(true),
60  signalCutPeds_(4),
61  nEvTot_(0),
62  nIteration_(0),
63  apvFactory_(nullptr),
64  m_cacheID_(0) {
65  // retrieve producer name of input StripDigiCollection
67  std::string digiType = "VirginRaw";
68  digiToken_ = consumes<edm::DetSetVector<SiStripRawDigi>>(edm::InputTag(digiProducer, digiType));
69 
70  edm::LogInfo("SiStripMonitorPedestals") << "SiStripMonitorPedestals "
71  << " Constructing....... ";
72 
73  theEventInitNumber_ = pedsPSet_.getParameter<int>("NumberOfEventsForInit");
74  theEventIterNumber_ = pedsPSet_.getParameter<int>("NumberOfEventsForIteration");
75  NumCMstripsInGroup_ = pedsPSet_.getParameter<int>("NumCMstripsInGroup");
76  runTypeFlag_ = conf_.getParameter<std::string>("RunTypeFlag");
77 }
T getParameter(std::string const &) const
edm::EDGetTokenT< edm::DetSetVector< SiStripRawDigi > > digiToken_
ApvAnalysisFactory * apvFactory_
SiStripMonitorPedestals::~SiStripMonitorPedestals ( )
override

Definition at line 81 of file SiStripMonitorPedestals.cc.

References apvFactory_.

81  {
82  edm::LogInfo("SiStripMonitorPedestals") << "SiStripMonitorPedestals "
83  << " Destructing...... ";
84  if (apvFactory_) {
85  delete apvFactory_;
86  }
87 }
ApvAnalysisFactory * apvFactory_

Member Function Documentation

void SiStripMonitorPedestals::analyze ( const edm::Event iEvent,
const edm::EventSetup eSetup 
)
override

Definition at line 288 of file SiStripMonitorPedestals.cc.

References apvFactory_, SiStripMonitorPedestals::ModMEs::CMDistribution, SiStripMonitorPedestals::ModMEs::CMSlopeDistribution, SiStripMonitorPedestals::ModMEs::CMSubNoisePerStrip, SiStripMonitorPedestals::ModMEs::CMSubNoiseProfile, gather_cfg::cout, detcabling, digiToken_, edm::EventID::event(), HcalObjRepresent::Fill(), firstEvent, edm::EventSetup::get(), edm::Event::getByToken(), ApvAnalysisFactory::getCommonMode(), ApvAnalysisFactory::getCommonModeSlope(), SiStripDetCabling::getConnections(), ApvAnalysisFactory::getMask(), ApvAnalysisFactory::getNoise(), ApvAnalysisFactory::getPedestal(), ApvAnalysisFactory::getRawNoise(), mps_fire::i, edm::EventBase::id(), createfilelist::int, gen::k, nEvTot_, nIteration_, SiStripMonitorPedestals::ModMEs::NoisyStripDistribution, SiStripMonitorPedestals::ModMEs::NoisyStrips, NumCMstripsInGroup_, PedMEs, SiStripMonitorPedestals::ModMEs::PedsDistribution, SiStripMonitorPedestals::ModMEs::PedsEvolution, SiStripMonitorPedestals::ModMEs::PedsPerStrip, SiStripMonitorPedestals::ModMEs::RawNoisePerStrip, SiStripMonitorPedestals::ModMEs::RawNoiseProfile, edm::EventID::run(), RunMode2, RunMode3, runTypeFlag_, groupFilesInBlocks::temp, theEventInitNumber_, theEventIterNumber_, tmp, and ApvAnalysisFactory::update().

288  {
289  edm::LogInfo("SiStripMonitorPedestals")
290  << "SiStripMonitorPedestals::analyze: Run " << iEvent.id().run() << " Event " << iEvent.id().event();
291 
292  eSetup.get<SiStripDetCablingRcd>().get(detcabling);
293 
295  return;
296 
297  // Increment # of Events
298  nEvTot_++;
299 
300  // get DigiCollection object from Event
302  // you have a collection as there are all the digis for the event for every
303  // detector
304  iEvent.getByToken(digiToken_, digi_collection);
305 
306  // Increase the number of iterations ...
308  nIteration_++;
309 
310  // loop over all MEs
311  for (std::map<uint32_t, ModMEs>::const_iterator i = PedMEs.begin(); i != PedMEs.end(); i++) {
312  uint32_t detid = i->first;
313  ModMEs local_modmes = i->second;
314  // get iterators for digis belonging to one DetId, it is an iterator, i.e.
315  // one element of the vector
316  std::vector<edm::DetSet<SiStripRawDigi>>::const_iterator digis = digi_collection->find(detid);
317  if (digis == digi_collection->end() || digis->data.empty() || digis->data.size() > 768) {
318  if (digis == digi_collection->end()) {
319  edm::LogError("SiStripMonitorPedestals") << " SiStripMonitorPedestals::analyze: Event " << nEvTot_ << " DetId "
320  << detid << " at the end of Digi Collection!!!";
321  } else {
322  edm::LogError("SiStripMonitorPedestals") << " [SiStripMonitorPedestals::analyze: Event " << nEvTot_ << " DetId "
323  << detid << " # of Digis " << digis->data.size();
324  }
325  std::vector<const FedChannelConnection *> fed_conns = detcabling->getConnections(detid);
326  bool firstchannel(true);
327  for (unsigned int k = 0; k < fed_conns.size(); k++) {
328  if (fed_conns[k] && fed_conns[k]->isConnected()) {
329  if (firstchannel) {
330  edm::LogError("SiStripMonitorPedestals") << " SiStripMonitorPedestals::analyze: Fed Id "
331  << fed_conns[k]->fedId() << " Channel " << fed_conns[k]->fedCh();
332  firstchannel = false;
333  } else
334  edm::LogError("SiStripMonitorPedestals")
335  << " SiStripMonitorPedestals::analyze: Channel " << fed_conns[k]->fedCh();
336  }
337  }
338  std::cout << std::endl;
339  continue;
340  }
341 
342  if (digis->data.empty()) {
343  edm::LogError("MonitorDigi_tmp") << "[SiStripRawDigiToRaw::createFedBuffers] Zero digis found!";
344  }
345  uint32_t id = detid;
346  // cout <<"Data size "<<digis->data.size()<<endl;
347  apvFactory_->update(id, (*digis));
348 
350  if (local_modmes.CMDistribution != nullptr) {
351  std::vector<float> tmp;
352  tmp.clear();
353  apvFactory_->getCommonMode(id, tmp);
354  // unpacking the info looking at the right topology
355  int numberCMBlocks = int(128. / NumCMstripsInGroup_);
356  int ibin = 0;
357  for (std::vector<float>::const_iterator iped = tmp.begin(); iped != tmp.end(); iped++) {
358  int iapv = int(ibin / numberCMBlocks);
359  (local_modmes.CMDistribution)->Fill(iapv, static_cast<float>(*iped));
360  ibin++;
361  }
362  }
363  if (local_modmes.CMSlopeDistribution != nullptr) {
364  std::vector<float> tmp;
365  tmp.clear();
366  int iapv = 0;
368  for (std::vector<float>::const_iterator it = tmp.begin(); it != tmp.end(); it++) {
369  (local_modmes.CMSlopeDistribution)->Fill(iapv, static_cast<float>(*it));
370  iapv++;
371  }
372  }
373  }
374 
375  // asking for the status
377  std::vector<float> tmp;
378  tmp.clear();
379  apvFactory_->getPedestal(id, tmp);
380  if (local_modmes.PedsPerStrip != nullptr) {
381  int numberOfApvs = int(tmp.size() / 128.);
382  for (int i = 0; i < numberOfApvs; i++) {
383  std::vector<float> myPedPerApv;
384  apvFactory_->getPedestal(id, i, myPedPerApv);
385  float avarage = 0;
386  avarage = std::accumulate(myPedPerApv.begin(), myPedPerApv.end(), avarage);
387  avarage = avarage / 128.;
388  (local_modmes.PedsEvolution)->setBinContent(i + 1, nIteration_, avarage);
389  }
390  int ibin = 0;
391 
392  for (std::vector<float>::const_iterator iped = tmp.begin(); iped != tmp.end(); iped++) {
393  int napv = int(ibin / 128.);
394  ibin++;
395  float last_value = (local_modmes.PedsPerStrip)->getBinContent(ibin);
396  if (last_value != 0.) {
397  (local_modmes.PedsPerStrip)->setBinContent(ibin, (static_cast<float>(*iped) + last_value) / 2.);
398  } else {
399  (local_modmes.PedsPerStrip)->setBinContent(ibin, static_cast<float>(*iped));
400  }
401  (local_modmes.PedsDistribution)->Fill(napv, static_cast<float>(*iped));
402  }
403  }
404 
405  if (local_modmes.CMSubNoisePerStrip != nullptr && local_modmes.CMSubNoiseProfile != nullptr) {
406  tmp.clear();
407  apvFactory_->getNoise(id, tmp);
408  int ibin = 0;
409  for (std::vector<float>::const_iterator iped = tmp.begin(); iped != tmp.end(); iped++) {
410  ibin++;
411  (local_modmes.CMSubNoiseProfile)->Fill(static_cast<double>(ibin * 1.), static_cast<float>(*iped));
412 
413  float last_value = (local_modmes.CMSubNoisePerStrip)->getBinContent(ibin);
414  if (last_value != 0.) {
415  (local_modmes.CMSubNoisePerStrip)->setBinContent(ibin, (static_cast<float>(*iped) + last_value) / 2.);
416  } else {
417  (local_modmes.CMSubNoisePerStrip)->setBinContent(ibin, static_cast<float>(*iped));
418  }
419  }
420  }
421 
422  if (local_modmes.RawNoisePerStrip != nullptr && local_modmes.RawNoiseProfile != nullptr) {
423  tmp.clear();
424  apvFactory_->getRawNoise(id, tmp);
425  int ibin = 0;
426  for (std::vector<float>::const_iterator iped = tmp.begin(); iped != tmp.end(); iped++) {
427  ibin++;
428  (local_modmes.RawNoiseProfile)->Fill(static_cast<double>(ibin * 1.), static_cast<float>(*iped));
429  float last_value = (local_modmes.RawNoisePerStrip)->getBinContent(ibin);
430  if (last_value != 0.) {
431  (local_modmes.RawNoisePerStrip)->setBinContent(ibin, (static_cast<float>(*iped) + last_value) / 2.);
432  } else {
433  (local_modmes.RawNoisePerStrip)->setBinContent(ibin, static_cast<float>(*iped));
434  }
435  }
436  }
437 
438  if (local_modmes.NoisyStrips != nullptr) {
440  apvFactory_->getMask(id, temp);
441  int ibin = 0;
442  for (TkApvMask::MaskType::const_iterator iped = temp.begin(); iped != temp.end(); iped++) {
443  ibin++;
444 
445  if (nIteration_ < 2) {
446  if (*iped == 1)
447  (local_modmes.NoisyStrips)->Fill(ibin, 3.);
448  if (*iped == 2)
449  (local_modmes.NoisyStrips)->Fill(ibin, 4.);
450  if (*iped == 0)
451  (local_modmes.NoisyStrips)->Fill(ibin, 0.);
452  } else {
453  (local_modmes.NoisyStrips)->Fill(ibin, static_cast<float>(*iped));
454  (local_modmes.NoisyStripDistribution)->Fill(static_cast<float>(*iped));
455  }
456  }
457  }
458  }
459  }
460  if (firstEvent)
461  firstEvent = false;
462 }
std::vector< StripMaskType > MaskType
Definition: TkApvMask.h:17
RunNumber_t run() const
Definition: EventID.h:39
EventNumber_t event() const
Definition: EventID.h:41
edm::ESHandle< SiStripDetCabling > detcabling
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:517
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)
void getRawNoise(uint32_t det_id, int apvNumber, ApvAnalysis::PedestalType &noise)
const std::vector< const FedChannelConnection * > & getConnections(uint32_t det_id) const
edm::EDGetTokenT< edm::DetSetVector< SiStripRawDigi > > digiToken_
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
static const std::string RunMode3
ApvAnalysisFactory * apvFactory_
void getCommonMode(uint32_t det_id, ApvAnalysis::PedestalType &tmp)
int k[5][pyjets_maxn]
std::vector< std::vector< double > > tmp
Definition: MVATrainer.cc:100
edm::EventID id() const
Definition: EventBase.h:59
T get() const
Definition: EventSetup.h:71
static const std::string RunMode2
std::map< uint32_t, ModMEs > PedMEs
void SiStripMonitorPedestals::bookHistograms ( DQMStore::IBooker ,
edm::Run const &  ,
edm::EventSetup const &   
)
override

Definition at line 92 of file SiStripMonitorPedestals.cc.

References createMEs(), detcabling, fillCondDBMEs(), edm::EventSetup::get(), m_cacheID_, RunMode1, RunMode3, and runTypeFlag_.

94  {
95  unsigned long long cacheID = eSetup.get<SiStripDetCablingRcd>().cacheIdentifier();
96  if (m_cacheID_ != cacheID) {
97  m_cacheID_ = cacheID;
98  eSetup.get<SiStripDetCablingRcd>().get(detcabling);
99  edm::LogInfo("SiStripMonitorPedestals") << "SiStripMonitorPedestals::bookHistograms: "
100  << " Creating MEs for new Cabling ";
101  createMEs(ibooker, eSetup);
102  }
103 
105  fillCondDBMEs(eSetup);
106 }
void fillCondDBMEs(edm::EventSetup const &eSetup)
edm::ESHandle< SiStripDetCabling > detcabling
static const std::string RunMode1
static const std::string RunMode3
void createMEs(DQMStore::IBooker &, edm::EventSetup const &eSetup)
void SiStripMonitorPedestals::createMEs ( DQMStore::IBooker ,
edm::EventSetup const &  eSetup 
)
private

Definition at line 111 of file SiStripMonitorPedestals.cc.

References SiStripDetCabling::addActiveDetectorsRawIds(), apvFactory_, SiStripMonitorPedestals::ModMEs::BadStripsDB, DQMStore::IBooker::book1D(), DQMStore::IBooker::book2D(), DQMStore::IBooker::bookProfile(), SiStripMonitorPedestals::ModMEs::CMDistribution, SiStripMonitorPedestals::ModMEs::CMSlopeDistribution, SiStripMonitorPedestals::ModMEs::CMSubNoisePerStrip, SiStripMonitorPedestals::ModMEs::CMSubNoisePerStripDB, SiStripMonitorPedestals::ModMEs::CMSubNoiseProfile, SiStripHistoId::createHistoId(), detcabling, edm::EventSetup::get(), ApvAnalysisFactory::instantiateApvs(), SiStripDetCabling::nApvPairs(), SiStripMonitorPedestals::ModMEs::NoisyStripDistribution, SiStripMonitorPedestals::ModMEs::NoisyStrips, PedMEs, SiStripMonitorPedestals::ModMEs::PedsDistribution, SiStripMonitorPedestals::ModMEs::PedsEvolution, SiStripMonitorPedestals::ModMEs::PedsPerStrip, SiStripMonitorPedestals::ModMEs::PedsPerStripDB, pedsPSet_, edm::ESHandle< T >::product(), SiStripMonitorPedestals::ModMEs::RawNoisePerStrip, SiStripMonitorPedestals::ModMEs::RawNoiseProfile, resetMEs(), RunMode1, RunMode2, RunMode3, runTypeFlag_, SiStripFolderOrganizer::setDetectorFolder(), AlCaHLTBitMon_QueryRunRegistry::string, and DQMStore::IBooker::tag().

Referenced by bookHistograms().

111  {
112  // Retrieve tracker topology from geometry
113  edm::ESHandle<TrackerTopology> tTopoHandle;
114  es.get<TrackerTopologyRcd>().get(tTopoHandle);
115  const TrackerTopology *const tTopo = tTopoHandle.product();
116 
117  std::vector<uint32_t> SelectedDetIds;
118 
119  // ApvAnalysisFactory
120  if (apvFactory_) {
121  delete apvFactory_;
122  }
124 
125  detcabling->addActiveDetectorsRawIds(SelectedDetIds);
126 
127  // use SistripHistoId for producing histogram id (and title)
128  SiStripHistoId hidmanager;
129  // create SiStripFolderOrganizer
130  SiStripFolderOrganizer folder_organizer;
131 
132  edm::LogInfo("SiStripMonitorPedestals") << "SiStripMonitorPedestals::createMEs: "
133  << "Number of Detector Present in cabling " << SelectedDetIds.size();
134 
135  for (std::vector<uint32_t>::const_iterator idetid = SelectedDetIds.begin(), iEnd = SelectedDetIds.end();
136  idetid != iEnd;
137  ++idetid) {
138  uint32_t detid = *idetid;
139 
140  // Check consistency in DetId
141  if (detid == 0 || detid == 0xFFFFFFFF) {
142  edm::LogError("SiStripMonitorPedestals") << "SiStripMonitorPedestals::createMEs: "
143  << "Wrong DetId !!!!!! " << detid << " Neglecting !!!!!! ";
144  continue;
145  }
146 
147  unsigned int apv_pairs = detcabling->nApvPairs(detid);
148 
149  // Check consistency in Apv numbers
150  if (apv_pairs < 1 || apv_pairs > 3) {
151  edm::LogError("SiStripMonitorPedestals") << "SiStripMonitorPedestals::createMEs: Wrong APV Pairs => detId "
152  << detid << " APV pairs " << apv_pairs << " Neglecting !!!!!! ";
153  continue;
154  }
155  unsigned int napvs = apv_pairs * 2;
156  unsigned int nStrip = napvs * 128;
157 
158  bool newDetId = apvFactory_->instantiateApvs(detid, napvs);
159 
160  if (newDetId) {
161  ModMEs local_modmes;
162  local_modmes.PedsPerStrip = nullptr;
163  local_modmes.PedsDistribution = nullptr;
164  local_modmes.PedsEvolution = nullptr;
165  local_modmes.CMSubNoisePerStrip = nullptr;
166  local_modmes.RawNoisePerStrip = nullptr;
167  local_modmes.CMSubNoiseProfile = nullptr;
168  local_modmes.RawNoiseProfile = nullptr;
169  local_modmes.NoisyStrips = nullptr;
170  local_modmes.NoisyStripDistribution = nullptr;
171  local_modmes.CMDistribution = nullptr;
172  local_modmes.CMSlopeDistribution = nullptr;
173  local_modmes.PedsPerStripDB = nullptr;
174  local_modmes.CMSubNoisePerStripDB = nullptr;
175  local_modmes.BadStripsDB = nullptr;
176 
177  std::string hid;
178  // set appropriate folder using SiStripFolderOrganizer
179  folder_organizer.setDetectorFolder(detid, tTopo); // pass the detid to this method
180 
181  // if the deid already exists in the map, then reset MEs otherwise create
182  // them
183  resetMEs(detid);
184 
186  // Pedestals histos
187  hid = hidmanager.createHistoId("PedestalFromCondDB", "det", detid);
188  local_modmes.PedsPerStripDB =
189  ibooker.book1D(hid, hid, nStrip, 0.5, nStrip + 0.5); // to modify the size binning
190  ibooker.tag(local_modmes.PedsPerStripDB, detid);
191  (local_modmes.PedsPerStripDB)->setAxisTitle("Pedestal from CondDB(ADC) vs Strip Number", 1);
192 
193  hid = hidmanager.createHistoId("NoiseFromCondDB", "det", detid);
194  local_modmes.CMSubNoisePerStripDB = ibooker.book1D(hid, hid, nStrip, 0.5, nStrip + 0.5);
195  ibooker.tag(local_modmes.CMSubNoisePerStripDB, detid);
196  (local_modmes.CMSubNoisePerStripDB)->setAxisTitle("CMSubNoise from CondDB(ADC) vs Strip Number", 1);
197 
198  hid = hidmanager.createHistoId("BadStripFlagCondDB", "det", detid);
199  local_modmes.BadStripsDB = ibooker.book2D(hid, hid, nStrip, 0.5, nStrip + 0.5, 6, -0.5, 5.5);
200  ibooker.tag(local_modmes.BadStripsDB, detid);
201  (local_modmes.BadStripsDB)->setAxisTitle("Strip Flag from CondDB(ADC) vs Strip Number", 1);
202  }
204  // Pedestals histos
205  hid = hidmanager.createHistoId("PedsPerStrip", "det", detid);
206  local_modmes.PedsPerStrip = ibooker.book1D(hid, hid, nStrip, 0.5, nStrip + 0.5); // to modify the size binning
207  ibooker.tag(local_modmes.PedsPerStrip, detid);
208  (local_modmes.PedsPerStrip)->setAxisTitle("Pedestal (ADC) vs Strip Number ", 1);
209 
210  hid = hidmanager.createHistoId("PedsDistribution", "det", detid);
211  local_modmes.PedsDistribution = ibooker.book2D(hid,
212  hid,
213  napvs,
214  -0.5,
215  napvs - 0.5,
216  300,
217  200,
218  500); // to modify the size binning
219  ibooker.tag(local_modmes.PedsDistribution, detid);
220  (local_modmes.PedsDistribution)->setAxisTitle("Apv Number", 1);
221  (local_modmes.PedsDistribution)->setAxisTitle("Mean Pedestal Value (ADC)", 2);
222 
223  hid = hidmanager.createHistoId("PedsEvolution", "det", detid);
224  local_modmes.PedsEvolution = ibooker.book2D(hid,
225  hid,
226  napvs,
227  -0.5,
228  napvs - 0.5,
229  50,
230  0.,
231  50.); // to modify the size binning
232  ibooker.tag(local_modmes.PedsEvolution, detid);
233  (local_modmes.PedsEvolution)->setAxisTitle("Apv Number", 1);
234  (local_modmes.PedsEvolution)->setAxisTitle("Iteration Number", 2);
235 
236  // Noise histos
237  hid = hidmanager.createHistoId("CMSubNoisePerStrip", "det", detid);
238  local_modmes.CMSubNoisePerStrip = ibooker.book1D(hid, hid, nStrip, 0.5, nStrip + 0.5);
239  ibooker.tag(local_modmes.CMSubNoisePerStrip, detid);
240  (local_modmes.CMSubNoisePerStrip)->setAxisTitle("CMSubNoise (ADC) vs Strip Number", 1);
241 
242  hid = hidmanager.createHistoId("RawNoisePerStrip", "det", detid);
243  local_modmes.RawNoisePerStrip = ibooker.book1D(hid, hid, nStrip, 0.5, nStrip + 0.5);
244  ibooker.tag(local_modmes.RawNoisePerStrip, detid);
245  (local_modmes.RawNoisePerStrip)->setAxisTitle("RawNoise(ADC) vs Strip Number", 1);
246 
247  hid = hidmanager.createHistoId("CMSubNoiseProfile", "det", detid);
248  local_modmes.CMSubNoiseProfile = ibooker.bookProfile(hid, hid, nStrip, 0.5, nStrip + 0.5, 100, 0., 100.);
249  ibooker.tag(local_modmes.CMSubNoiseProfile, detid);
250  (local_modmes.CMSubNoiseProfile)->setAxisTitle("Mean of CMSubNoise (ADC) vs Strip Number", 1);
251 
252  hid = hidmanager.createHistoId("RawNoiseProfile", "det", detid);
253  local_modmes.RawNoiseProfile = ibooker.bookProfile(hid, hid, nStrip, 0.5, nStrip + 0.5, 100, 0., 100.);
254  ibooker.tag(local_modmes.RawNoiseProfile, detid);
255  (local_modmes.RawNoiseProfile)->setAxisTitle("Mean of RawNoise (ADC) vs Strip Number", 1);
256 
257  hid = hidmanager.createHistoId("NoisyStrips", "det", detid);
258  local_modmes.NoisyStrips = ibooker.book2D(hid, hid, nStrip, 0.5, nStrip + 0.5, 6, -0.5, 5.5);
259  ibooker.tag(local_modmes.NoisyStrips, detid);
260  (local_modmes.NoisyStrips)->setAxisTitle("Strip Number", 1);
261  (local_modmes.NoisyStrips)->setAxisTitle("Flag Value", 2);
262 
263  hid = hidmanager.createHistoId("NoisyStripDistribution", "det", detid);
264  local_modmes.NoisyStripDistribution = ibooker.book1D(hid, hid, 11, -0.5, 10.5);
265  ibooker.tag(local_modmes.NoisyStripDistribution, detid);
266  (local_modmes.NoisyStripDistribution)->setAxisTitle("Flag Value", 1);
267 
268  // Common Mode histos
269  hid = hidmanager.createHistoId("CMDistribution", "det", detid);
270  local_modmes.CMDistribution = ibooker.book2D(hid, hid, napvs, -0.5, napvs - 0.5, 150, -15., 15.);
271  ibooker.tag(local_modmes.CMDistribution, detid);
272  (local_modmes.CMDistribution)->setAxisTitle("Common Mode (ADC) vs APV Number", 1);
273 
274  hid = hidmanager.createHistoId("CMSlopeDistribution", "det", detid);
275  local_modmes.CMSlopeDistribution = ibooker.book2D(hid, hid, napvs, -0.5, napvs - 0.5, 100, -0.05, 0.05);
276  ibooker.tag(local_modmes.CMSlopeDistribution, detid);
277  (local_modmes.CMSlopeDistribution)->setAxisTitle("Common Mode Slope vs APV Number", 1);
278  }
279  // data from CondDB
280  // append to PedMEs
281  PedMEs.insert(std::make_pair(detid, local_modmes));
282  } // newDetId
283  }
284  edm::LogInfo("SiStripMonitorPedestals")
285  << "SiStripMonitorPedestals::createMEs: Number of DETS used " << PedMEs.size();
286 }
edm::ESHandle< SiStripDetCabling > detcabling
void addActiveDetectorsRawIds(std::vector< uint32_t > &) const
static const std::string RunMode1
void setDetectorFolder(uint32_t rawdetid, const TrackerTopology *tTopo)
static const std::string RunMode3
bool instantiateApvs(uint32_t det_id, int numberOfApvs)
ApvAnalysisFactory * apvFactory_
std::string createHistoId(std::string description, std::string id_type, uint32_t component_id)
const uint16_t nApvPairs(uint32_t det_id) const
static const std::string RunMode2
T const * product() const
Definition: ESHandle.h:86
std::map< uint32_t, ModMEs > PedMEs
void SiStripMonitorPedestals::endJob ( void  )
override

Definition at line 477 of file SiStripMonitorPedestals.cc.

477  {
478  edm::LogInfo("SiStripMonitorPedestals") << "SiStripMonitorPedestals::EndJob: "
479  << " Finishing!! ";
480 }
void SiStripMonitorPedestals::endRun ( edm::Run const &  run,
edm::EventSetup const &  eSetup 
)
override

Definition at line 466 of file SiStripMonitorPedestals.cc.

References conf_, dqmStore_, edm::ParameterSet::getParameter(), outPutFileName, DQMStore::save(), and AlCaHLTBitMon_QueryRunRegistry::string.

466  {
467  bool outputMEsInRootFile = conf_.getParameter<bool>("OutputMEsInRootFile");
468  if (outputMEsInRootFile) {
470  // dqmStore_->showDirStructure();
471  dqmStore_->save(outPutFileName);
472  }
473 }
T getParameter(std::string const &) const
void save(std::string const &filename, std::string const &path="", std::string const &pattern="", std::string const &rewrite="", uint32_t run=0, uint32_t lumi=0, SaveReferenceTag ref=SaveWithReference, int minStatus=dqm::qstatus::STATUS_OK, std::string const &fileupdate="RECREATE")
Definition: DQMStore.cc:2465
void SiStripMonitorPedestals::fillCondDBMEs ( edm::EventSetup const &  eSetup)
private

Definition at line 511 of file SiStripMonitorPedestals.cc.

References SiStripMonitorPedestals::ModMEs::BadStripsDB, SiStripMonitorPedestals::ModMEs::CMSubNoisePerStripDB, conf_, DEFINE_FWK_MODULE, detcabling, MillePedeFileConverter_cfg::e, HcalObjRepresent::Fill(), edm::EventSetup::get(), SiStripNoises::getNoise(), edm::ParameterSet::getParameter(), SiStripPedestals::getPed(), SiStripNoises::getRange(), SiStripPedestals::getRange(), SiStripBadStrip::getRange(), mps_fire::i, SiStripQuality::IsStripBad(), SiStripDetCabling::nApvPairs(), PedMEs, SiStripMonitorPedestals::ModMEs::PedsPerStripDB, AlCaHLTBitMon_QueryRunRegistry::string, and cms::Exception::what().

Referenced by bookHistograms().

511  {
512  // get Pedestal and Noise ES handle
513  edm::ESHandle<SiStripPedestals> pedestalHandle;
514  edm::ESHandle<SiStripNoises> noiseHandle;
515  edm::ESHandle<SiStripQuality> qualityHandle;
516 
517  eSetup.get<SiStripPedestalsRcd>().get(pedestalHandle);
518  eSetup.get<SiStripNoisesRcd>().get(noiseHandle);
519  std::string quality_label = conf_.getParameter<std::string>("StripQualityLabel");
520  eSetup.get<SiStripQualityRcd>().get(quality_label, qualityHandle);
521 
522  for (std::map<uint32_t, ModMEs>::const_iterator i = PedMEs.begin(); i != PedMEs.end(); i++) {
523  uint32_t detid = i->first;
524  ModMEs local_modmes = i->second;
525  edm::LogInfo("SiStripMonitorPedestals") << " SiStripMonitorPedestals::analyze: "
526  << " Get Ped/Noise/Bad Strips from CondDb for DetId " << detid;
527  int nStrip = detcabling->nApvPairs(detid) * 256;
528  // Get range of pedestal and noise for the detid
529  SiStripNoises::Range noiseRange = noiseHandle->getRange(detid);
530  SiStripPedestals::Range pedRange = pedestalHandle->getRange(detid);
531  SiStripQuality::Range qualityRange = qualityHandle->getRange(detid);
532 
533  for (int istrip = 0; istrip < nStrip; ++istrip) {
534  try {
535  // Fill Pedestals
536  (local_modmes.PedsPerStripDB)->Fill(istrip + 1, pedestalHandle->getPed(istrip, pedRange));
537  } catch (cms::Exception &e) {
538  edm::LogError("SiStripMonitorPedestals") << "[SiStripMonitorPedestals::analyze] cms::Exception accessing "
539  "SiStripPedestalsService_.getPedestal("
540  << detid << "," << istrip << ") : "
541  << " " << e.what();
542  }
543  try {
544  // Fill Noises
545  (local_modmes.CMSubNoisePerStripDB)->Fill(istrip + 1, noiseHandle->getNoise(istrip, noiseRange));
546 
547  } catch (cms::Exception &e) {
548  edm::LogError("SiStripMonitorPedestals") << "[SiStripMonitorPedestals::analyze] cms::Exception accessing "
549  "SiStripNoiseService_.getNoise("
550  << detid << "," << istrip << ") : "
551  << " " << e.what();
552  }
553  try {
554  // Fill BadStripsNoise
555  (local_modmes.BadStripsDB)->Fill(istrip + 1, qualityHandle->IsStripBad(qualityRange, istrip) ? 1. : 0.);
556 
557  } catch (cms::Exception &e) {
558  edm::LogError("SiStripMonitorPedestals") << "[SiStripMonitorPedestals::analyze] cms::Exception accessing "
559  "SiStripNoiseService_.getDisable("
560  << detid << "," << istrip << ") : "
561  << " " << e.what();
562  }
563  } // close istrip loop
564  }
565 }
T getParameter(std::string const &) const
edm::ESHandle< SiStripDetCabling > detcabling
bool IsStripBad(const uint32_t &detid, const short &strip) const
char const * what() const override
Definition: Exception.cc:103
std::pair< ContainerIterator, ContainerIterator > Range
float getPed(const uint16_t &strip, const Range &range) const
static float getNoise(uint16_t strip, const Range &range)
Definition: SiStripNoises.h:74
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
const uint16_t nApvPairs(uint32_t det_id) const
const Range getRange(const uint32_t detID) const
const Range getRange(const uint32_t detID) const
std::pair< ContainerIterator, ContainerIterator > Range
const Range getRange(const uint32_t &detID) const
std::pair< ContainerIterator, ContainerIterator > Range
Definition: SiStripNoises.h:50
std::map< uint32_t, ModMEs > PedMEs
void SiStripMonitorPedestals::resetMEs ( uint32_t  idet)
private

Definition at line 484 of file SiStripMonitorPedestals.cc.

References SiStripMonitorPedestals::ModMEs::BadStripsDB, SiStripMonitorPedestals::ModMEs::CMDistribution, SiStripMonitorPedestals::ModMEs::CMSlopeDistribution, SiStripMonitorPedestals::ModMEs::CMSubNoisePerStrip, SiStripMonitorPedestals::ModMEs::CMSubNoisePerStripDB, SiStripMonitorPedestals::ModMEs::CMSubNoiseProfile, SiStripMonitorPedestals::ModMEs::NoisyStrips, PedMEs, SiStripMonitorPedestals::ModMEs::PedsDistribution, SiStripMonitorPedestals::ModMEs::PedsEvolution, SiStripMonitorPedestals::ModMEs::PedsPerStrip, SiStripMonitorPedestals::ModMEs::PedsPerStripDB, SiStripMonitorPedestals::ModMEs::RawNoisePerStrip, SiStripMonitorPedestals::ModMEs::RawNoiseProfile, MonitorElement::Reset(), RunMode1, RunMode2, RunMode3, and runTypeFlag_.

Referenced by createMEs().

484  {
485  std::map<uint32_t, ModMEs>::iterator pos = PedMEs.find(idet);
486  if (pos != PedMEs.end()) {
487  ModMEs mod_me = pos->second;
488 
490  mod_me.PedsPerStripDB->Reset();
491  mod_me.CMSubNoisePerStripDB->Reset();
492  mod_me.BadStripsDB->Reset();
493  }
495  mod_me.PedsPerStrip->Reset();
496  mod_me.PedsDistribution->Reset();
497  mod_me.PedsEvolution->Reset();
498  mod_me.CMSubNoisePerStrip->Reset();
499  mod_me.RawNoisePerStrip->Reset();
500  mod_me.CMSubNoiseProfile->Reset();
501  mod_me.RawNoiseProfile->Reset();
502  mod_me.NoisyStrips->Reset();
503  mod_me.CMDistribution->Reset();
504  mod_me.CMSlopeDistribution->Reset();
505  }
506  }
507 }
static const std::string RunMode1
static const std::string RunMode3
static const std::string RunMode2
std::map< uint32_t, ModMEs > PedMEs

Member Data Documentation

bool SiStripMonitorPedestals::analyzed
private

Definition at line 98 of file SiStripMonitorPedestals.h.

ApvAnalysisFactory* SiStripMonitorPedestals::apvFactory_
private

Definition at line 107 of file SiStripMonitorPedestals.h.

Referenced by analyze(), createMEs(), and ~SiStripMonitorPedestals().

edm::ParameterSet SiStripMonitorPedestals::conf_
private

Definition at line 94 of file SiStripMonitorPedestals.h.

Referenced by endRun(), fillCondDBMEs(), and SiStripMonitorPedestals().

edm::ESHandle<SiStripDetCabling> SiStripMonitorPedestals::detcabling
private

Definition at line 96 of file SiStripMonitorPedestals.h.

Referenced by analyze(), bookHistograms(), createMEs(), and fillCondDBMEs().

edm::EDGetTokenT<edm::DetSetVector<SiStripRawDigi> > SiStripMonitorPedestals::digiToken_
private

Definition at line 66 of file SiStripMonitorPedestals.h.

Referenced by analyze(), and SiStripMonitorPedestals().

DQMStore* SiStripMonitorPedestals::dqmStore_
private

Definition at line 93 of file SiStripMonitorPedestals.h.

Referenced by endRun().

bool SiStripMonitorPedestals::firstEvent
private
unsigned long long SiStripMonitorPedestals::m_cacheID_
private

Definition at line 113 of file SiStripMonitorPedestals.h.

Referenced by bookHistograms().

int16_t SiStripMonitorPedestals::nEvInit_
private

Definition at line 105 of file SiStripMonitorPedestals.h.

int16_t SiStripMonitorPedestals::nEvTot_
private

Definition at line 104 of file SiStripMonitorPedestals.h.

Referenced by analyze().

int16_t SiStripMonitorPedestals::nEvUpdate_
private

Definition at line 102 of file SiStripMonitorPedestals.h.

int SiStripMonitorPedestals::nIteration_
private

Definition at line 106 of file SiStripMonitorPedestals.h.

Referenced by analyze().

int SiStripMonitorPedestals::NumCMstripsInGroup_
private

Definition at line 110 of file SiStripMonitorPedestals.h.

Referenced by analyze(), and SiStripMonitorPedestals().

std::string SiStripMonitorPedestals::outPutFileName
private

Definition at line 112 of file SiStripMonitorPedestals.h.

Referenced by endRun().

std::map<uint32_t, ModMEs> SiStripMonitorPedestals::PedMEs
private

Definition at line 95 of file SiStripMonitorPedestals.h.

Referenced by analyze(), createMEs(), fillCondDBMEs(), and resetMEs().

edm::ParameterSet SiStripMonitorPedestals::pedsPSet_
private

Definition at line 97 of file SiStripMonitorPedestals.h.

Referenced by createMEs(), and SiStripMonitorPedestals().

const std::string SiStripMonitorPedestals::RunMode1 = "ConDBPlotsOnly"
staticprivate

Definition at line 115 of file SiStripMonitorPedestals.h.

Referenced by bookHistograms(), createMEs(), and resetMEs().

const std::string SiStripMonitorPedestals::RunMode2 = "CalculatedPlotsOnly"
staticprivate

Definition at line 116 of file SiStripMonitorPedestals.h.

Referenced by analyze(), createMEs(), and resetMEs().

const std::string SiStripMonitorPedestals::RunMode3 = "AllPlots"
staticprivate

Definition at line 117 of file SiStripMonitorPedestals.h.

Referenced by analyze(), bookHistograms(), createMEs(), and resetMEs().

std::string SiStripMonitorPedestals::runTypeFlag_
private
int16_t SiStripMonitorPedestals::signalCutPeds_
private

Definition at line 103 of file SiStripMonitorPedestals.h.

int SiStripMonitorPedestals::theEventInitNumber_
private

Definition at line 108 of file SiStripMonitorPedestals.h.

Referenced by analyze(), and SiStripMonitorPedestals().

int SiStripMonitorPedestals::theEventIterNumber_
private

Definition at line 109 of file SiStripMonitorPedestals.h.

Referenced by analyze(), and SiStripMonitorPedestals().