CMS 3D CMS Logo

List of all members | Public Member Functions | Private Member Functions | Private Attributes
PFClient Class Reference

#include <PFClient.h>

Inheritance diagram for PFClient:
DQMEDHarvester edm::one::EDProducer< edm::Accumulator, edm::EndLuminosityBlockProducer, edm::EndRunProducer, edm::one::WatchLuminosityBlocks, edm::one::WatchRuns, edm::one::SharedResources > edm::one::EDProducerBase edm::ProducerBase edm::EDConsumerBase edm::ProductRegistryHelper

Public Member Functions

 PFClient (const edm::ParameterSet &parameterSet)
 
- Public Member Functions inherited from DQMEDHarvester
void accumulate (edm::Event const &ev, edm::EventSetup const &es) final
 
void beginLuminosityBlock (edm::LuminosityBlock const &, edm::EventSetup const &) final
 
void beginRun (edm::Run const &, edm::EventSetup const &) override
 
 DQMEDHarvester ()
 
virtual void dqmEndLuminosityBlock (DQMStore::IBooker &, DQMStore::IGetter &, edm::LuminosityBlock const &, edm::EventSetup const &)
 
void endJob () final
 
void endLuminosityBlock (edm::LuminosityBlock const &, edm::EventSetup const &) final
 
void endLuminosityBlockProduce (edm::LuminosityBlock &, edm::EventSetup const &) final
 
void endRun (edm::Run const &, edm::EventSetup const &) override
 
void endRunProduce (edm::Run &run, edm::EventSetup const &setup) override
 
 ~DQMEDHarvester () override=default
 
- Public Member Functions inherited from edm::one::EDProducer< edm::Accumulator, edm::EndLuminosityBlockProducer, edm::EndRunProducer, edm::one::WatchLuminosityBlocks, edm::one::WatchRuns, edm::one::SharedResources >
 EDProducer ()=default
 
SerialTaskQueueglobalLuminosityBlocksQueue () final
 
SerialTaskQueueglobalRunsQueue () final
 
bool hasAbilityToProduceInLumis () const final
 
bool hasAbilityToProduceInRuns () const final
 
bool wantsGlobalLuminosityBlocks () const final
 
bool wantsGlobalRuns () const final
 
- Public Member Functions inherited from edm::one::EDProducerBase
 EDProducerBase ()
 
ModuleDescription const & moduleDescription () const
 
bool wantsStreamLuminosityBlocks () const
 
bool wantsStreamRuns () const
 
 ~EDProducerBase () override
 
- Public Member Functions inherited from edm::ProducerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
std::vector< edm::ProductResolverIndex > const & indiciesForPutProducts (BranchType iBranchType) const
 
 ProducerBase ()
 
std::vector< edm::ProductResolverIndex > const & putTokenIndexToProductResolverIndex () const
 
void registerProducts (ProducerBase *, ProductRegistry *, ModuleDescription const &)
 
std::function< void(BranchDescription const &)> registrationCallback () const
 used by the fwk to register list of products More...
 
void resolvePutIndicies (BranchType iBranchType, ModuleToResolverIndicies const &iIndicies, std::string const &moduleLabel)
 
 ~ProducerBase () noexcept(false) override
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
void convertCurrentProcessAlias (std::string const &processName)
 Convert "@currentProcess" in InputTag process names to the actual current process name. More...
 
 EDConsumerBase ()
 
 EDConsumerBase (EDConsumerBase const &)=delete
 
 EDConsumerBase (EDConsumerBase &&)=default
 
ProductResolverIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductResolverIndexAndSkipBit > &) const
 
std::vector< ProductResolverIndexAndSkipBit > const & itemsToGetFrom (BranchType iType) const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
EDConsumerBase const & operator= (EDConsumerBase const &)=delete
 
EDConsumerBaseoperator= (EDConsumerBase &&)=default
 
