CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Classes | Public Member Functions | Private Member Functions | Private Attributes
TrackingQualityChecker Class Reference

#include <TrackingQualityChecker.h>

Classes

struct  TrackingLSMEs
 
struct  TrackingMEs
 

Public Member Functions

void bookGlobalStatus (DQMStore *dqm_store)
 
void bookLSStatus (DQMStore *dqm_store)
 
void fillDummyGlobalStatus ()
 
void fillDummyLSStatus ()
 
void fillGlobalStatus (DQMStore *dqm_store)
 
void fillLSStatus (DQMStore *dqm_store)
 
void resetGlobalStatus ()
 
void resetLSStatus ()
 
 TrackingQualityChecker (edm::ParameterSet const &ps)
 
virtual ~TrackingQualityChecker ()
 

Private Member Functions

void fillStatusHistogram (MonitorElement *, int xbin, int ybin, float val)
 
void fillTrackingStatus (DQMStore *dqm_store)
 
void fillTrackingStatusAtLumi (DQMStore *dqm_store)
 

Private Attributes

bool bookedTrackingGlobalStatus_
 
bool bookedTrackingLSStatus_
 
edm::ParameterSet pSet_
 
std::string TopFolderName_
 
MonitorElementTrackGlobalSummaryReportGlobal
 
MonitorElementTrackGlobalSummaryReportMap
 
std::map< std::string,
TrackingLSMEs
TrackingLSMEsMap
 
std::map< std::string,
TrackingMEs
TrackingMEsMap
 
MonitorElementTrackLSSummaryReportGlobal
 
bool verbose_
 

Detailed Description

Definition at line 21 of file TrackingQualityChecker.h.

Constructor & Destructor Documentation

TrackingQualityChecker::TrackingQualityChecker ( edm::ParameterSet const &  ps)

Definition at line 25 of file TrackingQualityChecker.cc.

References bookedTrackingGlobalStatus_, bookedTrackingLSStatus_, gather_cfg::cout, edm::ParameterSet::getParameter(), edm::ParameterSet::getUntrackedParameter(), TrackingQualityChecker::TrackingLSMEs::HistoLSDir, TrackingQualityChecker::TrackingLSMEs::HistoLSLowerCut, TrackingQualityChecker::TrackingLSMEs::HistoLSName, TrackingQualityChecker::TrackingLSMEs::HistoLSUpperCut, pSet_, AlCaHLTBitMon_QueryRunRegistry::string, TopFolderName_, TrackingQualityChecker::TrackingLSMEs::TrackingFlag, TrackingLSMEsMap, TrackingMEsMap, and verbose_.

25  :
26  pSet_(ps),
27  verbose_( pSet_.getUntrackedParameter<bool>("verbose",false))
28 {
29  edm::LogInfo("TrackingQualityChecker") << " Creating TrackingQualityChecker " << "\n" ;
30 
33 
34  if(!edm::Service<TkDetMap>().isAvailable()){
35  edm::LogError("TkHistoMap") <<
36  "\n------------------------------------------"
37  "\nUnAvailable Service TkHistoMap: please insert in the configuration file an instance like"
38  "\n\tprocess.TkDetMap = cms.Service(\"TkDetMap\")"
39  "\n------------------------------------------";
40  }
41 
42  TopFolderName_ = pSet_.getUntrackedParameter<std::string>("TopFolderName","Tracking");
43 
44  TrackingMEs tracking_mes;
45  std::vector<edm::ParameterSet> TrackingGlobalQualityMEs = pSet_.getParameter< std::vector<edm::ParameterSet> >("TrackingGlobalQualityPSets" );
46  for ( auto meQTset : TrackingGlobalQualityMEs ) {
47 
48  std::string QTname = meQTset.getParameter<std::string>("QT");
49  tracking_mes.HistoDir = meQTset.getParameter<std::string>("dir");
50  tracking_mes.HistoName = meQTset.getParameter<std::string>("name");
51  if (verbose_) std::cout << "[TrackingQualityChecker::TrackingQualityChecker] inserting " << QTname << " in TrackingMEsMap" << std::endl;
52  TrackingMEsMap.insert(std::pair<std::string, TrackingMEs>(QTname, tracking_mes));
53  }
54  if (verbose_) std::cout << "[TrackingQualityChecker::TrackingQualityChecker] created TrackingMEsMap" << std::endl;
55 
56  TrackingLSMEs tracking_ls_mes;
57  std::vector<edm::ParameterSet> TrackingLSQualityMEs = pSet_.getParameter< std::vector<edm::ParameterSet> >("TrackingLSQualityPSets" );
58  for ( auto meQTset : TrackingLSQualityMEs ) {
59 
60  std::string QTname = meQTset.getParameter<std::string>("QT");
61  tracking_ls_mes.HistoLSDir = meQTset.exists("LSdir") ? meQTset.getParameter<std::string>("LSdir") : "";
62  tracking_ls_mes.HistoLSName = meQTset.exists("LSname") ? meQTset.getParameter<std::string>("LSname") : "";
63  tracking_ls_mes.HistoLSLowerCut = meQTset.exists("LSlowerCut") ? meQTset.getParameter<double>("LSlowerCut") : -1.;
64  tracking_ls_mes.HistoLSUpperCut = meQTset.exists("LSupperCut") ? meQTset.getParameter<double>("LSupperCut") : -1.;
65  tracking_ls_mes.TrackingFlag = 0;
66 
67  if (verbose_) std::cout << "[TrackingQualityChecker::TrackingQualityChecker] inserting " << QTname << " in TrackingMEsMap" << std::endl;
68  TrackingLSMEsMap.insert(std::pair<std::string, TrackingLSMEs>(QTname, tracking_ls_mes));
69  }
70  if (verbose_) std::cout << "[TrackingQualityChecker::TrackingQualityChecker] created TrackingLSMEsMap" << std::endl;
71 
72 }
T getParameter(std::string const &) const
T getUntrackedParameter(std::string const &, T const &) const
std::map< std::string, TrackingMEs > TrackingMEsMap
tuple cout
Definition: gather_cfg.py:121
std::map< std::string, TrackingLSMEs > TrackingLSMEsMap
TrackingQualityChecker::~TrackingQualityChecker ( )
virtual

