CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
Macros | Functions
HcalHistoUtils.h File Reference
#include "TROOT.h"
#include "TStyle.h"
#include "TColor.h"
#include "TH1.h"
#include "TCanvas.h"
#include "TGaxis.h"
#include "TH1F.h"
#include "TH2F.h"
#include "TProfile.h"
#include "TFile.h"
#include <iostream>
#include <fstream>
#include "DQMServices/Core/interface/DQMStore.h"

Go to the source code of this file.

Macros

#define UTILS_ETAMAX   44.5
 
#define UTILS_ETAMIN   -44.5
 
#define UTILS_PHIMAX   73.5
 
#define UTILS_PHIMIN   -0.5
 

Functions

template<class myHist >
myHist * getAnyHisto (myHist *hist, std::string name, std::string process, DQMStore *dbe_, bool verb, bool clone)
 
template<class myHist >
myHist * getAnyHisto (myHist *hist, std::string name, std::string process, std::string rootfolder, DQMStore *dbe_, bool verb, bool clone)
 
template<class myHist >
std::string getAnyIMG (int runNo, myHist *hist, int size, std::string htmlDir, const char *xlab, const char *ylab, int debug)
 
TH1F * getTH1F (std::string name, std::string process, std::string rootfolder, DQMStore *dbe_, bool verb, bool clone)
 
TH2F * getTH2F (std::string name, std::string process, std::string rootfolder, DQMStore *dbe_, bool verb, bool clone)
 
TH3F * getTH3F (std::string name, std::string process, std::string rootfolder, DQMStore *dbe_, bool verb, bool clone)
 
TProfile * getTProfile (std::string name, std::string process, std::string rootfolder, DQMStore *dbe_, bool verb, bool clone)
 
TProfile2D * getTProfile2D (std::string name, std::string process, std::string rootfolder, DQMStore *dbe_, bool verb, bool clone)
 
template<class myHist >
void htmlAnyHisto (int runNo, myHist *hist, const char *xlab, const char *ylab, int width, std::ofstream &htmlFile, std::string htmlDir, int debug=0)
 

Macro Definition Documentation

#define UTILS_ETAMAX   44.5

Definition at line 5 of file HcalHistoUtils.h.

Referenced by getAnyIMG().

#define UTILS_ETAMIN   -44.5

Definition at line 4 of file HcalHistoUtils.h.

Referenced by getAnyIMG().

#define UTILS_PHIMAX   73.5

Definition at line 7 of file HcalHistoUtils.h.

Referenced by getAnyIMG().

#define UTILS_PHIMIN   -0.5

Definition at line 6 of file HcalHistoUtils.h.

Referenced by getAnyIMG().

Function Documentation

template<class myHist >
myHist* getAnyHisto ( myHist *  hist,
std::string  name,
std::string  process,
DQMStore dbe_,
bool  verb,
bool  clone 
)

Definition at line 197 of file HcalHistoUtils.h.

200 {
201 
202  // If subsystem folder not specified, assume that it's "Hcal"
203  myHist* theHist=getAnyHisto(hist, name, process, "Hcal",dbe_, verb, clone);
204  return theHist;
205 }
myHist * getAnyHisto(myHist *hist, std::string name, std::string process, DQMStore *dbe_, bool verb, bool clone)
TEveGeoShape * clone(const TEveElement *element, TEveElement *parent)
Definition: eve_macros.cc:135
tuple process
Definition: LaserDQM_cfg.py:3
template<class myHist >
myHist* getAnyHisto ( myHist *  hist,
std::string  name,
std::string  process,
std::string  rootfolder,
DQMStore dbe_,
bool  verb,
bool  clone 
)

Definition at line 209 of file HcalHistoUtils.h.

References gather_cfg::cout, DQMStore::get(), MonitorElement::getTH1F(), MonitorElement::getTH2F(), MonitorElement::getTH3F(), MonitorElement::getTProfile(), MonitorElement::getTProfile2D(), create_public_lumi_plots::histtype, NULL, dbtoconf::out, AlCaHLTBitMon_QueryRunRegistry::string, and indexGen::title.

