20 edm::LogInfo(
"SiStripActionExecutor") <<
" Creating SiStripActionExecutor "
25 edm::LogInfo(
"SiStripActionExecutor") <<
" Deleting SiStripActionExecutor "
34 "SummaryConfigPath",
"DQM/SiStripMonitorClient/data/sistrip_monitorelement_config.xml");
44 tkMapCreator_ = std::make_unique<SiStripTrackerMapCreator>(detCabling, tkDetMap, tTopo);
92 tkMapCreator_->createForOffline(tkmapPset, dqm_store, map_type, stripQuality);
104 tkMapCreator_->createInfoFile(map_names, tkinfo_tree, dqm_store, geomDet);
130 report_file <<
" Nothing to report!!" << std::endl;
136 std::string const localPath{
"DQM/SiStripMonitorClient/data/sistrip_plot_layout.xml"};
140 std::map<std::string, std::vector<std::string>> layout_map;
144 std::ostringstream shift_summary;
149 shift_summary <<
" Report Summary Content :\n"
150 <<
" =========================" << std::endl;
155 report_path =
"SiStrip/EventInfo/reportSummaryContents/SiStrip_DetFraction_TECB";
156 me = dqm_store.
get(report_path);
159 report_path =
"SiStrip/EventInfo/reportSummaryContents/SiStrip_DetFraction_TECF";
160 me = dqm_store.
get(report_path);
163 report_path =
"SiStrip/EventInfo/reportSummaryContents/SiStrip_DetFraction_TIB";
164 me = dqm_store.
get(report_path);
167 report_path =
"SiStrip/EventInfo/reportSummaryContents/SiStrip_DetFraction_TIDB";
168 me = dqm_store.
get(report_path);
171 report_path =
"SiStrip/EventInfo/reportSummaryContents/SiStrip_DetFraction_TIDF";
172 me = dqm_store.
get(report_path);
175 report_path =
"SiStrip/EventInfo/reportSummaryContents/SiStrip_DetFraction_TOB";
176 me = dqm_store.
get(report_path);
179 shift_summary << std::endl;
184 report_file << shift_summary.str() << std::endl;
191 str_val <<
" " << name <<
" : ";
194 configWriter_->createChildElement(
"MonitorElement", name,
"value", value);
195 float fvalue = atof(value.c_str());
197 str_val <<
" Dummy Value " << std::endl;
199 str_val << fvalue << std::endl;
203 std::map<
std::string, std::vector<std::string>>
const& layout_map,
204 std::ostringstream& str_val) {
205 str_val << std::endl;
206 for (
auto const& [set_name, path_names] : layout_map) {
207 if (set_name.find(
"Summary") != std::string::npos)
211 str_val <<
" " << set_name <<
" : " << std::endl;
212 str_val <<
" ====================================" << std::endl;
214 str_val << std::setprecision(2);
215 str_val << setiosflags(std::ios::fixed);
216 for (
auto const& path_name : path_names) {
217 if (path_name.empty())
220 std::ostringstream entry_str, mean_str, rms_str;
221 entry_str << std::setprecision(2);
222 entry_str << setiosflags(std::ios::fixed);
223 mean_str << std::setprecision(2);
224 mean_str << setiosflags(std::ios::fixed);
225 rms_str << std::setprecision(2);
226 rms_str << setiosflags(std::ios::fixed);
227 entry_str << std::setw(7) << me->
getEntries();
228 mean_str << std::setw(7) << me->
getMean();
229 rms_str << std::setw(7) << me->
getRMS();
231 "MonitorElement", me->
getName(),
"entries", entry_str.str(),
"mean", mean_str.str(),
"rms", rms_str.str());
234 str_val <<
" " << me->
getName() <<
" : entries = " << std::setw(7) << me->
getEntries()
235 <<
" mean = " << me->
getMean() <<
" : rms = " << me->
getRMS() <<
'\n';
237 str_val << std::endl;
252 std::vector<std::string> subdet_folder;
253 subdet_folder.push_back(
"TIB");
254 subdet_folder.push_back(
"TOB");
255 subdet_folder.push_back(
"TEC/MINUS");
256 subdet_folder.push_back(
"TEC/PLUS");
257 subdet_folder.push_back(
"TID/MINUS");
258 subdet_folder.push_back(
"TID/PLUS");
261 int nDetsWithErrorTotal = 0;
262 for (
auto const&
sd : subdet_folder) {
266 str_val <<
"============\n" << sd <<
'\n' <<
"============\n" << std::endl;
269 std::vector<std::string> module_folders;
271 int nDets = module_folders.size();
274 int nDetsWithError = 0;
275 std::string bad_module_folder = dname +
"/" +
"BadModuleList";
276 if (dqm_store.
dirExists(bad_module_folder)) {
277 auto const meVec = dqm_store.
getContents(bad_module_folder);
278 for (
auto me : meVec) {
280 uint16_t flag =
me->getIntValue();
283 str_val <<
me->getName() <<
" flag : " <<
me->getIntValue() <<
" " << message << std::endl;
286 str_val <<
"---------------------------------------------------------------"
288 <<
" Detectors : Total " << nDets <<
" with Error " << nDetsWithError <<
'\n'
289 <<
"---------------------------------------------------------------"
292 nDetsWithErrorTotal += nDetsWithError;
295 str_val <<
"--------------------------------------------------------------------\n"
296 <<
" Total Number of Connected Detectors : " << nDetsTotal <<
'\n'
297 <<
" Total Number of Detectors with Error : " << nDetsWithErrorTotal <<
'\n'
298 <<
"--------------------------------------------------------------------" << std::endl;
T getUntrackedParameter(std::string const &, T const &) const
static void getModuleFolderList(DQMStore &dqm_store, std::vector< std::string > &m_ids)
std::unique_ptr< SiStripSummaryCreator > summaryCreator_
void fillStatusAtLumi(DQMStore &dqm_store)
virtual std::vector< dqm::harvesting::MonitorElement * > getContents(std::string const &path) const
SiStripActionExecutor(edm::ParameterSet const &ps)
const std::string & getName() const
get name of ME
void createSummary(DQMStore &dqm_store)
virtual bool dirExists(std::string const &path) const
std::string pwd() override
static void getBadModuleStatus(uint16_t flag, std::string &message)
std::unique_ptr< SiStripTrackerMapCreator > tkMapCreator_
void createDummyShiftReport()
static void getMEValue(MonitorElement const *me, std::string &val)
std::unique_ptr< SiStripQualityChecker > qualityChecker_
virtual double getEntries() const
get # of entries
virtual MonitorElement * get(std::string const &fullpath) const
edm::ParameterSet const pSet_
void fillStatus(DQMStore &dqm_store, const SiStripDetCabling *cabling, const TkDetMap *tkDetMap, const TrackerTopology *tTopo)
std::unique_ptr< SiStripConfigWriter > configWriter_
Log< level::Info, false > LogInfo
void printFaultyModuleList(DQMStore &dqm_store, std::ostringstream &str_val)
virtual double getMean(int axis=1) const
get mean value of histogram along x, y or z axis (axis=1, 2, 3 respectively)
void createTkMap(const edm::ParameterSet &tkmapPset, DQMStore &dqm_store, const std::string &map_type)
virtual double getRMS(int axis=1) const
get RMS of histogram along x, y or z axis (axis=1, 2, 3 respectively)
void createStatus(DQMStore &dqm_store)
virtual ~SiStripActionExecutor()
void createOfflineTkMap(const edm::ParameterSet &tkmapPset, DQMStore &dqm_store, std::string &map_type, const SiStripQuality *stripQuality)
void createTkInfoFile(std::vector< std::string > tkhmap_names, TTree *tkinfo_tree, DQMStore &dqm_store, const GeometricDet *geomDet)
static bool goToDir(DQMStore &dqm_store, std::string const &name)
void createSummaryOffline(DQMStore &dqm_store)
bool getAllLayouts(std::map< std::string, std::vector< std::string > > &me_names)
void printReportSummary(MonitorElement *me, std::ostringstream &str_val, std::string name)
bool readTkMapConfiguration(const SiStripDetCabling *detCabling, const TkDetMap *tkDetMap, const TrackerTopology *tTopo)
void createShiftReport(DQMStore &dqm_store)
void getDocument(std::string filepath)
void printShiftHistoParameters(DQMStore &dqm_store, std::map< std::string, std::vector< std::string >> const &layout_map, std::ostringstream &str_val)