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 | Public Attributes | Private Member Functions | Private Attributes
HDQMInspector Class Reference

#include <HDQMInspector.h>

Classes

struct  DetIdItemList
 

Public Member Functions

void closeFile ()
 
void createTrend (const std::string ListItems, const std::string CanvasName="", const int logy=0, const std::string Conditions="", std::string const &Labels="", const unsigned int firstRun=1, const unsigned int lastRun=0xFFFFFFFE, int const UseYRange=0, double const &YMin=999999, double const &YMax=-999999)
 
void createTrendLastRuns (const std::string ListItems, const std::string CanvasName="", const int logy=0, const std::string Conditions="", std::string const &Labels="", const unsigned int nRuns=10, int const UseYRange=0, double const &YMin=999999, double const &YMax=-999999)
 
double findGraphMax (TGraphErrors *)
 
double findGraphMin (TGraphErrors *)
 
std::vector< std::string > getListItems ()
 
std::vector< unsigned int > getRuns ()
 
std::vector< float > getSummary ()
 
std::vector< unsigned int > getvDetId ()
 
 HDQMInspector ()
 
 HDQMInspector (const HDQMInspectorConfigBase *InConfig)
 
std::string readListFromFile (const std::string &listFileName)
 
void setBlackList (std::string const &ListItems)
 
void setDB (const std::string &DBName, const std::string &DBTag, const std::string &DBauth="")
 
void setDebug (int i)
 
void setDoStat (int i)
 
void setSeparator (std::string const in)
 
void setSkip0s (bool const in)
 
void setSkip99s (bool const in)
 
void setWhiteList (std::string const &ListItems)
 
virtual ~HDQMInspector ()
 

Public Attributes

TFile * fOutFile
 

Private Member Functions

void accessDB ()
 
bool ApplyConditions (std::string &, std::vector< DetIdItemList > &)
 
void InitializeIOVList ()
 
bool isListed (unsigned int run, std::vector< unsigned int > &vList)
 
void plot (size_t &nPads, std::string CanvasName, int logy=0, std::string const &Labels="", int const UseYRange=0, double const XMin=999999, double const YMin=-999999)
 
void setItems (std::string)
 
bool setRange (unsigned int &firstRun, unsigned int &lastRun)
 
void style ()
 
void unpackConditions (std::string &, std::vector< DetIdItemList > &)
 
size_t unpackItems (std::string &)
 

Private Attributes

std::vector< unsigned int > blackList
 
std::string DBauth_
 
std::string DBName_
 
std::string DBTag_
 
const HDQMInspectorConfigBasefHDQMInspectorConfig
 
std::string fSep
 
bool fSkip0s
 
bool fSkip99s
 
int iDebug
 
int iDoStat
 
std::vector< unsigned int > iovList
 
CondCachedIter< HDQMSummary > * Iterator
 
std::vector< unsigned int > vdetId_
 
std::vector< DetIdItemListvDetIdItemList_
 
std::vector< std::string > vlistItems_
 
std::vector< unsigned int > vRun_
 
std::vector< float > vSummary_
 
std::vector< unsigned int > whiteList
 

Detailed Description

Definition at line 28 of file HDQMInspector.h.

Constructor & Destructor Documentation

HDQMInspector::HDQMInspector ( )
inline

Definition at line 31 of file HDQMInspector.h.

31  :
32  DBName_(""),
33  DBTag_(""),
34  DBauth_(""),
35  Iterator(0),
36  iDebug(0),
37  iDoStat(0),
38  fSkip99s(false),
39  fSkip0s(false),
41  fSep("@")
42  {
43  };
std::string DBauth_
std::string fSep
const HDQMInspectorConfigBase * fHDQMInspectorConfig
std::string DBTag_
std::string DBName_
CondCachedIter< HDQMSummary > * Iterator
HDQMInspector::HDQMInspector ( const HDQMInspectorConfigBase InConfig)
inline

Definition at line 45 of file HDQMInspector.h.

45  :
46  DBName_(""),
47  DBTag_(""),
48  DBauth_(""),
49  Iterator(0),
50  iDebug(0),
51  iDoStat(0),
52  fSkip99s(false),
53  fSkip0s(false),
54  fHDQMInspectorConfig(InConfig),
55  fSep("@")
56  {
57  };
std::string DBauth_
std::string fSep
const HDQMInspectorConfigBase * fHDQMInspectorConfig
std::string DBTag_
std::string DBName_
CondCachedIter< HDQMSummary > * Iterator
virtual HDQMInspector::~HDQMInspector ( )
inlinevirtual

Definition at line 59 of file HDQMInspector.h.

References Iterator.

59  {
60  delete Iterator;
61  };
CondCachedIter< HDQMSummary > * Iterator

Member Function Documentation

void HDQMInspector::accessDB ( )
private

Definition at line 83 of file HDQMInspector.cc.

References gather_cfg::cout, DBauth_, DBName_, DBTag_, InitializeIOVList(), and Iterator.

Referenced by setDB().

84 {
85  //double start, end;
86  // start = clock();
87 
88  if(Iterator!=0)
89  delete Iterator;
90 
92 
93  std::cout << "creating connection" << std::endl;
94  Iterator->create(DBName_,DBTag_,DBauth_);
95  std::cout << "connection created" << std::endl;
96 
97 
99  // end = clock();
100  // if(iDebug)
101  //std::cout <<"Time Creation link with Database = " << ((double) (end - start)) << " (a.u.)" <<std::endl;
102 }
std::string DBauth_
std::string DBTag_
std::string DBName_
tuple cout
Definition: gather_cfg.py:121
CondCachedIter< HDQMSummary > * Iterator
void InitializeIOVList()
bool HDQMInspector::ApplyConditions ( std::string &  Conditions,
std::vector< DetIdItemList > &  vdetIdItemList 
)
private

Definition at line 737 of file HDQMInspector.cc.

References gather_cfg::cout, cond::rpcobgas::detid, fSep, iDebug, NULL, AlCaHLTBitMon_QueryRunRegistry::string, and makeHLTPrescaleTable::values.

Referenced by createTrend().