212 {
213  /*
214  Method returns histogram named 'name' from DQMStore dbe_;
215  'hist' pointer must be declared with 'new' (e.g., new TH2F())
216  in function call so that the pointer actually points to something.
217  Otherwise, the call to hist->ClassName() will fail.
218  We might implement a scale functionality at some later point?
219  */
220 
221  if (!dbe_) return NULL;
222 
223  std::stringstream clonehisto;
224  std::stringstream title;
225  title <<process.c_str()<<rootfolder.c_str()<<"/"<<name.c_str();
226  //sprintf(title, "%sHcal/%s",process.c_str(),name.c_str());
227 
228  MonitorElement* me = dbe_->get(title.str().c_str()); // get Monitor Element named 'title'
229 
230  if (!me)
231  {
232  if (verb) std::cout <<"SORRY, COULD NOT FIND HISTOGRAM NAMED ["<< title.str().c_str()<<"]"<<std::endl;
233  return NULL; // ME not found
234  } // if (!me)
235 
236  if (verb)
237  std::cout << "Found '" << title.str().c_str() << "'" << std::endl;
238 
239  if (clone)
240  clonehisto<<"ME "<<name.c_str(); // set clone histogram name
241 
242  /* As of 25 April 2008, there are 5 histogram types associated with
243  Monitor Elements (TH1F, TH2F, TH3F, TProfile, and TProfile2D).
244  Provide a separate getter for each type. Add others if necessary.
245  */
246 
247  std::string histtype = hist->ClassName();
248 
249  // return TH1F from ME
250  if (histtype=="TH1F")
251  {
252  TH1F* out;
253  if (clone) out = dynamic_cast<TH1F*>(me->getTH1F()->Clone(clonehisto.str().c_str()));
254  else out = me->getTH1F();
255  if (verb) std::cout <<"Got histogram! Max = "<<out->GetMaximum()<<std::endl;
256  return dynamic_cast<myHist*>(out);
257  }
258 
259  // return TH2F from ME
260  else if (histtype=="TH2F")
261  {
262  TH2F* out;
263  if (clone) out = dynamic_cast<TH2F*>(me->getTH2F()->Clone(clonehisto.str().c_str()));
264  else out = me->getTH2F();
265 
266  if (verb) std::cout <<"Got histogram! Max = "<<out->GetMaximum()<<std::endl;
267  return dynamic_cast<myHist*>(out);
268  }
269 
270  // return TH3F from ME
271  else if (histtype=="TH3F")
272  {
273  TH3F* out;
274  if (clone) out = dynamic_cast<TH3F*>(me->getTH3F()->Clone(clonehisto.str().c_str()));
275  else out = me->getTH3F();
276  return dynamic_cast<myHist*>(out);
277  }
278 
279  // return TProfile from ME
280  else if (histtype=="TProfile")
281  {
282  TProfile* out;
283  if (clone) out = dynamic_cast<TProfile*>(me->getTProfile()->Clone(clonehisto.str().c_str()));
284  else out = me->getTProfile();
285  return dynamic_cast<myHist*>(out);
286  }
287 
288  // return TProfile2D from ME
289  else if (histtype=="TProfile2D")
290  {
291  TProfile2D* out;
292  if (clone) out = dynamic_cast<TProfile2D*>(me->getTProfile2D()->Clone(clonehisto.str().c_str()));
293  else out = me->getTProfile2D();
294  return dynamic_cast<myHist*>(out);
295  }
296 
297  else
298  {
299  if (verb)
300  {
301  std::cout <<"Don't know how to access histogram '"<<title;
302  std::cout<<"' of type '"<<histtype<<"'"<<std::endl;
303  }
304  return NULL;
305  }
306 
307  // Should never reach this point
308  if (verb)
309  std::cout <<"<HcalHistUtils::getAnyHisto> YOU SHOULD NEVER SEE THIS MESSAGE!"<<std::endl;
310  return NULL;
311 
312 } // myHist* getAnyHisto(...)
TProfile2D * getTProfile2D(void) const
TH3F * getTH3F(void) const
#define NULL
Definition: scimark2.h:8
MonitorElement * get(const std::string &path) const
get ME from full pathname (e.g. &quot;my/long/dir/my_histo&quot;)
Definition: DQMStore.cc:1725
tuple out
Definition: dbtoconf.py:99
TH1F * getTH1F(void) const
TEveGeoShape * clone(const TEveElement *element, TEveElement *parent)
Definition: eve_macros.cc:135
TProfile * getTProfile(void) const
tuple cout
Definition: gather_cfg.py:121
TH2F * getTH2F(void) const
tuple process
Definition: LaserDQM_cfg.py:3
template<class myHist >
std::string getAnyIMG ( int  runNo,
myHist *  hist,
int  size,
std::string  htmlDir,
const char *  xlab,
const char *  ylab,
int  debug 
)

