20 : pSet_(ps), verbose_(pSet_.getUntrackedParameter<
bool>(
"verbose",
false)) {
21 edm::LogInfo(
"TrackingQualityChecker") <<
" Creating TrackingQualityChecker " 30 std::vector<edm::ParameterSet> TrackingGlobalQualityMEs =
31 pSet_.
getParameter<std::vector<edm::ParameterSet> >(
"TrackingGlobalQualityPSets");
32 for (
auto meQTset : TrackingGlobalQualityMEs) {
34 tracking_mes.HistoDir = meQTset.getParameter<
std::string>(
"dir");
35 tracking_mes.HistoName = meQTset.getParameter<
std::string>(
"name");
37 std::cout <<
"[TrackingQualityChecker::TrackingQualityChecker] inserting " << QTname <<
" in TrackingMEsMap" 39 TrackingMEsMap.insert(std::pair<std::string, TrackingMEs>(QTname, tracking_mes));
42 std::cout <<
"[TrackingQualityChecker::TrackingQualityChecker] created TrackingMEsMap" << std::endl;
47 for (
auto meQTset : TrackingLSQualityMEs) {
49 tracking_ls_mes.
HistoLSDir = meQTset.exists(
"LSdir") ? meQTset.getParameter<
std::string>(
"LSdir") :
"";
51 tracking_ls_mes.
HistoLSLowerCut = meQTset.exists(
"LSlowerCut") ? meQTset.getParameter<
double>(
"LSlowerCut") : -1.;
52 tracking_ls_mes.
HistoLSUpperCut = meQTset.exists(
"LSupperCut") ? meQTset.getParameter<
double>(
"LSupperCut") : -1.;
56 std::cout <<
"[TrackingQualityChecker::TrackingQualityChecker] inserting " << QTname <<
" in TrackingMEsMap" 58 TrackingLSMEsMap.insert(std::pair<std::string, TrackingLSMEs>(QTname, tracking_ls_mes));
61 std::cout <<
"[TrackingQualityChecker::TrackingQualityChecker] created TrackingLSMEsMap" << std::endl;
67 edm::LogInfo(
"TrackingQualityChecker") <<
" Deleting TrackingQualityChecker " 75 std::cout <<
"[TrackingQualityChecker::bookGlobalStatus] already booked ? " 80 edm::LogInfo(
"TrackingQualityChecker") <<
" booking TrackingQualityStatus" 90 hname =
"reportSummaryMap";
91 htitle =
"Tracking Report Summary Map";
95 std::cout <<
"[TrackingQualityChecker::bookGlobalStatus] nQT: " << nQT << std::endl;
107 for (std::map<std::string, TrackingMEs>::iterator it = TrackingMEsMap.begin(); it != TrackingMEsMap.end(); it++) {
109 it->second.TrackingFlag = ibooker.
bookFloat(
"Track" + meQTname);
111 std::cout <<
"[TrackingQualityChecker::bookGlobalStatus] " << it->first <<
" exists ? " 112 << it->second.TrackingFlag << std::endl;
114 std::cout <<
"[TrackingQualityChecker::bookGlobalStatus] DONE w/ TrackingMEsMap" << std::endl;
124 std::cout <<
"[TrackingQualityChecker::bookLSStatus] already booked ? " 129 edm::LogInfo(
"TrackingQualityChecker") <<
" booking TrackingQualityStatus" 139 hname =
"reportSummaryMap";
140 htitle =
"Tracking Report Summary Map";
144 std::cout <<
"[TrackingQualityChecker::bookLSStatus] nQT: " << nQT << std::endl;
151 it->second.TrackingFlag = ibooker.
bookFloat(
"Track" + meQTname);
153 std::cout <<
"[TrackingQualityChecker::bookLSStatus] " << it->first <<
" exists ? " << it->second.TrackingFlag
156 std::cout <<
"[TrackingQualityChecker::bookLSStatus] DONE w/ TrackingLSMEsMap" << std::endl;
169 std::cout <<
"[TrackingQualityChecker::fillDummyGlobalStatus] starting ..." << std::endl;
173 std::cout <<
"[TrackingQualityChecker::fillDummyGlobalStatus] already booked ? " 183 it->second.TrackingFlag->Fill(-1.0);
185 std::cout <<
"[TrackingQualityChecker::fillDummyGlobalStatus] DONE w/ TrackingMEsMap" << std::endl;
190 std::cout <<
"[TrackingQualityChecker::fillDummyLSStatus] starting ..." << std::endl;
194 std::cout <<
"[TrackingQualityChecker::fillDummyLSStatus] already booked ? " 200 it->second.TrackingFlag->Fill(-1.0);
202 std::cout <<
"[TrackingQualityChecker::fillDummyLSStatus] DONE w/ TrackingLSMEsMap" << std::endl;
211 std::cout <<
"[TrackingQualityChecker::resetGlobalStatus] already booked ? " 220 std::cout <<
"[TrackingQualityChecker::resetGlobalStatus] " << it->second.HistoName <<
" exist ? " 221 << (it->second.TrackingFlag ==
nullptr ?
"nope" :
"yes") <<
" ---> " << me << std::endl;
225 std::cout <<
"[TrackingQualityChecker::resetGlobalStatus] DONE w/ TrackingMEsMap" << std::endl;
230 std::cout <<
"[TrackingQualityChecker::resetLSStatus] already booked ? " 238 std::cout <<
"[TrackingQualityChecker::resetLSStatus] " << it->second.HistoLSName <<
" exist ? " 239 << (it->second.TrackingFlag ==
nullptr ?
"nope" :
"yes") <<
" ---> " << me << std::endl;
243 std::cout <<
"[TrackingQualityChecker::resetLSStatus] DONE w/ TrackingLSMEsMap" << std::endl;
252 std::cout <<
"[TrackingQualityChecker::fillGlobalStatus] already booked ? " 260 std::cout <<
"[TrackingQualityChecker::fillGlobalStatus] DONE" << std::endl;
266 std::cout <<
"[TrackingQualityChecker::fillLSStatus] already booked ? " 274 std::cout <<
"[TrackingQualityChecker::fillLSStatus] DONE" << std::endl;
291 std::cout <<
"[TrackingQualityChecker::fillTrackingStatus] ME: " << it->first <<
" [" 292 << it->second.TrackingFlag->getFullname() <<
"] flag: " << it->second.TrackingFlag->getFloatValue()
300 std::vector<MonitorElement*> tmpMEvec = igetter.
getContents(ibooker.
pwd() +
"/" + localMEdirpath);
302 std::cout <<
"[TrackingQualityChecker::fillTrackingStatus] tmpMEvec: " << tmpMEvec.size() << std::endl;
306 for (
auto ime : tmpMEvec) {
309 std::cout <<
"name: " << name <<
" <-- --> " << MEname << std::endl;
310 if (name.find(MEname) != std::string::npos) {
317 std::cout <<
"[TrackingQualityChecker::fillTrackingStatus] nMEs: " << nMEs << std::endl;
320 for (
auto ime : tmpMEvec) {
323 std::cout <<
"name: " << name <<
" [" << MEname <<
"]" << std::endl;
324 if (name.find(MEname) != std::string::npos) {
327 std::cout <<
"inside the loop nQTme: " << me->
getQReports().size() <<
"[" << ime->getFullname() <<
"]" 336 std::cout <<
"[TrackingQualityChecker::fillTrackingStatus] status: " << status << std::endl;
337 std::vector<QReport*> qt_reports = me->
getQReports();
338 size_t nQTme = qt_reports.size();
340 std::cout <<
"nQTme: " << nQTme << std::endl;
343 std::cout <<
"[TrackingQualityChecker::fillTrackingStatus] qt_reports: " << qt_reports.size() << std::endl;
345 for (
auto iQT : qt_reports) {
346 status += iQT->getQTresult();
348 std::cout <<
"[TrackingQualityChecker::fillTrackingStatus] iQT: " << iQT->getQRName() << std::endl;
350 std::cout <<
"[TrackingQualityChecker::fillTrackingStatus] MEname: " << MEname
351 <<
" status: " << iQT->getQTresult() <<
" exists ? " << (it->second.TrackingFlag ?
"yes " :
"no ")
352 << it->second.TrackingFlag << std::endl;
354 std::cout <<
"[TrackingQualityChecker::fillTrackingStatus] iQT message: " << iQT->getMessage() << std::endl;
356 std::cout <<
"[TrackingQualityChecker::fillTrackingStatus] iQT status: " << iQT->getStatus() << std::endl;
358 status = status /
float(nQTme);
360 std::cout <<
"[TrackingQualityChecker::fillTrackingStatus] MEname: " << MEname <<
" status: " << status
362 it->second.TrackingFlag->Fill(status);
364 std::cout <<
"[TrackingQualityChecker::fillTrackingStatus] TrackGlobalSummaryReportMap: " 370 std::cout <<
"[TrackingQualityChecker::fillTrackingStatus] gstatus: " << gstatus <<
" x status: " << status
377 std::cout <<
"[TrackingQualityChecker::fillTrackingStatus] ===> gstatus: " << gstatus << std::endl;
379 std::cout <<
"[TrackingQualityChecker::fillTrackingStatus] ME: " << it->first <<
" [" 380 << it->second.TrackingFlag->getFullname() <<
"] flag: " << it->second.TrackingFlag->getFloatValue()
385 for (
auto ime : tmpMEvec) {
386 float tmp_status = 1.;
388 if (name.find(MEname) != std::string::npos) {
392 std::cout <<
"[TrackingQualityChecker::fillTrackingStatus] status: " << status << std::endl;
393 std::vector<QReport*> qt_reports = me->
getQReports();
394 size_t nQTme = qt_reports.size();
396 std::cout <<
"nQTme: " << nQTme <<
"[" << name <<
", " << ime->getFullname() <<
"]" << std::endl;
399 std::cout <<
"[TrackingQualityChecker::fillTrackingStatus] qt_reports: " << qt_reports.size()
402 for (
auto iQT : qt_reports) {
403 tmp_status += iQT->getQTresult();
405 std::cout <<
"[TrackingQualityChecker::fillTrackingStatus] iQT: " << iQT->getQRName() << std::endl;
407 std::cout <<
"[TrackingQualityChecker::fillTrackingStatus] MEname: " << MEname
408 <<
" status: " << iQT->getQTresult() <<
" exists ? " 409 << (it->second.TrackingFlag ?
"yes " :
"no ") << it->second.TrackingFlag << std::endl;
411 std::cout <<
"[TrackingQualityChecker::fillTrackingStatus] iQT message: " << iQT->getMessage()
414 std::cout <<
"[TrackingQualityChecker::fillTrackingStatus] iQT status: " << iQT->getStatus()
417 tmp_status = tmp_status /
float(nQTme);
420 status = fminf(tmp_status, status);
427 std::cout <<
"[TrackingQualityChecker::fillTrackingStatus] MEname: " << MEname <<
" status: " << status
429 it->second.TrackingFlag->Fill(status);
431 std::cout <<
"[TrackingQualityChecker::fillTrackingStatus] TrackGlobalSummaryReportMap: " 442 std::vector<MonitorElement*> tmpMEvec = igetter.
getContents(ibooker.
pwd() +
"/" + localMEdirpath);
443 for (
auto ime : tmpMEvec) {
444 if (ime->getLumiFlag()) {
451 std::cout <<
"[TrackingQualityChecker::fillTrackingStatus] gstatus: " << gstatus << std::endl;
456 gstatus = gstatus /
float(nQT);
459 std::cout <<
"[TrackingQualityChecker::fillTrackingStatus] ===> gstatus: " << gstatus << std::endl;
464 std::cout <<
"[TrackingQualityChecker::fillTrackingStatus] DONE" << std::endl;
473 th2d->SetBinContent(xbin, ybin, val);
481 std::cout <<
"[TrackingQualityChecker::fillTrackingStatusAtLumi] starting .. " << std::endl;
492 std::cout <<
"[TrackingQualityChecker::fillTrackingStatusAtLumi] ME: " << it->first <<
" [" 493 << it->second.TrackingFlag->getFullname() <<
"] flag: " << it->second.TrackingFlag->getFloatValue()
498 std::string localMEdirpath = it->second.HistoLSDir;
500 float lower_cut = it->second.HistoLSLowerCut;
501 float upper_cut = it->second.HistoLSUpperCut;
505 std::vector<MonitorElement*> tmpMEvec = igetter.
getContents(ibooker.
pwd() +
"/" + localMEdirpath);
507 std::cout <<
"[TrackingQualityChecker::fillTrackingStatusAtLumi] tmpMEvec: " << tmpMEvec.size() << std::endl;
512 for (
auto ime : tmpMEvec) {
514 if (name.find(MEname) != std::string::npos) {
521 for (
auto ime : tmpMEvec) {
523 if (name.find(MEname) != std::string::npos) {
533 std::cout <<
"[TrackingQualityChecker::fillTrackingStatusAtLumi] MEname: " << MEname <<
" x_mean: " << x_mean
535 if (x_mean <= lower_cut || x_mean > upper_cut)
541 for (
auto ime : tmpMEvec) {
542 float tmp_status = 1.;
544 if (name.find(MEname) != std::string::npos) {
552 std::cout <<
"[TrackingQualityChecker::fillTrackingStatusAtLumi] MEname: " << MEname <<
"[" 553 << me->
getName() <<
"] x_mean: " << x_mean << std::endl;
554 if (x_mean <= lower_cut || x_mean > upper_cut)
559 std::cout <<
"[TrackingQualityChecker::fillTrackingStatusAtLumi] tmp_status: " << tmp_status << std::endl;
562 status = fminf(tmp_status, status);
564 std::cout <<
"[TrackingQualityChecker::fillTrackingStatusAtLumi] ==> status: " << status << std::endl;
567 it->second.TrackingFlag->Fill(status);
569 std::cout <<
"[TrackingQualityChecker::fillTrackingStatusAtLumi] ===> status: " << status <<
" [" << gstatus
574 gstatus = gstatus *
status;
576 std::cout <<
"[TrackingQualityChecker::fillTrackingStatusAtLumi] ===> gstatus: " << gstatus << std::endl;
578 std::cout <<
"[TrackingQualityChecker::fillTrackingStatusAtLumi] ME: " << it->first <<
" [" 579 << it->second.TrackingFlag->getFullname() <<
"] flag: " << it->second.TrackingFlag->getFloatValue()
586 std::cout <<
"[TrackingQualityChecker::fillTrackingStatusAtLumi] DONE" << std::endl;
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
MonitorElement * TrackingFlag
virtual TH2F * getTH2F() const
MonitorElement * TrackGlobalSummaryReportMap
void fillDummyGlobalStatus()
MonitorElement * bookFloat(TString const &name)
void setCurrentFolder(std::string const &fullpath)
std::vector< MonitorElement * > getContents(Args &&...args)
std::map< std::string, TrackingMEs > TrackingMEsMap
Kind kind() const
Get the type of the monitor element.
const std::string & getName() const
get name of ME
virtual ~TrackingQualityChecker()
std::string TopFolderName_
const std::string getFullname() const
get full name of ME including Pathname
TrackingQualityChecker(edm::ParameterSet const &ps)
virtual void Reset()
reset ME (ie. contents, errors, etc)
void fillGlobalStatus(DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter)
MonitorElement * TrackLSSummaryReportGlobal
virtual int getNbinsX() const
get # of bins in X-axis
void fillLSStatus(DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter)
bool bookedTrackingGlobalStatus_
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)
std::vector< QReport * > getQReports() const
get map of QReports
virtual double getMean(int axis=1) const
get mean value of histogram along x, y or z axis (axis=1, 2, 3 respectively)
bool bookedTrackingLSStatus_
void bookLSStatus(DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter)
std::string const & pwd()
void bookGlobalStatus(DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter)
MonitorElement * book2D(TString const &name, TString const &title, int nchX, double lowX, double highX, int nchY, double lowY, double highY)
void fillTrackingStatusAtLumi(DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter)
MonitorElement * TrackGlobalSummaryReportGlobal
void fillTrackingStatus(DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter)
static void getTopFolderPath(DQMStore::IBooker &ibooker, DQMStore::IGetter &igetter, std::string top_dir, std::string &path)
std::map< std::string, TrackingLSMEs > TrackingLSMEsMap
virtual void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)