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
SiStripQualityChecker Class Reference

#include <SiStripQualityChecker.h>

Classes

struct  SubDetMEs
 
struct  TrackingMEs
 

Public Member Functions

void bookStatus (DQMStore *dqm_store)
 
void fillDummyStatus ()
 
void fillFaultyModuleStatus (DQMStore *dqm_store)
 
void fillStatus (DQMStore *dqm_store, const edm::ESHandle< SiStripDetCabling > &cabling)
 
void fillStatusAtLumi (DQMStore *dqm_store)
 
void printStatusReport ()
 
void resetStatus ()
 
 SiStripQualityChecker (edm::ParameterSet const &ps)
 
virtual ~SiStripQualityChecker ()
 

Private Member Functions

void fillDetectorStatus (DQMStore *dqm_store, const edm::ESHandle< SiStripDetCabling > &cabling)
 
void fillDetectorStatusAtLumi (DQMStore *dqm_store)
 
void fillStatusHistogram (MonitorElement *, int xbin, int ybin, float val)
 
void fillSubDetStatus (DQMStore *dqm_store, const edm::ESHandle< SiStripDetCabling > &cabling, SubDetMEs &mes, unsigned int xbin, float &gflag)
 
void fillTrackingStatus (DQMStore *dqm_store)
 
void fillTrackingStatusAtLumi (DQMStore *dqm_store)
 
void getModuleStatus (std::vector< MonitorElement * > &layer_mes, int &errdet)
 
void initialiseBadModuleList ()
 

Private Attributes

std::map< uint32_t, uint16_t > badModuleList
 
bool bookedStripStatus_
 
bool bookedTrackingStatus_
 
float cutoffChi2overDoF_
 
float cutoffRecHits_
 
float cutoffTrackRate_
 
MonitorElementDetFractionReportMap
 
int globalStatusFilling_
 
edm::ParameterSet pSet_
 
MonitorElementSToNReportMap
 
std::map< std::string,
std::string > 
SubDetFolderMap
 
std::map< std::string, SubDetMEsSubDetMEsMap
 
MonitorElementSummaryReportGlobal
 
MonitorElementSummaryReportMap
 
TkDetMaptkDetMap_
 
std::map< std::string,
TrackingMEs
TrackingMEsMap
 
MonitorElementTrackSummaryReportGlobal
 
MonitorElementTrackSummaryReportMap
 

Detailed Description

Definition at line 20 of file SiStripQualityChecker.h.

Constructor & Destructor Documentation

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

Definition at line 28 of file SiStripQualityChecker.cc.

References badModuleList, bookedStripStatus_, bookedTrackingStatus_, edm::ParameterSet::getParameter(), SiStripQualityChecker::TrackingMEs::HistoName, SiStripQualityChecker::TrackingMEs::LowerCut, cmsCodeRules.cppFunctionSkipper::operator, pSet_, SubDetFolderMap, tkDetMap_, SiStripQualityChecker::TrackingMEs::TrackingFlag, TrackingMEsMap, and SiStripQualityChecker::TrackingMEs::UpperCut.

28  :pSet_(ps) {
29  edm::LogInfo("SiStripQualityChecker") <<
30  " Creating SiStripQualityChecker " << "\n" ;
31 
32  bookedStripStatus_ = false;
33  bookedTrackingStatus_ = false;
34 
35  SubDetFolderMap.insert(std::pair<std::string, std::string>("TIB", "TIB"));
36  SubDetFolderMap.insert(std::pair<std::string, std::string>("TOB", "TOB"));
37  SubDetFolderMap.insert(std::pair<std::string, std::string>("TECF", "TEC/side_2"));
38  SubDetFolderMap.insert(std::pair<std::string, std::string>("TECB", "TEC/side_1"));
39  SubDetFolderMap.insert(std::pair<std::string, std::string>("TIDF", "TID/side_2"));
40  SubDetFolderMap.insert(std::pair<std::string, std::string>("TIDB", "TID/side_1"));
41  badModuleList.clear();
42 
43  if(!edm::Service<TkDetMap>().isAvailable()){
44  edm::LogError("TkHistoMap") <<
45  "\n------------------------------------------"
46  "\nUnAvailable Service TkHistoMap: please insert in the configuration file an instance like"
47  "\n\tprocess.TkDetMap = cms.Service(\"TkDetMap\")"
48  "\n------------------------------------------";
49  }
51 
52  TrackingMEs tracking_mes;
53  edm::ParameterSet TkPSet;
54 
55  TkPSet = pSet_.getParameter<edm::ParameterSet>("TrackRatePSet");
56  tracking_mes.TrackingFlag = 0;
57  tracking_mes.HistoName = TkPSet.getParameter<std::string>("Name");
58  tracking_mes.LowerCut = TkPSet.getParameter<double>("LowerCut");
59  tracking_mes.UpperCut = TkPSet.getParameter<double>("UpperCut");
60  TrackingMEsMap.insert(std::pair<std::string, TrackingMEs>("Rate", tracking_mes));
61 
62  TkPSet = pSet_.getParameter<edm::ParameterSet>("TrackChi2PSet");
63  tracking_mes.TrackingFlag = 0;
64  tracking_mes.HistoName = TkPSet.getParameter<std::string>("Name");
65  tracking_mes.LowerCut = TkPSet.getParameter<double>("LowerCut");
66  tracking_mes.UpperCut = TkPSet.getParameter<double>("UpperCut");
67  TrackingMEsMap.insert(std::pair<std::string, TrackingMEs>("Chi2", tracking_mes));
68 
69  TkPSet = pSet_.getParameter<edm::ParameterSet>("TrackHitPSet");
70  tracking_mes.TrackingFlag = 0;
71  tracking_mes.HistoName = TkPSet.getParameter<std::string>("Name");
72  tracking_mes.LowerCut = TkPSet.getParameter<double>("LowerCut");
73  tracking_mes.UpperCut = TkPSet.getParameter<double>("UpperCut");
74  TrackingMEsMap.insert(std::pair<std::string, TrackingMEs>("RecHits", tracking_mes));
75 
76 }
T getParameter(std::string const &) const
std::map< std::string, std::string > SubDetFolderMap
std::map< uint32_t, uint16_t > badModuleList
std::map< std::string, TrackingMEs > TrackingMEsMap
SiStripQualityChecker::~SiStripQualityChecker ( )
virtual