Definition at line 319 of file HcalHistoUtils.h.

References timingPdfMaker::can, gather_cfg::cout, alignCSCRings::dest, create_public_lumi_plots::histtype, i, mergeVDriftHistosByStation::name, NULL, AlCaHLTBitMon_QueryRunRegistry::string, indexGen::title, UTILS_ETAMAX, UTILS_ETAMIN, UTILS_PHIMAX, and UTILS_PHIMIN.

Referenced by htmlAnyHisto().

321 {
322  /*
323  Template function draws histogram plot, and saves it as a .gif image.
324  If size==1, thumbnail image is made. Otherwise, full-size image is made.
325  */
326 
327  if(hist==NULL)
328  {
329  return ""; // no histogram provided
330  }
331 
332  // Grab the histogram's title, and convert it to something more palatable for use as a file name
333 
334  // Run cleanString algorithm -- direct call of cleanString causes a crash
335  std::string name = (std::string)hist->GetTitle();
336  if (debug>9) std::cout <<"NAME = ["<<name<<"]"<<std::endl;
337  for ( unsigned int i = 0; i < name.size(); ++i ) {
338  if ( name.substr(i, 6) == " - Run" ){
339  name.replace(i, name.size()-i, "");
340  }
341  if ( name.substr(i, 4) == "_Run" ){
342  name.replace(i, name.size()-i, "");
343  }
344  if ( name.substr(i, 5) == "__Run" ){
345  name.replace(i, name.size()-i, "");
346  }
347 
348  if (name.substr(i,1) == "(" || name.substr(i,1)==")")
349  name.replace(i,1,"_");
350  else if (name.substr(i,1)==",")
351  name.replace(i,1,"_");
352  else if (name.substr(i,1)=="<")
353  name.replace(i,1,"_lt_");
354  else if (name.substr(i,1)==">")
355  name.replace(i,1,"_gt_");
356  else if (name.substr(i,1)=="+")
357  name.replace(i,1,"_plus_");
358  else if (name.substr(i,1)=="#")
359  name.replace(i,1,"");
360  else if (name.substr(i,1)=="/")
361  name.replace(i,1,"_div_");
362  } // for (unsigned int i=0; i< name.size();
363  //std::cout <<"NEWNAME = ["<<name<<"]"<<std::endl;
364 
365  char dest[512]; // stores name of destination .gif file
366  if(runNo>-1) sprintf(dest,"%s - Run %d",name.c_str(),runNo);
367  else sprintf(dest,"%s",name.c_str());
368 
369  //hist->SetTitle(dest); // no need to change the histogram title itself, right?
371 
372  int xwid = 900;
373  int ywid =540;
374 
375  if(size==1) // thumbnail specified
376  {
377  title = title+"_tmb";
378  xwid = 600;
379  ywid = 360;
380  }
381 
382  // run parseString algorithm -- calling it directly causes a crash
383  for ( unsigned int i = 0; i < title.size(); ++i ) {
384  if ( title.substr(i, 1) == " " ){
385  title.replace(i, 1, "_");
386  }
387  if ( title.substr(i, 1) == "#" ){
388  title.replace(i, 1, "N");
389  }
390  if ( title.substr(i, 1) == "-" ){
391  title.replace(i, 1, "_");
392  }
393  if ( title.substr(i, 1) == "&" ){
394  title.replace(i, 1, "_and_");
395  }
396  if ( title.substr(i, 1) == "("
397  || title.substr(i, 1) == ")"
398  ) {
399  title.replace(i, 1, "_");
400  }
401  if ( title.substr(i,1) == "="){
402  title.replace(i,1,"_");
403  }
404  } // for (unsigned int i=0; i < title.size();...)
405 
406  std::string outName = title+".gif";
407  std::string saveName = htmlDir + outName;
408 
409 
410  // Create canvas for histogram
411  TCanvas* can = new TCanvas(dest,dest, xwid, ywid);
412  TAxis* xaxis=0;
413  TAxis* yaxis=0;
414  TLine* vert=0;
415  TLine* horiz=0;
416  hist->SetXTitle(xlab);
417  hist->SetYTitle(ylab);
418  std::string histtype=hist->ClassName();
419  //can->GetFrame()->SetFillColor(21); // change canvas to different default color?
420 
421  // Don't draw stat box for color plots
422  if (((std::string)hist->GetOption())=="col" ||
423  ((std::string)hist->GetOption())=="colz")
424  hist->SetStats(false);
425 
426  // Draw with whatever options are set for the particular histogram
427 
428  hist->Draw(hist->GetOption());// I think that Draw should automatically use the GetOption() value, but include it here to be sure.
429 
430  // Draw Grid Lines
431 
432  if (histtype=="TH2F")
433  {
434  TAxis *xaxis = hist->GetXaxis();
435  TAxis *yaxis=hist->GetYaxis();
436  // Draw vertical lines
437  //for (int xx=int(UTILS_ETAMIN);xx<=int(UTILS_ETAMAX);++xx)
438 
439 
440  if (xaxis->GetXmax()==UTILS_ETAMAX && xaxis->GetXmin()==UTILS_ETAMIN
441  && yaxis->GetXmax()==UTILS_PHIMAX && yaxis->GetXmin()==UTILS_PHIMIN) // ad hoc method for only drawing grids for eta-phi graphs; need to be more clever later?
442  {
443  for (int xx=int(xaxis->GetXmin());
444  xx<=int(xaxis->GetXmax()); ++xx)
445  {
446  if (xx<-42 || xx >= 42) continue;
447  vert = new TLine(xx+0.5,0.5,xx+0.5,72.5);
448  //if (xx%vertlinespace!=0) continue;
449  //TLine *vert = new TLine(xx,yaxis->GetXmin(),xx,yaxis->GetXmax());
450 
451  vert->SetLineStyle(3);
452  vert->Draw("same");
453  }
454  // Draw horizontal lines
455  for (int yy=int(yaxis->GetXmin()); yy<int(yaxis->GetXmax());++yy)
456  {
457  if (yy%4==0)
458  horiz = new TLine(-41.5,yy+0.5,41.5,yy+0.5);
459  else if (yy%2==0)
460  horiz = new TLine(-39.5,yy+0.5,39.5,yy+0.5);
461  else
462  horiz = new TLine(-20.5,yy+0.5,20.5,yy+0.5);
463  //if (yy%horizlinespace!=0) continue;
464  //TLine *horiz = new TLine(xaxis->GetXmin(),yy,xaxis->GetXmax(),yy);
465  horiz->SetLineStyle(3);
466  horiz->Draw("same");
467  }
468  } //if (xaxis->GetXmax()==44)
469  } // if (histtype=="TH2F")
470 
471  can->SaveAs(saveName.c_str());
472  delete can;
473  delete vert;
474  delete horiz;
475  delete xaxis;
476  delete yaxis;
477 
478  return outName;
479 } // std::string getAnyIMG(...)
int i
Definition: DBlmapReader.cc:9
#define UTILS_PHIMIN
Definition: HcalHistoUtils.h:6
#define NULL
Definition: scimark2.h:8
#define UTILS_ETAMIN
Definition: HcalHistoUtils.h:4
#define UTILS_ETAMAX
Definition: HcalHistoUtils.h:5
#define debug
Definition: HDRShower.cc:19
#define UTILS_PHIMAX
Definition: HcalHistoUtils.h:7
tuple cout
Definition: gather_cfg.py:121
tuple size
Write out results.
TH1F* getTH1F ( std::string  name,
std::string  process,
std::string  rootfolder,
DQMStore dbe_,
bool  verb,
bool  clone 
)
inline

