CMS 3D CMS Logo

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

#include <MonitorElementsDb.h>

Public Member Functions

 MonitorElementsDb (const edm::ParameterSet &ps, std::string &xmlFile)
 Constructors. More...
 
virtual ~MonitorElementsDb ()
 Destructor. More...
 

Protected Member Functions

void analyze (const edm::Event &e, const edm::EventSetup &c, coral::ISessionProxy *s)
 Analyze. More...
 
void beginJob (void)
 
void endJob (void)
 
void htmlOutput (std::string &htmlDir)
 
void startSession (void)
 

Private Attributes

DQMStoredqmStore_
 
int ievt_
 
std::vector< DB_MEMEinfo_
 
std::vector< MonitorElement * > MEs_
 
MonitorXMLParserparser_
 
std::string prefixME_
 
std::string xmlFile_
 

Friends

class EcalBarrelMonitorDbModule
 
class EcalEndcapMonitorDbModule
 

Detailed Description

Definition at line 31 of file MonitorElementsDb.h.

Constructor & Destructor Documentation

MonitorElementsDb::MonitorElementsDb ( const edm::ParameterSet ps,
std::string &  xmlFile 
)

Constructors.

Definition at line 38 of file MonitorElementsDb.cc.

References DQMStore::book1D(), DQMStore::book2D(), DQMStore::bookProfile(), DQMStore::bookProfile2D(), dtNoiseDBValidation_cfg::cerr, dqmStore_, alignCSCRings::e, MonitorXMLParser::getDB_ME(), edm::ParameterSet::getUntrackedParameter(), i, ievt_, MonitorXMLParser::load(), MEinfo_, MEs_, cppFunctionSkipper::operator, parser_, prefixME_, DQMStore::setCurrentFolder(), AlCaHLTBitMon_QueryRunRegistry::string, indexGen::title, tmp, fw3dlego::xbins, xmlFile(), and xmlFile_.

38  {
39 
40  xmlFile_ = xmlFile;
41 
43 
44  prefixME_ = ps.getUntrackedParameter<std::string>("prefixME", "");
45 
46  if ( dqmStore_ ) {
47 
49 
51  try {
52  parser_->load();
53  } catch( const std::runtime_error e ) {
54  delete parser_;
55  parser_ = 0;
56  std::cerr << "Error loading parser: " << e.what() << std::endl;
57  }
58 
60 
61  for( unsigned int i=0; i< MEinfo_.size(); i++ ) {
62 
64  tmp = 0;
65  if( strcmp(MEinfo_[i].type.c_str(), "th1d") == 0 ) {
66  tmp = dqmStore_->book1D( MEinfo_[i].title, MEinfo_[i].title, MEinfo_[i].xbins, MEinfo_[i].xfrom, MEinfo_[i].xto );
67  }
68  else if( strcmp(MEinfo_[i].type.c_str(), "th2d") == 0 ) {
69  tmp = dqmStore_->book2D( MEinfo_[i].title, MEinfo_[i].title, MEinfo_[i].xbins, MEinfo_[i].xfrom, MEinfo_[i].xto,
70  MEinfo_[i].ybins, MEinfo_[i].yfrom, MEinfo_[i].yto );
71  }
72  else if( strcmp(MEinfo_[i].type.c_str(), "tprofile") == 0 ) {
73  tmp = dqmStore_->bookProfile( MEinfo_[i].title, MEinfo_[i].title, MEinfo_[i].xbins, MEinfo_[i].xfrom, MEinfo_[i].xto,
74  MEinfo_[i].ybins, MEinfo_[i].yfrom, MEinfo_[i].yto );
75  }
76  else if( strcmp(MEinfo_[i].type.c_str(), "tprofile2d") == 0 ) {
77  tmp = dqmStore_->bookProfile2D( MEinfo_[i].title, MEinfo_[i].title, MEinfo_[i].xbins, MEinfo_[i].xfrom, MEinfo_[i].xto,
78  MEinfo_[i].ybins, MEinfo_[i].yfrom, MEinfo_[i].yto,
79  MEinfo_[i].zbins, MEinfo_[i].zfrom, MEinfo_[i].zto );
80  }
81 
82  MEs_.push_back( tmp );
83  }
84 
85  }
86 
87  ievt_ = 0;
88 
89 }
type
Definition: HCALResponse.h:21
T getUntrackedParameter(std::string const &, T const &) const
int i
Definition: DBlmapReader.cc:9
const double xbins[]
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
Definition: DQMStore.cc:722
const std::vector< DB_ME > & getDB_ME(void) const
MonitorElement * bookProfile(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, const char *option="s")
Definition: DQMStore.cc:1036
std::vector< DB_ME > MEinfo_
std::vector< MonitorElement * > MEs_
bool xmlFile(const std::string fParam)
std::vector< std::vector< double > > tmp
Definition: MVATrainer.cc:100
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:850
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:434
MonitorXMLParser * parser_
MonitorElement * bookProfile2D(const char *name, const char *title, int nchX, double lowX, double highX, int nchY, double lowY, double highY, int nchZ, double lowZ, double highZ, const char *option="s")
Definition: DQMStore.cc:1180
MonitorElementsDb::~MonitorElementsDb ( )
virtual

