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:
DQMEDAnalyzer edm::one::EDProducer< edm::EndRunProducer, edm::one::WatchRuns, edm::EndLuminosityBlockProducer, edm::one::WatchLuminosityBlocks, edm::Accumulator > edm::one::EDProducerBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

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 dqmEndRun (edm::Run const &run, edm::EventSetup const &eSetup) override
 
void endJob () override
 
 SiStripMonitorPedestals (const edm::ParameterSet &)
 
 ~SiStripMonitorPedestals () override
 
- Public Member Functions inherited from DQMEDAnalyzer
void accumulate (edm::Event const &event, edm::EventSetup const &setup) final
 
virtual void analyze (edm::Event const &, edm::EventSetup const &)
 
void beginLuminosityBlock (edm::LuminosityBlock const &lumi, edm::EventSetup const &setup) final
 
void beginRun (edm::Run const &run, edm::EventSetup const &setup) final
 
virtual void dqmBeginLuminosityBlock (edm::LuminosityBlock const &, edm::EventSetup const &)
 
virtual void dqmBeginRun (edm::Run const &, edm::EventSetup const &)
 
 DQMEDAnalyzer ()
 
virtual void dqmEndLuminosityBlock (edm::LuminosityBlock const &, edm::EventSetup const &)
 
void endLuminosityBlock (edm::LuminosityBlock const &, edm::EventSetup const &) final
 
void endLuminosityBlockProduce (edm::LuminosityBlock &lumi, edm::EventSetup const &setup) final
 
void endRun (edm::Run const &, edm::EventSetup const &) final
 
void endRunProduce (edm::Run &run, edm::EventSetup const &setup) final
 
virtual bool getCanSaveByLumi ()
 
- Public Member Functions inherited from edm::one::EDProducer< edm::EndRunProducer, edm::one::WatchRuns, edm::EndLuminosityBlockProducer, edm::one::WatchLuminosityBlocks, edm::Accumulator >
 EDProducer ()=default
 
SerialTaskQueueglobalLuminosityBlocksQueue () final
 
SerialTaskQueueglobalRunsQueue () final
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndRuns () const final
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
- Public Member Functions inherited from edm::one::EDProducerBase
 EDProducerBase ()
 
ModuleDescription const & moduleDescription () const
 
bool wantsStreamLuminosityBlocks () const
 
bool wantsStreamRuns () const
 
 ~EDProducerBase () override
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
std::vector< edm::ProductResolverIndex > const & indiciesForPutProducts (BranchType iBranchType) const
 
 ProducerBase ()
 
std::vector< edm::ProductResolverIndex > const & putTokenIndexToProductResolverIndex () const
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription const &)> registrationCallback () const
 used by the fwk to register list of products More...
 
void resolvePutIndicies (BranchType iBranchType, ModuleToResolverIndicies const &iIndicies, std::string const &moduleLabel)
 
 ~ProducerBase () noexcept(false) override
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ESProxyIndex const * esGetTokenIndices (edm::Transition iTrans) const
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
void updateLookup (eventsetup::ESRecordsToProxyIndices const &)
 
virtual ~EDConsumerBase () noexcept(false)
 

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"
 

Additional Inherited Members

- Public Types inherited from DQMEDAnalyzer
typedef dqm::reco::DQMStore DQMStore
 
typedef dqm::reco::MonitorElement MonitorElement
 
- Public Types inherited from edm::one::EDProducerBase
typedef EDProducerBase ModuleType
 
- Public Types inherited from edm::ProducerBase
using ModuleToResolverIndicies = std::unordered_multimap< std::string, std::tuple< edm::TypeID const *, const char *, edm::ProductResolverIndex >>
 
typedef ProductRegistryHelper::TypeLabelList TypeLabelList
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from edm::one::EDProducerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
- Protected Member Functions inherited from edm::ProducerBase
ProducesCollector producesCollector ()
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes ()
 
template<typename ESProduct , typename ESRecord , Transition Tr = Transition::Event>
auto esConsumes (ESInputTag const &tag)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
- Protected Attributes inherited from DQMEDAnalyzer
edm::EDPutTokenT< DQMTokenlumiToken_
 
edm::EDPutTokenT< DQMTokenrunToken_
 

Detailed Description

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

Usage: <usage>

Definition at line 54 of file SiStripMonitorPedestals.h.

Constructor & Destructor Documentation

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

Definition at line 53 of file SiStripMonitorPedestals.cc.

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

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

Definition at line 80 of file SiStripMonitorPedestals.cc.

References apvFactory_.

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

Member Function Documentation

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

Definition at line 273 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, dqmdumpme::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_, createJobs::tmp, and ApvAnalysisFactory::update().

