CMS 3D CMS Logo

SiStripOfflineDQM.cc
Go to the documentation of this file.
1 // -*- C++ -*-
2 //
3 // Package: SiStripMonitorCluster
4 // Class: SiStripOfflineDQM
5 //
14 //
15 // Original Author: Samvel Khalatyan (ksamdev at gmail dot com)
16 // Created: Wed Oct 5 16:42:34 CET 2006
17 //
18 //
19 
25 
27 
29 
31 
34 
35 #include "SiStripOfflineDQM.h"
36 
37 //Run Info
41 
42 // Cabling
45 
46 #include <iostream>
47 #include <iomanip>
48 #include <cstdio>
49 #include <string>
50 #include <sstream>
51 #include <cmath>
52 
54  : configPar_{pSet},
55  actionExecutor_{pSet},
56  usedWithEDMtoMEConverter_{configPar_.getUntrackedParameter<bool>("UsedWithEDMtoMEConverter", false)},
57  createSummary_{configPar_.getUntrackedParameter<bool>("CreateSummary", false)},
58  createTkInfoFile_{configPar_.getUntrackedParameter<bool>("CreateTkInfoFile", false)},
61  globalStatusFilling_{configPar_.getUntrackedParameter<int>("GlobalStatusFilling", 1)},
62  printFaultyModuleList_{configPar_.getUntrackedParameter<bool>("PrintFaultyModuleList", false)} {
63  if (createTkInfoFile_) {
65  ->make<TTree>("TkDetIdInfo", "");
66  }
67 }
68 
70  // Essential: reads xml file to get the histogram names to create summary
71  // Read the summary configuration file
72  if (createSummary_) {
74  edm::LogInfo("ReadConfigurationProblem") << "SiStripOfflineDQM:: Error to read configuration file!! Summary "
75  "will not be produced!!!";
76  createSummary_ = false;
77  }
78  }
79  edm::LogInfo("BeginJobDone") << "SiStripOfflineDQM::beginJob done";
80 }
81 
83  edm::LogInfo("BeginRun") << "SiStripOfflineDQM:: Begining of Run";
84 
85  int nFEDs = 0;
86  if (auto runInfoRec = eSetup.tryToGet<RunInfoRcd>()) {
88  runInfoRec->get(sumFED);
89  if (sumFED.isValid()) {
90  constexpr int siStripFedIdMin{FEDNumbering::MINSiStripFEDID};
91  constexpr int siStripFedIdMax{FEDNumbering::MAXSiStripFEDID};
92 
93  for (auto const fedID : sumFED->m_fed_in) {
94  if (fedID >= siStripFedIdMin && fedID <= siStripFedIdMax)
95  ++nFEDs;
96  }
97  }
98  }
99  auto& dqm_store = *edm::Service<DQMStore>{};
100  trackerFEDsFound_ = (nFEDs > 0);
102  if (!openInputFile(dqm_store))
103  createSummary_ = false;
104  }
105  if (globalStatusFilling_ > 0) {
106  actionExecutor_.createStatus(dqm_store);
107  }
108 }
109 
111 
113  edm::LogInfo("EndLumiBlock") << "SiStripOfflineDQM::endLuminosityBlock";
114  if (trackerFEDsFound_) {
115  if (globalStatusFilling_ > 0) {
116  auto& dqm_store = *edm::Service<DQMStore>{};
118  }
119  }
120 }
121 
123  edm::LogInfo("EndOfRun") << "SiStripOfflineDQM::endRun";
124 
125  // Access Cabling
127  eSetup.get<SiStripDetCablingRcd>().get(det_cabling);
128 
129  auto& dqm_store = *edm::Service<DQMStore>{};
130  if (globalStatusFilling_ > 0) {
131  actionExecutor_.createStatus(dqm_store);
132  if (!trackerFEDsFound_) {
134  return;
135  }
136  // Fill Global Status
137  actionExecutor_.fillStatus(dqm_store, det_cabling, eSetup);
138  }
139 
141  return;
142 
143  // create Summary Plots
144  if (createSummary_)
146 
147  // Create TrackerMap
148  bool const create_tkmap = configPar_.getUntrackedParameter<bool>("CreateTkMap", false);
149  if (create_tkmap) {
150  auto const tkMapOptions = configPar_.getUntrackedParameter<std::vector<edm::ParameterSet>>("TkMapOptions");
152  std::vector<std::string> map_names;
153  for (auto const& ps : tkMapOptions) {
154  edm::ParameterSet tkMapPSet = ps;
155  std::string map_type = ps.getUntrackedParameter<std::string>("mapName", "");
156  map_names.push_back(map_type);
157  tkMapPSet.augment(configPar_.getUntrackedParameter<edm::ParameterSet>("TkmapParameters"));
158  edm::LogInfo("TkMapParameters") << tkMapPSet;
159  actionExecutor_.createOfflineTkMap(tkMapPSet, dqm_store, map_type, eSetup);
160  }
161  if (createTkInfoFile_) {
162  actionExecutor_.createTkInfoFile(map_names, tkinfoTree_, dqm_store);
163  }
164  }
165  }
166 }
167 
169  edm::LogInfo("EndOfJob") << "SiStripOfflineDQM::endJob";
171  return;
172 
174  std::ostringstream str_val;
175  auto& dqm_store = *edm::Service<DQMStore>{};
176  actionExecutor_.printFaultyModuleList(dqm_store, str_val);
177  std::cout << str_val.str() << std::endl;
178  }
179 }
180 
182  if (inputFileName_.empty())
183  return false;
184  edm::LogInfo("OpenFile") << "SiStripOfflineDQM::openInputFile: Accessing root File" << inputFileName_;
185  dqm_store.open(inputFileName_, false);
186  return true;
187 }
188 
T getUntrackedParameter(std::string const &, T const &) const
std::optional< T > tryToGet() const
Definition: EventSetup.h:94
std::string const inputFileName_
SiStripOfflineDQM(edm::ParameterSet const &ps)
void fillStatusAtLumi(DQMStore &dqm_store)
void createTkInfoFile(std::vector< std::string > tkhmap_names, TTree *tkinfo_tree, DQMStore &dqm_store)
void endRun(edm::Run const &run, edm::EventSetup const &eSetup) override
void analyze(edm::Event const &e, edm::EventSetup const &eSetup) override
T * make(const Args &...args) const
make new ROOT object
Definition: TFileService.h:64
bool readTkMapConfiguration(const edm::EventSetup &eSetup)
void fillStatus(DQMStore &dqm_store, edm::ESHandle< SiStripDetCabling > const &fedcabling, edm::EventSetup const &eSetup)
void augment(ParameterSet const &from)
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
bool openInputFile(DQMStore &dqm_store)
std::vector< int > m_fed_in
Definition: RunInfo.h:25
bool const createTkInfoFile_
void endJob() override
void printFaultyModuleList(DQMStore &dqm_store, std::ostringstream &str_val)
void endLuminosityBlock(edm::LuminosityBlock const &lumiSeg, edm::EventSetup const &iSetup) override
void createStatus(DQMStore &dqm_store)
void beginRun(edm::Run const &run, edm::EventSetup const &eSetup) override
void beginJob() override
T get() const
Definition: EventSetup.h:73
void createSummaryOffline(DQMStore &dqm_store)
bool open(std::string const &filename, bool overwrite=false, std::string const &path="", std::string const &prepend="", OpenRunDirs stripdirs=KeepRunDirs, bool fileMustExist=true)
Definition: DQMStore.cc:2626
std::string const outputFileName_
SiStripActionExecutor actionExecutor_
bool isValid() const
Definition: ESHandle.h:44
edm::ParameterSet const configPar_
void createOfflineTkMap(const edm::ParameterSet &tkmapPset, DQMStore &dqm_store, std::string &map_type, const edm::EventSetup &eSetup)
#define constexpr
Definition: Run.h:45