Definition at line 80 of file SiStripQualityChecker.cc.

80  {
81  edm::LogInfo("SiStripQualityChecker") <<
82  " Deleting SiStripQualityChecker " << "\n" ;
83 }

Member Function Documentation

void SiStripQualityChecker::bookStatus ( DQMStore dqm_store)

Definition at line 87 of file SiStripQualityChecker.cc.

References DQMStore::book2D(), bookedStripStatus_, bookedTrackingStatus_, DQMStore::bookFloat(), DQMStore::cd(), SiStripQualityChecker::SubDetMEs::detectorTag, SiStripQualityChecker::SubDetMEs::DetFraction, DetFractionReportMap, SiStripUtility::getTopFolderPath(), mergeVDriftHistosByStation::name, MonitorElement::setAxisTitle(), MonitorElement::setBinLabel(), DQMStore::setCurrentFolder(), SiStripQualityChecker::SubDetMEs::SToNFlag, SToNReportMap, SubDetFolderMap, SubDetMEsMap, SiStripQualityChecker::SubDetMEs::SummaryFlag, SummaryReportGlobal, SummaryReportMap, TrackingMEsMap, TrackSummaryReportGlobal, and TrackSummaryReportMap.

Referenced by SiStripActionExecutor::createStatus(), fillStatus(), and fillStatusAtLumi().

87  {
88 
89  if (!bookedStripStatus_) {
90  dqm_store->cd();
91  std::string strip_dir = "";
92  SiStripUtility::getTopFolderPath(dqm_store, "SiStrip", strip_dir);
93  if (strip_dir.size() == 0) strip_dir = "SiStrip";
94 
95  // Non Standard Plots and should be put outside EventInfo folder
96 
97  dqm_store->setCurrentFolder(strip_dir+"/MechanicalView");
98 
99  std::string hname, htitle;
100  hname = "detFractionReportMap";
101  htitle = "SiStrip Report for Good Detector Fraction";
102  DetFractionReportMap = dqm_store->book2D(hname, htitle, 6,0.5,6.5,9,0.5,9.5);
103  DetFractionReportMap->setAxisTitle("Sub Detector Type", 1);
104  DetFractionReportMap->setAxisTitle("Layer/Disc Number", 2);
105  hname = "sToNReportMap";
106  htitle = "SiStrip Report for Signal-to-Noise";
107  SToNReportMap = dqm_store->book2D(hname, htitle, 6,0.5,6.5,9,0.5,9.5);
108  SToNReportMap->setAxisTitle("Sub Detector Type", 1);
109  SToNReportMap->setAxisTitle("Layer/Disc Number", 2);
110 
111  // this is the main reportSummary 2D plot and should be in EventInfo
112  dqm_store->setCurrentFolder(strip_dir+"/EventInfo");
113 
114  hname = "reportSummaryMap";
115  htitle = "SiStrip Report Summary Map";
116  SummaryReportMap = dqm_store->book2D(hname, htitle, 6,0.5,6.5,9,0.5,9.5);
117  SummaryReportMap->setAxisTitle("Sub Detector Type", 1);
118  SummaryReportMap->setAxisTitle("Layer/Disc Number", 2);
119 
120  SummaryReportGlobal = dqm_store->bookFloat("reportSummary");
121  int ibin = 0;
122 
123  dqm_store->setCurrentFolder(strip_dir+"/EventInfo/reportSummaryContents");
124  for (std::map<std::string, std::string>::const_iterator it = SubDetFolderMap.begin();
125  it != SubDetFolderMap.end(); it++) {
126  ibin++;
127  std::string det = it->first;
129  SToNReportMap->setBinLabel(ibin,det);
130  SummaryReportMap->setBinLabel(ibin,det);
131 
132  SubDetMEs local_mes;
133 
134  if (det == "TECF") local_mes.detectorTag = "TEC+";
135  else if (det == "TECB") local_mes.detectorTag = "TEC-";
136  else if (det == "TIDF") local_mes.detectorTag = "TID+";
137  else if (det == "TIDB") local_mes.detectorTag = "TID-";
138  else local_mes.detectorTag = det;
139 
140  std::string me_name;
141  me_name = "SiStrip_" + det;
142  local_mes.SummaryFlag = dqm_store->bookFloat(me_name);
143 
144  me_name = "SiStrip_DetFraction_" + det;
145  local_mes.DetFraction = dqm_store->bookFloat(me_name);
146 
147  me_name = "SiStrip_SToNFlag_" + det;
148  local_mes.SToNFlag = dqm_store->bookFloat(me_name);
149  SubDetMEsMap.insert(std::pair<std::string, SubDetMEs>(det, local_mes));
150  }
151  bookedStripStatus_ = true;
152  }
153  if (!bookedTrackingStatus_) {
154  dqm_store->cd();
155  std::string tracking_dir = "";
156  SiStripUtility::getTopFolderPath(dqm_store, "Tracking", tracking_dir);
157  if (tracking_dir.size() == 0) tracking_dir = "Tracking";
158  dqm_store->setCurrentFolder(tracking_dir+"/EventInfo");
159 
160  TrackSummaryReportGlobal = dqm_store->bookFloat("reportSummary");
161 
162  std::string hname, htitle;
163  hname = "reportSummaryMap";
164  htitle = "Tracking Report Summary Map";
165 
166  TrackSummaryReportMap = dqm_store->book2D(hname, htitle, 3,0.5,3.5,1,0.5,1.5);
167  TrackSummaryReportMap->setAxisTitle("Track Quality Type", 1);
168  TrackSummaryReportMap->setAxisTitle("QTest Flag", 2);
171  TrackSummaryReportMap->setBinLabel(3,"RecHits");
172 
173  dqm_store->setCurrentFolder(tracking_dir+"/EventInfo/reportSummaryContents");
174  int ibin = 0;
175  for (std::map<std::string, TrackingMEs>::iterator it = TrackingMEsMap.begin();
176  it != TrackingMEsMap.end(); it++) {
177  ibin++;
178  std::string name = it->first;
179  it->second.TrackingFlag = dqm_store->bookFloat("Track"+name);
181  }
182  bookedTrackingStatus_ = true;
183  dqm_store->cd();
184  }
185 }
std::map< std::string, std::string > SubDetFolderMap
void cd(void)
go to top directory (ie. root)
Definition: DQMStore.cc:209
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)
MonitorElement * bookFloat(const char *name)
Book float.
Definition: DQMStore.cc:451
std::map< std::string, SubDetMEs > SubDetMEsMap
MonitorElement * DetFractionReportMap
MonitorElement * TrackSummaryReportGlobal
MonitorElement * SummaryReportMap
MonitorElement * SummaryReportGlobal
MonitorElement * SToNReportMap
MonitorElement * TrackSummaryReportMap
std::map< std::string, TrackingMEs > TrackingMEsMap
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:642
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:232
static void getTopFolderPath(DQMStore *dqm_store, std::string type, std::string &path)
void SiStripQualityChecker::fillDetectorStatus ( DQMStore dqm_store,
const edm::ESHandle< SiStripDetCabling > &  cabling 
)
private