738 {
739  double resultdbl=1;
740  char cConditions[1024];
741  char singleCondition[1024];
742  char condCVal[1024];
743 
744  sprintf(cConditions,"%s",Conditions.c_str());
745  if (iDebug) {
746  std::cout << "Conditions " << cConditions << std::endl;
747  }
748  for(size_t ic=0;ic<vdetIdItemList.size();++ic)
749  for(size_t jc=0;jc<vdetIdItemList[ic].items.size();++jc){
750  //scientific precision doesn't work in HDQMExpressionEvaluator...
751  //sprintf(condCVal,"%g",vdetIdItemList[ic].values[jc]);
752  sprintf(condCVal,"%f",vdetIdItemList[ic].values[jc]);
753  sprintf(singleCondition,"%d%s%s",vdetIdItemList[ic].detid,fSep.c_str(),vdetIdItemList[ic].items[jc].c_str());
754  //printf("dhidas %d %s %s\n",vdetIdItemList[ic].detid,fSep.c_str(),vdetIdItemList[ic].items[jc].c_str());
755  //printf("dhidas %s %s\n", cConditions, singleCondition);
756  char* fpos = strstr(cConditions,singleCondition);
757  //printf("dhidas %s %s %i\n", fpos, condCVal, strlen(condCVal));
758  strncpy(fpos,condCVal,strlen(condCVal));
759  memset(fpos+strlen(condCVal),' ',strlen(singleCondition)-strlen(condCVal));
760  //std::cout << "fpos " << fpos << " len condCVal " << strlen(condCVal) << " strlen(singleCondition) " << strlen(singleCondition) << " len cConditions " << strlen(cConditions)<<std::endl;
761  //std::cout << "Conditions Replace: Condition " << singleCondition << " string changed in " << cConditions << std::endl;
762  }
763 
764  std::string stringToEvaluate;
765  char * pch;
766  pch = strtok (cConditions," ");
767  while (pch != NULL){
768  stringToEvaluate.append(pch);
769  pch = strtok (NULL, " ");
770  }
771  //for(size_t i=0;i<strlen(cConditions);++i)
772  // if(cConditions[i] != " ")
773  // stringToEvaluate.push_back(cConditions[i]);
774 
775  if(iDebug) {
776  std::cout << "Conditions After SubStitution " << stringToEvaluate << std::endl;
777  }
778  TFormula Formula("condition", stringToEvaluate.c_str());
779  resultdbl = Formula.Eval(0);
780  if(iDebug) {
781  std::cout << "Result " << resultdbl << std::endl;
782  }
783  if(!resultdbl) {
784  return false;
785  }
786  return true;
787 }
#define NULL
Definition: scimark2.h:8
std::string fSep
tuple cout
Definition: gather_cfg.py:121
void HDQMInspector::closeFile ( )
inline

Definition at line 86 of file HDQMInspector.h.

References fOutFile.

Referenced by Vispa.Main.Application.Application::tabCloseRequest().

87  {
88  if( fOutFile ) {
89  fOutFile->Close();
90  }
91  }
TFile * fOutFile
void HDQMInspector::createTrend ( const std::string  ListItems,
const std::string  CanvasName = "",
const int  logy = 0,
const std::string  Conditions = "",
std::string const &  Labels = "",
const unsigned int  firstRun = 1,
const unsigned int  lastRun = 0xFFFFFFFE,
int const  UseYRange = 0,
double const &  YMin = 999999,
double const &  YMax = -999999 
)

Definition at line 321 of file HDQMInspector.cc.

References ApplyConditions(), blackList, gather_cfg::cout, cond::rpcobgas::detid, HDQMSummary::getRunNr(), HDQMSummary::getSummaryObj(), i, iDebug, isListed(), HDQMInspector::DetIdItemList::items, plot(), RecoTauValidation_cfi::reference, setRange(), unpackConditions(), unpackItems(), HDQMInspector::DetIdItemList::values, vDetIdItemList_, vRun_, vSummary_, and whiteList.

Referenced by createTrendLastRuns().

322 {
323  std::cout << "\n****************\nCreateTrend\n****************\n" << std::endl;
324  std::cout << "ListItems : " << ListItems << std::endl;
325  std::cout << "Conditions : " << Conditions << std::endl;
326 
327  vRun_.clear();
328  vSummary_.clear();
329  vDetIdItemList_.clear();
330 
331  std::vector<DetIdItemList> vDetIdItemListCut;
332 
333  size_t nPads=unpackItems(ListItems);
334 
335  unpackConditions(Conditions,vDetIdItemListCut);
336 
337  // double start = clock();
338 
339  std::cout << "firstRun " << firstRun << " lastRun " << lastRun << std::endl;
340  if(!setRange(firstRun,lastRun)){
341  Iterator->rewind();
342  return;
343  }
344  const HDQMSummary* reference;
345  while((reference = Iterator->next())) {
346 
347 
348  // Check the run and black and white lists
349  if(Iterator->getStartTime()<firstRun || Iterator->getStartTime()>lastRun || isListed(reference->getRunNr(), blackList)) {
350  continue;
351  }
352  if (whiteList.size() > 0 && !isListed(reference->getRunNr(), whiteList)) {
353  continue;
354  }
355 
356  if(vDetIdItemListCut.size()){
357  for(size_t ij=0;ij!=vDetIdItemListCut.size();++ij){
358  vDetIdItemListCut[ij].values=reference->getSummaryObj(vDetIdItemListCut[ij].detid, vDetIdItemListCut[ij].items);
359  }
360 
361  if(!ApplyConditions(Conditions,vDetIdItemListCut))
362  continue;
363  }
364 
365  vRun_.push_back(reference->getRunNr());
366 
367  for(size_t ij=0;ij!=vDetIdItemList_.size();++ij){
368  vDetIdItemList_[ij].values=reference->getSummaryObj(vDetIdItemList_[ij].detid, vDetIdItemList_[ij].items);
369 
370  vSummary_.insert(vSummary_.end(),vDetIdItemList_[ij].values.begin(),vDetIdItemList_[ij].values.end());
371  if(iDebug){
372  std::cout << ListItems << " run " << vRun_.back() << " values \n" ;
373  DetIdItemList detiditemlist=vDetIdItemList_[ij];
374  for(size_t i=0;i<detiditemlist.items.size();++i) {
375  std::cout << "\t" << detiditemlist.items[i] << " " << detiditemlist.values[i] <<" " << i << " \n";
376  }
377  std::cout << "\n" << std::endl;
378  }
379  }
380  }
381 
382  if(vRun_.size()) {
383  plot(nPads, CanvasName, logy, Labels, UseYRange, YMin, YMax);
384  }
385 
386 
387  std::cout << "\n****** Ignore this error *****\n" << std::endl;
388  Iterator->rewind();
389  std::cout << "\n******************************\n" << std::endl;
390 }
int i
Definition: DBlmapReader.cc:9
string firstRun
Definition: dataset.py:857
std::vector< unsigned int > whiteList
bool isListed(unsigned int run, std::vector< unsigned int > &vList)
std::vector< float > getSummaryObj(uint32_t &detID, const std::vector< std::string > &list) const
Definition: HDQMSummary.cc:119
void unpackConditions(std::string &, std::vector< DetIdItemList > &)
int getRunNr() const
Definition: HDQMSummary.h:117
std::vector< unsigned int > blackList
bool ApplyConditions(std::string &, std::vector< DetIdItemList > &)
bool setRange(unsigned int &firstRun, unsigned int &lastRun)
std::vector< float > vSummary_
size_t unpackItems(std::string &)
std::vector< DetIdItemList > vDetIdItemList_
tuple cout
Definition: gather_cfg.py:121
void plot(size_t &nPads, std::string CanvasName, int logy=0, std::string const &Labels="", int const UseYRange=0, double const XMin=999999, double const YMin=-999999)
std::vector< unsigned int > vRun_
void HDQMInspector::createTrendLastRuns ( const std::string  ListItems,
const std::string  CanvasName = "",
const int  logy = 0,
const std::string  Conditions = "",
std::string const &  Labels = "",
const unsigned int  nRuns = 10,
int const  UseYRange = 0,
double const &  YMin = 999999,
double const &  YMax = -999999 
)