bool registeredToConsume (ProductResolverIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
ProductResolverIndexAndSkipBit uncheckedIndexFrom (EDGetToken) const
 
void updateLookup (BranchType iBranchType, ProductResolverIndexHelper const &, bool iPrefetchMayGet)
 
virtual ~EDConsumerBase () noexcept(false)
 

Private Member Functions

void createEfficiencyPlots (DQMStore::IBooker &, DQMStore::IGetter &, std::string &folder, std::string &name)
 
void createProfilePlots (DQMStore::IBooker &, DQMStore::IGetter &, std::string &folder, std::string &name)
 
void createProjectionPlots (DQMStore::IBooker &, DQMStore::IGetter &, std::string &folder, std::string &name)
 
void createResolutionPlots (DQMStore::IBooker &, DQMStore::IGetter &, std::string &folder, std::string &name)
 
void doEfficiency (DQMStore::IBooker &, DQMStore::IGetter &)
 
void doProfiles (DQMStore::IBooker &, DQMStore::IGetter &)
 
void doProjection (DQMStore::IBooker &, DQMStore::IGetter &)
 
void doSummaries (DQMStore::IBooker &, DQMStore::IGetter &)
 
void dqmEndJob (DQMStore::IBooker &, DQMStore::IGetter &) override
 
void getHistogramParameters (MonitorElement *me_slice, double &avarage, double &rms, double &mean, double &sigma)
 

Private Attributes

std::vector< std::string > effHistogramNames_
 
bool efficiencyFlag_
 
std::vector< std::string > folderNames_
 
std::vector< std::string > histogramNames_
 
bool profileFlag_
 
std::vector< std::string > profileHistogramNames_
 
std::vector< std::string > projectionHistogramNames_
 

Additional Inherited Members

- Public Types inherited from edm::one::EDProducerBase
typedef EDProducerBase ModuleType
 
- Public Types inherited from edm::ProducerBase
using ModuleToResolverIndicies = std::unordered_multimap< std::string, std::tuple< edm::TypeID const *, const char *, edm::ProductResolverIndex >>
 
typedef ProductRegistryHelper::TypeLabelList TypeLabelList
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- Static Public Member Functions inherited from edm::one::EDProducerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 
- Protected Member Functions inherited from edm::EDConsumerBase
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > consumes (edm::InputTag const &tag)
 
EDGetToken consumes (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken consumes (TypeToGet const &id, edm::InputTag const &tag)
 
ConsumesCollector consumesCollector ()
 Use a ConsumesCollector to gather consumes information from helper functions. More...
 
template<typename ProductType , BranchType B = InEvent>
void consumesMany ()
 
void consumesMany (const TypeToGet &id)
 
template<BranchType B>
void consumesMany (const TypeToGet &id)
 
template<typename ProductType , BranchType B = InEvent>
EDGetTokenT< ProductType > mayConsume (edm::InputTag const &tag)
 
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
template<BranchType B>
EDGetToken mayConsume (const TypeToGet &id, edm::InputTag const &tag)
 
- Protected Attributes inherited from DQMEDHarvester
edm::EDPutTokenT< DQMTokenlumiToken_
 
edm::EDPutTokenT< DQMTokenrunToken_
 

Detailed Description

Definition at line 13 of file PFClient.h.

Constructor & Destructor Documentation

PFClient::PFClient ( const edm::ParameterSet parameterSet)

Definition at line 17 of file PFClient.cc.

References effHistogramNames_, efficiencyFlag_, folderNames_, edm::ParameterSet::getParameter(), histogramNames_, profileFlag_, profileHistogramNames_, and projectionHistogramNames_.

18 {
19  folderNames_ = parameterSet.getParameter< std::vector<std::string> >( "FolderNames" );
20  histogramNames_ = parameterSet.getParameter< std::vector<std::string> >( "HistogramNames" );
21  efficiencyFlag_ = parameterSet.getParameter< bool> ("CreateEfficiencyPlots" );
22  effHistogramNames_ = parameterSet.getParameter< std::vector<std::string> >( "HistogramNamesForEfficiencyPlots" );
23  projectionHistogramNames_ = parameterSet.getParameter< std::vector<std::string> >( "HistogramNamesForProjectionPlots" );
24  profileFlag_ = parameterSet.getParameter< bool> ("CreateProfilePlots" );
25  profileHistogramNames_ = parameterSet.getParameter< std::vector<std::string> >( "HistogramNamesForProfilePlots" );
26 }
T getParameter(std::string const &) const
std::vector< std::string > projectionHistogramNames_
Definition: PFClient.h:36
std::vector< std::string > histogramNames_
Definition: PFClient.h:34
std::vector< std::string > profileHistogramNames_
Definition: PFClient.h:37
std::vector< std::string > folderNames_
Definition: PFClient.h:33
bool profileFlag_
Definition: PFClient.h:39
std::vector< std::string > effHistogramNames_
Definition: PFClient.h:35
bool efficiencyFlag_
Definition: PFClient.h:38

Member Function Documentation

void PFClient::createEfficiencyPlots ( DQMStore::IBooker ibooker,
DQMStore::IGetter igetter,
std::string &  folder,
std::string &  name 
)
private

Definition at line 307 of file PFClient.cc.

References DQMStore::IBooker::book1D(), DEFINE_FWK_MODULE, MonitorElement::DQM_KIND_TH1F, DQMStore::IGetter::get(), MonitorElement::getAxisTitle(), MonitorElement::getTH1F(), MonitorElement::kind(), MonitorElement::Reset(), DQMStore::IBooker::setCurrentFolder(), MonitorElement::setEfficiencyFlag(), AlCaHLTBitMon_QueryRunRegistry::string, TrackerOfflineValidation_Dqm_cff::xmax, and TrackerOfflineValidation_Dqm_cff::xmin.

Referenced by doEfficiency().

307  {
308  MonitorElement* me1 = igetter.get(folder+"/"+name+"ref_");
309  MonitorElement* me2 = igetter.get(folder+"/"+name+"gen_");
310  if (!me1 || !me2) return;
311 
312  TH1F* me1_forEff = (TH1F*)me1->getTH1F()->Rebin(2,"me1_forEff");
313  TH1F* me2_forEff = (TH1F*)me2->getTH1F()->Rebin(2,"me2_forEff");
314 
315  MonitorElement* me_eff;
316  if ( (me1->kind() == MonitorElement::DQM_KIND_TH1F) &&
317  (me1->kind() == MonitorElement::DQM_KIND_TH1F) ) {
318  //TH1* th1 = me1->getTH1F();
319  //size_t nbinx = me1->getNbinsX();
320  size_t nbinx = me1_forEff->GetNbinsX();
321 
322  //float xmin = th1->GetXaxis()->GetXmin();
323  //float xmax = th1->GetXaxis()->GetXmax();
324  float xmin = me1_forEff->GetXaxis()->GetXmin();
325  float xmax = me1_forEff->GetXaxis()->GetXmax();
326  std::string xtit = me1->getAxisTitle(1);
327  std::string tit_new;
328  tit_new = ";"+xtit+";"+xtit+" efficiency";
329 
330  ibooker.setCurrentFolder(folder);
331  me_eff = ibooker.book1D("efficiency_"+name,tit_new, nbinx, xmin, xmax);
332 
333  me_eff->Reset(); me_eff->setEfficiencyFlag();
334  /*
335  double efficiency;
336  for (size_t ix = 1; ix < nbinx+1; ++ix) {
337  float val1 = me1->getBinContent(ix);
338  float val2 = me2->getBinContent(ix);
339  if (val2 > 0.0) efficiency = val1/val2;
340  else efficiency = 0;
341  me_eff->setBinContent(ix,efficiency);
342  }
343  */
344  // Binomial errors "B" asked by Florian
345  /*me1_forEff->Sumw2(); me2_forEff->Sumw2();*/ me_eff->getTH1F()->Sumw2();
346  me_eff->getTH1F()->Divide( me1_forEff, me2_forEff, 1, 1, "B");
347  }
348 }
TH1F * getTH1F() const
MonitorElement * get(const std::string &path)
Definition: DQMStore.cc:302
std::string getAxisTitle(int axis=1) const
get x-, y- or z-axis title (axis=1, 2, 3 respectively)
void setEfficiencyFlag()
MonitorElement * book1D(Args &&...args)
Definition: DQMStore.h:118
void Reset()
reset ME (ie. contents, errors, etc)
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:274
Kind kind() const
Get the type of the monitor element.
void PFClient::createProfilePlots ( DQMStore::IBooker ibooker,
DQMStore::IGetter igetter,
std::string &  folder,
std::string &  name 
)
private

Definition at line 225 of file PFClient.cc.

References DQMStore::IBooker::bookProfile(), MonitorElement::DQM_KIND_TH2D, MonitorElement::DQM_KIND_TH2F, MonitorElement::DQM_KIND_TH2S, DQMStore::IGetter::get(), MonitorElement::getNbinsX(), MonitorElement::getTH2F(), MonitorElement::getTProfile(), mps_fire::i, MonitorElement::kind(), trackingPlots::profileX, MonitorElement::setBinContent(), MonitorElement::setBinEntries(), DQMStore::IBooker::setCurrentFolder(), MonitorElement::setEntries(), AlCaHLTBitMon_QueryRunRegistry::string, fw3dlego::xbins, Phase2TrackerMonitorDigi_cff::ymax, and Phase2TrackerMonitorDigi_cff::ymin.

Referenced by doProfiles().

225  {
226  MonitorElement* me = igetter.get(folder+"/"+name);
227  if (!me) return;
228 
229  if ( (me->kind() == MonitorElement::DQM_KIND_TH2F) ||
230  (me->kind() == MonitorElement::DQM_KIND_TH2S) ||
231  (me->kind() == MonitorElement::DQM_KIND_TH2D) ) {
232  TH2* th = me->getTH2F();
233  size_t nbinx = me->getNbinsX();
234 
235  float ymin = th->GetYaxis()->GetXmin();
236  float ymax = th->GetYaxis()->GetXmax();
237  std::string xtit = th->GetXaxis()->GetTitle();
238  std::string ytit = th->GetYaxis()->GetTitle();
239  double* xbins = new double[nbinx+1];
240  for (size_t ix = 1; ix < nbinx+1; ++ix) {
241  xbins[ix-1] = th->GetXaxis()->GetBinLowEdge(ix);
242  if (ix == nbinx) xbins[ix] = th->GetXaxis()->GetBinUpEdge(ix);
243  }
244 
245  std::string tit_new;
246  ibooker.setCurrentFolder(folder);
247  //TProfiles
248  MonitorElement* me_profile[2];
249  me_profile[0] = ibooker.bookProfile("profile_"+name, tit_new,
250  nbinx, xbins, ymin, ymax, "" );
251  me_profile[1] = ibooker.bookProfile("profileRMS_"+name, tit_new,
252  nbinx, xbins, ymin, ymax, "s" );
253  TProfile* profileX = th->ProfileX();
254  //size_t nbiny = me->getNbinsY();
255  //TProfile* profileX = th->ProfileX("",0,nbiny+1); add underflow and overflow
256  static const Int_t NUM_STAT = 7;
257  Double_t stats[NUM_STAT] = {0}; th->GetStats(stats);
258 
259  for (Int_t i = 0; i<2; i++) {
260  if (me_profile[i]) {
261  for (size_t ix = 0; ix <= nbinx+1; ++ix) {
262  me_profile[i]->setBinContent( ix, profileX->GetBinContent(ix)*profileX->GetBinEntries(ix) ) ;
263  //me_profile[i]->Fill( profileX->GetBinCenter(ix), profileX->GetBinContent(ix)*profileX->GetBinEntries(ix) ) ;
264  me_profile[i]->setBinEntries( ix, profileX->GetBinEntries(ix) );
265  me_profile[i]->getTProfile()->GetSumw2()->fArray[ix] = profileX->GetSumw2()->fArray[ix];
266  //me_profile[i]->getTProfile()->GetBinSumw2()->fArray[ix] = profileX->GetBinSumw2()->fArray[ix]; // segmentation violation
267  }
268  }
269  me_profile[i]->getTProfile()->PutStats(stats);
270  me_profile[i]->setEntries( profileX->GetEntries() ) ;
271  }
272 
273  delete [] xbins;
274  }
275 }
TProfile * getTProfile() const
void setBinContent(int binx, double content)
set content of bin (1-D)
const double xbins[]
MonitorElement * bookProfile(Args &&...args)
Definition: DQMStore.h:160
MonitorElement * get(const std::string &path)
Definition: DQMStore.cc:302
void setEntries(double nentries)
set # of entries
TH2F * getTH2F() const
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:274
int getNbinsX() const
get # of bins in X-axis
void setBinEntries(int bin, double nentries)
set # of bin entries (to be used for profiles)
Kind kind() const
Get the type of the monitor element.
void PFClient::createProjectionPlots ( DQMStore::IBooker ibooker,
DQMStore::IGetter igetter,
std::string &  folder,
std::string &  name 
)
private

Definition at line 178 of file PFClient.cc.

References DQMStore::IBooker::book1D(), MonitorElement::DQM_KIND_TH2D, MonitorElement::DQM_KIND_TH2F, MonitorElement::DQM_KIND_TH2S, DQMStore::IGetter::get(), MonitorElement::getEntries(), MonitorElement::getNbinsX(), MonitorElement::getNbinsY(), MonitorElement::getTH2F(), MonitorElement::kind(), MonitorElement::setBinContent(), DQMStore::IBooker::setCurrentFolder(), MonitorElement::setEntries(), AlCaHLTBitMon_QueryRunRegistry::string, fw3dlego::xbins, Phase2TrackerMonitorDigi_cff::ymax, and Phase2TrackerMonitorDigi_cff::ymin.

Referenced by doProjection().

178  {
179  MonitorElement* me = igetter.get(folder+"/"+name);
180  if (!me) return;
181 
182  MonitorElement* projection = nullptr;
183 
184  if ( (me->kind() == MonitorElement::DQM_KIND_TH2F) ||
185  (me->kind() == MonitorElement::DQM_KIND_TH2S) ||
186  (me->kind() == MonitorElement::DQM_KIND_TH2D) ) {
187  TH2* th = me->getTH2F();
188  size_t nbinx = me->getNbinsX();
189  size_t nbiny = me->getNbinsY();
190 
191  float ymin = th->GetYaxis()->GetXmin();
192  float ymax = th->GetYaxis()->GetXmax();
193  std::string xtit = th->GetXaxis()->GetTitle();
194  std::string ytit = th->GetYaxis()->GetTitle();
195  float* xbins = new float[nbinx+1];
196  for (size_t ix = 1; ix < nbinx+1; ++ix) {
197  xbins[ix-1] = th->GetXaxis()->GetBinLowEdge(ix);
198  if (ix == nbinx) xbins[ix] = th->GetXaxis()->GetBinUpEdge(ix);
199  }
200 
201  std::string tit_new;
202  ibooker.setCurrentFolder(folder);
203 
204  if (folder == "ParticleFlow/PFElectronValidation/CompWithGenElectron") {
205  if (name == "delta_et_Over_et_VS_et_") projection = ibooker.book1D("delta_et_Over_et","E_{T} resolution;#DeltaE_{T}/E_{T}",nbiny,ymin,ymax) ;
206  if (name == "delta_et_VS_et_") projection = ibooker.book1D("delta_et_","#DeltaE_{T};#DeltaE_{T}",nbiny,ymin,ymax) ;
207  if (name == "delta_eta_VS_et_") projection = ibooker.book1D("delta_eta_","#Delta#eta;#Delta#eta",nbiny,ymin,ymax) ;
208  if (name == "delta_phi_VS_et_") projection = ibooker.book1D("delta_phi_","#Delta#phi;#Delta#phi",nbiny,ymin,ymax) ;
209  }
210 
211  if (projection) {
212  for (size_t iy = 1; iy < nbiny+1; ++iy) {
213  projection->setBinContent(iy, th->ProjectionY("e")->GetBinContent(iy) ); }
214  projection->setEntries( me->getEntries() ) ;
215  }
216 
217  delete [] xbins;
218  }
219 }
void setBinContent(int binx, double content)
set content of bin (1-D)
const double xbins[]
MonitorElement * get(const std::string &path)
Definition: DQMStore.cc:302
MonitorElement * book1D(Args &&...args)
Definition: DQMStore.h:118
void setEntries(double nentries)
set # of entries
TH2F * getTH2F() const
double getEntries() const
get # of entries
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:274
int getNbinsY() const
get # of bins in Y-axis
int getNbinsX() const
get # of bins in X-axis
Kind kind() const
Get the type of the monitor element.
void PFClient::createResolutionPlots ( DQMStore::IBooker ibooker,
DQMStore::IGetter igetter,
std::string &  folder,
std::string &  name 
)
private

Definition at line 113 of file PFClient.cc.

References DQMStore::IBooker::book1D(), MonitorElement::DQM_KIND_TH2D, MonitorElement::DQM_KIND_TH2F, MonitorElement::DQM_KIND_TH2S, DQMStore::IGetter::get(), getHistogramParameters(), MonitorElement::getName(), MonitorElement::getNbinsX(), MonitorElement::getNbinsY(), MonitorElement::getTH2F(), MonitorElement::kind(), SiStripPI::mean, DQMStore::IGetter::removeElement(), MonitorElement::Reset(), SiStripPI::rms, MonitorElement::setBinContent(), DQMStore::IBooker::setCurrentFolder(), MonitorElement::setEfficiencyFlag(), AlCaHLTBitMon_QueryRunRegistry::string, fw3dlego::xbins, Phase2TrackerMonitorDigi_cff::ymax, and Phase2TrackerMonitorDigi_cff::ymin.

Referenced by doSummaries().

113  {
114  MonitorElement* me = igetter.get(folder+"/"+name);
115 
116  if (!me) return;
117 
118  MonitorElement* me_average;
119  MonitorElement* me_rms;
120  MonitorElement* me_mean;
121  MonitorElement* me_sigma;
122 
123  if ( (me->kind() == MonitorElement::DQM_KIND_TH2F) ||
124  (me->kind() == MonitorElement::DQM_KIND_TH2S) ||
125  (me->kind() == MonitorElement::DQM_KIND_TH2D) ) {
126  TH2* th = me->getTH2F();
127  size_t nbinx = me->getNbinsX();
128  size_t nbiny = me->getNbinsY();
129 
130  float ymin = th->GetYaxis()->GetXmin();
131  float ymax = th->GetYaxis()->GetXmax();
132  std::string xtit = th->GetXaxis()->GetTitle();
133  std::string ytit = th->GetYaxis()->GetTitle();
134  float* xbins = new float[nbinx+1];
135  for (size_t ix = 1; ix < nbinx+1; ++ix) {
136  xbins[ix-1] = th->GetXaxis()->GetBinLowEdge(ix);
137  if (ix == nbinx) xbins[ix] = th->GetXaxis()->GetBinUpEdge(ix);
138  }
139  std::string tit_new = ";"+xtit+";"+ytit;
140  ibooker.setCurrentFolder(folder);
141  MonitorElement* me_slice = ibooker.book1D("PFlowSlice","PFlowSlice",nbiny,ymin,ymax);
142 
143  tit_new = ";"+xtit+";Average_"+ytit;
144  me_average = ibooker.book1D("average_"+name,tit_new, nbinx, xbins);
145  me_average->setEfficiencyFlag();
146  tit_new = ";"+xtit+";RMS_"+ytit;
147  me_rms = ibooker.book1D("rms_"+name,tit_new, nbinx, xbins);
148  me_rms->setEfficiencyFlag();
149  tit_new = ";"+xtit+";Mean_"+ytit;
150  me_mean = ibooker.book1D("mean_"+name,tit_new, nbinx, xbins);
151  me_mean->setEfficiencyFlag();
152  tit_new = ";"+xtit+";Sigma_"+ytit;
153  me_sigma = ibooker.book1D("sigma_"+name,tit_new, nbinx, xbins);
154  me_sigma->setEfficiencyFlag();
155 
156  double average, rms, mean, sigma;
157 
158  for (size_t ix = 1; ix < nbinx+1; ++ix) {
159  me_slice->Reset();
160  for (size_t iy = 1; iy < nbiny+1; ++iy) {
161  me_slice->setBinContent(iy,th->GetBinContent(ix,iy));
162  }
163  getHistogramParameters(me_slice, average, rms, mean, sigma);
164  me_average->setBinContent(ix,average);
165  me_rms->setBinContent(ix,rms);
166  me_mean->setBinContent(ix,mean);
167  me_sigma->setBinContent(ix,sigma);
168  }
169  if (me_slice) igetter.removeElement(me_slice->getName()); //?
170  delete [] xbins;
171  }
172 }
void setBinContent(int binx, double content)
set content of bin (1-D)
const double xbins[]
MonitorElement * get(const std::string &path)
Definition: DQMStore.cc:302
const std::string & getName() const
get name of ME
void setEfficiencyFlag()
MonitorElement * book1D(Args &&...args)
Definition: DQMStore.h:118
void Reset()
reset ME (ie. contents, errors, etc)
TH2F * getTH2F() const
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:274
int getNbinsY() const
get # of bins in Y-axis
int getNbinsX() const
get # of bins in X-axis
void removeElement(Args &&...args)
Definition: DQMStore.h:310
Kind kind() const
Get the type of the monitor element.
void getHistogramParameters(MonitorElement *me_slice, double &avarage, double &rms, double &mean, double &sigma)
Definition: PFClient.cc:281
void PFClient::doEfficiency ( DQMStore::IBooker ibooker,
DQMStore::IGetter igetter 
)
private

Definition at line 96 of file PFClient.cc.

References createEfficiencyPlots(), effHistogramNames_, folderNames_, callgraph::path, and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by dqmEndJob().

96  {
97  for (std::vector<std::string>::const_iterator ifolder = folderNames_.begin();
98  ifolder != folderNames_.end(); ifolder++) {
99  std::string path = "ParticleFlow/"+(*ifolder);
100 
101  for (std::vector<std::string>::const_iterator ihist = effHistogramNames_.begin();
102  ihist != effHistogramNames_.end(); ihist++) {
103  std::string hname = (*ihist);
104  createEfficiencyPlots(ibooker, igetter, path, hname);
105  }
106  }
107 }
void createEfficiencyPlots(DQMStore::IBooker &, DQMStore::IGetter &, std::string &folder, std::string &name)
Definition: PFClient.cc:307
std::vector< std::string > folderNames_
Definition: PFClient.h:33
std::vector< std::string > effHistogramNames_
Definition: PFClient.h:35
void PFClient::doProfiles ( DQMStore::IBooker ibooker,
DQMStore::IGetter igetter 
)
private

Definition at line 78 of file PFClient.cc.

References createProfilePlots(), folderNames_, callgraph::path, profileHistogramNames_, and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by dqmEndJob().

78  {
79 
80  for (std::vector<std::string>::const_iterator ifolder = folderNames_.begin();
81  ifolder != folderNames_.end(); ifolder++) {
82  std::string path = "ParticleFlow/"+(*ifolder);
83 
84  for (std::vector<std::string>::const_iterator ihist = profileHistogramNames_.begin();
85  ihist != profileHistogramNames_.end(); ihist++) {
86  std::string hname = (*ihist);
87  createProfilePlots(ibooker, igetter, path, hname);
88  }
89  }
90 }
std::vector< std::string > profileHistogramNames_
Definition: PFClient.h:37
void createProfilePlots(DQMStore::IBooker &, DQMStore::IGetter &, std::string &folder, std::string &name)
Definition: PFClient.cc:225
std::vector< std::string > folderNames_
Definition: PFClient.h:33
void PFClient::doProjection ( DQMStore::IBooker ibooker,
DQMStore::IGetter igetter 
)
private

Definition at line 60 of file PFClient.cc.

References createProjectionPlots(), folderNames_, callgraph::path, projectionHistogramNames_, and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by dqmEndJob().

60  {
61 
62  for (std::vector<std::string>::const_iterator ifolder = folderNames_.begin();
63  ifolder != folderNames_.end(); ifolder++) {
64  std::string path = "ParticleFlow/"+(*ifolder);
65 
66  for (std::vector<std::string>::const_iterator ihist = projectionHistogramNames_.begin();
67  ihist != projectionHistogramNames_.end(); ihist++) {
68  std::string hname = (*ihist);
69  createProjectionPlots(ibooker, igetter, path, hname);
70  }
71  }
72 }
std::vector< std::string > projectionHistogramNames_
Definition: PFClient.h:36
std::vector< std::string > folderNames_
Definition: PFClient.h:33
void createProjectionPlots(DQMStore::IBooker &, DQMStore::IGetter &, std::string &folder, std::string &name)
Definition: PFClient.cc:178
void PFClient::doSummaries ( DQMStore::IBooker ibooker,
DQMStore::IGetter igetter 
)
private

Definition at line 44 of file PFClient.cc.

References createResolutionPlots(), folderNames_, histogramNames_, callgraph::path, and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by dqmEndJob().

44  {
45 
46  for (std::vector<std::string>::const_iterator ifolder = folderNames_.begin(); ifolder != folderNames_.end(); ifolder++) {
47  std::string path = "ParticleFlow/"+(*ifolder);
48 
49  for (std::vector<std::string>::const_iterator ihist = histogramNames_.begin(); ihist != histogramNames_.end(); ihist++) {
50  std::string hname = (*ihist);
51  createResolutionPlots(ibooker, igetter, path, hname);
52  }
53  }
54 }
void createResolutionPlots(DQMStore::IBooker &, DQMStore::IGetter &, std::string &folder, std::string &name)
Definition: PFClient.cc:113
std::vector< std::string > histogramNames_
Definition: PFClient.h:34
std::vector< std::string > folderNames_
Definition: PFClient.h:33
void PFClient::dqmEndJob ( DQMStore::IBooker ibooker,
DQMStore::IGetter igetter 
)
overrideprivatevirtual

Implements DQMEDHarvester.

Definition at line 32 of file PFClient.cc.

References doEfficiency(), doProfiles(), doProjection(), doSummaries(), efficiencyFlag_, and profileFlag_.

33 {
34  doSummaries(ibooker, igetter);
35  doProjection(ibooker, igetter);
36  if (efficiencyFlag_) doEfficiency(ibooker, igetter);
37  if (profileFlag_) doProfiles(ibooker, igetter);
38 }
void doProjection(DQMStore::IBooker &, DQMStore::IGetter &)
Definition: PFClient.cc:60
void doSummaries(DQMStore::IBooker &, DQMStore::IGetter &)
Definition: PFClient.cc:44
void doEfficiency(DQMStore::IBooker &, DQMStore::IGetter &)
Definition: PFClient.cc:96
bool profileFlag_
Definition: PFClient.h:39
void doProfiles(DQMStore::IBooker &, DQMStore::IGetter &)
Definition: PFClient.cc:78
bool efficiencyFlag_
Definition: PFClient.h:38
void PFClient::getHistogramParameters ( MonitorElement me_slice,
double &  avarage,
double &  rms,
double &  mean,
double &  sigma 
)
private

Definition at line 281 of file PFClient.cc.

References MonitorElement::DQM_KIND_TH1F, MonitorElement::getMean(), MonitorElement::getRMS(), MonitorElement::getTH1F(), and MonitorElement::kind().

Referenced by createResolutionPlots().

282  {
283  average = 0.0;
284  rms = 0.0;
285  mean = 0.0;
286  sigma = 0.0;
287 
288  if (!me_slice) return;
289  if (me_slice->kind() == MonitorElement::DQM_KIND_TH1F) {
290  average = me_slice->getMean();
291  rms = me_slice->getRMS();
292  TH1F* th_slice = me_slice->getTH1F();
293  if (th_slice && th_slice->GetEntries() > 0) {
294  //need our own copy for thread safety
295  TF1 gaus("mygaus","gaus");
296  th_slice->Fit( &gaus,"Q0");
297  sigma = gaus.GetParameter(2);
298  mean = gaus.GetParameter(1);
299  }
300  }
301 }
TH1F * getTH1F() const
double getMean(int axis=1) const
get mean value of histogram along x, y or z axis (axis=1, 2, 3 respectively)
double getRMS(int axis=1) const
get RMS of histogram along x, y or z axis (axis=1, 2, 3 respectively)
Kind kind() const
Get the type of the monitor element.

Member Data Documentation

std::vector<std::string> PFClient::effHistogramNames_
private

Definition at line 35 of file PFClient.h.

Referenced by doEfficiency(), and PFClient().

bool PFClient::efficiencyFlag_
private

Definition at line 38 of file PFClient.h.

Referenced by dqmEndJob(), and PFClient().

std::vector<std::string> PFClient::folderNames_
private

Definition at line 33 of file PFClient.h.

Referenced by doEfficiency(), doProfiles(), doProjection(), doSummaries(), and PFClient().

std::vector<std::string> PFClient::histogramNames_
private

Definition at line 34 of file PFClient.h.

Referenced by doSummaries(), and PFClient().

bool PFClient::profileFlag_
private

Definition at line 39 of file PFClient.h.

Referenced by dqmEndJob(), and PFClient().

std::vector<std::string> PFClient::profileHistogramNames_
private

Definition at line 37 of file PFClient.h.

Referenced by doProfiles(), and PFClient().

std::vector<std::string> PFClient::projectionHistogramNames_
private

Definition at line 36 of file PFClient.h.

Referenced by doProjection(), and PFClient().