Definition at line 267 of file SiStripQualityChecker.cc.

References DQMStore::cd(), DQMStore::dirExists(), MonitorElement::Fill(), fillSubDetStatus(), SiStripUtility::goToDir(), initialiseBadModuleList(), DQMStore::pwd(), SubDetFolderMap, SubDetMEsMap, and SummaryReportGlobal.

Referenced by fillStatus().

267  {
268  unsigned int xbin = 0;
269  float global_flag = 0;
270  dqm_store->cd();
271  std::string mdir = "MechanicalView";
272  if (!SiStripUtility::goToDir(dqm_store, mdir)) return;
273  std::string mechanicalview_dir = dqm_store->pwd();
274 
276  for (std::map<std::string, SubDetMEs>::const_iterator it = SubDetMEsMap.begin();
277  it != SubDetMEsMap.end(); it++) {
278  std::string det = it->first;
279  std::map<std::string, std::string>::const_iterator cPos = SubDetFolderMap.find(det);
280  if (cPos == SubDetFolderMap.end()) continue;
281  std::string dname = mechanicalview_dir + "/" + cPos->second;
282  if (!dqm_store->dirExists(dname)) continue;
283  dqm_store->cd(dname);
284  SubDetMEs local_mes = it->second;
285  xbin++;
286  float flag;
287  fillSubDetStatus(dqm_store, cabling, local_mes, xbin,flag);
288  global_flag += flag;
289  }
290  global_flag = global_flag/xbin*1.0;
291  if (SummaryReportGlobal) SummaryReportGlobal->Fill(global_flag);
292  dqm_store->cd();
293 }
long int flag
Definition: mlp_lapack.h:47
std::map< std::string, std::string > SubDetFolderMap
void cd(void)
go to top directory (ie. root)
Definition: DQMStore.cc:209
void Fill(long long x)
std::map< std::string, SubDetMEs > SubDetMEsMap
bool dirExists(const std::string &path) const
true if directory exists
Definition: DQMStore.cc:296
MonitorElement * SummaryReportGlobal
void fillSubDetStatus(DQMStore *dqm_store, const edm::ESHandle< SiStripDetCabling > &cabling, SubDetMEs &mes, unsigned int xbin, float &gflag)
static bool goToDir(DQMStore *dqm_store, std::string name)
const std::string & pwd(void) const
Definition: DQMStore.cc:204
void SiStripQualityChecker::fillDetectorStatusAtLumi ( DQMStore dqm_store)
private

Definition at line 559 of file SiStripQualityChecker.cc.

References DQMStore::cd(), MonitorElement::DQM_KIND_TH1F, MonitorElement::Fill(), DQMStore::get(), MonitorElement::getTH1F(), SiStripUtility::goToDir(), MonitorElement::kind(), label, DQMStore::pwd(), SubDetMEsMap, and SummaryReportGlobal.

Referenced by fillStatusAtLumi().

559  {
560  dqm_store->cd();
561  std::string rdir = "ReadoutView";
562  if (!SiStripUtility::goToDir(dqm_store, rdir)) return;
563  std::string fullpath = dqm_store->pwd()
564  + "/FedMonitoringSummary/"
565  + "lumiErrorFraction";
566  MonitorElement* me = dqm_store->get(fullpath);
567  if (me && me->kind() == MonitorElement::DQM_KIND_TH1F) {
568  TH1F* th1 = me->getTH1F();
569  float global_fraction = 0.0;
570  float dets = 0.0;
571  for (int ibin = 1; ibin <= th1->GetNbinsX(); ibin++) {
572  std::string label = th1->GetXaxis()->GetBinLabel(ibin);
573  std::map<std::string, SubDetMEs>::iterator iPos = SubDetMEsMap.find(label);
574  if (iPos != SubDetMEsMap.end()) {
575  float fraction = 1.0 - th1->GetBinContent(ibin);
576  global_fraction += fraction;
577  dets++;
578  iPos->second.DetFraction->Fill(fraction);
579  iPos->second.SToNFlag->Fill(-1.0);
580  iPos->second.SummaryFlag->Fill(fraction);
581  }
582  }
583  global_fraction = global_fraction/dets;
584  if (SummaryReportGlobal) SummaryReportGlobal->Fill(global_fraction);
585  }
586  dqm_store->cd();
587 }
const std::string & label
Definition: MVAComputer.cc:186
void cd(void)
go to top directory (ie. root)
Definition: DQMStore.cc:209
void Fill(long long x)
std::map< std::string, SubDetMEs > SubDetMEsMap
Kind kind(void) const
Get the type of the monitor element.
MonitorElement * get(const std::string &path) const
get ME from full pathname (e.g. &quot;my/long/dir/my_histo&quot;)
Definition: DQMStore.cc:1265
TH1F * getTH1F(void) const
MonitorElement * SummaryReportGlobal
static bool goToDir(DQMStore *dqm_store, std::string name)
const std::string & pwd(void) const
Definition: DQMStore.cc:204
void SiStripQualityChecker::fillDummyStatus ( )