Definition at line 76 of file TrackingQualityChecker.cc.

76  {
77  edm::LogInfo("TrackingQualityChecker") << " Deleting TrackingQualityChecker " << "\n" ;
78 }

Member Function Documentation

void TrackingQualityChecker::bookGlobalStatus ( DQMStore dqm_store)

Definition at line 82 of file TrackingQualityChecker.cc.

References DQMStore::book2D(), bookedTrackingGlobalStatus_, DQMStore::bookFloat(), DQMStore::cd(), gather_cfg::cout, TrackingUtility::getTopFolderPath(), MonitorElement::setAxisTitle(), MonitorElement::setBinLabel(), DQMStore::setCurrentFolder(), AlCaHLTBitMon_QueryRunRegistry::string, TopFolderName_, TrackGlobalSummaryReportGlobal, TrackGlobalSummaryReportMap, TrackingMEsMap, and verbose_.

Referenced by TrackingActionExecutor::createGlobalStatus(), and fillGlobalStatus().

82  {
83 
84  if (verbose_) std::cout << "[TrackingQualityChecker::bookGlobalStatus] already booked ? " << (bookedTrackingGlobalStatus_ ? "yes" : "nope") << std::endl;
85 
87  dqm_store->cd();
88  edm::LogInfo("TrackingQualityChecker") << " booking TrackingQualityStatus" << "\n";
89 
90  std::string tracking_dir = "";
91  TrackingUtility::getTopFolderPath(dqm_store, TopFolderName_, tracking_dir);
92  dqm_store->setCurrentFolder(TopFolderName_+"/EventInfo");
93 
94  TrackGlobalSummaryReportGlobal = dqm_store->bookFloat("reportSummary");
95 
96  std::string hname, htitle;
97  hname = "reportSummaryMap";
98  htitle = "Tracking Report Summary Map";
99 
100  size_t nQT = TrackingMEsMap.size();
101  if (verbose_) std::cout << "[TrackingQualityChecker::bookGlobalStatus] nQT: " << nQT << std::endl;
102  TrackGlobalSummaryReportMap = dqm_store->book2D(hname, htitle, nQT,0.5,float(nQT)+0.5,1,0.5,1.5);
103  TrackGlobalSummaryReportMap->setAxisTitle("Track Quality Type", 1);
104  TrackGlobalSummaryReportMap->setAxisTitle("QTest Flag", 2);
105  size_t ibin =0;
106  for ( auto meQTset : TrackingMEsMap ) {
107  TrackGlobalSummaryReportMap->setBinLabel(ibin+1,meQTset.first);
108  ibin++;
109  }
110 
111  dqm_store->setCurrentFolder(TopFolderName_+"/EventInfo/reportSummaryContents");
112 
113  for (std::map<std::string, TrackingMEs>::iterator it = TrackingMEsMap.begin();
114  it != TrackingMEsMap.end(); it++) {
115  std::string meQTname = it->first;
116  it->second.TrackingFlag = dqm_store->bookFloat("Track"+meQTname);
117  if (verbose_) std::cout << "[TrackingQualityChecker::bookGlobalStatus] " << it->first << " exists ? " << it->second.TrackingFlag << std::endl;
118  if (verbose_) std::cout << "[TrackingQualityChecker::bookGlobalStatus] DONE w/ TrackingMEsMap" << std::endl;
119  }
120 
122  dqm_store->cd();
123  }
124 }
MonitorElement * TrackGlobalSummaryReportMap
void cd(void)
go to top directory (ie. root)
Definition: DQMStore.cc:644
std::map< std::string, TrackingMEs > TrackingMEsMap
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)
static void getTopFolderPath(DQMStore *dqm_store, std::string top_dir, std::string &path)
MonitorElement * bookFloat(const char *name)
Book float.
Definition: DQMStore.cc:891
MonitorElement * TrackGlobalSummaryReportGlobal
tuple cout
Definition: gather_cfg.py:121
MonitorElement * book2D(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY)
Book 2D histogram.
Definition: DQMStore.cc:1082
void setAxisTitle(const std::string &title, int axis=1)
set x-, y- or z-axis title (axis=1, 2, 3 respectively)
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:667
void TrackingQualityChecker::bookLSStatus ( DQMStore dqm_store)