Definition at line 298 of file HDQMInspector.cc.

References createTrend(), plotBeamSpotDB::first, iovList, and prof2calltree::last.

300 {
301  unsigned int first,last;
302  unsigned int iovListSize = iovList.size();
303 
304  if (iovListSize>0)
305  {
306  last = iovList.back();
307 
308  if (iovListSize>=nRuns) {
309  first = iovList.at(iovListSize-nRuns);
310  } else {
311  first = *iovList.begin();
312  }
313  }
314  else return;
315 
316  createTrend(ListItems,CanvasName,logy,Conditions,Labels,first,last, UseYRange, YMin, YMax);
317 
318  return;
319 }
std::vector< unsigned int > iovList
void createTrend(const std::string ListItems, const std::string CanvasName="", const int logy=0, const std::string Conditions="", std::string const &Labels="", const unsigned int firstRun=1, const unsigned int lastRun=0xFFFFFFFE, int const UseYRange=0, double const &YMin=999999, double const &YMax=-999999)
double HDQMInspector::findGraphMax ( TGraphErrors *  g)

Definition at line 833 of file HDQMInspector.cc.

References assert(), gen::n, and y.

Referenced by plot().

834 {
835  // GetMaximum() doesn't work ....
836  int n = g->GetN();
837  double* y = g->GetY();
838  int locmax = TMath::LocMax(n,y);
839  assert(y != 0);
840  return y[locmax];
841 }
assert(m_qm.get())
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e g
Definition: Activities.doc:4
double HDQMInspector::findGraphMin ( TGraphErrors *  g)

Definition at line 844 of file HDQMInspector.cc.

References assert(), gen::n, and y.

Referenced by plot().

845 {
846  // GetMinimum() doesn't work ....
847  int n = g->GetN();
848  double* y = g->GetY();
849  int locmin = TMath::LocMin(n,y);
850  assert(y != 0);
851  return y[locmin];
852 }
assert(m_qm.get())
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e g
Definition: Activities.doc:4
std::vector<std::string> HDQMInspector::getListItems ( )
inline

Definition at line 103 of file HDQMInspector.h.

References vlistItems_.

103 { return vlistItems_;}
std::vector< std::string > vlistItems_
std::vector<unsigned int> HDQMInspector::getRuns ( )
inline

Definition at line 100 of file HDQMInspector.h.

References vRun_.

100 { return vRun_;}
std::vector< unsigned int > vRun_
std::vector<float> HDQMInspector::getSummary ( )
inline

Definition at line 101 of file HDQMInspector.h.

References vSummary_.

101 { return vSummary_;}
std::vector< float > vSummary_
std::vector<unsigned int> HDQMInspector::getvDetId ( )
inline

Definition at line 104 of file HDQMInspector.h.

References vdetId_.

104 { return vdetId_;}
std::vector< unsigned int > vdetId_
void HDQMInspector::InitializeIOVList ( )
private

Definition at line 249 of file HDQMInspector.cc.

References gather_cfg::cout, iDebug, iovList, and RecoTauValidation_cfi::reference.

Referenced by accessDB().

250 {
251  const HDQMSummary* reference;
252  while((reference = Iterator->next())) {
253  iovList.push_back(Iterator->getStartTime());
254  if (iDebug) {
255  std::cout << "iovList " << iovList.back() << std::endl;
256  }
257  }
258  Iterator->rewind();
259 }
std::vector< unsigned int > iovList
tuple cout
Definition: gather_cfg.py:121
bool HDQMInspector::isListed ( unsigned int  run,
std::vector< unsigned int > &  vList 
)
private

Definition at line 231 of file HDQMInspector.cc.

References gather_cfg::cout, iDebug, and DTTTrigCorrFirst::run.

Referenced by createTrend().

232 {
233  // This routine expectes a sorted list and returns true if the run is in the list,
234  // false otherwise
235 
236  // Binary search is much faster, but you MUST give it a sorted list.
237  if (std::binary_search(vList.begin(), vList.end(), run)) {
238  if(iDebug) {
239  std::cout << "\n Run "<< run << " is listed !!\n" << std::endl;
240  }
241  return true;
242  }
243 
244  return false;
245 
246 }
tuple cout
Definition: gather_cfg.py:121
void HDQMInspector::plot ( size_t &  nPads,
std::string  CanvasName,
int  logy = 0,
std::string const &  Labels = "",
int const  UseYRange = 0,
double const  XMin = 999999,
double const  YMin = -999999 
)
private

Definition at line 392 of file HDQMInspector.cc.

References funct::C, HDQMInspectorConfigBase::computeIntegral(), gather_cfg::cout, fHDQMInspectorConfig, spr::find(), findGraphMax(), findGraphMin(), fSep, fSkip0s, fSkip99s, i, iDebug, cmsHarvester::index, j, bookConverter::max, min(), mergeVDriftHistosByStation::name, mathSSE::sqrt(), contentValuesCheck::ss, AlCaHLTBitMon_QueryRunRegistry::string, style(), indexGen::title, HDQMInspectorConfigBase::translateDetId(), vdetId_, vDetIdItemList_, vlistItems_, vRun_, vSummary_, and X.

Referenced by cuy.FindIssue::__init__(), and createTrend().