Definition at line 189 of file SiStripQualityChecker.cc.

References bookedStripStatus_, bookedTrackingStatus_, SiStripQualityChecker::SubDetMEs::DetFraction, DetFractionReportMap, MonitorElement::Fill(), MonitorElement::getNbinsX(), MonitorElement::getNbinsY(), resetStatus(), SiStripQualityChecker::SubDetMEs::SToNFlag, SToNReportMap, SubDetMEsMap, SiStripQualityChecker::SubDetMEs::SummaryFlag, SummaryReportGlobal, SummaryReportMap, TrackingMEsMap, TrackSummaryReportGlobal, and TrackSummaryReportMap.

Referenced by SiStripActionExecutor::fillDummyStatus(), fillStatus(), and fillStatusAtLumi().

189  {
190 
191  resetStatus();
192  if (bookedStripStatus_) {
193  for (std::map<std::string, SubDetMEs>::const_iterator it = SubDetMEsMap.begin();
194  it != SubDetMEsMap.end(); it++) {
195  SubDetMEs local_mes = it->second;
196  local_mes.DetFraction->Fill(-1.0);
197  local_mes.SToNFlag->Fill(-1.0);
198  local_mes.SummaryFlag->Fill(-1.0);
199  }
200 
201  for (int xbin = 1; xbin < SummaryReportMap->getNbinsX()+1; xbin++) {
202  for (int ybin = 1; ybin < SummaryReportMap->getNbinsY()+1; ybin++) {
203  DetFractionReportMap->Fill(xbin, ybin, -1.0);
204  SToNReportMap->Fill(xbin, ybin, -1.0);
205  SummaryReportMap->Fill(xbin, ybin, -1.0);
206  }
207  }
208  SummaryReportGlobal->Fill(-1.0);
209  }
210  if (bookedTrackingStatus_) {
212  for (int xbin = 1; xbin < TrackSummaryReportMap->getNbinsX()+1; xbin++) {
213  for (int ybin = 1; ybin < TrackSummaryReportMap->getNbinsY()+1; ybin++) {
214  TrackSummaryReportMap->Fill(xbin, ybin, -1.0);
215  }
216  }
217  for (std::map<std::string, TrackingMEs>::iterator it = TrackingMEsMap.begin();
218  it != TrackingMEsMap.end(); it++) {
219  it->second.TrackingFlag->Fill(-1.0);
220  }
221  }
222 }
int getNbinsY(void) const
get # of bins in Y-axis
void Fill(long long x)
std::map< std::string, SubDetMEs > SubDetMEsMap
MonitorElement * DetFractionReportMap
MonitorElement * TrackSummaryReportGlobal
MonitorElement * SummaryReportMap
MonitorElement * SummaryReportGlobal
MonitorElement * SToNReportMap
int getNbinsX(void) const
get # of bins in X-axis
MonitorElement * TrackSummaryReportMap
std::map< std::string, TrackingMEs > TrackingMEsMap
void SiStripQualityChecker::fillFaultyModuleStatus ( DQMStore dqm_store)

Definition at line 510 of file SiStripQualityChecker.cc.

References badModuleList, DQMStore::bookInt(), DQMStore::cd(), DQMStore::dirExists(), MonitorElement::Fill(), DQMStore::get(), SiStripFolderOrganizer::getSubDetFolder(), SiStripUtility::goToDir(), DQMStore::pwd(), MonitorElement::Reset(), and DQMStore::setCurrentFolder().

Referenced by fillStatus().

510  {
511  if (badModuleList.size() == 0) return;
512  dqm_store->cd();
513  std::string mdir = "MechanicalView";
514  if (!SiStripUtility::goToDir(dqm_store, mdir)) return;
515  std::string mechanical_dir = dqm_store->pwd();
516 
517  SiStripFolderOrganizer folder_organizer;
518  for (std::map<uint32_t,uint16_t>::const_iterator it = badModuleList.begin() ; it != badModuleList.end(); it++) {
519  uint32_t detId = it->first;
520  std::string subdet_folder ;
521  folder_organizer.getSubDetFolder(detId,subdet_folder);
522  if (!dqm_store->dirExists(subdet_folder)) {
523  subdet_folder = mechanical_dir + subdet_folder.substr(subdet_folder.find("MechanicalView")+14);
524  if (!dqm_store->dirExists(subdet_folder)) continue;
525  }
526  std::string bad_module_folder = subdet_folder + "/" + "BadModuleList";
527  dqm_store->setCurrentFolder(bad_module_folder);
528 
529  std::ostringstream detid_str;
530  detid_str << detId;
531  std::string full_path = bad_module_folder + "/" + detid_str.str();
532  MonitorElement* me = dqm_store->get(full_path);
533  if (me) me->Reset();
534  else me = dqm_store->bookInt(detid_str.str());
535  me->Fill(it->second);
536  }
537  dqm_store->cd();
538 }
void getSubDetFolder(const uint32_t &detid, std::string &folder_name)
void cd(void)
go to top directory (ie. root)
Definition: DQMStore.cc:209
void Fill(long long x)
MonitorElement * get(const std::string &path) const
get ME from full pathname (e.g. &quot;my/long/dir/my_histo&quot;)
Definition: DQMStore.cc:1265
bool dirExists(const std::string &path) const
true if directory exists
Definition: DQMStore.cc:296
std::map< uint32_t, uint16_t > badModuleList
MonitorElement * bookInt(const char *name)
Book int.
Definition: DQMStore.cc:421
void Reset(void)
reset ME (ie. contents, errors, etc)
static bool goToDir(DQMStore *dqm_store, std::string name)
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:232
const std::string & pwd(void) const
Definition: DQMStore.cc:204
void SiStripQualityChecker::fillStatus ( DQMStore dqm_store,
const edm::ESHandle< SiStripDetCabling > &  cabling 
)