273  {
274  edm::LogInfo("SiStripMonitorPedestals")
275  << "SiStripMonitorPedestals::analyze: Run " << iEvent.id().run() << " Event " << iEvent.id().event();
276 
277  eSetup.get<SiStripDetCablingRcd>().get(detcabling);
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();
338  apvFactory_->getCommonMode(id, tmp);
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();
364  apvFactory_->getPedestal(id, tmp);
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();
409  apvFactory_->getRawNoise(id, tmp);
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 }
std::vector< StripMaskType > MaskType
Definition: TkApvMask.h:15
RunNumber_t run() const
Definition: EventID.h:38
EventNumber_t event() const
Definition: EventID.h:40
edm::ESHandle< SiStripDetCabling > detcabling
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:525
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)
edm::EventID id() const
Definition: EventBase.h:59
T get() const
Definition: EventSetup.h:73
static const std::string RunMode2
tmp
align.sh
Definition: createJobs.py:716
std::map< uint32_t, ModMEs > PedMEs
void SiStripMonitorPedestals::bookHistograms ( DQMStore::IBooker ,
edm::Run const &  ,
edm::EventSetup const &   
)
overridevirtual

Implements DQMEDAnalyzer.

Definition at line 91 of file SiStripMonitorPedestals.cc.

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

93  {
94  unsigned long long cacheID = eSetup.get<SiStripDetCablingRcd>().cacheIdentifier();
95  if (m_cacheID_ != cacheID) {
96  m_cacheID_ = cacheID;
97  eSetup.get<SiStripDetCablingRcd>().get(detcabling);
98  edm::LogInfo("SiStripMonitorPedestals") << "SiStripMonitorPedestals::bookHistograms: "
99  << " Creating MEs for new Cabling ";
100  createMEs(ibooker, eSetup);
101  }
102 
104  fillCondDBMEs(eSetup);
105 }
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 110 of file SiStripMonitorPedestals.cc.

References SiStripDetCabling::addActiveDetectorsRawIds(), apvFactory_, SiStripMonitorPedestals::ModMEs::BadStripsDB, dqm::dqmstoreimpl::DQMStore::IBooker::book1D(), dqm::dqmstoreimpl::DQMStore::IBooker::book2D(), dqm::dqmstoreimpl::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(), and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by bookHistograms().

110  {
111  // Retrieve tracker topology from geometry
112  edm::ESHandle<TrackerTopology> tTopoHandle;
113  es.get<TrackerTopologyRcd>().get(tTopoHandle);
114  const TrackerTopology *const tTopo = tTopoHandle.product();
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 }
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::dqmEndRun ( edm::Run const &  run,
edm::EventSetup const &  eSetup 
)
overridevirtual

Reimplemented from DQMEDAnalyzer.

Definition at line 451 of file SiStripMonitorPedestals.cc.

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

451  {
452  bool outputMEsInRootFile = conf_.getParameter<bool>("OutputMEsInRootFile");
453  if (outputMEsInRootFile) {
455  // dqmStore_->showDirStructure();
456  dqmStore_->save(outPutFileName);
457  }
458 }
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:2244
void SiStripMonitorPedestals::endJob ( void  )
overridevirtual

Reimplemented from edm::one::EDProducerBase.

Definition at line 462 of file SiStripMonitorPedestals.cc.

462  {
463  edm::LogInfo("SiStripMonitorPedestals") << "SiStripMonitorPedestals::EndJob: "
464  << " Finishing!! ";
465 }
void SiStripMonitorPedestals::fillCondDBMEs ( edm::EventSetup const &  eSetup)
private

Definition at line 496 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().

496  {
497  // get Pedestal and Noise ES handle
498  edm::ESHandle<SiStripPedestals> pedestalHandle;
499  edm::ESHandle<SiStripNoises> noiseHandle;
500  edm::ESHandle<SiStripQuality> qualityHandle;
501 
502  eSetup.get<SiStripPedestalsRcd>().get(pedestalHandle);
503  eSetup.get<SiStripNoisesRcd>().get(noiseHandle);
504  std::string quality_label = conf_.getParameter<std::string>("StripQualityLabel");
505  eSetup.get<SiStripQualityRcd>().get(quality_label, qualityHandle);
506 
507  for (std::map<uint32_t, ModMEs>::const_iterator i = PedMEs.begin(); i != PedMEs.end(); i++) {
508  uint32_t detid = i->first;
509  ModMEs local_modmes = i->second;
510  edm::LogInfo("SiStripMonitorPedestals") << " SiStripMonitorPedestals::analyze: "
511  << " Get Ped/Noise/Bad Strips from CondDb for DetId " << detid;
512  int nStrip = detcabling->nApvPairs(detid) * 256;
513  // Get range of pedestal and noise for the detid
514  SiStripNoises::Range noiseRange = noiseHandle->getRange(detid);
515  SiStripPedestals::Range pedRange = pedestalHandle->getRange(detid);
516  SiStripQuality::Range qualityRange = qualityHandle->getRange(detid);
517 
518  for (int istrip = 0; istrip < nStrip; ++istrip) {
519  try {
520  // Fill Pedestals
521  (local_modmes.PedsPerStripDB)->Fill(istrip + 1, pedestalHandle->getPed(istrip, pedRange));
522  } catch (cms::Exception &e) {
523  edm::LogError("SiStripMonitorPedestals") << "[SiStripMonitorPedestals::analyze] cms::Exception accessing "
524  "SiStripPedestalsService_.getPedestal("
525  << detid << "," << istrip << ") : "
526  << " " << e.what();
527  }
528  try {
529  // Fill Noises
530  (local_modmes.CMSubNoisePerStripDB)->Fill(istrip + 1, noiseHandle->getNoise(istrip, noiseRange));
531 
532  } catch (cms::Exception &e) {
533  edm::LogError("SiStripMonitorPedestals") << "[SiStripMonitorPedestals::analyze] cms::Exception accessing "
534  "SiStripNoiseService_.getNoise("
535  << detid << "," << istrip << ") : "
536  << " " << e.what();
537  }
538  try {
539  // Fill BadStripsNoise
540  (local_modmes.BadStripsDB)->Fill(istrip + 1, qualityHandle->IsStripBad(qualityRange, istrip) ? 1. : 0.);
541 
542  } catch (cms::Exception &e) {
543  edm::LogError("SiStripMonitorPedestals") << "[SiStripMonitorPedestals::analyze] cms::Exception accessing "
544  "SiStripNoiseService_.getDisable("
545  << detid << "," << istrip << ") : "
546  << " " << e.what();
547  }
548  } // close istrip loop
549  }
550 }
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:71
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:47
std::map< uint32_t, ModMEs > PedMEs
void SiStripMonitorPedestals::resetMEs ( uint32_t  idet)
private