Definition at line 126 of file TrackingQualityChecker.cc.

References bookedTrackingLSStatus_, DQMStore::bookFloat(), DQMStore::cd(), gather_cfg::cout, TrackingUtility::getTopFolderPath(), DQMStore::setCurrentFolder(), AlCaHLTBitMon_QueryRunRegistry::string, TopFolderName_, TrackingLSMEsMap, TrackLSSummaryReportGlobal, and verbose_.

Referenced by TrackingActionExecutor::createLSStatus(), and fillLSStatus().

126  {
127 
128  if (verbose_) std::cout << "[TrackingQualityChecker::bookLSStatus] already booked ? " << (bookedTrackingLSStatus_ ? "yes" : "nope") << std::endl;
129 
131  dqm_store->cd();
132  edm::LogInfo("TrackingQualityChecker") << " booking TrackingQualityStatus" << "\n";
133 
134  std::string tracking_dir = "";
135  TrackingUtility::getTopFolderPath(dqm_store, TopFolderName_, tracking_dir);
136  dqm_store->setCurrentFolder(TopFolderName_+"/EventInfo");
137 
138  TrackLSSummaryReportGlobal = dqm_store->bookFloat("reportSummary");
139 
140  std::string hname, htitle;
141  hname = "reportSummaryMap";
142  htitle = "Tracking Report Summary Map";
143 
144 
145  if (verbose_) {
146  size_t nQT = TrackingLSMEsMap.size();
147  std::cout << "[TrackingQualityChecker::bookLSStatus] nQT: " << nQT << std::endl;
148  }
149 
150  dqm_store->setCurrentFolder(TopFolderName_+"/EventInfo/reportSummaryContents");
151  for (std::map<std::string, TrackingLSMEs>::iterator it = TrackingLSMEsMap.begin();
152  it != TrackingLSMEsMap.end(); it++) {
153  std::string meQTname = it->first;
154  it->second.TrackingFlag = dqm_store->bookFloat("Track"+meQTname);
155  if (verbose_) std::cout << "[TrackingQualityChecker::bookLSStatus] " << it->first << " exists ? " << it->second.TrackingFlag << std::endl;
156  if (verbose_) std::cout << "[TrackingQualityChecker::bookLSStatus] DONE w/ TrackingLSMEsMap" << std::endl;
157  }
158 
160  dqm_store->cd();
161  }
162 }
void cd(void)
go to top directory (ie. root)
Definition: DQMStore.cc:644
static void getTopFolderPath(DQMStore *dqm_store, std::string top_dir, std::string &path)
MonitorElement * bookFloat(const char *name)
Book float.
Definition: DQMStore.cc:891
MonitorElement * TrackLSSummaryReportGlobal
tuple cout
Definition: gather_cfg.py:121
std::map< std::string, TrackingLSMEs > TrackingLSMEsMap
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:667
void TrackingQualityChecker::fillDummyGlobalStatus ( )

Definition at line 167 of file TrackingQualityChecker.cc.

References bookedTrackingGlobalStatus_, gather_cfg::cout, MonitorElement::Fill(), fillStatusHistogram(), MonitorElement::getNbinsX(), resetGlobalStatus(), TrackGlobalSummaryReportGlobal, TrackGlobalSummaryReportMap, TrackingMEsMap, and verbose_.

Referenced by TrackingActionExecutor::fillDummyGlobalStatus(), and fillGlobalStatus().

167  {
168  if (verbose_) std::cout << "[TrackingQualityChecker::fillDummyGlobalStatus] starting ..." << std::endl;
169 
171  if (verbose_) std::cout << "[TrackingQualityChecker::fillDummyGlobalStatus] already booked ? " << (bookedTrackingGlobalStatus_ ? "yes" : "nope") << std::endl;
173 
175 
176  for (int ibin = 1; ibin < TrackGlobalSummaryReportMap->getNbinsX()+1; ibin++) {
178  }
179 
180  for (std::map<std::string, TrackingMEs>::iterator it = TrackingMEsMap.begin();
181  it != TrackingMEsMap.end(); it++)
182  it->second.TrackingFlag->Fill(-1.0);
183  if (verbose_) std::cout << "[TrackingQualityChecker::fillDummyGlobalStatus] DONE w/ TrackingMEsMap" << std::endl;
184 
185  }
186 }
MonitorElement * TrackGlobalSummaryReportMap
std::map< std::string, TrackingMEs > TrackingMEsMap
void Fill(long long x)
void fillStatusHistogram(MonitorElement *, int xbin, int ybin, float val)
int getNbinsX(void) const
get # of bins in X-axis
MonitorElement * TrackGlobalSummaryReportGlobal
tuple cout
Definition: gather_cfg.py:121
void TrackingQualityChecker::fillDummyLSStatus ( )