Definition at line 254 of file SiStripQualityChecker.cc.

References bookedStripStatus_, bookedTrackingStatus_, bookStatus(), fillDetectorStatus(), fillDummyStatus(), fillFaultyModuleStatus(), fillTrackingStatus(), edm::ParameterSet::getUntrackedParameter(), and pSet_.

Referenced by SiStripActionExecutor::fillStatus().

254  {
256 
257  fillDummyStatus();
258  fillDetectorStatus(dqm_store, cabling);
259  fillTrackingStatus(dqm_store);
260 
261  int faulty_moduleflag = pSet_.getUntrackedParameter<bool>("PrintFaultyModuleList", false);
262  if (faulty_moduleflag) fillFaultyModuleStatus(dqm_store);
263 }
T getUntrackedParameter(std::string const &, T const &) const
void bookStatus(DQMStore *dqm_store)
void fillDetectorStatus(DQMStore *dqm_store, const edm::ESHandle< SiStripDetCabling > &cabling)
void fillTrackingStatus(DQMStore *dqm_store)
void fillFaultyModuleStatus(DQMStore *dqm_store)
void SiStripQualityChecker::fillStatusAtLumi ( DQMStore dqm_store)
void SiStripQualityChecker::fillStatusHistogram ( MonitorElement me,
int  xbin,
int  ybin,
float  val 
)
private

Definition at line 501 of file SiStripQualityChecker.cc.

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

Referenced by fillSubDetStatus(), fillTrackingStatus(), and fillTrackingStatusAtLumi().

501  {
502  if (me && me->kind() == MonitorElement::DQM_KIND_TH2F) {
503  TH2F* th2d = me->getTH2F();
504  th2d->SetBinContent(xbin, ybin, val);
505  }
506  }
Kind kind(void) const
Get the type of the monitor element.
TH2F * getTH2F(void) const
void SiStripQualityChecker::fillSubDetStatus ( DQMStore dqm_store,
const edm::ESHandle< SiStripDetCabling > &  cabling,
SubDetMEs mes,
unsigned int  xbin,
float &  gflag 
)
private

Definition at line 340 of file SiStripQualityChecker.cc.

References DQMStore::cd(), SiStripQualityChecker::SubDetMEs::detectorTag, SiStripQualityChecker::SubDetMEs::DetFraction, DetFractionReportMap, dqm::qstatus::ERROR, MonitorElement::Fill(), fillStatusHistogram(), DQMStore::getContents(), SiStripUtility::getMEStatus(), getModuleStatus(), MonitorElement::getName(), MonitorElement::getQReports(), DQMStore::getSubdirs(), edm::ParameterSet::getUntrackedParameter(), min, mergeVDriftHistosByStation::name, pSet_, dqm::qstatus::STATUS_OK, SiStripQualityChecker::SubDetMEs::SToNFlag, SToNReportMap, SiStripQualityChecker::SubDetMEs::SummaryFlag, and SummaryReportMap.

Referenced by fillDetectorStatus().

342  {
343  int status_flag = pSet_.getUntrackedParameter<int>("GlobalStatusFilling", 1);
344 
345  if (status_flag < 1) return;
346 
347  std::vector<std::string> subDirVec = dqm_store->getSubdirs();
348 
349  unsigned int ybin = 0;
350  int tot_ndet = 0;
351  int tot_errdet = 0;
352  float tot_ston_stat = 0;
353 
354  for (std::vector<std::string>::const_iterator ic = subDirVec.begin();
355  ic != subDirVec.end(); ic++) {
356  std::string dname = (*ic);
357  if (dname.find("BadModuleList") != std::string::npos) continue;
358  std::vector<MonitorElement*> meVec;
359  ybin++;
360  dqm_store->cd((*ic));
361  meVec = dqm_store->getContents((*ic));
362  uint16_t ndet = 100;
363  int errdet = 0;
364 
365  int ston_stat = 1;
366  int lnum = atoi(dname.substr(dname.find_last_of("_")+1).c_str());
367  ndet = cabling->connectedNumber(mes.detectorTag, lnum);
368 
369  getModuleStatus(meVec, errdet);
370 
371  for (std::vector<MonitorElement*>::const_iterator it = meVec.begin();
372  it != meVec.end(); it++) {
373  MonitorElement * me = (*it);
374  if (!me) continue;
375  std::vector<QReport *> reports = me->getQReports();
376 
377  if (reports.size() == 0) continue;
378  std::string name = me->getName();
379 
380  if( name.find("Summary_ClusterStoNCorr__OnTrack") != std::string::npos){
381  int istat = SiStripUtility::getMEStatus((*it));
382  if (reports[0]->getQTresult() == -1) {
383  ston_stat =-1;
384  } else {
385  if (istat == dqm::qstatus::ERROR) ston_stat = 0;
386  else if (istat == dqm::qstatus::STATUS_OK) ston_stat = 1;
387  }
388  }
389  }
390  if (ndet > 0) {
391  float eff_fac = 1 - (errdet*1.0/ndet);
392  fillStatusHistogram(SToNReportMap, xbin, ybin, ston_stat);
393  fillStatusHistogram(DetFractionReportMap, xbin, ybin, eff_fac);
394  if (ston_stat < 0) fillStatusHistogram(SummaryReportMap, xbin, ybin, eff_fac);
395  else fillStatusHistogram(SummaryReportMap, xbin, ybin, ston_stat*eff_fac);
396 
397  tot_ndet += ndet;
398  tot_errdet += errdet;
399  tot_ston_stat += ston_stat;
400  }
401  dqm_store->cd((*ic));
402  }
403  if (tot_ndet > 0) {
404  float tot_eff_fac = 1 - (tot_errdet*1.0/tot_ndet);
405  if (mes.DetFraction) mes.DetFraction->Fill(tot_eff_fac);
406  float tot_ston_fac = tot_ston_stat/ybin;
407  if (mes.SToNFlag) mes.SToNFlag->Fill(tot_ston_fac);
408  gflag = std::min(tot_eff_fac,tot_ston_fac);
409  if (mes.SummaryFlag) mes.SummaryFlag->Fill(gflag);
410  }
411 }
T getUntrackedParameter(std::string const &, T const &) const
const std::string & getName(void) const
get name of ME
std::vector< std::string > getSubdirs(void) const
Definition: DQMStore.cc:1216
void cd(void)
go to top directory (ie. root)
Definition: DQMStore.cc:209
#define min(a, b)
Definition: mlp_lapack.h:161
void getModuleStatus(std::vector< MonitorElement * > &layer_mes, int &errdet)
std::vector< MonitorElement * > getContents(const std::string &path) const
Definition: DQMStore.cc:1294
MonitorElement * DetFractionReportMap
std::vector< QReport * > getQReports(void) const
get map of QReports
static int getMEStatus(MonitorElement *me)
MonitorElement * SummaryReportMap
MonitorElement * SToNReportMap
static const int STATUS_OK
static const int ERROR
void fillStatusHistogram(MonitorElement *, int xbin, int ybin, float val)
void SiStripQualityChecker::fillTrackingStatus ( DQMStore dqm_store)
private

