19 : pSet_(ps), verbose_(pSet_.getUntrackedParameter<
bool>(
"verbose",
false)) {
20 edm::LogInfo(
"TrackingQualityChecker") <<
" Creating TrackingQualityChecker " 29 std::vector<edm::ParameterSet> TrackingGlobalQualityMEs =
30 pSet_.
getParameter<std::vector<edm::ParameterSet> >(
"TrackingGlobalQualityPSets");
31 for (
const auto& meQTset : TrackingGlobalQualityMEs) {
33 tracking_mes.HistoDir = meQTset.getParameter<
std::string>(
"dir");
34 tracking_mes.HistoName = meQTset.getParameter<
std::string>(
"name");
36 edm::LogInfo(
"TrackingQualityChecker") <<
" inserting " << QTname <<
" in TrackingMEsMap" << std::endl;
37 TrackingMEsMap.insert(std::pair<std::string, TrackingMEs>(QTname, tracking_mes));
40 edm::LogInfo(
"TrackingQualityChecker") <<
" created TrackingMEsMap" << std::endl;
47 tracking_ls_mes.
HistoLSDir = meQTset.exists(
"LSdir") ? meQTset.getParameter<
std::string>(
"LSdir") :
"";
49 tracking_ls_mes.
HistoLSLowerCut = meQTset.exists(
"LSlowerCut") ? meQTset.getParameter<
double>(
"LSlowerCut") : -1.;
50 tracking_ls_mes.
HistoLSUpperCut = meQTset.exists(
"LSupperCut") ? meQTset.getParameter<
double>(
"LSupperCut") : -1.;
54 edm::LogInfo(
"TrackingQualityChecker") <<
" inserting " << QTname <<
" in TrackingMEsMap" << std::endl;
55 TrackingLSMEsMap.insert(std::pair<std::string, TrackingLSMEs>(QTname, tracking_ls_mes));
58 edm::LogInfo(
"TrackingQualityChecker") <<
" created TrackingLSMEsMap" << std::endl;
64 edm::LogInfo(
"TrackingQualityChecker") <<
" Deleting TrackingQualityChecker " 72 edm::LogInfo(
"TrackingQualityChecker") <<
"[TrackingQualityChecker::bookGlobalStatus] already booked ? " 77 edm::LogInfo(
"TrackingQualityChecker") <<
" booking TrackingQualityStatus" 87 hname =
"reportSummaryMap";
88 htitle =
"Tracking Report Summary Map";
92 edm::LogInfo(
"TrackingQualityChecker") <<
"[TrackingQualityChecker::bookGlobalStatus] nQT: " << nQT << std::endl;
106 it->second.TrackingFlag = ibooker.
bookFloat(
"Track" + meQTname);
108 edm::LogInfo(
"TrackingQualityChecker") <<
"[TrackingQualityChecker::bookGlobalStatus] " <<
it->first
109 <<
" exists ? " <<
it->second.TrackingFlag << std::endl;
112 <<
"[TrackingQualityChecker::bookGlobalStatus] DONE w/ TrackingMEsMap" << std::endl;
122 edm::LogInfo(
"TrackingQualityChecker") <<
"[TrackingQualityChecker::bookLSStatus] already booked ? " 127 edm::LogInfo(
"TrackingQualityChecker") <<
" booking TrackingQualityStatus" 137 hname =
"reportSummaryMap";
138 htitle =
"Tracking Report Summary Map";
142 edm::LogInfo(
"TrackingQualityChecker") <<
"[TrackingQualityChecker::bookLSStatus] nQT: " << nQT << std::endl;
149 it->second.TrackingFlag = ibooker.
bookFloat(
"Track" + meQTname);
151 edm::LogInfo(
"TrackingQualityChecker") <<
"[TrackingQualityChecker::bookLSStatus] " <<
it->first <<
" exists ? " 152 <<
it->second.TrackingFlag << std::endl;
155 <<
"[TrackingQualityChecker::bookLSStatus] DONE w/ TrackingLSMEsMap" << std::endl;
169 <<
"[TrackingQualityChecker::fillDummyGlobalStatus] starting ..." << std::endl;
173 edm::LogInfo(
"TrackingQualityChecker") <<
"[TrackingQualityChecker::fillDummyGlobalStatus] already booked ? " 183 it->second.TrackingFlag->Fill(-1.0);
186 <<
"[TrackingQualityChecker::fillDummyGlobalStatus] DONE w/ TrackingMEsMap" << std::endl;
191 edm::LogInfo(
"TrackingQualityChecker") <<
"[TrackingQualityChecker::fillDummyLSStatus] starting ..." << std::endl;
195 edm::LogInfo(
"TrackingQualityChecker") <<
"[TrackingQualityChecker::fillDummyLSStatus] already booked ? " 201 it->second.TrackingFlag->Fill(-1.0);
204 <<
"[TrackingQualityChecker::fillDummyLSStatus] DONE w/ TrackingLSMEsMap" << std::endl;
213 edm::LogInfo(
"TrackingQualityChecker") <<
"[TrackingQualityChecker::resetGlobalStatus] already booked ? " 223 <<
"[TrackingQualityChecker::resetGlobalStatus] " <<
it->second.HistoName <<
" exist ? " 224 << (
it->second.TrackingFlag ==
nullptr ?
"nope" :
"yes") <<
" ---> " <<
me << std::endl;
229 <<
"[TrackingQualityChecker::resetGlobalStatus] DONE w/ TrackingMEsMap" << std::endl;
234 edm::LogInfo(
"TrackingQualityChecker") <<
"[TrackingQualityChecker::resetLSStatus] already booked ? " 243 <<
"[TrackingQualityChecker::resetLSStatus] " <<
it->second.HistoLSName <<
" exist ? " 244 << (
it->second.TrackingFlag ==
nullptr ?
"nope" :
"yes") <<
" ---> " <<
me << std::endl;
249 <<
"[TrackingQualityChecker::resetLSStatus] DONE w/ TrackingLSMEsMap" << std::endl;
258 edm::LogInfo(
"TrackingQualityChecker") <<
"[TrackingQualityChecker::fillGlobalStatus] already booked ? " 266 edm::LogInfo(
"TrackingQualityChecker") <<
"[TrackingQualityChecker::fillGlobalStatus] DONE" << std::endl;
272 edm::LogInfo(
"TrackingQualityChecker") <<
"[TrackingQualityChecker::fillLSStatus] already booked ? " 280 edm::LogInfo(
"TrackingQualityChecker") <<
"[TrackingQualityChecker::fillLSStatus] DONE" << std::endl;
298 <<
"fillTrackingStatus ME: " <<
it->first <<
" [" <<
it->second.TrackingFlag->getFullname()
299 <<
"] flag: " <<
it->second.TrackingFlag->getFloatValue() << std::endl;
306 std::vector<MonitorElement*> tmpMEvec = igetter.
getContents(ibooker.
pwd() +
"/" + localMEdirpath);
308 if (
it->first ==
"SeedNStrip" or it->first ==
"SeedNPixel") {
312 edm::LogInfo(
"TrackingQualityChecker") <<
"fillTrackingStatus tmpMEvec: " << tmpMEvec.size() << std::endl;
316 for (
auto ime : tmpMEvec) {
319 edm::LogInfo(
"TrackingQualityChecker") <<
"name: " <<
name <<
" <-- --> " << MEname << std::endl;
320 if (
name.find(MEname) != std::string::npos) {
327 edm::LogInfo(
"TrackingQualityChecker") <<
"fillTrackingStatus nMEs: " << nMEs << std::endl;
330 for (
auto ime : tmpMEvec) {
333 edm::LogInfo(
"TrackingQualityChecker") <<
"name: " <<
name <<
" [" << MEname <<
"]" << std::endl;
334 if (
name.find(MEname) != std::string::npos) {
337 edm::LogInfo(
"TrackingQualityChecker") <<
"inside the loop nQTme: " <<
me->getQReports().size() <<
"[" 338 << ime->getFullname() <<
"]" << std::endl;
343 <<
"me: " <<
me <<
"[" <<
me->getName() <<
", " <<
me->getFullname() <<
"]" << std::endl;
347 edm::LogInfo(
"TrackingQualityChecker") <<
"fillTrackingStatus status: " <<
status << std::endl;
348 std::vector<QReport*> qt_reports =
me->getQReports();
349 size_t nQTme = qt_reports.size();
351 edm::LogInfo(
"TrackingQualityChecker") <<
"nQTme: " << nQTme << std::endl;
354 edm::LogInfo(
"TrackingQualityChecker") <<
"fillTrackingStatus qt_reports: " << qt_reports.size() << std::endl;
356 for (
auto iQT : qt_reports) {
357 status += iQT->getQTresult();
359 edm::LogInfo(
"TrackingQualityChecker") <<
"fillTrackingStatus iQT: " << iQT->getQRName() << std::endl;
362 <<
"fillTrackingStatus MEname: " << MEname <<
" status: " << iQT->getQTresult() <<
" exists ? " 363 << (
it->second.TrackingFlag ?
"yes " :
"no ") <<
it->second.TrackingFlag << std::endl;
366 <<
"fillTrackingStatus iQT message: " << iQT->getMessage() << std::endl;
369 <<
"fillTrackingStatus iQT status: " << iQT->getStatus() << std::endl;
374 <<
"fillTrackingStatus MEname: " << MEname <<
" status: " <<
status << std::endl;
375 it->second.TrackingFlag->Fill(
status);
384 <<
"fillTrackingStatus gstatus: " << gstatus <<
" x status: " <<
status << std::endl;
390 edm::LogInfo(
"TrackingQualityChecker") <<
"fillTrackingStatus ===> gstatus: " << gstatus << std::endl;
393 <<
"fillTrackingStatus ME: " <<
it->first <<
" [" <<
it->second.TrackingFlag->getFullname()
394 <<
"] flag: " <<
it->second.TrackingFlag->getFloatValue() << std::endl;
398 for (
auto ime : tmpMEvec) {
399 float tmp_status = 1.;
401 if (
name.find(MEname) != std::string::npos) {
405 edm::LogInfo(
"TrackingQualityChecker") <<
"fillTrackingStatus status: " <<
status << std::endl;
406 std::vector<QReport*> qt_reports =
me->getQReports();
407 size_t nQTme = qt_reports.size();
410 <<
"nQTme: " << nQTme <<
"[" <<
name <<
", " << ime->getFullname() <<
"]" << std::endl;
414 <<
"fillTrackingStatus qt_reports: " << qt_reports.size() << std::endl;
416 for (
auto iQT : qt_reports) {
418 tmp_status += iQT->getQTresult();
420 edm::LogInfo(
"TrackingQualityChecker") <<
"fillTrackingStatus iQT: " << iQT->getQRName() << std::endl;
423 <<
"fillTrackingStatus MEname: " << MEname <<
" status: " << iQT->getQTresult() <<
" exists ? " 424 << (
it->second.TrackingFlag ?
"yes " :
"no ") <<
it->second.TrackingFlag << std::endl;
427 <<
"fillTrackingStatus iQT message: " << iQT->getMessage() << std::endl;
430 <<
"fillTrackingStatus iQT status: " << iQT->getStatus() << std::endl;
432 tmp_status = tmp_status /
float(nQTme);
443 <<
"fillTrackingStatus MEname: " << MEname <<
" status: " <<
status << std::endl;
444 it->second.TrackingFlag->Fill(
status);
457 std::vector<MonitorElement*> tmpMEvec = igetter.
getContents(ibooker.
pwd() +
"/" + localMEdirpath);
458 for (
auto ime : tmpMEvec) {
459 if (ime->getLumiFlag()) {
466 edm::LogInfo(
"TrackingQualityChecker") <<
"fillTrackingStatus gstatus: " << gstatus << std::endl;
471 gstatus = gstatus /
float(nQT);
474 edm::LogInfo(
"TrackingQualityChecker") <<
"fillTrackingStatus ===> gstatus: " << gstatus << std::endl;
479 edm::LogInfo(
"TrackingQualityChecker") <<
"fillTrackingStatus DONE" << std::endl;
487 TH2F* th2d =
me->getTH2F();
488 th2d->SetBinContent(xbin, ybin,
val);
497 <<
"[TrackingQualityChecker::fillTrackingStatusAtLumi] starting .. " << std::endl;
507 edm::LogInfo(
"TrackingQualityChecker") <<
"[TrackingQualityChecker::fillTrackingStatusAtLumi] ME: " <<
it->first
508 <<
" [" <<
it->second.TrackingFlag->getFullname()
509 <<
"] flag: " <<
it->second.TrackingFlag->getFloatValue() << std::endl;
513 float lower_cut =
it->second.HistoLSLowerCut;
514 float upper_cut =
it->second.HistoLSUpperCut;
518 std::vector<MonitorElement*> tmpMEvec = igetter.
getContents(ibooker.
pwd() +
"/" + localMEdirpath);
521 <<
"[TrackingQualityChecker::fillTrackingStatusAtLumi] tmpMEvec: " << tmpMEvec.size() << std::endl;
526 for (
auto ime : tmpMEvec) {
528 if (
name.find(MEname) != std::string::npos) {
535 for (
auto ime : tmpMEvec) {
537 if (
name.find(MEname) != std::string::npos) {
548 <<
"[TrackingQualityChecker::fillTrackingStatusAtLumi] MEname: " << MEname <<
" x_mean: " <<
x_mean 550 if (x_mean <= lower_cut || x_mean > upper_cut)
556 for (
auto ime : tmpMEvec) {
557 float tmp_status = 1.;
559 if (
name.find(MEname) != std::string::npos) {
568 <<
"[TrackingQualityChecker::fillTrackingStatusAtLumi] MEname: " << MEname <<
"[" <<
me->getName()
569 <<
"] x_mean: " <<
x_mean << std::endl;
570 if (x_mean <= lower_cut || x_mean > upper_cut)
576 <<
"[TrackingQualityChecker::fillTrackingStatusAtLumi] tmp_status: " << tmp_status << std::endl;
582 <<
"[TrackingQualityChecker::fillTrackingStatusAtLumi] ==> status: " <<
status << std::endl;
585 it->second.TrackingFlag->Fill(
status);
588 <<
"[TrackingQualityChecker::fillTrackingStatusAtLumi] ===> status: " <<
status <<
" [" << gstatus <<
"]" 593 gstatus = gstatus *
status;
596 <<
"[TrackingQualityChecker::fillTrackingStatusAtLumi] ===> gstatus: " << gstatus << std::endl;
598 edm::LogInfo(
"TrackingQualityChecker") <<
"[TrackingQualityChecker::fillTrackingStatusAtLumi] ME: " <<
it->first
599 <<
" [" <<
it->second.TrackingFlag->getFullname()
600 <<
"] flag: " <<
it->second.TrackingFlag->getFloatValue() << std::endl;
606 edm::LogInfo(
"TrackingQualityChecker") <<
"[TrackingQualityChecker::fillTrackingStatusAtLumi] DONE" << std::endl;
MonitorElement * TrackingFlag
T getParameter(std::string const &) const
MonitorElement * bookFloat(TString const &name, FUNC onbooking=NOOP())
MonitorElement * TrackGlobalSummaryReportMap
void fillDummyGlobalStatus()
virtual void setCurrentFolder(std::string const &fullpath)
virtual std::string pwd()
std::map< std::string, TrackingMEs > TrackingMEsMap
virtual ~TrackingQualityChecker()
std::string TopFolderName_
T getUntrackedParameter(std::string const &, T const &) const
TrackingQualityChecker(edm::ParameterSet const &ps)
virtual void Reset()
Remove all data from the ME, keept the empty histogram with all its settings.
void fillGlobalStatus(DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter)
MonitorElement * TrackLSSummaryReportGlobal
void fillLSStatus(DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter)
bool bookedTrackingGlobalStatus_
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
static bool goToDir(DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter, std::string name)
void fillStatusHistogram(MonitorElement *, int xbin, int ybin, float val)
virtual void setBinLabel(int bin, const std::string &label, int axis=1)
set bin label for x, y or z axis (axis=1, 2, 3 respectively)
Log< level::Info, false > LogInfo
MonitorElement * book2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, FUNC onbooking=NOOP())
bool bookedTrackingLSStatus_
void bookLSStatus(DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter)
void bookGlobalStatus(DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter)
void fillTrackingStatusAtLumi(DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter)
MonitorElement * TrackGlobalSummaryReportGlobal
void fillTrackingStatus(DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter)
virtual int getNbinsX() const
get # of bins in X-axis
static void getTopFolderPath(DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter, std::string top_dir, std::string &path)
if(threadIdxLocalY==0 &&threadIdxLocalX==0)
std::map< std::string, TrackingLSMEs > TrackingLSMEsMap
virtual std::vector< dqm::harvesting::MonitorElement * > getContents(std::string const &path) const
virtual void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)