393 {
394  std::cout << "\n********\nplot\n*****\n"<< std::endl;
395 
396  style();
397 
398  double *X, *Y, *EX, *EY, *YCumul;
399  X=new double[vRun_.size()];
400  Y=new double[vRun_.size()];
401  EX=new double[vRun_.size()];
402  EY=new double[vRun_.size()];
403  YCumul=new double[vRun_.size()];
404 
405  size_t index;
406  TCanvas *C;
407  TGraphErrors *graph;
408 
409  if(CanvasName==""){
410  char name[128];
411  sprintf(name,"%d",(int) clock());
412  CanvasName=std::string(name);
413  }
414 
415  std::string rootCName = CanvasName;
416  rootCName.replace(rootCName.find("."),rootCName.size()-rootCName.find("."),"");
417 
418  C=new TCanvas(rootCName.c_str(),"");
419  int ndiv=(int) sqrt(nPads);
420  C->Divide(ndiv,nPads/ndiv+ (nPads%ndiv?1:0));
421 
422  int padCount=0;
423 
424  vlistItems_.clear();
425  vdetId_.clear();
426 
427  for(size_t ic=0;ic<vDetIdItemList_.size();++ic){
428  vlistItems_.insert(vlistItems_.end(),vDetIdItemList_[ic].items.begin(),vDetIdItemList_[ic].items.end());
429  vdetId_.insert(vdetId_.end(),vDetIdItemList_[ic].items.size(),vDetIdItemList_[ic].detid);
430  }
431 
432  // Vector of graphs in this request and DetNames which correspond to them
433  std::vector<TGraphErrors*> VectorOfGraphs;
434  std::vector<std::string> VectorOfDetNames;
435 
436  for(size_t i=0;i<vlistItems_.size();++i){
437  std::cout << "TkRegion " << vdetId_[i] << " " << vlistItems_[i] << std::endl;
438 
439  if(vlistItems_.at(i).find("Summary")!= std::string::npos) vlistItems_.at(i).replace(vlistItems_.at(i).find("Summary_"),8,"");
440  if(vlistItems_.at(i).find(fSep)!= std::string::npos) vlistItems_.at(i).replace(vlistItems_.at(i).find(fSep),fSep.size(),"_");
441 
442 
443  std::stringstream ss;
444  if (fHDQMInspectorConfig != 0x0) {
446  VectorOfDetNames.push_back( fHDQMInspectorConfig->translateDetId( vdetId_[i] ));
447  } else {
448  ss << "Id " << vdetId_[i] << " " << vlistItems_[i];
449  VectorOfDetNames.push_back( "???" );
450  }
451 
452 
453  bool const itemForIntegration = fHDQMInspectorConfig ? fHDQMInspectorConfig->computeIntegral(vlistItems_[i]) : false;
454 
455  int addShift=0;
456  for(size_t j=0;j<vRun_.size();++j){
457  index=j*vlistItems_.size()+i;
458  X[j]=vRun_[j];
459  EX[j]=0;
460  Y[j]=vSummary_[index];
461  //if (Y[j]==-10 || Y[j]==-9999 || Y[j] ==-99) {EY[j] = 0; Y[j] = 0;}
462 
463  // -9999 : existing HDQMSummary object in DB but part of the information not uploaded
464  // -99 : HDQMSummary object not existing for this detId, informations are missing for all quantities
465  // -10 bad fit ?
466 
467  //std::cout << "dhidas " << vlistItems_[i] << " " << vRun_[j] << " " << vSummary_[index] << std::endl;
468 
469  if(vlistItems_[i].find("mean")!=std::string::npos){
470  //if the quantity requested is mean, the error is evaluated as the error on the mean=rms/sqrt(entries)
471  EY[j]=vSummary_[index+2]>0?vSummary_[index+1]/sqrt(vSummary_[index+2]):0;
472  addShift=2;
473  }else if (vlistItems_[i].find("entries")!=std::string::npos) {
474  addShift=0;
475  }else if (vlistItems_[i].find("landauPeak")!=std::string::npos){
476  EY[j]=vSummary_[index+1];
477  addShift=1;
478  }
479  else if (vlistItems_[i].find("gaussMean")!=std::string::npos){
480  EY[j]=vSummary_[index+1];
481  addShift=1;
482  }
483  else if (vlistItems_[i].find("Chi2NDF")!=std::string::npos || vlistItems_[i].find("rms")!=std::string::npos){
484  EY[j]= 0.;
485  }
486  else {
487  //EY[j]=vSummary_[index+1];
488  EY[j]=0;// dhidas hack fix for now. needs to be fixed
489  addShift=1;
490  }
491 
492  // integrate
493  if (j == 0 ) YCumul[j] = Y[j];
494  else YCumul[j] = Y[j] + YCumul[j-1];
495 
496  // dhidas HACK for now
497  EY[j] = 0;
498 
499  if(iDebug) {
500  std::cout << index-j*vlistItems_.size() << " " << j << " " << X[j] << " " << Y[j] << " " << EY[j] << std::endl;
501  }
502  }
503 
504  C->cd(++padCount);
505  gPad->SetLogy(logy);
506 
507  // Loop over all values and correct them for user defined range
508  if (UseYRange != 0) {
509  for (size_t iRun = 0; iRun != vRun_.size(); ++iRun) {
510  if (UseYRange % 2 == 1 && Y[iRun] < YMin) {
511  Y[iRun] = YMin;
512  EY[iRun] = 0;
513  }
514  if (UseYRange >= 2 && Y[iRun] > YMax) {
515  Y[iRun] = YMax;
516  EY[iRun] = 0;
517  }
518  }
519  }
520 
521  graph = new TGraphErrors((int) vRun_.size(),X,Y,EX,EY);
522  if( fSkip99s || fSkip0s ) {
523  int iptTGraph = 0;
524  for (size_t ipt = 0; ipt != vRun_.size(); ++ipt) {
525  // skip 99s or 0s when requested
526  // std::cout << "point = " << Y[ipt] << std::endl;
527  // if( Y[ipt] == 0 ) {
528  // std::cout << "fSkip0s = " << fSkip0s << std::endl;
529  // }
530  // if( (Y[ipt] == -10 || Y[ipt] == -9999 || Y[ipt] == -999 || Y[ipt] == -99) ) {
531  // std::cout << "fSkip99s = " << fSkip99s << std::endl;
532  // }
533  if( ((Y[ipt] == -10 || Y[ipt] == -9999 || Y[ipt] == -999 || Y[ipt] == -99) && fSkip99s) || (Y[ipt] == 0 && fSkip0s) ) {
534  // std::cout << "removing point Y["<<ipt<<"] = " << Y[ipt] << ", when graph->GetN() = " << graph->GetN() << " and iptTGraph = " << iptTGraph << std::endl;
535  // Int_t point = graph->RemovePoint(iptTGraph);
536  // std::cout << "point removed = " << point << std::endl;
537  graph->RemovePoint(iptTGraph);
538  }
539  else {
540  // The TGraph is shrinked everytime a point is removed. We use another counter that
541  // is increased only when not removing elements from the TGraph.
542  ++iptTGraph;
543  }
544  }
545  }
546 
547  graph->SetTitle(ss.str().c_str());
548  if (UseYRange % 2 == 1) {
549  graph->SetMinimum(YMin);
550  }
551  if (UseYRange >= 2) {
552  graph->SetMaximum(YMax);
553  }
554 
555  graph->Draw("Ap");
556  graph->SetName(ss.str().c_str());
557  graph->GetXaxis()->SetTitle("Run number");
558  graph->Write();
559 
560  // put the graph in the vector eh.
561  VectorOfGraphs.push_back(graph);
562 
563  // dhidas
564  // Want to get some values into file... testing
565  //for (int iDean = 0; iDean != graph.GetN(); ++iDean) {
566  // static std::ofstream OutFile("DeanOut.txt");
567  // fprintf("%9i %9i %12.3f\n", iDean, graph.GetX()[iDean], graph.GetY()[iDean]);
568  //}
569 
570  if (itemForIntegration)
571  {
572  std::stringstream ss2; std::stringstream ss3; std::stringstream ss4;
573  std::string title = vlistItems_.at(i);
574 
575  ss2 << title << "_Integral";
576  ss3 << title << "_Integrated.gif";
577  ss4 << title << "_Integrated.root";
578 
579  TCanvas* C2 = new TCanvas(ss2.str().c_str(),"");
580  TGraphErrors* graph2 = new TGraphErrors((int) vRun_.size(),X,YCumul,EX,EX);
581  graph2->SetTitle(ss2.str().c_str());
582  graph2->SetMarkerColor(1);
583  graph2->Draw("Ap");
584  graph2->SetName(ss2.str().c_str());
585  graph2->GetXaxis()->SetTitle("Run number");
586  graph2->Write();
587  C2->Write();
588  C2->SaveAs(ss3.str().c_str());
589  C2->SaveAs(ss4.str().c_str());
590  // dhidas commented out below because it doesn't seem useful. uncomment if you like, it was just annoying me.
591  //C2->SaveAs(ss3.str().replace(ss3.str().find("."),ss3.str().size()-ss3.str().find("."),".C").c_str());
592  }
593  i+=addShift;
594  }
595  C->Write();
596  C->SaveAs(CanvasName.c_str());
597  // dhidas commented out below because it doesn't seem useful. uncomment if you like, it was just annoying me.
598  //C->SaveAs(CanvasName.replace(CanvasName.find("."),CanvasName.size()-CanvasName.find("."),".C").c_str());//savewith .C
599  // dhidas commented out below because it doesn't seem useful. uncomment if you like, it was just annoying me.
600  //C->SaveAs(CanvasName.replace(CanvasName.find("."),CanvasName.size()-CanvasName.find("."),".C").c_str());//savewith .C
601 
602 
603  // Okay, we wrote the first canvas, not let's try to overlay the graphs on another one..
604  if (VectorOfGraphs.size() > 1) {
605 
606  // Create the legend for this overlay graph
607  TLegend OverlayLegend(0.80,0.35,0.99,0.65);
608 
609  // Use for storing the global min/max.
610  float max = -9999;
611  float min = 9999;
612 
613  // Canvas we'll paint the overlays on
614  TCanvas DeanCan("DeanCan", "DeanCan");
615  TVirtualPad* VPad = DeanCan.cd();
616  VPad->SetRightMargin(0.21);
617  VPad->SetTopMargin(0.13);
618 
619  // Replace default legend names with labels if they exist
620  TString const LNames = Labels;
621  TObjArray* MyArrayPtr = LNames.Tokenize(",");
622  if (MyArrayPtr) {
623  MyArrayPtr->SetOwner(kTRUE);
624  for( int i = 0; i <= MyArrayPtr->GetLast(); ++i ) {
625  if( i < int(VectorOfDetNames.size()) ) {
626  VectorOfDetNames[i] = ((TObjString*) MyArrayPtr->At(i) )->GetString().Data();
627  }
628  }
629  MyArrayPtr->Delete();
630  }
631 
632 
633  // Let's loop over all graphs in this request
634  for (size_t i = 0; i != VectorOfGraphs.size(); ++i) {
635 
636  // Strip off the det name in the i-th hist title
637  TString MyTitle = VectorOfGraphs[i]->GetTitle();
638  std::cout << "dhidas " << MyTitle << " : " << VectorOfDetNames[i] << std::endl;
639  MyTitle.ReplaceAll(VectorOfDetNames[i]+"_", "");
640  MyTitle.ReplaceAll("_"+VectorOfDetNames[i], "");
641  MyTitle.ReplaceAll(VectorOfDetNames[i], "");
642  std::cout << "dhidas " << MyTitle << std::endl;
643  VectorOfGraphs[i]->SetTitle( MyTitle );
644 
645  // Add this to the legend, sure, good
646  OverlayLegend.AddEntry(VectorOfGraphs[i], VectorOfDetNames[i].c_str(), "p");
647 
648  // You have to get the min and max by hand because root is completely retarded
649  if (min > findGraphMin(VectorOfGraphs[i]) ) {
650  min = findGraphMin(VectorOfGraphs[i]);
651  }
652  if (max < findGraphMax(VectorOfGraphs[i])) {
653  max = findGraphMax(VectorOfGraphs[i]);
654  }
655 
656  // let's use these colors and shapes for now
657  VectorOfGraphs[i]->SetMarkerStyle(20+i);
658  VectorOfGraphs[i]->SetMarkerColor(2+i);
659  }
660  // May as well set the min and max for first graph we'll draw
661  VectorOfGraphs[0]->SetMinimum((min)-((max)-(min))/5.);
662  VectorOfGraphs[0]->SetMaximum((max)+((max)-(min))/5.);
663  if (UseYRange % 2 == 1) {
664  VectorOfGraphs[0]->SetMinimum(YMin);
665  }
666  if (UseYRange >= 2) {
667  VectorOfGraphs[0]->SetMaximum(YMax);
668  }
669 
670  // Draw the first one with axis (A) and the rest just points (p), draw the legend, and save that canvas
671 
672  VectorOfGraphs[0]->Draw("Ap");
673  for (size_t i = 1; i != VectorOfGraphs.size(); ++i) {
674  VectorOfGraphs[i]->Draw("p");
675  }
676  OverlayLegend.Draw("same");
677  //OverlayLegend.SetTextSize(1.5);
678  DeanCan.SaveAs(CanvasName.replace(CanvasName.find("."),CanvasName.size()-CanvasName.find("."),"_Overlay.gif").c_str());
679  }
680 
681  // While I'm here I may as well try deleting the graphs since people don't like to clean up after themselves
682  for (size_t i = 0; i != VectorOfGraphs.size(); ++i) {
683  delete VectorOfGraphs[i];
684  }
685 
686  // Why do people never put a friggin return statement?
687  return;
688 
689 }
double findGraphMin(TGraphErrors *)
int i
Definition: DBlmapReader.cc:9
double findGraphMax(TGraphErrors *)
std::vector< std::string > vlistItems_
#define X(str)
Definition: MuonsGrabber.cc:48
void find(edm::Handle< EcalRecHitCollection > &hits, DetId thisDet, std::vector< EcalRecHitCollection::const_iterator > &hit, bool debug=false)
Definition: FindCaloHit.cc:7
std::string fSep
T sqrt(T t)
Definition: SSEVec.h:48
int j
Definition: DBlmapReader.cc:9
T min(T a, T b)
Definition: MathUtil.h:58
const HDQMInspectorConfigBase * fHDQMInspectorConfig
bool computeIntegral(const std::string &in) const
Definition: adjgraph.h:12
virtual std::string translateDetId(const uint32_t) const =0
pure virtual method that convert a DetId to a string
std::vector< float > vSummary_
std::vector< unsigned int > vdetId_
std::vector< DetIdItemList > vDetIdItemList_
tuple cout
Definition: gather_cfg.py:121
std::vector< unsigned int > vRun_
std::string HDQMInspector::readListFromFile ( const std::string &  listFileName)