Definition at line 187 of file TrackingQualityChecker.cc.

References bookedTrackingLSStatus_, gather_cfg::cout, MonitorElement::Fill(), resetLSStatus(), TrackingLSMEsMap, TrackLSSummaryReportGlobal, and verbose_.

Referenced by TrackingActionExecutor::fillDummyLSStatus(), and fillLSStatus().

187  {
188  if (verbose_) std::cout << "[TrackingQualityChecker::fillDummyLSStatus] starting ..." << std::endl;
189 
190  resetLSStatus();
191  if (verbose_) std::cout << "[TrackingQualityChecker::fillDummyLSStatus] already booked ? " << (bookedTrackingLSStatus_ ? "yes" : "nope") << std::endl;
193 
195  for (std::map<std::string, TrackingLSMEs>::iterator it = TrackingLSMEsMap.begin();
196  it != TrackingLSMEsMap.end(); it++)
197  it->second.TrackingFlag->Fill(-1.0);
198  if (verbose_) std::cout << "[TrackingQualityChecker::fillDummyLSStatus] DONE w/ TrackingLSMEsMap" << std::endl;
199 
200  }
201 }
void Fill(long long x)
MonitorElement * TrackLSSummaryReportGlobal
tuple cout
Definition: gather_cfg.py:121
std::map< std::string, TrackingLSMEs > TrackingLSMEsMap
void TrackingQualityChecker::fillGlobalStatus ( DQMStore dqm_store)

Definition at line 244 of file TrackingQualityChecker.cc.

References bookedTrackingGlobalStatus_, bookGlobalStatus(), DQMStore::cd(), gather_cfg::cout, fillDummyGlobalStatus(), fillTrackingStatus(), and verbose_.

Referenced by TrackingActionExecutor::fillGlobalStatus().

244  {
245 
246  if (verbose_) std::cout << "[TrackingQualityChecker::fillGlobalStatus] already booked ? " << (bookedTrackingGlobalStatus_ ? "yes" : "nope") << std::endl;
248 
250  fillTrackingStatus(dqm_store);
251  if (verbose_) std::cout << "[TrackingQualityChecker::fillGlobalStatus] DONE" << std::endl;
252  dqm_store->cd();
253 }
void fillTrackingStatus(DQMStore *dqm_store)
void cd(void)
go to top directory (ie. root)
Definition: DQMStore.cc:644
void bookGlobalStatus(DQMStore *dqm_store)
tuple cout
Definition: gather_cfg.py:121
void TrackingQualityChecker::fillLSStatus ( DQMStore dqm_store)

Definition at line 255 of file TrackingQualityChecker.cc.

References bookedTrackingLSStatus_, bookLSStatus(), DQMStore::cd(), gather_cfg::cout, fillDummyLSStatus(), fillTrackingStatusAtLumi(), and verbose_.

Referenced by TrackingActionExecutor::fillStatusAtLumi().

255  {
256 
257  if (verbose_) std::cout << "[TrackingQualityChecker::fillLSStatus] already booked ? " << (bookedTrackingLSStatus_ ? "yes" : "nope") << std::endl;
258  if (!bookedTrackingLSStatus_) bookLSStatus(dqm_store);
259 
261  fillTrackingStatusAtLumi(dqm_store);
262  if (verbose_) std::cout << "[TrackingQualityChecker::fillLSStatus] DONE" << std::endl;
263  dqm_store->cd();
264 }
void cd(void)
go to top directory (ie. root)
Definition: DQMStore.cc:644
void bookLSStatus(DQMStore *dqm_store)
void fillTrackingStatusAtLumi(DQMStore *dqm_store)
tuple cout
Definition: gather_cfg.py:121
void TrackingQualityChecker::fillStatusHistogram ( MonitorElement me,
int  xbin,
int  ybin,
float  val 
)
private

Definition at line 395 of file TrackingQualityChecker.cc.

References MonitorElement::DQM_KIND_TH2F, MonitorElement::getTH2F(), and MonitorElement::kind().

Referenced by fillDummyGlobalStatus(), and fillTrackingStatus().

395  {
396  if (me && me->kind() == MonitorElement::DQM_KIND_TH2F) {
397  TH2F* th2d = me->getTH2F();
398  th2d->SetBinContent(xbin, ybin, val);
399  }
400  }
Kind kind(void) const
Get the type of the monitor element.
TH2F * getTH2F(void) const
void TrackingQualityChecker::fillTrackingStatus ( DQMStore dqm_store)
private

Definition at line 269 of file TrackingQualityChecker.cc.