Definition at line 297 of file SiStripQualityChecker.cc.

References DQMStore::cd(), dir, MonitorElement::Fill(), fillStatusHistogram(), DQMStore::getContents(), MonitorElement::getName(), MonitorElement::getQReports(), SiStripUtility::goToDir(), relval_steps::merge(), mergeVDriftHistosByStation::name, DQMStore::pwd(), ntuplemaker::status, TrackingMEsMap, TrackSummaryReportGlobal, and TrackSummaryReportMap.

Referenced by fillStatus().

297  {
298 
299  dqm_store->cd();
300  std::string dir = "Tracking";
301  if (!SiStripUtility::goToDir(dqm_store, dir)) return;
302  dir = "TrackParameters";
303  if (!SiStripUtility::goToDir(dqm_store, dir)) return;
304 
305  std::vector<MonitorElement*> meVec1 = dqm_store->getContents(dqm_store->pwd()+"/GeneralProperties");
306  std::vector<MonitorElement*> meVec2 = dqm_store->getContents(dqm_store->pwd()+"/HitProperties");
307  std::vector<MonitorElement*> meVec(meVec1.size() + meVec2.size());
308  std::merge(meVec1.begin(), meVec1.end(), meVec2.begin(), meVec2.end(), meVec.begin());
309 
310  float gstatus = 1.0;
311  for (std::vector<MonitorElement*>::const_iterator it = meVec.begin(); it != meVec.end(); it++) {
312  MonitorElement * me = (*it);
313  if (!me) continue;
314  std::vector<QReport *> qt_reports = me->getQReports();
315  if (qt_reports.size() == 0) continue;
316  std::string name = me->getName();
317 
318  float status = 1.0;
319 
320  int ibin = 0;
321  for (std::map<std::string, TrackingMEs>::const_iterator it = TrackingMEsMap.begin();
322  it != TrackingMEsMap.end(); it++) {
323  ibin++;
324  std::string hname = it->second.HistoName;
325  if (name.find(hname) != std::string::npos) {
326  status = qt_reports[0]->getQTresult();
327  it->second.TrackingFlag->Fill(status);
328  fillStatusHistogram(TrackSummaryReportMap, ibin, 1, status);
329  break;
330  }
331  }
332  gstatus = gstatus * status;
333  }
334  TrackSummaryReportGlobal->Fill(gstatus);
335  dqm_store->cd();
336 }
const std::string & getName(void) const
get name of ME
void cd(void)
go to top directory (ie. root)
Definition: DQMStore.cc:209
void Fill(long long x)
std::vector< MonitorElement * > getContents(const std::string &path) const
Definition: DQMStore.cc:1294
std::vector< QReport * > getQReports(void) const
get map of QReports
MonitorElement * TrackSummaryReportGlobal
MonitorElement * TrackSummaryReportMap
std::map< std::string, TrackingMEs > TrackingMEsMap
dbl *** dir
Definition: mlp_gen.cc:35
tuple status
Definition: ntuplemaker.py:245
static bool goToDir(DQMStore *dqm_store, std::string name)
void fillStatusHistogram(MonitorElement *, int xbin, int ybin, float val)
const std::string & pwd(void) const
Definition: DQMStore.cc:204
void SiStripQualityChecker::fillTrackingStatusAtLumi ( DQMStore dqm_store)
private

Definition at line 591 of file SiStripQualityChecker.cc.

References DQMStore::cd(), dir, MonitorElement::Fill(), fillStatusHistogram(), DQMStore::getContents(), MonitorElement::getMean(), MonitorElement::getName(), SiStripUtility::goToDir(), relval_steps::merge(), mergeVDriftHistosByStation::name, DQMStore::pwd(), ntuplemaker::status, TrackingMEsMap, TrackSummaryReportGlobal, and TrackSummaryReportMap.

Referenced by fillStatusAtLumi().