Definition at line 205 of file HDQMInspector.cc.

References gather_cfg::cout, geometryCSVtoXML::line, and AlCaHLTBitMon_QueryRunRegistry::string.

206 {
207  std::ifstream listFile;
208  listFile.open(listFileName.c_str());
209  std::string listString;
210  if( !listFile ) {
211  std::cout << "Warning: list file" << listFileName << " not found" << std::endl;
212  return listString;
213  }
214  while( !listFile.eof() ) {
216  listFile >> line;
217  if( line != "" ) {
218  listString += line;
219  listString += ",";
220  }
221  }
222  // Remove the last ","
223  std::string::size_type pos = listString.find_last_of(",");
224  if( pos != std::string::npos ) {
225  listString.erase(pos);
226  }
227  std::cout << "whiteList = " << listString << std::endl;
228  return listString;
229 }
uint16_t size_type
tuple cout
Definition: gather_cfg.py:121
void HDQMInspector::setBlackList ( std::string const &  ListItems)

Definition at line 105 of file HDQMInspector.cc.

References blackList, ecal_dqm_sourceclient-live_cfg::cerr, cmsRelvalreport::exit, i, python.multivaluedict::sort(), and AlCaHLTBitMon_QueryRunRegistry::string.

106 {
107 
108  // Run over entire input string
109  for (std::string::const_iterator Pos = ListItems.begin(); Pos != ListItems.end(); ) {
110 
111  // The rest of the string
112  std::string Remainder(Pos, ListItems.end());
113 
114  // This entry will be from the beginning of the remainder to either a ","
115  // or the end of the string
116  std::string Entry = Remainder.substr(0, Remainder.find(","));
117 
118  // If we find a "-" we know it's a blacklist range
119  if ( Entry.find("-") ) {
120 
121  // Get the first and last runs from this range
122  int const FirstRun = atoi( Entry.substr(0, Entry.find("-")).c_str() );
123  int const LastRun = atoi( Entry.substr(Entry.find("-")+1).c_str() );
124 
125  // If you entered it stupidly we're going to stop here.
126  if (FirstRun > LastRun) {
127  std::cerr << "ERROR: FirstRun > LastRun in blackList" << std::endl;
128  exit(1);
129  }
130 
131  // For now the simplest thing to do is fill in gaps including each end
132  for (int i = FirstRun; i <= LastRun; ++i) {
133  blackList.push_back(i);
134  }
135 
136  } else {
137  // If we didn't see a "-" just add it to the list
138  blackList.push_back( atoi(Entry.c_str()) );
139  }
140 
141  // This is to make sure we are in the correct position as we go on.
142  Pos += Entry.size();
143  if (Pos != ListItems.end()) {
144  Pos += 1;
145  }
146 
147  }
148 
149  // sort the list for faster searching later
150  std::sort(blackList.begin(), blackList.end());
151 
152  return;
153 }
int i
Definition: DBlmapReader.cc:9
Definition: Entry.h:18
std::vector< unsigned int > blackList
void HDQMInspector::setDB ( const std::string &  DBName,
const std::string &  DBTag,
const std::string &  DBauth = "" 
)