References DQMStore::cd(), gather_cfg::cout, MonitorElement::Fill(), fillStatusHistogram(), DQMStore::getContents(), MonitorElement::getFullname(), MonitorElement::getName(), MonitorElement::getQReports(), TrackingUtility::goToDir(), if(), mergeVDriftHistosByStation::name, NULL, DQMStore::pwd(), ntuplemaker::status, AlCaHLTBitMon_QueryRunRegistry::string, TopFolderName_, TrackGlobalSummaryReportGlobal, TrackGlobalSummaryReportMap, TrackingMEsMap, and verbose_.

Referenced by fillGlobalStatus().

269  {
270 
271  float gstatus = 0.0;
272 
273  dqm_store->cd();
274  if (!TrackingUtility::goToDir(dqm_store, TopFolderName_)) return;
275 
276 
277  int ibin = 0;
278  for (std::map<std::string, TrackingMEs>::iterator it = TrackingMEsMap.begin();
279  it != TrackingMEsMap.end(); it++) {
280 
281  if (verbose_) std::cout << "[TrackingQualityChecker::fillTrackingStatus] ME: " << it->first << " [" << it->second.TrackingFlag->getFullname() << "] flag: " << it->second.TrackingFlag->getFloatValue() << std::endl;
282 
283  ibin++;
284 
285  std::string localMEdirpath = it->second.HistoDir;
286  std::string MEname = it->second.HistoName;
287 
288  std::vector<MonitorElement*> tmpMEvec = dqm_store->getContents(dqm_store->pwd()+"/"+localMEdirpath);
289  if (verbose_) std::cout << "[TrackingQualityChecker::fillTrackingStatus] tmpMEvec: " << tmpMEvec.size() << std::endl;
290  MonitorElement* me = NULL;
291 
292  size_t nMEs = 0;
293  for ( auto ime : tmpMEvec ) {
294  std::string name = ime->getName();
295  if (verbose_) std::cout << "name: " << name << " <-- --> " << MEname << std::endl;
296  if ( name.find(MEname) != std::string::npos) {
297  me = ime;
298  nMEs++;
299  }
300  }
301  // only one ME found
302  if (verbose_) std::cout << "[TrackingQualityChecker::fillTrackingStatus] nMEs: " << nMEs << std::endl;
303  if (nMEs == 1) {
304  float status = 0.;
305  for ( auto ime : tmpMEvec ) {
306  std::string name = ime->getName();
307  if (verbose_) std::cout << "name: " << name << " [" << MEname << "]" << std::endl;
308  if ( name.find(MEname) != std::string::npos) {
309  me = ime;
310  if (verbose_) std::cout << "inside the loop nQTme: " << me->getQReports().size() << "[" << ime->getFullname() << "]" << std::endl;
311  }
312  }
313  if (verbose_) std::cout << "me: " << me << "[" << me->getName() << ", " << me->getFullname() << "]" << std::endl;
314  if (!me) continue;
315  if (verbose_) std::cout << "[TrackingQualityChecker::fillTrackingStatus] status: " << status << std::endl;
316  std::vector<QReport *> qt_reports = me->getQReports();
317  size_t nQTme = qt_reports.size();
318  if (verbose_) std::cout << "nQTme: " << nQTme << std::endl;
319  if (nQTme != 0) {
320  if (verbose_) std::cout << "[TrackingQualityChecker::fillTrackingStatus] qt_reports: " << qt_reports.size() << std::endl;
321  // loop on possible QTs
322  for ( auto iQT : qt_reports ) {
323  status += iQT->getQTresult();
324  if (verbose_) std::cout << "[TrackingQualityChecker::fillTrackingStatus] iQT: " << iQT->getQRName() << std::endl;
325  if (verbose_) std::cout << "[TrackingQualityChecker::fillTrackingStatus] MEname: " << MEname << " status: " << iQT->getQTresult() << " exists ? " << (it->second.TrackingFlag ? "yes " : "no ") << it->second.TrackingFlag << std::endl;
326  if (verbose_) std::cout << "[TrackingQualityChecker::fillTrackingStatus] iQT message: " << iQT->getMessage() << std::endl;
327  if (verbose_) std::cout << "[TrackingQualityChecker::fillTrackingStatus] iQT status: " << iQT->getStatus() << std::endl;
328  }
329  status = status/float(nQTme);
330  if (verbose_) std::cout << "[TrackingQualityChecker::fillTrackingStatus] MEname: " << MEname << " status: " << status << std::endl;
331  it->second.TrackingFlag->Fill(status);
332  if (verbose_) std::cout << "[TrackingQualityChecker::fillTrackingStatus] TrackGlobalSummaryReportMap: " << TrackGlobalSummaryReportMap << std::endl;
334  }
335 
336  if (verbose_) std::cout << "[TrackingQualityChecker::fillTrackingStatus] gstatus: " << gstatus << " x status: " << status << std::endl;
337  if ( status < 0. ) gstatus = -1.;
338  else gstatus += status;
339  if (verbose_) std::cout << "[TrackingQualityChecker::fillTrackingStatus] ===> gstatus: " << gstatus << std::endl;
340  if (verbose_) std::cout << "[TrackingQualityChecker::fillTrackingStatus] ME: " << it->first << " [" << it->second.TrackingFlag->getFullname() << "] flag: " << it->second.TrackingFlag->getFloatValue() << std::endl;
341 
342  } else { // more than 1 ME w/ the same root => they need to be considered together
343  float status = 1.;
344  for ( auto ime : tmpMEvec ) {
345  float tmp_status = 1.;
346  std::string name = ime->getName();
347  if ( name.find(MEname) != std::string::npos) {
348  me = ime;
349 
350  if (verbose_) std::cout << "[TrackingQualityChecker::fillTrackingStatus] status: " << status << std::endl;
351  std::vector<QReport *> qt_reports = me->getQReports();
352  size_t nQTme = qt_reports.size();
353  if (verbose_) std::cout << "nQTme: " << nQTme << "[" << name << ", " << ime->getFullname() << "]" << std::endl;
354  if (nQTme != 0) {
355  if (verbose_) std::cout << "[TrackingQualityChecker::fillTrackingStatus] qt_reports: " << qt_reports.size() << std::endl;
356  // loop on possible QTs
357  for ( auto iQT : qt_reports ) {
358  tmp_status += iQT->getQTresult();
359  if (verbose_) std::cout << "[TrackingQualityChecker::fillTrackingStatus] iQT: " << iQT->getQRName() << std::endl;
360  if (verbose_) std::cout << "[TrackingQualityChecker::fillTrackingStatus] MEname: " << MEname << " status: " << iQT->getQTresult() << " exists ? " << (it->second.TrackingFlag ? "yes " : "no ") << it->second.TrackingFlag << std::endl;
361  if (verbose_) std::cout << "[TrackingQualityChecker::fillTrackingStatus] iQT message: " << iQT->getMessage() << std::endl;
362  if (verbose_) std::cout << "[TrackingQualityChecker::fillTrackingStatus] iQT status: " << iQT->getStatus() << std::endl;
363  }
364  tmp_status = tmp_status/float(nQTme);
365  }
366  }
367  status = fminf(tmp_status,status);
368  }
369  if ( status < 0. ) gstatus = -1.;
370  else gstatus += status;
371  if (verbose_) std::cout << "[TrackingQualityChecker::fillTrackingStatus] MEname: " << MEname << " status: " << status << std::endl;
372  it->second.TrackingFlag->Fill(status);
373  if (verbose_) std::cout << "[TrackingQualityChecker::fillTrackingStatus] TrackGlobalSummaryReportMap: " << TrackGlobalSummaryReportMap << std::endl;
374 
376  }
377  }
378 
379  if (verbose_) std::cout << "[TrackingQualityChecker::fillTrackingStatus] gstatus: " << gstatus << std::endl;
380  size_t nQT = TrackingMEsMap.size();
381  if (gstatus < 1.) gstatus = -1.;
382  else gstatus = gstatus/float(nQT);
383 
384  if (verbose_) std::cout << "[TrackingQualityChecker::fillTrackingStatus] ===> gstatus: " << gstatus << std::endl;
386  dqm_store->cd();
387 
388  if (verbose_) std::cout << "[TrackingQualityChecker::fillTrackingStatus] DONE" << std::endl;
389 
390 }
const std::string & getName(void) const
get name of ME
MonitorElement * TrackGlobalSummaryReportMap
static bool goToDir(DQMStore *dqm_store, std::string name)
void cd(void)
go to top directory (ie. root)
Definition: DQMStore.cc:644
std::map< std::string, TrackingMEs > TrackingMEsMap
#define NULL
Definition: scimark2.h:8
void Fill(long long x)
void fillStatusHistogram(MonitorElement *, int xbin, int ybin, float val)
const std::string getFullname(void) const
get full name of ME including Pathname
std::vector< MonitorElement * > getContents(const std::string &path) const
Definition: DQMStore.cc:1737
std::vector< QReport * > getQReports(void) const
get map of QReports
MonitorElement * TrackGlobalSummaryReportGlobal
tuple cout
Definition: gather_cfg.py:121
tuple status
Definition: ntuplemaker.py:245
if(conf.exists("allCellsPositionCalc"))
const std::string & pwd(void) const
Definition: DQMStore.cc:639
void TrackingQualityChecker::fillTrackingStatusAtLumi ( DQMStore dqm_store)
private