591  {
592  dqm_store->cd();
593  std::string dir = "Tracking";
594  if (!SiStripUtility::goToDir(dqm_store, dir)) return;
595  dir = "TrackParameters";
596  if (!SiStripUtility::goToDir(dqm_store, dir)) return;
597 
598  std::vector<MonitorElement*> meVec1 = dqm_store->getContents(dqm_store->pwd()+"/GeneralProperties");
599  std::vector<MonitorElement*> meVec2 = dqm_store->getContents(dqm_store->pwd()+"/HitProperties");
600  std::vector<MonitorElement*> meVec(meVec1.size() + meVec2.size());
601  std::merge(meVec1.begin(), meVec1.end(), meVec2.begin(), meVec2.end(), meVec.begin());
602  float gstatus = 1.0;
603  for (std::vector<MonitorElement*>::const_iterator it = meVec.begin(); it != meVec.end(); it++) {
604  MonitorElement * me = (*it);
605  if (!me) continue;
606  std::string name = me->getName();
607 
608  float status = -1.0;
609  int ibin = 0;
610  for (std::map<std::string, TrackingMEs>::const_iterator it = TrackingMEsMap.begin();
611  it != TrackingMEsMap.end(); it++) {
612  ibin++;
613  std::string hname = it->second.HistoName;
614  float lower_cut = it->second.LowerCut;
615  float upper_cut = it->second.UpperCut;
616  if (name.find(hname) != std::string::npos) {
617  if (me->getMean() <= lower_cut || me->getMean() > upper_cut) status = 0.0;
618  else status = 1.0;
619  it->second.TrackingFlag->Fill(status);
620  fillStatusHistogram(TrackSummaryReportMap, ibin, 1, status);
621  break;
622  }
623  }
624  if (status == -1.0) gstatus = -1.0;
625  else gstatus = gstatus * status;
626  }
627  TrackSummaryReportGlobal->Fill(gstatus);
628  dqm_store->cd();
629 }
const std::string & getName(void) const
get name of ME
void cd(void)
go to top directory (ie. root)
Definition: DQMStore.cc:209
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)
std::vector< MonitorElement * > getContents(const std::string &path) const
Definition: DQMStore.cc:1294
MonitorElement * TrackSummaryReportGlobal
MonitorElement * TrackSummaryReportMap
std::map< std::string, TrackingMEs > TrackingMEsMap
dbl *** dir
Definition: mlp_gen.cc:35
tuple status
Definition: ntuplemaker.py:245
static bool goToDir(DQMStore *dqm_store, std::string name)
void fillStatusHistogram(MonitorElement *, int xbin, int ybin, float val)
const std::string & pwd(void) const
Definition: DQMStore.cc:204
void SiStripQualityChecker::getModuleStatus ( std::vector< MonitorElement * > &  layer_mes,
int &  errdet 
)
private

Definition at line 447 of file SiStripQualityChecker.cc.

References badModuleList, MonitorElement::DQM_KIND_TPROFILE, MonitorElement::DQM_KIND_TPROFILE2D, TkDetMap::getDetFromBin(), MonitorElement::getName(), MonitorElement::getQReports(), MonitorElement::kind(), mergeVDriftHistosByStation::name, SiStripUtility::setBadModuleFlag(), and tkDetMap_.

Referenced by fillSubDetStatus().

447  {
448 
449  std::string lname;
450  std::map<uint32_t,uint16_t> bad_modules;
451  for (std::vector<MonitorElement*>::const_iterator it = layer_mes.begin();
452  it != layer_mes.end(); it++) {
453  MonitorElement * me = (*it);
454  if (!me) continue;
455  std::vector<QReport *> qreports = me->getQReports();
456  if (qreports.size() == 0) continue;
457  std::string name = me->getName();
458  std::vector<DQMChannel> bad_channels_me;
460  bad_channels_me = qreports[0]->getBadChannels();
461  lname = "";
462  } else if (me->kind() == MonitorElement::DQM_KIND_TPROFILE2D && name.find("TkHMap") != std::string::npos) {
463  bad_channels_me = qreports[0]->getBadChannels();
464  lname = name.substr(name.find("TkHMap_")+7);
465  lname = lname.substr(lname.find("_T")+1);
466 
467  }
468  for (std::vector<DQMChannel>::iterator it = bad_channels_me.begin(); it != bad_channels_me.end(); it++){
469  int xval = (*it).getBinX();
470  int yval = (*it).getBinY();
471  uint32_t detId = tkDetMap_->getDetFromBin(lname, xval, yval);
472  std::map<uint32_t,uint16_t>::iterator iPos = bad_modules.find(detId);
473  uint16_t flag;
474  if (iPos != bad_modules.end()){
475  flag = iPos->second;
477  iPos->second = flag;
478  } else {
479  flag = 0;
481  bad_modules.insert(std::pair<uint32_t,uint16_t>(detId,flag));
482  }
483  }
484  }
485  for(std::map<uint32_t,uint16_t>::const_iterator it = bad_modules.begin();
486  it != bad_modules.end(); it++) {
487  uint32_t detId = it->first;
488  uint16_t flag = it->second;
489  std::map<uint32_t,uint16_t>::iterator iPos = badModuleList.find(detId);
490  if (iPos != badModuleList.end()){
491  iPos->second = flag;
492  } else {
493  badModuleList.insert(std::pair<uint32_t,uint16_t>(detId,flag));
494  }
495  }
496  errdet = bad_modules.size();
497 }
static void setBadModuleFlag(std::string &hname, uint16_t &flg)
const std::string & getName(void) const
get name of ME
long int flag
Definition: mlp_lapack.h:47
uint32_t getDetFromBin(int layer, int ix, int iy)
Definition: TkDetMap.h:126
Kind kind(void) const
Get the type of the monitor element.
std::vector< QReport * > getQReports(void) const
get map of QReports
std::map< uint32_t, uint16_t > badModuleList
void SiStripQualityChecker::initialiseBadModuleList ( )
private

Definition at line 542 of file SiStripQualityChecker.cc.

References badModuleList.

Referenced by fillDetectorStatus().

542  {
543  for (std::map<uint32_t,uint16_t>::iterator it=badModuleList.begin(); it!=badModuleList.end(); it++) {
544  it->second = 0;
545  }
546 }
std::map< uint32_t, uint16_t > badModuleList
void SiStripQualityChecker::printStatusReport ( )

Definition at line 415 of file SiStripQualityChecker.cc.

References gather_cfg::cout, SiStripQualityChecker::SubDetMEs::DetFraction, SiStripUtility::getMEValue(), SiStripQualityChecker::SubDetMEs::SToNFlag, SubDetMEsMap, and SiStripQualityChecker::SubDetMEs::SummaryFlag.