Definition at line 469 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, dqm::impl::MonitorElement::Reset(), RunMode1, RunMode2, RunMode3, and runTypeFlag_.

Referenced by createMEs().

469  {
470  std::map<uint32_t, ModMEs>::iterator pos = PedMEs.find(idet);
471  if (pos != PedMEs.end()) {
472  ModMEs mod_me = pos->second;
473 
475  mod_me.PedsPerStripDB->Reset();
476  mod_me.CMSubNoisePerStripDB->Reset();
477  mod_me.BadStripsDB->Reset();
478  }
480  mod_me.PedsPerStrip->Reset();
481  mod_me.PedsDistribution->Reset();
482  mod_me.PedsEvolution->Reset();
483  mod_me.CMSubNoisePerStrip->Reset();
484  mod_me.RawNoisePerStrip->Reset();
485  mod_me.CMSubNoiseProfile->Reset();
486  mod_me.RawNoiseProfile->Reset();
487  mod_me.NoisyStrips->Reset();
488  mod_me.CMDistribution->Reset();
489  mod_me.CMSlopeDistribution->Reset();
490  }
491  }
492 }
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 97 of file SiStripMonitorPedestals.h.

ApvAnalysisFactory* SiStripMonitorPedestals::apvFactory_
private

Definition at line 106 of file SiStripMonitorPedestals.h.

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

edm::ParameterSet SiStripMonitorPedestals::conf_
private

Definition at line 93 of file SiStripMonitorPedestals.h.

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

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

Definition at line 95 of file SiStripMonitorPedestals.h.

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

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

Definition at line 65 of file SiStripMonitorPedestals.h.

Referenced by analyze(), and SiStripMonitorPedestals().

DQMStore* SiStripMonitorPedestals::dqmStore_
private

Definition at line 92 of file SiStripMonitorPedestals.h.

Referenced by dqmEndRun().

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

Definition at line 112 of file SiStripMonitorPedestals.h.

Referenced by bookHistograms().

int16_t SiStripMonitorPedestals::nEvInit_
private

Definition at line 104 of file SiStripMonitorPedestals.h.

int16_t SiStripMonitorPedestals::nEvTot_
private

Definition at line 103 of file SiStripMonitorPedestals.h.

Referenced by analyze().

int16_t SiStripMonitorPedestals::nEvUpdate_
private

Definition at line 101 of file SiStripMonitorPedestals.h.

int SiStripMonitorPedestals::nIteration_
private

Definition at line 105 of file SiStripMonitorPedestals.h.

Referenced by analyze().

int SiStripMonitorPedestals::NumCMstripsInGroup_
private

Definition at line 109 of file SiStripMonitorPedestals.h.

Referenced by analyze(), and SiStripMonitorPedestals().

std::string SiStripMonitorPedestals::outPutFileName
private

Definition at line 111 of file SiStripMonitorPedestals.h.

Referenced by dqmEndRun().

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

Definition at line 94 of file SiStripMonitorPedestals.h.

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

edm::ParameterSet SiStripMonitorPedestals::pedsPSet_
private

Definition at line 96 of file SiStripMonitorPedestals.h.

Referenced by createMEs(), and SiStripMonitorPedestals().

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

Definition at line 114 of file SiStripMonitorPedestals.h.

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

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

Definition at line 115 of file SiStripMonitorPedestals.h.

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

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

Definition at line 116 of file SiStripMonitorPedestals.h.

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

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

Definition at line 102 of file SiStripMonitorPedestals.h.

int SiStripMonitorPedestals::theEventInitNumber_
private

Definition at line 107 of file SiStripMonitorPedestals.h.

Referenced by analyze(), and SiStripMonitorPedestals().

int SiStripMonitorPedestals::theEventIterNumber_
private

Definition at line 108 of file SiStripMonitorPedestals.h.

Referenced by analyze(), and SiStripMonitorPedestals().