Definition at line 57 of file HcalHistoUtils.h.

References gather_cfg::cout, DQMStore::get(), MonitorElement::getTH1F(), NULL, dbtoconf::out, and indexGen::title.

Referenced by HLTJetMETDQMSource::analyze(), TriggerValidator::beginRun(), HLTOfflineReproducibility::beginRun(), HLTMuonMatchAndPlot::book1D(), RPCMonitorRaw::bookHistograms(), MuonTrackValidator::bookHistograms(), FlavourHistograms< T >::divide(), DQMHcalIsoTrackPostProcessor::dqmEndJob(), TrackEfficiencyClient::dqmEndJob(), BeamMonitor::FitAndFill(), EDMtoMEConverter::getData(), FlavourHistograms< T >::getHistoVector(), HcalBaseDQClient::htmlOutput(), FlavourHistograms< T >::plot(), and recoBSVTagInfoValidationAnalyzer::recoBSVTagInfoValidationAnalyzer().

58 {
59 
60  if (!dbe_) return NULL;
61  std::stringstream title;
62  title <<process.c_str()<<rootfolder.c_str()<<"/"<<name.c_str();
63 
64  MonitorElement* me = dbe_->get(title.str().c_str()); // get Monitor Element named 'title'
65 
66  if (!me)
67  {
68  if (verb) std::cout <<"SORRY, COULD NOT FIND HISTOGRAM NAMED ["<< title.str().c_str()<<"]"<<std::endl;
69  return NULL; // ME not found
70  } // if (!me)
71 
72  if (verb)
73  std::cout << "Found '" << title.str().c_str() << "'" << std::endl;
74 
75  std::stringstream clonehisto;
76  if (clone)
77  {
78  clonehisto<<"ME "<<name.c_str();
79  TH1F *out = dynamic_cast<TH1F*>(me->getTH1F()->Clone(clonehisto.str().c_str()));
80  return out;
81  }
82  else return (me->getTH1F());
83 }
#define NULL
Definition: scimark2.h:8
MonitorElement * get(const std::string &path) const
get ME from full pathname (e.g. &quot;my/long/dir/my_histo&quot;)
Definition: DQMStore.cc:1725
tuple out
Definition: dbtoconf.py:99
TH1F * getTH1F(void) const
TEveGeoShape * clone(const TEveElement *element, TEveElement *parent)
Definition: eve_macros.cc:135
tuple cout
Definition: gather_cfg.py:121
tuple process
Definition: LaserDQM_cfg.py:3
TH2F* getTH2F ( std::string  name,
std::string  process,
std::string  rootfolder,
DQMStore dbe_,
bool  verb,
bool  clone 
)
inline