Definition at line 404 of file TrackingQualityChecker.cc.

References DQMStore::cd(), gather_cfg::cout, MonitorElement::DQM_KIND_TH1F, MonitorElement::Fill(), DQMStore::getContents(), MonitorElement::getMean(), MonitorElement::getName(), TrackingUtility::goToDir(), MonitorElement::kind(), mergeVDriftHistosByStation::name, NULL, DQMStore::pwd(), ntuplemaker::status, AlCaHLTBitMon_QueryRunRegistry::string, TopFolderName_, TrackingLSMEsMap, TrackLSSummaryReportGlobal, and verbose_.

Referenced by fillLSStatus().

404  {
405 
406  if (verbose_) std::cout << "[TrackingQualityChecker::fillTrackingStatusAtLumi] starting .. " << std::endl;
407  float gstatus = 1.0;
408 
409  dqm_store->cd();
410  if (!TrackingUtility::goToDir(dqm_store, TopFolderName_)) return;
411 
412 
413  int ibin = 0;
414  for (std::map<std::string, TrackingLSMEs>::iterator it = TrackingLSMEsMap.begin();
415  it != TrackingLSMEsMap.end(); it++) {
416 
417  if (verbose_) std::cout << "[TrackingQualityChecker::fillTrackingStatusAtLumi] ME: " << it->first << " [" << it->second.TrackingFlag->getFullname() << "] flag: " << it->second.TrackingFlag->getFloatValue() << std::endl;
418 
419  ibin++;
420 
421  std::string localMEdirpath = it->second.HistoLSDir;
422  std::string MEname = it->second.HistoLSName;
423  float lower_cut = it->second.HistoLSLowerCut;
424  float upper_cut = it->second.HistoLSUpperCut;
425 
426  float status = 1.0;
427 
428  std::vector<MonitorElement*> tmpMEvec = dqm_store->getContents(dqm_store->pwd()+"/"+localMEdirpath);
429  if (verbose_) std::cout << "[TrackingQualityChecker::fillTrackingStatusAtLumi] tmpMEvec: " << tmpMEvec.size() << std::endl;
430 
431  MonitorElement* me = NULL;
432 
433  size_t nMEs = 0;
434  for ( auto ime : tmpMEvec ) {
435  std::string name = ime->getName();
436  if ( name.find(MEname) != std::string::npos) {
437  me = ime;
438  nMEs++;
439  }
440  }
441  // only one ME found
442  if (nMEs == 1) {
443  for ( auto ime : tmpMEvec ) {
444  std::string name = ime->getName();
445  if ( name.find(MEname) != std::string::npos) {
446  me = ime;
447  }
448  }
449  if (!me) continue;
450 
451  if (me->kind() == MonitorElement::DQM_KIND_TH1F) {
452  float x_mean = me->getMean();
453  if (verbose_) std::cout << "[TrackingQualityChecker::fillTrackingStatusAtLumi] MEname: " << MEname << " x_mean: " << x_mean << std::endl;
454  if (x_mean <= lower_cut || x_mean > upper_cut) status = 0.0;
455  else status = 1.0;
456  }
457  } else { // more than 1 ME w/ the same root => they need to be considered together
458  for ( auto ime : tmpMEvec ) {
459  float tmp_status = 1.;
460  std::string name = ime->getName();
461  if ( name.find(MEname) != std::string::npos) {
462  me = ime;
463  if (!me) continue;
464 
465  if (me->kind() == MonitorElement::DQM_KIND_TH1F) {
466  float x_mean = me->getMean();
467  if (verbose_) std::cout << "[TrackingQualityChecker::fillTrackingStatusAtLumi] MEname: " << MEname << "[" << me->getName() << "] x_mean: " << x_mean << std::endl;
468  if (x_mean <= lower_cut || x_mean > upper_cut) tmp_status = 0.0;
469  else tmp_status = 1.0;
470  if (verbose_) std::cout << "[TrackingQualityChecker::fillTrackingStatusAtLumi] tmp_status: " << tmp_status << std::endl;
471  }
472  }
473  status = fminf(tmp_status,status);
474  if (verbose_) std::cout << "[TrackingQualityChecker::fillTrackingStatusAtLumi] ==> status: " << status << std::endl;
475  } // loop on tmpMEvec
476  }
477  it->second.TrackingFlag->Fill(status);
478  if (verbose_) std::cout << "[TrackingQualityChecker::fillTrackingStatusAtLumi] ===> status: " << status << " [" << gstatus << "]" << std::endl;
479  if (status == 0.0) gstatus = -1.0;
480  else gstatus = gstatus * status;
481  if (verbose_) std::cout << "[TrackingQualityChecker::fillTrackingStatusAtLumi] ===> gstatus: " << gstatus << std::endl;
482  if (verbose_) std::cout << "[TrackingQualityChecker::fillTrackingStatusAtLumi] ME: " << it->first << " [" << it->second.TrackingFlag->getFullname() << "] flag: " << it->second.TrackingFlag->getFloatValue() << std::endl;
483  }
485  dqm_store->cd();
486 
487  if (verbose_) std::cout << "[TrackingQualityChecker::fillTrackingStatusAtLumi] DONE" << std::endl;
488 }
const std::string & getName(void) const
get name of ME
static bool goToDir(DQMStore *dqm_store, std::string name)
void cd(void)
go to top directory (ie. root)
Definition: DQMStore.cc:644
#define NULL
Definition: scimark2.h:8
double getMean(int axis=1) const
get mean value of histogram along x, y or z axis (axis=1, 2, 3 respectively)
void Fill(long long x)
MonitorElement * TrackLSSummaryReportGlobal
Kind kind(void) const
Get the type of the monitor element.
std::vector< MonitorElement * > getContents(const std::string &path) const
Definition: DQMStore.cc:1737
tuple cout
Definition: gather_cfg.py:121
tuple status
Definition: ntuplemaker.py:245
std::map< std::string, TrackingLSMEs > TrackingLSMEsMap
const std::string & pwd(void) const
Definition: DQMStore.cc:639
void TrackingQualityChecker::resetGlobalStatus ( )

