Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:09:10

0001 #include "FWCore/MessageLogger/interface/MessageLogger.h"
0002 #include "FWCore/ServiceRegistry/interface/Service.h"
0003 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0004 
0005 #include "DQMServices/Core/interface/DQMStore.h"
0006 #include "DQM/SiStripCommon/interface/SiStripFolderOrganizer.h"
0007 #include "DQM/TrackingMonitorClient/interface/TrackingUtility.h"
0008 #include "DQM/TrackingMonitorClient/interface/TrackingCertificationInfo.h"
0009 
0010 #include "CondFormats/DataRecord/interface/SiStripCondDataRecords.h"
0011 #include "CalibTracker/Records/interface/SiStripDetCablingRcd.h"
0012 #include "CalibFormats/SiStripObjects/interface/SiStripDetCabling.h"
0013 
0014 #include "DataFormats/SiStripDetId/interface/StripSubdetector.h"
0015 
0016 //Run Info
0017 #include "CondFormats/DataRecord/interface/RunSummaryRcd.h"
0018 #include "CondFormats/RunInfo/interface/RunSummary.h"
0019 #include "CondFormats/RunInfo/interface/RunInfo.h"
0020 
0021 #include <iomanip>
0022 #include <cstdio>
0023 #include <string>
0024 #include <sstream>
0025 #include <cmath>
0026 //
0027 // -- Contructor
0028 //
0029 TrackingCertificationInfo::TrackingCertificationInfo(edm::ParameterSet const& pSet)
0030     : pSet_(pSet),
0031       trackingCertificationBooked_(false),
0032       trackingLSCertificationBooked_(false),
0033       nFEDConnected_(0),
0034       allPixelFEDConnected_(true),
0035       m_cacheID_(0),
0036       runInfoToken_(esConsumes<RunInfo, RunInfoRcd, edm::Transition::BeginRun>()),
0037       detCablingToken_(esConsumes<SiStripDetCabling, SiStripDetCablingRcd, edm::Transition::BeginRun>()) {
0038   // Create MessageSender
0039   edm::LogInfo("TrackingCertificationInfo") << "TrackingCertificationInfo::Deleting TrackingCertificationInfo ";
0040 
0041   verbose_ = pSet_.getUntrackedParameter<bool>("verbose", false);
0042   TopFolderName_ = pSet_.getUntrackedParameter<std::string>("TopFolderName", "Tracking");
0043   if (verbose_)
0044     edm::LogInfo("TrackingCertificationInfo") << "TopFolderName_: " << TopFolderName_ << std::endl;
0045 
0046   TrackingMEs tracking_mes;
0047   // load variables for Global certification
0048 
0049   checkPixelFEDs_ = pSet_.getParameter<bool>("checkPixelFEDs");
0050   if (checkPixelFEDs_) {
0051     std::string QTname = "pixel";
0052     tracking_mes.TrackingFlag = nullptr;
0053     TrackingMEsMap.insert(std::pair<std::string, TrackingMEs>(QTname, tracking_mes));
0054   }
0055 
0056   std::vector<edm::ParameterSet> TrackingGlobalQualityMEs =
0057       pSet_.getParameter<std::vector<edm::ParameterSet> >("TrackingGlobalQualityPSets");
0058   for (const auto& meQTset : TrackingGlobalQualityMEs) {
0059     std::string QTname = meQTset.getParameter<std::string>("QT");
0060     tracking_mes.TrackingFlag = nullptr;
0061 
0062     if (verbose_)
0063       edm::LogInfo("TrackingCertificationInfo") << " inserting " << QTname << " in TrackingMEsMap" << std::endl;
0064     TrackingMEsMap.insert(std::pair<std::string, TrackingMEs>(QTname, tracking_mes));
0065   }
0066 
0067   TrackingLSMEs tracking_ls_mes;
0068   // load variables for LS certification
0069   std::vector<edm::ParameterSet> TrackingLSQualityMEs =
0070       pSet_.getParameter<std::vector<edm::ParameterSet> >("TrackingLSQualityMEs");
0071   for (const auto& meQTset : TrackingLSQualityMEs) {
0072     std::string QTname = meQTset.getParameter<std::string>("QT");
0073     tracking_ls_mes.TrackingFlag = nullptr;
0074 
0075     if (verbose_)
0076       edm::LogInfo("TrackingCertificationInfo") << " inserting " << QTname << " in TrackingMEsMap" << std::endl;
0077     TrackingLSMEsMap.insert(std::pair<std::string, TrackingLSMEs>(QTname, tracking_ls_mes));
0078   }
0079 
0080   // define sub-detectors which affect the quality
0081   SubDetFolder.push_back("SiStrip");
0082   SubDetFolder.push_back("Pixel");
0083 }
0084 
0085 TrackingCertificationInfo::~TrackingCertificationInfo() {
0086   edm::LogInfo("TrackingCertificationInfo") << "Deleting TrackingCertificationInfo ";
0087 }
0088 //
0089 // -- Begin Job
0090 //
0091 void TrackingCertificationInfo::beginJob() {}
0092 //
0093 // -- Begin Run
0094 //
0095 void TrackingCertificationInfo::beginRun(edm::Run const& run, edm::EventSetup const& eSetup) {
0096   edm::LogInfo("TrackingCertificationInfo") << "beginRun starting .." << std::endl;
0097 
0098   detCabling_ = &(eSetup.getData(detCablingToken_));
0099 
0100   unsigned long long cacheID = eSetup.get<SiStripDetCablingRcd>().cacheIdentifier();
0101   if (m_cacheID_ != cacheID) {
0102     m_cacheID_ = cacheID;
0103   }
0104 
0105   nFEDConnected_ = 0;
0106   int nPixelFEDConnected_ = 0;
0107   const int siStripFedIdMin = FEDNumbering::MINSiStripFEDID;
0108   const int siStripFedIdMax = FEDNumbering::MAXSiStripFEDID;
0109   const int siPixelFedIdMin = FEDNumbering::MINSiPixelFEDID;
0110   const int siPixelFedIdMax = FEDNumbering::MAXSiPixelFEDID;
0111   const int siPixelFeds = (siPixelFedIdMax - siPixelFedIdMin + 1);
0112 
0113   edm::ESHandle<RunInfo> runInfoRec = eSetup.getHandle(runInfoToken_);
0114   if (runInfoRec.isValid()) {
0115     sumFED_ = runInfoRec.product();
0116     if (sumFED_ != nullptr) {
0117       std::vector<int> FedsInIds = sumFED_->m_fed_in;
0118       for (auto fedID : FedsInIds) {
0119         if (fedID >= siPixelFedIdMin && fedID <= siPixelFedIdMax) {
0120           ++nFEDConnected_;
0121           ++nPixelFEDConnected_;
0122         } else if (fedID >= siStripFedIdMin && fedID <= siStripFedIdMax)
0123           ++nFEDConnected_;
0124       }
0125       LogDebug("TrackingDcsInfo") << " TrackingDcsInfo :: Connected FEDs " << nFEDConnected_;
0126     }
0127   }
0128 
0129   allPixelFEDConnected_ = (nPixelFEDConnected_ == siPixelFeds);
0130 }
0131 
0132 //
0133 // -- Book MEs for Tracking Certification fractions
0134 //
0135 void TrackingCertificationInfo::bookTrackingCertificationMEs(DQMStore::IBooker& ibooker_, DQMStore::IGetter& igetter_) {
0136   if (verbose_)
0137     edm::LogInfo("TrackingCertificationInfo")
0138         << "bookTrackingCertificationMEs starting .. trackingCertificationBooked_: " << trackingCertificationBooked_
0139         << std::endl;
0140 
0141   if (!trackingCertificationBooked_) {
0142     ibooker_.cd();
0143     std::string tracking_dir = "";
0144     TrackingUtility::getTopFolderPath(ibooker_, igetter_, TopFolderName_, tracking_dir);
0145 
0146     if (!tracking_dir.empty())
0147       ibooker_.setCurrentFolder(tracking_dir + "/EventInfo");
0148     else
0149       ibooker_.setCurrentFolder(TopFolderName_ + "/EventInfo");
0150 
0151     TrackingCertification = ibooker_.bookFloat("CertificationSummary");
0152 
0153     std::string hname, htitle;
0154     hname = "CertificationReportMap";
0155     htitle = "Tracking Certification Summary Map";
0156     size_t nQT = TrackingMEsMap.size();
0157     TrackingCertificationSummaryMap = ibooker_.book2D(hname, htitle, nQT, 0.5, float(nQT) + 0.5, 1, 0.5, 1.5);
0158     TrackingCertificationSummaryMap->setAxisTitle("Track Quality Type", 1);
0159     TrackingCertificationSummaryMap->setAxisTitle("QTest Flag", 2);
0160     size_t ibin = 0;
0161     for (const auto& meQTset : TrackingMEsMap) {
0162       TrackingCertificationSummaryMap->setBinLabel(ibin + 1, meQTset.first);
0163       ibin++;
0164     }
0165 
0166     if (!tracking_dir.empty())
0167       ibooker_.setCurrentFolder(TopFolderName_ + "/EventInfo/CertificationContents");
0168     else
0169       ibooker_.setCurrentFolder(TopFolderName_ + "/EventInfo/CertificationContents");
0170 
0171     for (std::map<std::string, TrackingMEs>::iterator it = TrackingMEsMap.begin(); it != TrackingMEsMap.end(); it++) {
0172       std::string meQTname = it->first;
0173       if (verbose_)
0174         edm::LogInfo("TrackingCertificationInfo") << "bookStatus meQTname: " << meQTname << std::endl;
0175       it->second.TrackingFlag = ibooker_.bookFloat("Track" + meQTname);
0176       if (verbose_)
0177         edm::LogInfo("TrackingCertificationInfo")
0178             << "bookStatus " << it->first << " exists ? " << it->second.TrackingFlag << std::endl;
0179     }
0180 
0181     trackingCertificationBooked_ = true;
0182     ibooker_.cd();
0183   }
0184 
0185   if (verbose_)
0186     edm::LogInfo("TrackingCertificationInfo")
0187         << "bookStatus trackingCertificationBooked_: " << trackingCertificationBooked_ << std::endl;
0188 }
0189 
0190 //
0191 // -- Book MEs for Tracking Certification per LS
0192 //
0193 void TrackingCertificationInfo::bookTrackingCertificationMEsAtLumi(DQMStore::IBooker& ibooker_,
0194                                                                    DQMStore::IGetter& igetter_) {
0195   if (verbose_)
0196     edm::LogInfo("TrackingCertificationInfo")
0197         << "bookTrackingCertificationMEs starting .. trackingCertificationBooked_: " << trackingCertificationBooked_
0198         << std::endl;
0199 
0200   if (!trackingLSCertificationBooked_) {
0201     ibooker_.cd();
0202     std::string tracking_dir = "";
0203     TrackingUtility::getTopFolderPath(ibooker_, igetter_, TopFolderName_, tracking_dir);
0204 
0205     if (!tracking_dir.empty())
0206       ibooker_.setCurrentFolder(tracking_dir + "/EventInfo");
0207     else
0208       ibooker_.setCurrentFolder(TopFolderName_ + "/EventInfo");
0209 
0210     TrackingLSCertification = ibooker_.bookFloat("CertificationSummary");
0211 
0212     if (!tracking_dir.empty())
0213       ibooker_.setCurrentFolder(TopFolderName_ + "/EventInfo/CertificationContents");
0214     else
0215       ibooker_.setCurrentFolder(TopFolderName_ + "/EventInfo/CertificationContents");
0216 
0217     for (std::map<std::string, TrackingLSMEs>::iterator it = TrackingLSMEsMap.begin(); it != TrackingLSMEsMap.end();
0218          it++) {
0219       std::string meQTname = it->first;
0220       if (verbose_)
0221         edm::LogInfo("TrackingCertificationInfo") << "bookStatus meQTname: " << meQTname << std::endl;
0222       it->second.TrackingFlag = ibooker_.bookFloat("Track" + meQTname);
0223       if (verbose_)
0224         edm::LogInfo("TrackingCertificationInfo")
0225             << "bookStatus " << it->first << " exists ? " << it->second.TrackingFlag << std::endl;
0226     }
0227 
0228     trackingLSCertificationBooked_ = true;
0229     ibooker_.cd();
0230   }
0231 
0232   if (verbose_)
0233     edm::LogInfo("TrackingCertificationInfo")
0234         << "[TrackingCertificationInfo::bookStatus] trackingCertificationBooked_: " << trackingCertificationBooked_
0235         << std::endl;
0236 }
0237 //
0238 
0239 //
0240 // -- End Luminosity Block
0241 //
0242 void TrackingCertificationInfo::dqmEndLuminosityBlock(DQMStore::IBooker& ibooker_,
0243                                                       DQMStore::IGetter& igetter_,
0244                                                       edm::LuminosityBlock const& lumiSeg,
0245                                                       edm::EventSetup const& eSetup) {
0246   edm::LogInfo("TrackingCertificationInfo") << "endLuminosityBlock";
0247   bookTrackingCertificationMEsAtLumi(ibooker_, igetter_);
0248   fillDummyTrackingCertificationAtLumi(ibooker_, igetter_);
0249 
0250   if (nFEDConnected_ > 0)
0251     fillTrackingCertificationMEsAtLumi(ibooker_, igetter_);
0252   else
0253     fillDummyTrackingCertificationAtLumi(ibooker_, igetter_);
0254 }
0255 
0256 //
0257 // -- End of Run
0258 //
0259 void TrackingCertificationInfo::dqmEndJob(DQMStore::IBooker& ibooker_, DQMStore::IGetter& igetter_) {
0260   edm::LogInfo("TrackingCertificationInfo") << "dqmEndJob" << std::endl;
0261 
0262   bookTrackingCertificationMEs(ibooker_, igetter_);
0263   fillDummyTrackingCertification(ibooker_, igetter_);
0264 
0265   if (nFEDConnected_ > 0)
0266     fillTrackingCertificationMEs(ibooker_, igetter_);
0267   else
0268     fillDummyTrackingCertification(ibooker_, igetter_);
0269 
0270   edm::LogInfo("TrackingCertificationInfo") << "[TrackingCertificationInfo::endRun] DONE" << std::endl;
0271 }
0272 //
0273 // --Fill Tracking Certification
0274 //
0275 void TrackingCertificationInfo::fillTrackingCertificationMEs(DQMStore::IBooker& ibooker_, DQMStore::IGetter& igetter_) {
0276   if (!trackingCertificationBooked_) {
0277     edm::LogError("TrackingCertificationInfo") << "fillTrackingCertificationMEs : MEs missing " << std::endl;
0278     return;
0279   }
0280 
0281   ibooker_.cd();
0282   std::string tracking_dir = "";
0283   TrackingUtility::getTopFolderPath(ibooker_, igetter_, TopFolderName_, tracking_dir);
0284   if (verbose_)
0285     edm::LogInfo("TrackingCertificationInfo")
0286         << "fillTrackingCertificationMEs tracking_dir: " << tracking_dir << std::endl;
0287   std::vector<MonitorElement*> all_mes = igetter_.getContents(tracking_dir + "/EventInfo/reportSummaryContents");
0288   float fval = 1.0;
0289 
0290   if (verbose_)
0291     edm::LogInfo("TrackingCertificationInfo") << "all_mes: " << all_mes.size() << std::endl;
0292 
0293   if (checkPixelFEDs_) {
0294     float val = 1.;
0295     if (allPixelFEDConnected_)
0296       val = 0.;
0297     int xbin = 0;
0298     for (std::map<std::string, TrackingMEs>::const_iterator it = TrackingMEsMap.begin(); it != TrackingMEsMap.end();
0299          it++) {
0300       std::string type = it->first;
0301       if (type == "pixel") {
0302         it->second.TrackingFlag->Fill(val);
0303         TH2F* th2d = TrackingCertificationSummaryMap->getTH2F();
0304         if (verbose_)
0305           edm::LogInfo("TrackingCertificationInfo")
0306               << "fillTrackingCertificationMEs xbin: " << xbin << " val: " << val << std::endl;
0307         th2d->SetBinContent(xbin + 1, 1, val);
0308       }
0309       xbin++;
0310     }
0311     fval = fminf(fval, val);
0312   }
0313 
0314   int xbin = (checkPixelFEDs_ ? 1 : 0);
0315   for (std::vector<MonitorElement*>::const_iterator ime = all_mes.begin(); ime != all_mes.end(); ime++) {
0316     MonitorElement* me = (*ime);
0317     if (!me)
0318       continue;
0319     if (verbose_)
0320       edm::LogInfo("TrackingCertificationInfo") << "fillTrackingCertificationMEs me: " << me->getName() << std::endl;
0321     if (me->kind() == MonitorElement::Kind::REAL) {
0322       const std::string& name = me->getName();
0323       float val = me->getFloatValue();
0324 
0325       for (std::map<std::string, TrackingMEs>::const_iterator it = TrackingMEsMap.begin(); it != TrackingMEsMap.end();
0326            it++) {
0327         if (verbose_)
0328           edm::LogInfo("TrackingCertificationInfo")
0329               << "fillTrackingCertificationMEs ME: " << it->first << " [" << it->second.TrackingFlag->getFullname()
0330               << "] flag: " << it->second.TrackingFlag->getFloatValue() << std::endl;
0331 
0332         std::string type = it->first;
0333         if (name.find(type) != std::string::npos) {
0334           if (verbose_)
0335             edm::LogInfo("TrackingCertificationInfo")
0336                 << "fillTrackingCertificationMEs type: " << type << " <---> name: " << name << std::endl;
0337           it->second.TrackingFlag->Fill(val);
0338           if (verbose_)
0339             edm::LogInfo("TrackingCertificationInfo")
0340                 << "fillTrackingCertificationMEs xbin: " << xbin << " val: " << val << std::endl;
0341           TH2F* th2d = TrackingCertificationSummaryMap->getTH2F();
0342           th2d->SetBinContent(xbin + 1, 1, val);
0343           xbin++;
0344           break;
0345         }
0346         if (verbose_)
0347           edm::LogInfo("TrackingCertificationInfo")
0348               << "[TrackingCertificationInfo::fillTrackingCertificationMEs] ME: " << it->first << " ["
0349               << it->second.TrackingFlag->getFullname() << "] flag: " << it->second.TrackingFlag->getFloatValue()
0350               << std::endl;
0351       }
0352       fval = fminf(fval, val);
0353     }
0354   }
0355   if (verbose_)
0356     edm::LogInfo("TrackingCertificationInfo")
0357         << "fillTrackingCertificationMEs TrackingCertification: " << fval << std::endl;
0358   TrackingCertification->Fill(fval);
0359 }
0360 
0361 //
0362 // --Reset Tracking Certification
0363 //
0364 void TrackingCertificationInfo::resetTrackingCertificationMEs(DQMStore::IBooker& ibooker_,
0365                                                               DQMStore::IGetter& igetter_) {
0366   if (!trackingCertificationBooked_)
0367     bookTrackingCertificationMEs(ibooker_, igetter_);
0368   TrackingCertification->Reset();
0369   for (std::map<std::string, TrackingMEs>::const_iterator it = TrackingMEsMap.begin(); it != TrackingMEsMap.end();
0370        it++) {
0371     it->second.TrackingFlag->Reset();
0372   }
0373 }
0374 
0375 //
0376 // --Reset Tracking Certification per LS
0377 //
0378 void TrackingCertificationInfo::resetTrackingCertificationMEsAtLumi(DQMStore::IBooker& ibooker_,
0379                                                                     DQMStore::IGetter& igetter_) {
0380   if (!trackingLSCertificationBooked_)
0381     bookTrackingCertificationMEsAtLumi(ibooker_, igetter_);
0382   TrackingLSCertification->Reset();
0383   for (std::map<std::string, TrackingLSMEs>::const_iterator it = TrackingLSMEsMap.begin(); it != TrackingLSMEsMap.end();
0384        it++) {
0385     it->second.TrackingFlag->Reset();
0386   }
0387 }
0388 
0389 //
0390 // -- Fill Dummy Tracking Certification
0391 //
0392 void TrackingCertificationInfo::fillDummyTrackingCertification(DQMStore::IBooker& ibooker_,
0393                                                                DQMStore::IGetter& igetter_) {
0394   resetTrackingCertificationMEs(ibooker_, igetter_);
0395   if (trackingCertificationBooked_) {
0396     TrackingCertification->Fill(-1.0);
0397     for (std::map<std::string, TrackingMEs>::const_iterator it = TrackingMEsMap.begin(); it != TrackingMEsMap.end();
0398          it++) {
0399       it->second.TrackingFlag->Fill(-1.0);
0400     }
0401 
0402     for (int xbin = 1; xbin < TrackingCertificationSummaryMap->getNbinsX() + 1; xbin++)
0403       for (int ybin = 1; ybin < TrackingCertificationSummaryMap->getNbinsY() + 1; ybin++)
0404         TrackingCertificationSummaryMap->Fill(xbin, ybin, -1);
0405   }
0406 }
0407 
0408 //
0409 // -- Fill Dummy Tracking Certification per LS
0410 //
0411 void TrackingCertificationInfo::fillDummyTrackingCertificationAtLumi(DQMStore::IBooker& ibooker_,
0412                                                                      DQMStore::IGetter& igetter_) {
0413   resetTrackingCertificationMEsAtLumi(ibooker_, igetter_);
0414   if (trackingLSCertificationBooked_) {
0415     TrackingLSCertification->Fill(-1.0);
0416     for (std::map<std::string, TrackingLSMEs>::const_iterator it = TrackingLSMEsMap.begin();
0417          it != TrackingLSMEsMap.end();
0418          it++) {
0419       it->second.TrackingFlag->Fill(-1.0);
0420     }
0421   }
0422 }
0423 
0424 //
0425 // --Fill Tracking Certification per LS
0426 //
0427 void TrackingCertificationInfo::fillTrackingCertificationMEsAtLumi(DQMStore::IBooker& ibooker_,
0428                                                                    DQMStore::IGetter& igetter_) {
0429   if (verbose_)
0430     edm::LogInfo("TrackingCertificationInfo") << "fillTrackingCertificationMEsAtLumi starting .." << std::endl;
0431   if (!trackingLSCertificationBooked_) {
0432     return;
0433   }
0434   resetTrackingCertificationMEsAtLumi(ibooker_, igetter_);
0435 
0436   ibooker_.cd();
0437   std::string tracking_dir = "";
0438   TrackingUtility::getTopFolderPath(ibooker_, igetter_, TopFolderName_, tracking_dir);
0439   if (verbose_)
0440     edm::LogInfo("TrackingCertificationInfo")
0441         << "fillTrackingCertificationMEsAtLumi tracking_dir: " << tracking_dir << std::endl;
0442 
0443   if (verbose_)
0444     edm::LogInfo("TrackingCertificationInfo")
0445         << "fillTrackingCertificationMEsAtLumi tracking_dir: " << tracking_dir << std::endl;
0446   std::vector<MonitorElement*> all_mes = igetter_.getContents(tracking_dir + "/EventInfo/reportSummaryContents");
0447 
0448   if (verbose_)
0449     edm::LogInfo("TrackingCertificationInfo") << "all_mes: " << all_mes.size() << std::endl;
0450 
0451   for (std::vector<MonitorElement*>::const_iterator ime = all_mes.begin(); ime != all_mes.end(); ime++) {
0452     MonitorElement* me = (*ime);
0453     if (!me)
0454       continue;
0455     if (verbose_)
0456       edm::LogInfo("TrackingCertificationInfo")
0457           << "fillTrackingCertificationMEsAtLumi me: " << me->getName() << std::endl;
0458     if (me->kind() == MonitorElement::Kind::REAL) {
0459       const std::string& name = me->getName();
0460       float val = me->getFloatValue();
0461       if (verbose_)
0462         edm::LogInfo("TrackingCertificationInfo") << "fillTrackingCertificationMEsAtLumi val:  " << val << std::endl;
0463 
0464       for (std::map<std::string, TrackingLSMEs>::const_iterator it = TrackingLSMEsMap.begin();
0465            it != TrackingLSMEsMap.end();
0466            it++) {
0467         if (verbose_)
0468           edm::LogInfo("TrackingCertificationInfo")
0469               << "fillTrackingCertificationMEsAtLumi ME: " << it->first << " ["
0470               << it->second.TrackingFlag->getFullname() << "] flag: " << it->second.TrackingFlag->getFloatValue()
0471               << std::endl;
0472 
0473         std::string type = it->first;
0474         if (verbose_)
0475           edm::LogInfo("TrackingCertificationInfo") << "fillTrackingCertificationMEsAtLumi type: " << type << std::endl;
0476         if (name.find(type) != std::string::npos) {
0477           if (verbose_)
0478             edm::LogInfo("TrackingCertificationInfo")
0479                 << "fillTrackingCertificationMEsAtLumi type: " << type << " <---> name: " << name << std::endl;
0480           it->second.TrackingFlag->Fill(val);
0481           break;
0482         }
0483         if (verbose_)
0484           edm::LogInfo("TrackingCertificationInfo")
0485               << "fillTrackingCertificationMEsAtLumi ME: " << it->first << " ["
0486               << it->second.TrackingFlag->getFullname() << "] flag: " << it->second.TrackingFlag->getFloatValue()
0487               << std::endl;
0488       }
0489     }
0490   }
0491 
0492   float global_dqm_flag = 1.0;
0493   std::string full_path = tracking_dir + "/EventInfo/reportSummary";
0494   MonitorElement* me_dqm = igetter_.get(full_path);
0495   if (me_dqm && me_dqm->kind() == MonitorElement::Kind::REAL)
0496     global_dqm_flag = me_dqm->getFloatValue();
0497   if (verbose_)
0498     edm::LogInfo("TrackingCertificationInfo")
0499         << "fillTrackingCertificationMEsAtLumi global_dqm_flag: " << global_dqm_flag << std::endl;
0500 
0501   TrackingLSCertification->Reset();
0502   TrackingLSCertification->Fill(global_dqm_flag);
0503 }
0504 #include "FWCore/Framework/interface/MakerMacros.h"
0505 DEFINE_FWK_MODULE(TrackingCertificationInfo);