Definition at line 85 of file HcalHistoUtils.h.

References gather_cfg::cout, DQMStore::get(), MonitorElement::getTH2F(), NULL, dbtoconf::out, and indexGen::title.

Referenced by HLTOfflineReproducibility::beginRun(), HLTMuonMatchAndPlot::book2D(), MuonTrackValidator::bookHistograms(), FlavourHistograms2D< T, G >::divide(), L1TOccupancyClient::endLuminosityBlock(), L1TOccupancyClient::endRun(), EDMtoMEConverter::getData(), FlavourHistograms2D< T, G >::getHistoVector(), HcalBaseDQClient::htmlOutput(), and EtaPhiHists::setup().

86 {
87  if (!dbe_) return NULL;
88  std::stringstream title;
89  title <<process.c_str()<<rootfolder.c_str()<<"/"<<name.c_str();
90 
91  MonitorElement* me = dbe_->get(title.str().c_str()); // get Monitor Element named 'title'
92 
93  if (!me)
94  {
95  if (verb) std::cout <<"SORRY, COULD NOT FIND HISTOGRAM NAMED ["<< title.str().c_str()<<"]"<<std::endl;
96  return NULL; // ME not found
97  } // if (!me)
98 
99  if (verb)
100  std::cout << "Found '" << title.str().c_str() << "'" << std::endl;
101 
102  std::stringstream clonehisto;
103  if (clone)
104  {
105  clonehisto<<"ME "<<name.c_str();
106  TH2F *out = dynamic_cast<TH2F*>(me->getTH2F()->Clone(clonehisto.str().c_str()));
107  return out;
108  }
109  else return (me->getTH2F());
110 }
#define NULL
Definition: scimark2.h:8
MonitorElement * get(const std::string &path) const
get ME from full pathname (e.g. &quot;my/long/dir/my_histo&quot;)
Definition: DQMStore.cc:1725
tuple out
Definition: dbtoconf.py:99
TEveGeoShape * clone(const TEveElement *element, TEveElement *parent)
Definition: eve_macros.cc:135
tuple cout
Definition: gather_cfg.py:121
TH2F * getTH2F(void) const
tuple process
Definition: LaserDQM_cfg.py:3
TH3F* getTH3F ( std::string  name,
std::string  process,
std::string  rootfolder,
DQMStore dbe_,
bool  verb,
bool  clone 
)
inline

Definition at line 113 of file HcalHistoUtils.h.