Definition at line 206 of file TrackingQualityChecker.cc.

References bookedTrackingGlobalStatus_, gather_cfg::cout, NULL, MonitorElement::Reset(), HcalObjRepresent::Reset(), TrackGlobalSummaryReportGlobal, TrackGlobalSummaryReportMap, TrackingMEsMap, and verbose_.

Referenced by fillDummyGlobalStatus().

206  {
207 
208  if (verbose_) std::cout << "[TrackingQualityChecker::resetGlobalStatus] already booked ? " << (bookedTrackingGlobalStatus_ ? "yes" : "nope") << std::endl;
210 
213 
214  for (std::map<std::string, TrackingMEs>::iterator it = TrackingMEsMap.begin();
215  it != TrackingMEsMap.end(); it++) {
216  MonitorElement* me = it->second.TrackingFlag;
217  if (verbose_) std::cout << "[TrackingQualityChecker::resetGlobalStatus] " << it->second.HistoName << " exist ? " << ( it->second.TrackingFlag == NULL ? "nope" : "yes" ) << " ---> " << me << std::endl;
218  me->Reset();
219  }
220  if (verbose_) std::cout << "[TrackingQualityChecker::resetGlobalStatus] DONE w/ TrackingMEsMap" << std::endl;
221 
222  }
223 }
MonitorElement * TrackGlobalSummaryReportMap
std::map< std::string, TrackingMEs > TrackingMEsMap
#define NULL
Definition: scimark2.h:8
MonitorElement * TrackGlobalSummaryReportGlobal
tuple cout
Definition: gather_cfg.py:121
void Reset(std::vector< TH2F > &depth)
void Reset(void)
reset ME (ie. contents, errors, etc)
void TrackingQualityChecker::resetLSStatus ( )