415  {
416  std::ostringstream det_summary_str;
417  for (std::map<std::string, SubDetMEs>::const_iterator it = SubDetMEsMap.begin();
418  it != SubDetMEsMap.end(); it++) {
419  std::string det = it->first;
420  det_summary_str << std::setprecision(4);
421  det_summary_str << std::setiosflags(std::ios::fixed);
422 
423  det_summary_str << " Printing Status for " << det << " : " << std::endl;
424  SubDetMEs local_mes = it->second;
425 
426  std::string sval;
427  float fval1, fval2, fval3;
428  fval1 = fval2 = fval3 = -1.0;
429 
430 
431  SiStripUtility::getMEValue(local_mes.DetFraction, sval);
432  if (sval.size() > 0) fval1 = atof(sval.c_str());
433  SiStripUtility::getMEValue(local_mes.SToNFlag, sval);
434  if (sval.size() > 0) fval2 = atof(sval.c_str());
435  SiStripUtility::getMEValue(local_mes.SummaryFlag, sval);
436  if (sval.size() > 0) fval3 = atof(sval.c_str());
437 
438  det_summary_str << std::setw(7) << " % of good detectors " << fval1
439  << " SToN Flag " << fval2
440  << " Summary Flag " << fval3 << std::endl;
441  }
442  std::cout << det_summary_str.str() << std::endl;
443 }
static void getMEValue(MonitorElement *me, std::string &val)
std::map< std::string, SubDetMEs > SubDetMEsMap
tuple cout
Definition: gather_cfg.py:41
void SiStripQualityChecker::resetStatus ( )

Definition at line 226 of file SiStripQualityChecker.cc.

References bookedStripStatus_, bookedTrackingStatus_, SiStripQualityChecker::SubDetMEs::DetFraction, DetFractionReportMap, MonitorElement::Reset(), SiStripQualityChecker::SubDetMEs::SToNFlag, SToNReportMap, SubDetMEsMap, SiStripQualityChecker::SubDetMEs::SummaryFlag, SummaryReportGlobal, SummaryReportMap, TrackingMEsMap, TrackSummaryReportGlobal, and TrackSummaryReportMap.

Referenced by fillDummyStatus().

226  {
227  if (bookedStripStatus_) {
228  for (std::map<std::string, SubDetMEs>::const_iterator it = SubDetMEsMap.begin();
229  it != SubDetMEsMap.end(); it++) {
230  SubDetMEs local_mes = it->second;
231  local_mes.DetFraction->Reset();
232  local_mes.SToNFlag->Reset();
233  local_mes.SummaryFlag->Reset();
234  }
235 
237  SToNReportMap->Reset();
239 
241  }
242  if (bookedTrackingStatus_) {
245  for (std::map<std::string, TrackingMEs>::iterator it = TrackingMEsMap.begin();
246  it != TrackingMEsMap.end(); it++) {
247  it->second.TrackingFlag->Reset();
248  }
249  }
250 }
std::map< std::string, SubDetMEs > SubDetMEsMap
MonitorElement * DetFractionReportMap
MonitorElement * TrackSummaryReportGlobal
MonitorElement * SummaryReportMap
MonitorElement * SummaryReportGlobal
MonitorElement * SToNReportMap
MonitorElement * TrackSummaryReportMap
std::map< std::string, TrackingMEs > TrackingMEsMap
void Reset(void)
reset ME (ie. contents, errors, etc)

Member Data Documentation

std::map<uint32_t,uint16_t> SiStripQualityChecker::badModuleList
private
bool SiStripQualityChecker::bookedStripStatus_
private
bool SiStripQualityChecker::bookedTrackingStatus_
private
float SiStripQualityChecker::cutoffChi2overDoF_
private

Definition at line 89 of file SiStripQualityChecker.h.

float SiStripQualityChecker::cutoffRecHits_
private

Definition at line 90 of file SiStripQualityChecker.h.

float SiStripQualityChecker::cutoffTrackRate_
private

Definition at line 88 of file SiStripQualityChecker.h.

MonitorElement* SiStripQualityChecker::DetFractionReportMap
private

Definition at line 68 of file SiStripQualityChecker.h.

Referenced by bookStatus(), fillDummyStatus(), fillSubDetStatus(), and resetStatus().

int SiStripQualityChecker::globalStatusFilling_
private

Definition at line 84 of file SiStripQualityChecker.h.

edm::ParameterSet SiStripQualityChecker::pSet_
private

Definition at line 80 of file SiStripQualityChecker.h.

Referenced by fillStatus(), fillSubDetStatus(), and SiStripQualityChecker().

MonitorElement* SiStripQualityChecker::SToNReportMap
private

Definition at line 69 of file SiStripQualityChecker.h.

Referenced by bookStatus(), fillDummyStatus(), fillSubDetStatus(), and resetStatus().

std::map<std::string, std::string> SiStripQualityChecker::SubDetFolderMap
private

Definition at line 65 of file SiStripQualityChecker.h.

Referenced by bookStatus(), fillDetectorStatus(), and SiStripQualityChecker().

std::map<std::string, SubDetMEs> SiStripQualityChecker::SubDetMEsMap
private
MonitorElement* SiStripQualityChecker::SummaryReportGlobal
private
MonitorElement* SiStripQualityChecker::SummaryReportMap
private

Definition at line 70 of file SiStripQualityChecker.h.

Referenced by bookStatus(), fillDummyStatus(), fillSubDetStatus(), and resetStatus().

TkDetMap* SiStripQualityChecker::tkDetMap_
private

Definition at line 86 of file SiStripQualityChecker.h.

Referenced by getModuleStatus(), and SiStripQualityChecker().

std::map<std::string, TrackingMEs> SiStripQualityChecker::TrackingMEsMap
private
MonitorElement* SiStripQualityChecker::TrackSummaryReportGlobal
private
MonitorElement* SiStripQualityChecker::TrackSummaryReportMap
private