CMS 3D CMS Logo

SiStripPopConNoisesDQM.cc
Go to the documentation of this file.
10 public:
13 
16  // interface methods: implemented in template
17  void dqmEndJob(DQMStore::IBooker& booker, DQMStore::IGetter& getter) override;
18  SiStripNoises* getObj() const override;
19 
20 private:
24 };
25 
28 
32  fp_{iConfig.getUntrackedParameter<edm::FileInPath>("file",
34  MEDir_{iConfig.getUntrackedParameter<std::string>("ME_DIR", "DQMData")} {
35  edm::LogInfo("SiStripNoisesDQMService") << "[SiStripNoisesDQMService::SiStripNoisesDQMService]";
36 }
37 
39  edm::LogInfo("SiStripNoisesDQMService") << "[SiStripNoisesDQMService::~SiStripNoisesDQMService]";
40 }
41 
43  std::cout << "SiStripNoisesDQMService::readNoises" << std::endl;
44 
45  m_obj = SiStripNoises();
46 
47  const auto detInfo = SiStripDetInfoFileReader::read(fp_.fullPath());
48 
49  // getter.cd(iConfig_.getUntrackedParameter<std::string>("ME_DIR"));
50  getter.cd();
51 
52  uint32_t stripsPerApv = 128;
53 
54  // Get the full list of monitoring elements
55  // const std::vector<MonitorElement*>& MEs = getter.getAllContents(iConfig_.getUntrackedParameter<std::string>("ME_DIR","DQMData"));
56 
57  // Take a copy of the vector
58  std::vector<MonitorElement*> MEs = getter.getAllContents(MEDir_);
59  // Remove all but the MEs we are using
60  MEs.erase(std::remove_if(MEs.begin(),
61  MEs.end(),
62  [](const MonitorElement* ME) -> bool {
63  return std::string::npos == ME->getName().find("CMSubNoisePerStrip__det__");
64  }),
65  MEs.end());
66 
67  // The histograms are one per DetId, loop on all the DetIds and extract the corresponding histogram
68  for (const auto& detInfo : detInfo.getAllData()) {
69  SiStripNoises::InputVector theSiStripVector;
70 
71  // Take the path for each DetId and build the complete path + histogram name
72 
73  // MonitorElement * mE = getModuleHistogram(detInfo.first, "PedsPerStrip");
74  const MonitorElement* mE{nullptr};
75  std::string MEname("CMSubNoisePerStrip__det__" + std::to_string(detInfo.first));
76  for (const MonitorElement* ime : MEs) {
77  if (ime->getName() == MEname) {
78  mE = ime;
79  break;
80  }
81  }
82 
83  // find( MEs.begin(), MEs.end(), "PedsPerStrip__det__"+std::to_string(detInfo.first), findMEbyName() );
84  // MonitorElement * mE = *(find( MEs.begin(), MEs.end(), findMEbyName("PedsPerStrip__det__"+std::to_string(detInfo.first)) ));
85  if (mE) {
86  TH1F* histo = mE->getTH1F();
87  if (histo != nullptr) {
88  // Read the noise from the histograms
89  uint32_t nBinsX = histo->GetXaxis()->GetNbins();
90 
91  if (nBinsX != stripsPerApv * (detInfo.second.nApvs)) {
92  std::cout << "ERROR: number of bin = " << nBinsX
93  << " != number of strips = " << stripsPerApv * (detInfo.second.nApvs) << std::endl;
94  }
95 
96  // std::cout << "Bin 0 = " << histo->GetBinContent(0) << std::endl;
97  // TH1 bins start from 1, 0 is the underflow, nBinsX+1 the overflow.
98  for (uint32_t iBin = 1; iBin <= nBinsX; ++iBin) {
99  // encode the pedestal value and put it in the vector (push_back)
100  m_obj.setData(histo->GetBinContent(iBin), theSiStripVector);
101  }
102  } else {
103  std::cout << "ERROR: histo = " << histo << std::endl;
104  }
105  } else {
106  std::cout << "ERROR: ME = " << mE << std::endl;
107  }
108  // If the ME was absent fill the vector with 50 (we want a high noise to avoid these modules being considered good by mistake)
109  if (theSiStripVector.empty()) {
110  for (unsigned short j = 0; j < 128 * detInfo.second.nApvs; ++j) {
111  m_obj.setData(50, theSiStripVector);
112  }
113  }
114 
115  if (!m_obj.put(detInfo.first, theSiStripVector))
116  edm::LogError("SiStripNoisesFakeESSource::produce ") << " detid already exists" << std::endl;
117  }
118  getter.cd();
119 }
120 
122 
SiStripNoises
Definition: SiStripNoises.h:25
SiStripNoises::put
bool put(const uint32_t &detID, const InputVector &input)
Definition: SiStripNoises.cc:16
SiStripDQMPopConSourceHandler
Definition: SiStripDQMPopConSourceHandler.h:19
SiStripPopConDQMEDHarvester.h
gather_cfg.cout
cout
Definition: gather_cfg.py:144
timingPdfMaker.histo
histo
Definition: timingPdfMaker.py:278
SiStripPopConNoisesHandlerFromDQM::m_obj
SiStripNoises m_obj
Definition: SiStripPopConNoisesDQM.cc:23
DQMStore.h
dqm::legacy::MonitorElement
Definition: MonitorElement.h:462
edm::ParameterSet::getUntrackedParameter
T getUntrackedParameter(std::string const &, T const &) const
SiStripNoises.h
SiStripPopConNoisesHandlerFromDQM::getObj
SiStripNoises * getObj() const override
Definition: SiStripPopConNoisesDQM.cc:121
edm::LogInfo
Log< level::Info, false > LogInfo
Definition: MessageLogger.h:125
dqm::implementation::IGetter::getAllContents
virtual std::vector< dqm::harvesting::MonitorElement * > getAllContents(std::string const &path) const
Definition: DQMStore.cc:609
SiStripDetInfoFileReader::read
SiStripDetInfo read(std::string filePath)
Definition: SiStripDetInfoFileReader.cc:11
edm::FileInPath
Definition: FileInPath.h:61
MakerMacros.h
SiStripPopConNoisesHandlerFromDQM::SiStripPopConNoisesHandlerFromDQM
SiStripPopConNoisesHandlerFromDQM(const edm::ParameterSet &iConfig, edm::ConsumesCollector &&)
Definition: SiStripPopConNoisesDQM.cc:29
DEFINE_FWK_MODULE
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
dqm::legacy::DQMStore
Definition: DQMStore.h:728
dqm::implementation::NavigatorBase::cd
virtual void cd()
Definition: DQMStore.cc:29
SiStripPopConNoisesHandlerFromDQM::DQMStore
dqm::legacy::DQMStore DQMStore
Definition: SiStripPopConNoisesDQM.cc:12
SiStripDetInfoFileReader.h
SiStripNoises::setData
void setData(float noise_, InputVector &vped)
Definition: SiStripNoises.cc:74
SiStripPopConNoisesHandlerFromDQM
Definition: SiStripPopConNoisesDQM.cc:9
SiStripPopConNoisesHandlerFromDQM::MonitorElement
dqm::legacy::MonitorElement MonitorElement
Definition: SiStripPopConNoisesDQM.cc:11
edm::ParameterSet
Definition: ParameterSet.h:47
ME
dqm::harvesting::MonitorElement ME
Definition: TrackingDQMClientHeavyIons.cc:20
AlCaHLTBitMon_QueryRunRegistry.string
string string
Definition: AlCaHLTBitMon_QueryRunRegistry.py:256
SiStripPopConNoisesHandlerFromDQM::MEDir_
std::string MEDir_
Definition: SiStripPopConNoisesDQM.cc:22
EcalMEFormatter_cfi.MEs
MEs
Definition: EcalMEFormatter_cfi.py:25
dqm::implementation::IGetter
Definition: DQMStore.h:484
SiStripDetInfoFileReader::kDefaultFile
constexpr static char const *const kDefaultFile
Definition: SiStripDetInfoFileReader.h:10
ME
Definition: ME.h:11
SiStripPopConDQMEDHarvester
Definition: SiStripPopConDQMEDHarvester.h:15
dqm::implementation::IBooker
Definition: DQMStore.h:43
SiStripPopConNoisesHandlerFromDQM::dqmEndJob
void dqmEndJob(DQMStore::IBooker &booker, DQMStore::IGetter &getter) override
Definition: SiStripPopConNoisesDQM.cc:42
SiStripNoises::InputVector
std::vector< uint16_t > InputVector
Definition: SiStripNoises.h:50
dqmiolumiharvest.j
j
Definition: dqmiolumiharvest.py:66
SiStripPopConNoisesHandlerFromDQM::~SiStripPopConNoisesHandlerFromDQM
~SiStripPopConNoisesHandlerFromDQM() override
Definition: SiStripPopConNoisesDQM.cc:38
edm::Log
Definition: MessageLogger.h:70
SiStripDQMPopConSourceHandler.h
edm::ConsumesCollector
Definition: ConsumesCollector.h:45
SiStripPopConNoisesHandlerFromDQM::fp_
edm::FileInPath fp_
Definition: SiStripPopConNoisesDQM.cc:21
edm::FileInPath::fullPath
std::string fullPath() const
Definition: FileInPath.cc:161