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(), 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:22
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:717
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:1031
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:845
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:429
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:1175
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  } catch ( ... ) {
203  std::cerr << "Exception caught (...)" << std::endl;
204  }
205 
206  }
207 
208  }
209 
210  if( atLeastAQuery ) session->transaction().commit();
211 
212  }
213 
214 }
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_, edm::getName(), 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:2572
std::string getName(Reflex::Type &cc)
Definition: ClassFiller.cc:18
std::vector< MonitorElement * > MEs_
tuple cout
Definition: gather_cfg.py:121
void MonitorElementsDb::htmlOutput ( std::string &  htmlDir)
protected

Definition at line 216 of file MonitorElementsDb.cc.

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

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

216  {
217 
218  gStyle->SetOptStat(0);
219  gStyle->SetOptFit();
220  gStyle->SetPalette(1,0);
221 
222  for( unsigned int i=0; i<MEinfo_.size(); i++ ) {
223 
224  if( MEs_[i] != 0 && ( ievt_ % MEinfo_[i].ncycle ) == 0 ) {
225 
226  TCanvas* c1;
227  int n = MEinfo_[i].xbins > MEinfo_[i].ybins ? int( round( float( MEinfo_[i].xbins ) / float( MEinfo_[i].ybins ) ) ) :
228  int( round( float( MEinfo_[i].ybins ) / float( MEinfo_[i].xbins ) ) );
229  if( MEinfo_[i].xbins > MEinfo_[i].ybins ) {
230  c1 = new TCanvas( "c1", "dummy", 400*n, 400 );
231  }
232  else {
233  c1 = new TCanvas( "c1", "dummy", 400, 400*n );
234  }
235  c1->SetGrid();
236  c1->cd();
237 
238  const double histMax = 1.e15;
239 
240  TObject* ob = const_cast<MonitorElement*>(MEs_[i])->getRootObject();
241  if ( ob ) {
242  if( dynamic_cast<TH1F*>( ob ) ) {
243  TH1F* h = dynamic_cast<TH1F*> ( ob );
244  h->Draw( );
245  }
246  else if( dynamic_cast<TH2F*>( ob ) ) {
247  TH2F* h = dynamic_cast<TH2F*>( ob );
248  if( h->GetMaximum(histMax) > 1.e4 ) {
249  gPad->SetLogz(1);
250  } else {
251  gPad->SetLogz(0);
252  }
253  h->Draw( "colz" );
254  }
255  else if( dynamic_cast<TProfile*>( ob ) ) {
256  TProfile* h = dynamic_cast<TProfile*>( ob );
257  if( h->GetMaximum(histMax) > 1.e4 ) {
258  gPad->SetLogz(1);
259  } else {
260  gPad->SetLogz(0);
261  }
262  h->Draw( "colz" );
263  }
264  }
265 
266  c1->Update();
267  std::string name = htmlDir + "/" + MEinfo_[i].title + ".png";
268  c1->SaveAs( name.c_str() );
269 
270  delete c1;
271 
272  }
273  }
274 }
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().