Definition at line 59 of file HDQMInspector.cc.

References accessDB(), ecal_dqm_sourceclient-live_cfg::cerr, gather_cfg::cout, DBauth_, DBName_, DBTag_, cmsRelvalreport::exit, and fOutFile.

60 {
61  if( DBName_==DBName && DBTag_==DBTag && DBauth_ == DBauth)
62  return;
63 
64  DBName_= DBName;
65  DBTag_= DBTag;
66  DBauth_ = DBauth;
67 
68  std::cout << "Name of DB = "<< DBName << std::endl;
69  std::cout << "DBTag = "<< DBTag << std::endl;
70  std::cout << "DBauth = "<< DBauth << std::endl;
71  std::cout <<std::endl;
72 
73  accessDB();
74 
75  fOutFile = new TFile( "historicDQM.root","RECREATE" );
76  if (!fOutFile->IsOpen()) {
77  std::cerr << "ERROR: cannot open output file" << std::endl;
78  exit(1);
79  }
80  fOutFile->cd();
81 }
std::string DBauth_
TFile * fOutFile
std::string DBTag_
std::string DBName_
tuple cout
Definition: gather_cfg.py:121
void HDQMInspector::setDebug ( int  i)
inline

Definition at line 73 of file HDQMInspector.h.

References i, and iDebug.

73 {iDebug=i;}
int i
Definition: DBlmapReader.cc:9
void HDQMInspector::setDoStat ( int  i)
inline

Definition at line 74 of file HDQMInspector.h.

References i, and iDoStat.

74 {iDoStat=i;}
int i
Definition: DBlmapReader.cc:9
void HDQMInspector::setItems ( std::string  itemD)
private

Definition at line 789 of file HDQMInspector.cc.

References gather_cfg::cout, HDQMInspector::DetIdItemList::detid, fSep, iDebug, HDQMInspector::DetIdItemList::items, AlCaHLTBitMon_QueryRunRegistry::string, and vDetIdItemList_.

Referenced by unpackItems().