Destructor.

Definition at line 91 of file MonitorElementsDb.cc.

References parser_.

91  {
92 
93  delete parser_;
94 
95 }
MonitorXMLParser * parser_

Member Function Documentation

void MonitorElementsDb::analyze ( const edm::Event e,
const edm::EventSetup c,
coral::ISessionProxy *  s 
)
protected

Analyze.

Definition at line 112 of file MonitorElementsDb.cc.

References dtNoiseDBValidation_cfg::cerr, relativeConstraints::empty, cppFunctionSkipper::exception, edm::hlt::Exception, cmsRelvalreport::exit, i, ievt_, j, gen::k, prof2calltree::l, MEinfo_, MEs_, o2o::query, and python.IdGenerator::schema.

Referenced by EcalBarrelMonitorDbModule::analyze(), and EcalEndcapMonitorDbModule::analyze().

112  {
113 
114  ievt_++;
115 
116  bool atLeastAQuery;
117  atLeastAQuery = false;
118 
119  std::vector<std::string> vars;
120 
121  if ( session ) {
122 
123  for( unsigned int i=0; i<MEinfo_.size(); i++ ) {
124 
125  // i-th ME...
126 
127  if( MEs_[i] != 0 && ( ievt_ % MEinfo_[i].ncycle ) == 0 ) {
128 
129  MEs_[i]->Reset();
130 
131  vars.clear();
132 
133  try {
134 
135  atLeastAQuery = true;
136 
137  session->transaction().start(true);
138 
139  coral::ISchema& schema = session->nominalSchema();
140 
141  coral::IQuery* query = schema.newQuery();
142 
143  for( unsigned int j=0; j<MEinfo_[i].queries.size(); j++ ) {
144  if( strcmp(MEinfo_[i].queries[j].query.c_str(), "addToTableList") == 0 ) {
145  query->addToTableList( MEinfo_[i].queries[j].arg );
146  }
147  else if( strcmp(MEinfo_[i].queries[j].query.c_str(), "addToOutputList") == 0 ) {
148  query->addToOutputList( MEinfo_[i].queries[j].arg, MEinfo_[i].queries[j].alias );
149  vars.push_back( MEinfo_[i].queries[j].alias );
150  }
151  else if( strcmp(MEinfo_[i].queries[j].query.c_str(), "setCondition") == 0 ) {
152  query->setCondition( MEinfo_[i].queries[j].arg, coral::AttributeList() );
153  }
154  else if( strcmp(MEinfo_[i].queries[j].query.c_str(), "addToOrderList") == 0 ) {
155  query->addToOrderList( MEinfo_[i].queries[j].arg );
156  }
157  }
158 
159  coral::ICursor& cursor = query->execute();
160 
161  unsigned int k = 0;
162 
163  while ( cursor.next() && k < MEinfo_[i].loop ) {
164  //while ( cursor.next() ) {
165 
166  const coral::AttributeList& row = cursor.currentRow();
167 
168  std::vector<float> vvars;
169  vvars.clear();
170  for( unsigned int l=0; l<vars.size(); l++ ) {
171  if( !vars[l].empty() ) {
172  vvars.push_back( row[vars[l].c_str()].data<float>() );
173  }
174  }
175  if( vvars.size() == 2 ) {
176  //std::cout << k << " -- " << vvars[0] << " -- " << vvars[1] << std::endl;
177  MEs_[i]->Fill( vvars[0], vvars[1] );
178  }
179  else if( vvars.size() == 3 ) {
180  //std::cout << k << " -- " << vvars[0] << " -- " << vvars[1] << " -- " << vvars[2] << std::endl;
181  MEs_[i]->Fill( vvars[0], vvars[1], vvars[2] );
182  }
183  else if( vvars.size() == 4 ) {
184  //std::cout << k << " -- " << vvars[0] << " -- " << vvars[1] << " -- " << vvars[2] << " -- " << vvars[3] << std::endl;
185  MEs_[i]->Fill( vvars[0], vvars[1], vvars[2], vvars[3] );
186  }
187  else{
188  std::cerr << "Too many variables to plot..." << std::endl;
189  exit(1);
190  }
191 
192  k++;
193 
194  }
195 
196  delete query;
197 
198  } catch ( coral::Exception& e ) {
199  std::cerr << "CORAL Exception : " << e.what() << std::endl;
200  } catch ( std::exception& e ) {
201  std::cerr << "Standard C++ exception : " << e.what() << std::endl;
202  }
203  }
204 
205  }
206 
207  if( atLeastAQuery ) session->transaction().commit();
208 
209  }
210 
211 }
int i
Definition: DBlmapReader.cc:9
A arg
Definition: Factorize.h:36
int j
Definition: DBlmapReader.cc:9
std::vector< DB_ME > MEinfo_
int k[5][pyjets_maxn]
std::vector< MonitorElement * > MEs_
tuple query
Definition: o2o.py:269
void MonitorElementsDb::beginJob ( void  )
protected