Definition at line 224 of file TrackingQualityChecker.cc.

References bookedTrackingLSStatus_, gather_cfg::cout, NULL, MonitorElement::Reset(), HcalObjRepresent::Reset(), TrackingLSMEsMap, TrackLSSummaryReportGlobal, and verbose_.

Referenced by fillDummyLSStatus().

224  {
225 
226  if (verbose_) std::cout << "[TrackingQualityChecker::resetLSStatus] already booked ? " << (bookedTrackingLSStatus_ ? "yes" : "nope") << std::endl;
228 
230  for (std::map<std::string, TrackingLSMEs>::iterator it = TrackingLSMEsMap.begin();
231  it != TrackingLSMEsMap.end(); it++) {
232  MonitorElement* me = it->second.TrackingFlag;
233  if (verbose_) std::cout << "[TrackingQualityChecker::resetLSStatus] " << it->second.HistoLSName << " exist ? " << ( it->second.TrackingFlag == NULL ? "nope" : "yes" ) << " ---> " << me << std::endl;
234  me->Reset();
235  }
236  if (verbose_) std::cout << "[TrackingQualityChecker::resetLSStatus] DONE w/ TrackingLSMEsMap" << std::endl;
237 
238  }
239 }
#define NULL
Definition: scimark2.h:8
MonitorElement * TrackLSSummaryReportGlobal
tuple cout
Definition: gather_cfg.py:121
void Reset(std::vector< TH2F > &depth)
void Reset(void)
reset ME (ie. contents, errors, etc)
std::map< std::string, TrackingLSMEs > TrackingLSMEsMap

Member Data Documentation

bool TrackingQualityChecker::bookedTrackingGlobalStatus_
private
bool TrackingQualityChecker::bookedTrackingLSStatus_
private
edm::ParameterSet TrackingQualityChecker::pSet_
private

Definition at line 69 of file TrackingQualityChecker.h.

Referenced by TrackingQualityChecker().

std::string TrackingQualityChecker::TopFolderName_
private
MonitorElement* TrackingQualityChecker::TrackGlobalSummaryReportGlobal
private
MonitorElement* TrackingQualityChecker::TrackGlobalSummaryReportMap
private
std::map<std::string, TrackingLSMEs> TrackingQualityChecker::TrackingLSMEsMap
private
std::map<std::string, TrackingMEs> TrackingQualityChecker::TrackingMEsMap
private
MonitorElement* TrackingQualityChecker::TrackLSSummaryReportGlobal
private
bool TrackingQualityChecker::verbose_
private