790 {
791  DetIdItemList detiditemlist;
792  detiditemlist.detid=atol(itemD.substr(0,itemD.find(fSep)).c_str());
793 
794  std::string item=itemD.substr(itemD.find(fSep)+fSep.size());
795  detiditemlist.items.push_back(item);
796 
797  if(iDebug)
798  std::cout << "Found new item " << detiditemlist.items.back() << " for detid " << detiditemlist.detid << std::endl;
799 
800  if(item.find("mean")!=std::string::npos){
801  detiditemlist.items.push_back(item.replace(item.find("mean"),4,"rms"));
802  if(iDebug)
803  std::cout << "Found new item " << detiditemlist.items.back() << std::endl;
804  detiditemlist.items.push_back(item.replace(item.find("rms"),3,"entries"));
805  if(iDebug)
806  std::cout << "Found new item " << detiditemlist.items.back() << std::endl;
807  }
808  else if(item.find("landauPeak")!=std::string::npos){
809  detiditemlist.items.push_back(item.replace(item.find("landauPeak"),10,"landauPeakErr"));
810  if(iDebug)
811  std::cout << "Found new item " << detiditemlist.items.back() << std::endl;
812  }
813  else if(item.find("gaussMean")!=std::string::npos){
814  detiditemlist.items.push_back(item.replace(item.find("gaussMean"),9,"gaussSigma"));
815  if(iDebug)
816  std::cout << "Found new item " << detiditemlist.items.back() << std::endl;
817  }
818 
819  if(vDetIdItemList_.size()) {
820  if(vDetIdItemList_.back().detid==detiditemlist.detid) {
821  vDetIdItemList_.back().items.insert(vDetIdItemList_.back().items.end(),detiditemlist.items.begin(),detiditemlist.items.end());
822  } else {
823  vDetIdItemList_.push_back(detiditemlist);
824  }
825  } else {
826  vDetIdItemList_.push_back(detiditemlist);
827  }
828 
829  return;
830 }
std::string fSep
std::vector< DetIdItemList > vDetIdItemList_
tuple cout
Definition: gather_cfg.py:121
bool HDQMInspector::setRange ( unsigned int &  firstRun,
unsigned int &  lastRun 
)
private

Definition at line 261 of file HDQMInspector.cc.

References gather_cfg::cout, plotBeamSpotDB::first, dataset::firstRun, i, iDebug, iovList, prof2calltree::last, and MergeJob_cfg::lastRun.

Referenced by createTrend().

262 {
263  unsigned int first,last;
264 
265  for(size_t i=0;i<iovList.size();++i) {
266  if (iDebug) {
267  std::cout << iovList.at(i)<< std::endl;
268  }
269  }
270 
271  std::vector<unsigned int>::iterator iter;
272 
273  iter=std::lower_bound(iovList.begin(),iovList.end(),firstRun);
274  if (iter!=iovList.end())
275  first=*iter;
276  else{
277  std::cout << "firstRun (" << firstRun << ") > last iov ("<<iovList.back()<< ")"<<std::endl;
278  return false;
279  }
280 
281  iter=std::lower_bound(iovList.begin(),iovList.end(),lastRun);
282  if (iter!=iovList.end()){
283  if (*iter>lastRun) last = *(iter-1);
284  else last=*iter;
285  }
286  else{
287  last=iovList.back();
288  }
289 
290  firstRun=first;
291  lastRun=last;
292  std::cout << "setting Range firstRun (" << first << ") - lastRun ("<<last<< ")"<<std::endl;
293  Iterator->setRange(first,last);
294 
295  return true;
296 }
int i
Definition: DBlmapReader.cc:9
std::vector< unsigned int > iovList
string firstRun
Definition: dataset.py:857
tuple cout
Definition: gather_cfg.py:121
void HDQMInspector::setSeparator ( std::string const  in)
inline

Definition at line 94 of file HDQMInspector.h.

References fSep, and recoMuon::in.

94  {
95  fSep = in;
96  return;
97  }
std::string fSep
void HDQMInspector::setSkip0s ( bool const  in)
inline

Definition at line 82 of file HDQMInspector.h.

References fSkip0s, and recoMuon::in.

82  {
83  fSkip0s = in;
84  return;
85  }
void HDQMInspector::setSkip99s ( bool const  in)
inline

Definition at line 78 of file HDQMInspector.h.

References fSkip99s, and recoMuon::in.

78  {
79  fSkip99s = in;
80  return;
81  }
void HDQMInspector::setWhiteList ( std::string const &  ListItems)

Definition at line 155 of file HDQMInspector.cc.

References ecal_dqm_sourceclient-live_cfg::cerr, cmsRelvalreport::exit, i, python.multivaluedict::sort(), AlCaHLTBitMon_QueryRunRegistry::string, and whiteList.

156 {
157 
158  // Run over entire input string
159  for (std::string::const_iterator Pos = ListItems.begin(); Pos != ListItems.end(); ) {
160 
161  // The rest of the string
162  std::string Remainder(Pos, ListItems.end());
163 
164  // This entry will be from the beginning of the remainder to either a ","
165  // or the end of the string
166  std::string Entry = Remainder.substr(0, Remainder.find(","));
167 
168  // If we find a "-" we know it's a whitelist range
169  if ( Entry.find("-") ) {
170 
171  // Get the first and last runs from this range
172  int const FirstRun = atoi( Entry.substr(0, Entry.find("-")).c_str() );
173  int const LastRun = atoi( Entry.substr(Entry.find("-")+1).c_str() );
174 
175  // If you entered it stupidly we're going to stop here.
176  if (FirstRun > LastRun) {
177  std::cerr << "ERROR: FirstRun > LastRun in WhiteList" << std::endl;
178  exit(1);
179  }
180 
181  // For now the simplest thing to do is fill in gaps including each end
182  for (int i = FirstRun; i <= LastRun; ++i) {
183  whiteList.push_back(i);
184  }
185 
186  } else {
187  // If we didn't see a "-" just add it to the list
188  whiteList.push_back( atoi(Entry.c_str()) );
189  }
190 
191  // This is to make sure we are in the correct position as we go on.
192  Pos += Entry.size();
193  if (Pos != ListItems.end()) {
194  Pos += 1;
195  }
196 
197  }
198 
199  // sort the list for faster searching later
200  std::sort(whiteList.begin(), whiteList.end());
201 
202  return;
203 }
int i
Definition: DBlmapReader.cc:9
Definition: Entry.h:18
std::vector< unsigned int > whiteList
void HDQMInspector::style ( )
private

Definition at line 31 of file HDQMInspector.cc.

Referenced by plot().