Definition at line 97 of file MonitorElementsDb.cc.

References ievt_.

Referenced by EcalBarrelMonitorDbModule::beginJob(), and EcalEndcapMonitorDbModule::beginJob().

97  {
98 
99  ievt_ = 0;
100 
101 }
void MonitorElementsDb::endJob ( void  )
protected

Definition at line 103 of file MonitorElementsDb.cc.

References gather_cfg::cout, dqmStore_, i, ievt_, MEs_, and DQMStore::removeElement().

Referenced by EcalBarrelMonitorDbModule::endJob(), and EcalEndcapMonitorDbModule::endJob().

103  {
104 
105  std::cout << "MonitorElementsDb: analyzed " << ievt_ << " events" << std::endl;
106  for( unsigned int i = 0; i<MEs_.size(); i++ ) {
107  if( MEs_[i] != 0 ) dqmStore_->removeElement( MEs_[i]->getName() );
108  }
109 
110 }
int i
Definition: DBlmapReader.cc:9
void removeElement(const std::string &name)
Definition: DQMStore.cc:2577
std::vector< MonitorElement * > MEs_
tuple cout
Definition: gather_cfg.py:121
void MonitorElementsDb::htmlOutput ( std::string &  htmlDir)
protected

Definition at line 213 of file MonitorElementsDb.cc.

References alignmentValidation::c1, h, i, ievt_, MEinfo_, MEs_, n, mergeVDriftHistosByStation::name, AlCaHLTBitMon_QueryRunRegistry::string, and fw3dlego::xbins.

Referenced by EcalBarrelMonitorDbModule::analyze(), and EcalEndcapMonitorDbModule::analyze().