References gather_cfg::cout, DQMStore::get(), MonitorElement::getTH3F(), NULL, dbtoconf::out, and indexGen::title.

Referenced by EDMtoMEConverter::getData().

114 {
115  if (!dbe_) return NULL;
116  std::stringstream title;
117  title <<process.c_str()<<rootfolder.c_str()<<"/"<<name.c_str();
118 
119  MonitorElement* me = dbe_->get(title.str().c_str()); // get Monitor Element named 'title'
120 
121  if (!me)
122  {
123  if (verb) std::cout <<"SORRY, COULD NOT FIND HISTOGRAM NAMED ["<< title.str().c_str()<<"]"<<std::endl;
124  return NULL; // ME not found
125  } // if (!me)
126 
127  if (verb)
128  std::cout << "Found '" << title.str().c_str() << "'" << std::endl;
129 
130  std::stringstream clonehisto;
131  if (clone)
132  {
133  clonehisto<<"ME "<<name.c_str();
134  TH3F *out = dynamic_cast<TH3F*>(me->getTH3F()->Clone(clonehisto.str().c_str()));
135  return out;
136  }
137  else return (me->getTH3F());
138 }
TH3F * getTH3F(void) const
#define NULL
Definition: scimark2.h:8
MonitorElement * get(const std::string &path) const
get ME from full pathname (e.g. &quot;my/long/dir/my_histo&quot;)
Definition: DQMStore.cc:1725
tuple out
Definition: dbtoconf.py:99
TEveGeoShape * clone(const TEveElement *element, TEveElement *parent)
Definition: eve_macros.cc:135
tuple cout
Definition: gather_cfg.py:121
tuple process
Definition: LaserDQM_cfg.py:3
TProfile* getTProfile ( std::string  name,
std::string  process,
std::string  rootfolder,
DQMStore dbe_,
bool  verb,
bool  clone 
)
inline

Definition at line 140 of file HcalHistoUtils.h.

References gather_cfg::cout, DQMStore::get(), MonitorElement::getTProfile(), NULL, dbtoconf::out, and indexGen::title.

Referenced by ESTrendTask::analyze(), SiStripDQMProfileToTkMapConverter::beginRun(), L1TRate::endLuminosityBlock(), EDMtoMEConverter::getData(), FlavourHistograms2D< T, G >::getProfileVector(), and HcalBaseDQClient::htmlOutput().

141 {
142  if (!dbe_) return NULL;
143  std::stringstream title;
144  title <<process.c_str()<<rootfolder.c_str()<<"/"<<name.c_str();
145 
146  MonitorElement* me = dbe_->get(title.str().c_str()); // get Monitor Element named 'title'
147 
148  if (!me)
149  {
150  if (verb) std::cout <<"SORRY, COULD NOT FIND HISTOGRAM NAMED ["<< title.str().c_str()<<"]"<<std::endl;
151  return NULL; // ME not found
152  } // if (!me)
153 
154  if (verb)
155  std::cout << "Found '" << title.str().c_str() << "'" << std::endl;
156 
157  std::stringstream clonehisto;
158  if (clone)
159  {
160  clonehisto<<"ME "<<name.c_str();
161  TProfile *out = dynamic_cast<TProfile*>(me->getTProfile()->Clone(clonehisto.str().c_str()));
162  return out;
163  }
164  else return (me->getTProfile());
165 }
#define NULL
Definition: scimark2.h:8
MonitorElement * get(const std::string &path) const
get ME from full pathname (e.g. &quot;my/long/dir/my_histo&quot;)
Definition: DQMStore.cc:1725
tuple out
Definition: dbtoconf.py:99
TEveGeoShape * clone(const TEveElement *element, TEveElement *parent)
Definition: eve_macros.cc:135
TProfile * getTProfile(void) const
tuple cout
Definition: gather_cfg.py:121
tuple process
Definition: LaserDQM_cfg.py:3
TProfile2D* getTProfile2D ( std::string  name,
std::string  process,
std::string  rootfolder,
DQMStore dbe_,
bool  verb,
bool  clone 
)
inline

Definition at line 167 of file HcalHistoUtils.h.

References gather_cfg::cout, DQMStore::get(), MonitorElement::getTProfile2D(), NULL, dbtoconf::out, and indexGen::title.