32 {
33  TStyle* theStyle= new TStyle();
34  theStyle->SetOptStat(0);
35  //gROOT->SetStyle("Plain");
36  theStyle->SetOptStat(0);
37  theStyle->SetOptFit(111);
38  theStyle->SetStatFont(12);
39  theStyle->SetStatBorderSize(1);
40  theStyle->SetCanvasColor(0);
41  theStyle->SetCanvasBorderMode(0);
42  theStyle->SetPadBorderMode(0);
43  theStyle->SetPadColor(0);
44  theStyle->SetLineWidth(1);
45  theStyle->SetLineStyle(2);
46  theStyle->SetPalette(1);
47  theStyle->SetMarkerStyle(20);
48  theStyle->SetMarkerColor(2);
49  theStyle->SetLabelSize(0.05,"y");
50  theStyle->SetLabelSize(0.04,"x");
51  theStyle->SetTitleFontSize(0.2);
52  theStyle->SetTitleW(0.9);
53  theStyle->SetTitleH(0.06);
54  theStyle->SetPadLeftMargin(0.12);
55  theStyle->SetPadTopMargin(0.13);
56  theStyle->cd();
57 }
void HDQMInspector::unpackConditions ( std::string &  Conditions,
std::vector< DetIdItemList > &  vdetIdItemList 
)
private

Definition at line 708 of file HDQMInspector.cc.

References gather_cfg::cout, HDQMInspector::DetIdItemList::detid, fSep, iDebug, HDQMInspector::DetIdItemList::items, NULL, and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by createTrend().

709 {
710  char * pch;
711  char delimiters[128]="><=+-*/&|() ";
712  char copyConditions[1024];
713  sprintf(copyConditions,"%s",Conditions.c_str());
714  pch = strtok (copyConditions,delimiters);
715  while (pch != NULL){
716  if(strstr(pch,fSep.c_str())!=NULL){
717  DetIdItemList detiditemlist;
718  std::string itemD(pch);
719  detiditemlist.detid=atol(itemD.substr(0,itemD.find(fSep)).c_str());
720  detiditemlist.items.push_back(itemD.substr(itemD.find(fSep)+fSep.size())); // dhidas update +.size instead of "1"
721  if (iDebug) {
722  std::cout << "Found a Condition " << detiditemlist.items.back() << " for detId " << detiditemlist.detid << std::endl;
723  }
724 
725  if(vdetIdItemList.size())
726  if(vdetIdItemList.back().detid==detiditemlist.detid)
727  vdetIdItemList.back().items.insert(vdetIdItemList.back().items.end(),detiditemlist.items.begin(),detiditemlist.items.end());
728  else
729  vdetIdItemList.push_back(detiditemlist);
730  else
731  vdetIdItemList.push_back(detiditemlist);
732  }
733  pch = strtok (NULL,delimiters);
734  }
735 }
#define NULL
Definition: scimark2.h:8
std::string fSep
tuple cout
Definition: gather_cfg.py:121
size_t HDQMInspector::unpackItems ( std::string &  ListItems)
private

Definition at line 691 of file HDQMInspector.cc.

References prof2calltree::count, gather_cfg::cout, and setItems().

Referenced by createTrend().

692 {
693  std::string::size_type oldloc=0;
694  std::string::size_type loc = ListItems.find( ",", oldloc );
695  size_t count=1;
696  while( loc != std::string::npos ) {
697  setItems(ListItems.substr(oldloc,loc-oldloc));
698  oldloc=loc+1;
699  loc=ListItems.find( ",", oldloc );
700  count++;
701  }
702  //there is a single item
703  setItems(ListItems.substr(oldloc,loc-oldloc));
704  std::cout << std::endl;
705  return count;
706 }
uint16_t size_type
void setItems(std::string)
tuple cout
Definition: gather_cfg.py:121

Member Data Documentation

std::vector<unsigned int> HDQMInspector::blackList
private

Definition at line 125 of file HDQMInspector.h.

Referenced by createTrend(), and setBlackList().

std::string HDQMInspector::DBauth_
private

Definition at line 120 of file HDQMInspector.h.

Referenced by accessDB(), and setDB().

std::string HDQMInspector::DBName_
private

Definition at line 120 of file HDQMInspector.h.

Referenced by accessDB(), and setDB().

std::string HDQMInspector::DBTag_
private

Definition at line 120 of file HDQMInspector.h.

Referenced by accessDB(), and setDB().

const HDQMInspectorConfigBase* HDQMInspector::fHDQMInspectorConfig
private

Definition at line 139 of file HDQMInspector.h.

Referenced by plot().

TFile* HDQMInspector::fOutFile

Definition at line 144 of file HDQMInspector.h.

Referenced by closeFile(), and setDB().

std::string HDQMInspector::fSep
private

Definition at line 141 of file HDQMInspector.h.

Referenced by ApplyConditions(), plot(), setItems(), setSeparator(), and unpackConditions().

bool HDQMInspector::fSkip0s
private

Definition at line 137 of file HDQMInspector.h.

Referenced by plot(), and setSkip0s().

bool HDQMInspector::fSkip99s
private

Definition at line 136 of file HDQMInspector.h.

Referenced by plot(), and setSkip99s().

int HDQMInspector::iDebug
private
int HDQMInspector::iDoStat
private

Definition at line 135 of file HDQMInspector.h.

Referenced by setDoStat().

std::vector<unsigned int> HDQMInspector::iovList
private

Definition at line 124 of file HDQMInspector.h.

Referenced by createTrendLastRuns(), InitializeIOVList(), and setRange().

CondCachedIter<HDQMSummary>* HDQMInspector::Iterator
private

Definition at line 122 of file HDQMInspector.h.

Referenced by accessDB(), and ~HDQMInspector().

std::vector<unsigned int> HDQMInspector::vdetId_
private

Definition at line 132 of file HDQMInspector.h.

Referenced by getvDetId(), and plot().

std::vector<DetIdItemList> HDQMInspector::vDetIdItemList_
private

Definition at line 130 of file HDQMInspector.h.

Referenced by createTrend(), plot(), and setItems().

std::vector<std::string> HDQMInspector::vlistItems_
private

Definition at line 131 of file HDQMInspector.h.

Referenced by getListItems(), and plot().

std::vector<unsigned int> HDQMInspector::vRun_
private

Definition at line 128 of file HDQMInspector.h.

Referenced by createTrend(), getRuns(), and plot().

std::vector<float> HDQMInspector::vSummary_
private

Definition at line 129 of file HDQMInspector.h.

Referenced by createTrend(), getSummary(), and plot().

std::vector<unsigned int> HDQMInspector::whiteList
private

Definition at line 126 of file HDQMInspector.h.

Referenced by createTrend(), and setWhiteList().