213  {
214 
215  gStyle->SetOptStat(0);
216  gStyle->SetOptFit();
217  gStyle->SetPalette(1,0);
218 
219  for( unsigned int i=0; i<MEinfo_.size(); i++ ) {
220 
221  if( MEs_[i] != 0 && ( ievt_ % MEinfo_[i].ncycle ) == 0 ) {
222 
223  TCanvas* c1;
224  int n = MEinfo_[i].xbins > MEinfo_[i].ybins ? int( round( float( MEinfo_[i].xbins ) / float( MEinfo_[i].ybins ) ) ) :
225  int( round( float( MEinfo_[i].ybins ) / float( MEinfo_[i].xbins ) ) );
226  if( MEinfo_[i].xbins > MEinfo_[i].ybins ) {
227  c1 = new TCanvas( "c1", "dummy", 400*n, 400 );
228  }
229  else {
230  c1 = new TCanvas( "c1", "dummy", 400, 400*n );
231  }
232  c1->SetGrid();
233  c1->cd();
234 
235  const double histMax = 1.e15;
236 
237  TObject* ob = const_cast<MonitorElement*>(MEs_[i])->getRootObject();
238  if ( ob ) {
239  if( dynamic_cast<TH1F*>( ob ) ) {
240  TH1F* h = dynamic_cast<TH1F*> ( ob );
241  h->Draw( );
242  }
243  else if( dynamic_cast<TH2F*>( ob ) ) {
244  TH2F* h = dynamic_cast<TH2F*>( ob );
245  if( h->GetMaximum(histMax) > 1.e4 ) {
246  gPad->SetLogz(1);
247  } else {
248  gPad->SetLogz(0);
249  }
250  h->Draw( "colz" );
251  }
252  else if( dynamic_cast<TProfile*>( ob ) ) {
253  TProfile* h = dynamic_cast<TProfile*>( ob );
254  if( h->GetMaximum(histMax) > 1.e4 ) {
255  gPad->SetLogz(1);
256  } else {
257  gPad->SetLogz(0);
258  }
259  h->Draw( "colz" );
260  }
261  }
262 
263  c1->Update();
264  std::string name = htmlDir + "/" + MEinfo_[i].title + ".png";
265  c1->SaveAs( name.c_str() );
266 
267  delete c1;
268 
269  }
270  }
271 }
int i
Definition: DBlmapReader.cc:9
const double xbins[]
std::vector< DB_ME > MEinfo_
std::vector< MonitorElement * > MEs_
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
Definition: Activities.doc:4
void MonitorElementsDb::startSession ( void  )
protected

Friends And Related Function Documentation

friend class EcalBarrelMonitorDbModule
friend

Definition at line 33 of file MonitorElementsDb.h.

friend class EcalEndcapMonitorDbModule
friend

Definition at line 34 of file MonitorElementsDb.h.

Member Data Documentation

DQMStore* MonitorElementsDb::dqmStore_
private

Definition at line 68 of file MonitorElementsDb.h.

Referenced by endJob(), and MonitorElementsDb().

int MonitorElementsDb::ievt_
private

Definition at line 67 of file MonitorElementsDb.h.

Referenced by analyze(), beginJob(), endJob(), htmlOutput(), and MonitorElementsDb().

std::vector<DB_ME> MonitorElementsDb::MEinfo_
private

Definition at line 65 of file MonitorElementsDb.h.

Referenced by analyze(), htmlOutput(), and MonitorElementsDb().

std::vector<MonitorElement*> MonitorElementsDb::MEs_
private

Definition at line 66 of file MonitorElementsDb.h.

Referenced by analyze(), endJob(), htmlOutput(), and MonitorElementsDb().

MonitorXMLParser* MonitorElementsDb::parser_
private

Definition at line 64 of file MonitorElementsDb.h.

Referenced by MonitorElementsDb(), and ~MonitorElementsDb().

std::string MonitorElementsDb::prefixME_
private

Definition at line 62 of file MonitorElementsDb.h.

Referenced by MonitorElementsDb().

std::string MonitorElementsDb::xmlFile_
private

Definition at line 63 of file MonitorElementsDb.h.

Referenced by MonitorElementsDb().