Referenced by TkHistoMap::add(), EDMtoMEConverter::getData(), TkHistoMap::getEntries(), TkHistoMap::getValue(), TkHistoMap::setBinContent(), and BuildTrackerMapPlugin::subtractMap().

168 {
169  if (!dbe_) return NULL;
170  std::stringstream title;
171  title <<process.c_str()<<rootfolder.c_str()<<"/"<<name.c_str();
172 
173  MonitorElement* me = dbe_->get(title.str().c_str()); // get Monitor Element named 'title'
174 
175  if (!me)
176  {
177  if (verb) std::cout <<"SORRY, COULD NOT FIND HISTOGRAM NAMED ["<< title.str().c_str()<<"]"<<std::endl;
178  return NULL; // ME not found
179  } // if (!me)
180 
181  if (verb)
182  std::cout << "Found '" << title.str().c_str() << "'" << std::endl;
183 
184  std::stringstream clonehisto;
185  if (clone)
186  {
187  clonehisto<<"ME "<<name.c_str();
188  TProfile2D *out = dynamic_cast<TProfile2D*>(me->getTProfile2D()->Clone(clonehisto.str().c_str()));
189  return out;
190  }
191  else return (me->getTProfile2D());
192 }
TProfile2D * getTProfile2D(void) const
#define NULL
Definition: scimark2.h:8
MonitorElement * get(const std::string &path) const
get ME from full pathname (e.g. &quot;my/long/dir/my_histo&quot;)
Definition: DQMStore.cc:1725
tuple out
Definition: dbtoconf.py:99
TEveGeoShape * clone(const TEveElement *element, TEveElement *parent)
Definition: eve_macros.cc:135
tuple cout
Definition: gather_cfg.py:121
tuple process
Definition: LaserDQM_cfg.py:3
template<class myHist >
void htmlAnyHisto ( int  runNo,
myHist *  hist,
const char *  xlab,
const char *  ylab,
int  width,
std::ofstream &  htmlFile,
std::string  htmlDir,
int  debug = 0 
)

Definition at line 486 of file HcalHistoUtils.h.

References debug, getAnyIMG(), create_public_lumi_plots::histtype, NULL, and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by HcalBaseDQClient::htmlOutput().

491 {
492 
493  /*
494  Generates html output from any kind of input histogram
495  */
496 
497  if(hist!=NULL)
498  {
499  std::string histtype=hist->ClassName();
500 
501  // Set 2D histogram default option to "colz"
502  if (histtype=="TH2F" && ((std::string)hist->GetOption())=="")
503  {
504  hist->SetOption("colz");
505  }
506 
507  // Form full-sized and thumbnail .gifs from histogram
508  //std::string imgNameTMB = "";
509  //std::string imgNameTMB = getAnyIMG(runNo,hist,1,htmlDir,xlab,ylab,debug);
510  //std::string imgName = "";
511  std::string imgName = getAnyIMG(runNo,hist,2,htmlDir,xlab,ylab,debug);
512 
513  // Add thumbnail image to html code, linked to full-sized image
514  if (imgName.size() != 0 )
515  {
516  // Always make width = 100% ?
517  //htmlFile << "<td align=\"center\"><a href=\"" << imgName << "\"><img src=\"" << imgName << "\" width = \"100%\"></a><br>"<<hist->GetName()<<"</td>" << std::endl;
518  htmlFile <<"<td align=\"center\"><a href=\"" <<imgName<<"\"><img src=\""<<imgName<<"\" width=600 height=360\"></a><br>"<<hist->GetName()<<"</td>"<<std::endl;
519 }
520  else
521  {
522  htmlFile << "<td align=\"center\"><img src=\"" << " " << "\"></td>" << std::endl;
523  }
524  } // (hist != NULL)
525 
526  else // if no image found, make a blank table entry (maybe improve on this later? -- write an error message?)
527  {
528  htmlFile<<"<td align=\"center\"><br><br> Histogram does not exist in ROOT file!<br>Diagnostic flag may be off.<br>(This may be normal in online running.)</td>"<<std::endl;
529  //htmlFile << "<td><img src=\"" << " " << "\"></td>" << std::endl;
530  }
531  return;
532 } //void htmlAnyHisto(...)
#define NULL
Definition: scimark2.h:8
#define debug
Definition: HDRShower.cc:19
std::string getAnyIMG(int runNo, myHist *hist, int size, std::string htmlDir, const char *xlab, const char *ylab, int debug)