#include <PFClient.h>
Public Member Functions | |
PFClient (const edm::ParameterSet ¶meterSet) | |
Private Member Functions | |
void | analyze (edm::Event const &, edm::EventSetup const &) |
void | beginJob () |
void | createEfficiencyPlots (std::string &folder, std::string &name) |
void | createResolutionPlots (std::string &folder, std::string &name) |
void | doEfficiency () |
void | doSummaries () |
void | endJob () |
void | endRun (edm::Run const &run, edm::EventSetup const &eSetup) |
void | getHistogramParameters (MonitorElement *me_slice, double &avarage, double &rms, double &mean, double &sigma) |
Private Attributes | |
DQMStore * | dqmStore_ |
std::vector< std::string > | effHistogramNames_ |
bool | efficiencyFlag_ |
std::vector< std::string > | folderNames_ |
std::vector< std::string > | histogramNames_ |
Definition at line 12 of file PFClient.h.
PFClient::PFClient | ( | const edm::ParameterSet & | parameterSet | ) |
Definition at line 16 of file PFClient.cc.
References effHistogramNames_, efficiencyFlag_, folderNames_, edm::ParameterSet::getParameter(), and histogramNames_.
{ folderNames_ = parameterSet.getParameter< std::vector<std::string> >( "FolderNames" ); histogramNames_ = parameterSet.getParameter< std::vector<std::string> >( "HistogramNames" ); efficiencyFlag_ = parameterSet.getParameter< bool> ("CreateEfficiencyPlots" ); effHistogramNames_ = parameterSet.getParameter< std::vector<std::string> >( "HistogramNamesForEfficiencyPlots" ); }
void PFClient::analyze | ( | edm::Event const & | , |
edm::EventSetup const & | |||
) | [inline, private, virtual] |
void PFClient::beginJob | ( | void | ) | [private, virtual] |
Reimplemented from edm::EDAnalyzer.
Definition at line 26 of file PFClient.cc.
References dqmStore_, and cmsCodeRules::cppFunctionSkipper::operator.
{ dqmStore_ = edm::Service<DQMStore>().operator->(); }
void PFClient::createEfficiencyPlots | ( | std::string & | folder, |
std::string & | name | ||
) | [private] |
Definition at line 158 of file PFClient.cc.
References DQMStore::book1D(), MonitorElement::DQM_KIND_TH1F, dqmStore_, postValidation_cfi::efficiency, DQMStore::get(), MonitorElement::getAxisTitle(), MonitorElement::getBinContent(), MonitorElement::getNbinsX(), MonitorElement::getTH1F(), MonitorElement::kind(), MonitorElement::Reset(), MonitorElement::setBinContent(), and DQMStore::setCurrentFolder().
Referenced by doEfficiency().
{ MonitorElement* me1 = dqmStore_->get(folder+"/"+name); MonitorElement* me2 = dqmStore_->get(folder+"/"+name+"ref_"); if (!me1 || !me2) return; MonitorElement* me_eff; if ( (me1->kind() == MonitorElement::DQM_KIND_TH1F) && (me1->kind() == MonitorElement::DQM_KIND_TH1F) ) { TH1* th1 = me1->getTH1F(); size_t nbinx = me1->getNbinsX(); float xmin = th1->GetXaxis()->GetXmin(); float xmax = th1->GetXaxis()->GetXmax(); std::string xtit = me1->getAxisTitle(1); std::string tit_new; tit_new = ";"+xtit+";Efficiency"; dqmStore_->setCurrentFolder(folder); me_eff = dqmStore_->book1D("efficiency_"+name,tit_new, nbinx, xmin, xmax); double efficiency; me_eff->Reset(); for (size_t ix = 1; ix < nbinx+1; ++ix) { float val1 = me1->getBinContent(ix); float val2 = me2->getBinContent(ix); if (val2 > 0.0) efficiency = val1/val2; else efficiency = 0; me_eff->setBinContent(ix,efficiency); } } }
void PFClient::createResolutionPlots | ( | std::string & | folder, |
std::string & | name | ||
) | [private] |
Definition at line 77 of file PFClient.cc.
References PDRates::average, DQMStore::book1D(), MonitorElement::DQM_KIND_TH2D, MonitorElement::DQM_KIND_TH2F, MonitorElement::DQM_KIND_TH2S, dqmStore_, DQMStore::get(), getHistogramParameters(), MonitorElement::getName(), MonitorElement::getNbinsX(), MonitorElement::getNbinsY(), MonitorElement::getTH2F(), MonitorElement::kind(), plotscripts::mean(), DQMStore::removeElement(), MonitorElement::Reset(), plotscripts::rms(), MonitorElement::setBinContent(), DQMStore::setCurrentFolder(), and fw3dlego::xbins.
Referenced by doSummaries().
{ MonitorElement* me = dqmStore_->get(folder+"/"+name); if (!me) return; MonitorElement* me_average; MonitorElement* me_rms; MonitorElement* me_mean; MonitorElement* me_sigma; if ( (me->kind() == MonitorElement::DQM_KIND_TH2F) || (me->kind() == MonitorElement::DQM_KIND_TH2S) || (me->kind() == MonitorElement::DQM_KIND_TH2D) ) { TH2* th = me->getTH2F(); size_t nbinx = me->getNbinsX(); size_t nbiny = me->getNbinsY(); float ymin = th->GetYaxis()->GetXmin(); float ymax = th->GetYaxis()->GetXmax(); std::string xtit = th->GetXaxis()->GetTitle(); std::string ytit = th->GetYaxis()->GetTitle(); float* xbins = new float[nbinx+1]; for (size_t ix = 1; ix < nbinx+1; ++ix) { xbins[ix-1] = th->GetBinLowEdge(ix); if (ix == nbinx) xbins[ix] = th->GetXaxis()->GetBinUpEdge(ix); } std::string tit_new; dqmStore_->setCurrentFolder(folder); MonitorElement* me_slice = dqmStore_->book1D("PFlowSlice","PFlowSlice",nbiny,ymin,ymax); tit_new = ";"+xtit+";Average_"+ytit; me_average = dqmStore_->book1D("average_"+name,tit_new, nbinx, xbins); tit_new = ";"+xtit+";RMS_"+ytit; me_rms = dqmStore_->book1D("rms_"+name,tit_new, nbinx, xbins); tit_new = ";"+xtit+";Mean_"+ytit; me_mean = dqmStore_->book1D("mean_"+name,tit_new, nbinx, xbins); tit_new = ";"+xtit+";Sigma_"+ytit; me_sigma = dqmStore_->book1D("sigma_"+name,tit_new, nbinx, xbins); double average, rms, mean, sigma; for (size_t ix = 1; ix < nbinx+1; ++ix) { me_slice->Reset(); for (size_t iy = 1; iy < nbiny+1; ++iy) { me_slice->setBinContent(iy,th->GetBinContent(ix,iy)); } getHistogramParameters(me_slice, average, rms, mean, sigma); me_average->setBinContent(ix,average); me_rms->setBinContent(ix,rms); me_mean->setBinContent(ix,mean); me_sigma->setBinContent(ix,sigma); } if (me_slice) dqmStore_->removeElement(me_slice->getName()); delete [] xbins; } }
void PFClient::doEfficiency | ( | ) | [private] |
Definition at line 62 of file PFClient.cc.
References createEfficiencyPlots(), effHistogramNames_, folderNames_, and path().
Referenced by endRun().
{ for (std::vector<std::string>::const_iterator ifolder = folderNames_.begin(); ifolder != folderNames_.end(); ifolder++) { std::string path = "ParticleFlow/"+(*ifolder); for (std::vector<std::string>::const_iterator ihist = effHistogramNames_.begin(); ihist != effHistogramNames_.end(); ihist++) { std::string hname = (*ihist); createEfficiencyPlots(path, hname); } } }
void PFClient::doSummaries | ( | ) | [private] |
Definition at line 46 of file PFClient.cc.
References createResolutionPlots(), folderNames_, histogramNames_, and path().
Referenced by endRun().
{ for (std::vector<std::string>::const_iterator ifolder = folderNames_.begin(); ifolder != folderNames_.end(); ifolder++) { std::string path = "ParticleFlow/"+(*ifolder); for (std::vector<std::string>::const_iterator ihist = histogramNames_.begin(); ihist != histogramNames_.end(); ihist++) { std::string hname = (*ihist); createResolutionPlots(path, hname); } } }
void PFClient::endJob | ( | void | ) | [private, virtual] |
void PFClient::endRun | ( | edm::Run const & | run, |
edm::EventSetup const & | eSetup | ||
) | [private, virtual] |
Reimplemented from edm::EDAnalyzer.
Definition at line 33 of file PFClient.cc.
References doEfficiency(), doSummaries(), and efficiencyFlag_.
{ doSummaries(); if (efficiencyFlag_) doEfficiency(); }
void PFClient::getHistogramParameters | ( | MonitorElement * | me_slice, |
double & | avarage, | ||
double & | rms, | ||
double & | mean, | ||
double & | sigma | ||
) | [private] |
Definition at line 133 of file PFClient.cc.
References MonitorElement::DQM_KIND_TH1F, MonitorElement::getMean(), MonitorElement::getRMS(), MonitorElement::getTH1F(), and MonitorElement::kind().
Referenced by createResolutionPlots().
{ average = 0.0; rms = 0.0; mean = 0.0; sigma = 0.0; if (!me_slice) return; if (me_slice->kind() == MonitorElement::DQM_KIND_TH1F) { average = me_slice->getMean(); rms = me_slice->getRMS(); TH1F* th_slice = me_slice->getTH1F(); if (th_slice && th_slice->GetEntries() > 0) { th_slice->Fit( "gaus","Q0"); TF1* gaus = th_slice->GetFunction( "gaus" ); if (gaus) { sigma = gaus->GetParameter(2); mean = gaus->GetParameter(1); } } } }
DQMStore* PFClient::dqmStore_ [private] |
Definition at line 35 of file PFClient.h.
Referenced by beginJob(), createEfficiencyPlots(), and createResolutionPlots().
std::vector<std::string> PFClient::effHistogramNames_ [private] |
Definition at line 32 of file PFClient.h.
Referenced by doEfficiency(), and PFClient().
bool PFClient::efficiencyFlag_ [private] |
Definition at line 33 of file PFClient.h.
Referenced by endRun(), and PFClient().
std::vector<std::string> PFClient::folderNames_ [private] |
Definition at line 30 of file PFClient.h.
Referenced by doEfficiency(), doSummaries(), and PFClient().
std::vector<std::string> PFClient::histogramNames_ [private] |
Definition at line 31 of file PFClient.h.
Referenced by doSummaries(), and PFClient().