CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Static Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes
FastTimerServiceClient Class Reference
Inheritance diagram for FastTimerServiceClient:
DQMEDHarvester edm::one::EDAnalyzer< edm::one::WatchRuns, edm::one::WatchLuminosityBlocks, edm::one::SharedResources > edm::one::EDAnalyzerBase edm::EDConsumerBase

Public Member Functions

 FastTimerServiceClient (edm::ParameterSet const &)
 
 ~FastTimerServiceClient ()
 
- Public Member Functions inherited from DQMEDHarvester
virtual void analyze (edm::Event const &, edm::EventSetup const &) final
 
virtual void beginLuminosityBlock (edm::LuminosityBlock const &, edm::EventSetup const &) final
 
virtual void beginRun (edm::Run const &, edm::EventSetup const &)
 
 DQMEDHarvester (void)
 
virtual void endJob () final
 
virtual void endLuminosityBlock (edm::LuminosityBlock const &, edm::EventSetup const &) final
 
virtual void endRun (edm::Run const &, edm::EventSetup const &)
 
- Public Member Functions inherited from edm::one::EDAnalyzer< edm::one::WatchRuns, edm::one::WatchLuminosityBlocks, edm::one::SharedResources >
 EDAnalyzer ()=default
 
- Public Member Functions inherited from edm::one::EDAnalyzerBase
void callWhenNewProductsRegistered (std::function< void(BranchDescription const &)> const &func)
 
 EDAnalyzerBase ()
 
ModuleDescription const & moduleDescription () const
 
virtual ~EDAnalyzerBase ()
 
- Public Member Functions inherited from edm::EDConsumerBase
std::vector< ConsumesInfoconsumesInfo () const
 
 EDConsumerBase ()
 
ProductHolderIndexAndSkipBit indexFrom (EDGetToken, BranchType, TypeID const &) const
 
void itemsMayGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
void itemsToGet (BranchType, std::vector< ProductHolderIndexAndSkipBit > &) const
 
std::vector
< ProductHolderIndexAndSkipBit >
const & 
itemsToGetFromEvent () const
 
void labelsForToken (EDGetToken iToken, Labels &oLabels) const
 
void modulesDependentUpon (std::string const &iProcessName, std::string const &iModuleLabel, bool iPrint, std::vector< char const * > &oModuleLabels) const
 
void modulesWhoseProductsAreConsumed (std::vector< ModuleDescription const * > &modules, ProductRegistry const &preg, std::map< std::string, ModuleDescription const * > const &labelsToDesc, std::string const &processName) const
 
bool registeredToConsume (ProductHolderIndex, bool, BranchType) const
 
bool registeredToConsumeMany (TypeID const &, BranchType) const
 
void updateLookup (BranchType iBranchType, ProductHolderIndexHelper const &)
 
virtual ~EDConsumerBase ()
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 
static void fillLumiMePSetDescription (edm::ParameterSetDescription &pset)
 
- Static Public Member Functions inherited from edm::one::EDAnalyzerBase
static const std::string & baseType ()
 
static void fillDescriptions (ConfigurationDescriptions &descriptions)
 
static void prevalidate (ConfigurationDescriptions &descriptions)
 

Private Member Functions

void dqmEndJob (DQMStore::IBooker &booker, DQMStore::IGetter &getter) override
 
void dqmEndLuminosityBlock (DQMStore::IBooker &booker, DQMStore::IGetter &getter, edm::LuminosityBlock const &, edm::EventSetup const &) override
 
void fillPathSummaryPlots (DQMStore::IBooker &booker, DQMStore::IGetter &getter, double events, std::string const &path)
 
void fillPlotsVsLumi (DQMStore::IBooker &booker, DQMStore::IGetter &getter, std::string const &current_path, std::string const &suffix, MEPSet pset)
 
void fillProcessSummaryPlots (DQMStore::IBooker &booker, DQMStore::IGetter &getter, std::string const &path)
 
void fillSummaryPlots (DQMStore::IBooker &booker, DQMStore::IGetter &getter)
 

Static Private Member Functions

static MEPSet getHistoPSet (edm::ParameterSet pset)
 

Private Attributes

bool doPlotsVsPixelLumi_
 
bool doPlotsVsScalLumi_
 
std::string m_dqm_path
 
MEPSet pixelLumiMEPSet_
 
MEPSet scalLumiMEPSet_
 

Additional Inherited Members

- Public Types inherited from edm::one::EDAnalyzerBase
typedef EDAnalyzerBase ModuleType
 
- Public Types inherited from edm::EDConsumerBase
typedef ProductLabels Labels
 
- 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)
 

Detailed Description

Definition at line 34 of file FastTimerServiceClient.cc.

Constructor & Destructor Documentation

FastTimerServiceClient::FastTimerServiceClient ( edm::ParameterSet const &  config)
explicit

Definition at line 64 of file FastTimerServiceClient.cc.

64  :
65  m_dqm_path( config.getUntrackedParameter<std::string>( "dqmPath" ) )
66  , doPlotsVsScalLumi_ ( config.getParameter<bool>( "doPlotsVsScalLumi" ) )
67  , doPlotsVsPixelLumi_( config.getParameter<bool>( "doPlotsVsPixelLumi" ) )
68  , scalLumiMEPSet_ ( doPlotsVsScalLumi_ ? getHistoPSet(config.getParameter<edm::ParameterSet>("scalLumiME")) : MEPSet{} )
69  , pixelLumiMEPSet_( doPlotsVsPixelLumi_ ? getHistoPSet(config.getParameter<edm::ParameterSet>("pixelLumiME")) : MEPSet{} )
70 {
71 }
static MEPSet getHistoPSet(edm::ParameterSet pset)
FastTimerServiceClient::~FastTimerServiceClient ( )

Definition at line 73 of file FastTimerServiceClient.cc.

74 {
75 }

Member Function Documentation

void FastTimerServiceClient::dqmEndJob ( DQMStore::IBooker booker,
DQMStore::IGetter getter 
)
overrideprivatevirtual

Implements DQMEDHarvester.

Definition at line 78 of file FastTimerServiceClient.cc.

References fillSummaryPlots().

79 {
80  fillSummaryPlots(booker, getter);
81 }
void fillSummaryPlots(DQMStore::IBooker &booker, DQMStore::IGetter &getter)
void FastTimerServiceClient::dqmEndLuminosityBlock ( DQMStore::IBooker booker,
DQMStore::IGetter getter,
edm::LuminosityBlock const &  lumi,
edm::EventSetup const &  setup 
)
overrideprivatevirtual

Reimplemented from DQMEDHarvester.

Definition at line 84 of file FastTimerServiceClient.cc.

References fillSummaryPlots().

85 {
86  fillSummaryPlots(booker, getter);
87 }
void fillSummaryPlots(DQMStore::IBooker &booker, DQMStore::IGetter &getter)
void FastTimerServiceClient::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 364 of file FastTimerServiceClient.cc.

References edm::ConfigurationDescriptions::add(), edm::ParameterSetDescription::add(), edm::ParameterSetDescription::addUntracked(), edm::false, fillLumiMePSetDescription(), AlCaHLTBitMon_QueryRunRegistry::string, and funct::true.

364  {
365  // The following says we do not know what parameters are allowed so do no validation
366  // Please change this to state exactly what you do use, even if it is no parameters
368  desc.addUntracked<std::string>( "dqmPath", "HLT/TimerService");
369  desc.add<bool>( "doPlotsVsScalLumi", true );
370  desc.add<bool>( "doPlotsVsPixelLumi", false );
371 
372  edm::ParameterSetDescription scalLumiMEPSet;
373  fillLumiMePSetDescription(scalLumiMEPSet);
374  desc.add<edm::ParameterSetDescription>("scalLumiME", scalLumiMEPSet);
375 
376  edm::ParameterSetDescription pixelLumiMEPSet;
377  fillLumiMePSetDescription(pixelLumiMEPSet);
378  desc.add<edm::ParameterSetDescription>("pixelLumiME", pixelLumiMEPSet);
379 
380  descriptions.add("fastTimerServiceClient", desc);
381 }
ParameterDescriptionBase * addUntracked(U const &iLabel, T const &value)
static void fillLumiMePSetDescription(edm::ParameterSetDescription &pset)
ParameterDescriptionBase * add(U const &iLabel, T const &value)
void add(std::string const &label, ParameterSetDescription const &psetDescription)
volatile std::atomic< bool > shutdown_flag false
void FastTimerServiceClient::fillLumiMePSetDescription ( edm::ParameterSetDescription pset)
static

Definition at line 343 of file FastTimerServiceClient.cc.

References edm::ParameterSetDescription::add(), and AlCaHLTBitMon_QueryRunRegistry::string.

Referenced by fillDescriptions().

343  {
344  pset.add<std::string>("folder", "HLT/LumiMonitoring");
345  pset.add<std::string>("name" , "lumiVsLS");
346  pset.add<int> ("nbins", 6500 );
347  pset.add<double>("xmin", 0.);
348  pset.add<double>("xmax", 13000.);
349 }
ParameterDescriptionBase * add(U const &iLabel, T const &value)
void FastTimerServiceClient::fillPathSummaryPlots ( DQMStore::IBooker booker,
DQMStore::IGetter getter,
double  events,
std::string const &  path 
)
private

Definition at line 148 of file FastTimerServiceClient.cc.

References assert(), PDRates::average, DQMStore::IBooker::book1D(), counter, postValidation_cfi::efficiency, DQMStore::IGetter::get(), MonitorElement::getTH1F(), MonitorElement::getTProfile(), i, diffTwoXMLs::label, bookConverter::max, hlt_dqm_clientPB-live_cfg::me, min(), gen::n, or, AlCaHLTBitMon_ParallelJobs::p, mergeAndRegister::paths, DQMStore::IBooker::setCurrentFolder(), findQualityFiles::size, AlCaHLTBitMon_QueryRunRegistry::string, lumiQTWidget::t, and pileupDistInMC::total.

Referenced by fillProcessSummaryPlots().

148  {
149  // note: the following checks need to be kept separate, as any of these histograms might be missing
150  // if any of them is filled, size will have the total number of paths, and "paths" can be used to extract the list of labels
151  MonitorElement * me;
152  TProfile const * paths = nullptr;
153  uint32_t size = 0;
154 
155  // extract the list of Paths and EndPaths from the summary plots
156  if (( me = getter.get(current_path + "/paths_active_time") )) {
157  paths = me->getTProfile();
158  size = paths->GetXaxis()->GetNbins();
159  } else
160  if (( me = getter.get(current_path + "/paths_total_time") )) {
161  paths = me->getTProfile();
162  size = paths->GetXaxis()->GetNbins();
163  } else
164  if (( me = getter.get(current_path + "/paths_exclusive_time") )) {
165  paths = me->getTProfile();
166  size = paths->GetXaxis()->GetNbins();
167  }
168  if (paths == nullptr)
169  return;
170 
171  // for each path, fill histograms with
172  // - the average time spent in each module (total time spent in that module, averaged over all events)
173  // - the running time spent in each module (total time spent in that module, averaged over the events where that module actually ran)
174  // - the "efficiency" of each module (number of time a module succeded divided by the number of times the has run)
175  booker.setCurrentFolder(current_path + "/Paths");
176  for (uint32_t p = 1; p <= size; ++p) {
177  // extract the list of Paths and EndPaths from the bin labels of one of the summary plots
178  std::string label = paths->GetXaxis()->GetBinLabel(p);
179  MonitorElement * me_counter = getter.get( current_path + "/Paths/" + label + "_module_counter" );
180  MonitorElement * me_total = getter.get( current_path + "/Paths/" + label + "_module_total" );
181  if (me_counter == 0 or me_total == 0)
182  continue;
183  TH1F * counter = me_counter->getTH1F();
184  TH1F * total = me_total ->getTH1F();
185  uint32_t bins = counter->GetXaxis()->GetNbins() - 1;
186  double min = counter->GetXaxis()->GetXmin();
187  double max = counter->GetXaxis()->GetXmax() - 1;
188  booker.setCurrentFolder(current_path + "/Paths");
189 
190  TH1F * average;
191  TH1F * running;
192  TH1F * efficiency;
193  MonitorElement * me;
194 
195  me = getter.get( current_path + "/Paths/" + label + "_module_average" );
196  if (me) {
197  average = me->getTH1F();
198  //assert( me->getTH1F()->GetXaxis()->GetNbins() == (int) bins );
199  assert( me->getTH1F()->GetXaxis()->GetXmin() == min );
200  assert( me->getTH1F()->GetXaxis()->GetXmax() == max );
201  average->Reset();
202  } else {
203  average = booker.book1D(label + "_module_average", label + " module average", bins, min, max)->getTH1F();
204  average->SetYTitle("processing time [ms]");
205  for (uint32_t i = 1; i <= bins; ++i) {
206  const char * module = counter->GetXaxis()->GetBinLabel(i);
207  average->GetXaxis()->SetBinLabel(i, module);
208  }
209  }
210 
211  me = getter.get( current_path + "/Paths/" + label + "_module_running" );
212  if (me) {
213  running = me->getTH1F();
214  //assert( me->getTH1F()->GetXaxis()->GetNbins() == (int) bins );
215  assert( me->getTH1F()->GetXaxis()->GetXmin() == min );
216  assert( me->getTH1F()->GetXaxis()->GetXmax() == max );
217  running->Reset();
218  } else {
219  running = booker.book1D(label + "_module_running", label + " module running", bins, min, max)->getTH1F();
220  running->SetYTitle("processing time [ms]");
221  for (uint32_t i = 1; i <= bins; ++i) {
222  const char * module = counter->GetXaxis()->GetBinLabel(i);
223  running->GetXaxis()->SetBinLabel(i, module);
224  }
225  }
226 
227  me = getter.get( current_path + "/Paths/" + label + "_module_efficiency" );
228  if (me) {
229  efficiency = me->getTH1F();
230  //assert( me->getTH1F()->GetXaxis()->GetNbins() == (int) bins );
231  assert( me->getTH1F()->GetXaxis()->GetXmin() == min );
232  assert( me->getTH1F()->GetXaxis()->GetXmax() == max );
233  efficiency->Reset();
234  } else {
235  efficiency = booker.book1D(label + "_module_efficiency", label + " module efficiency", bins, min, max)->getTH1F();
236  efficiency->SetYTitle("filter efficiency");
237  efficiency->SetMaximum(1.05);
238  for (uint32_t i = 1; i <= bins; ++i) {
239  const char * module = counter->GetXaxis()->GetBinLabel(i);
240  efficiency->GetXaxis()->SetBinLabel(i, module);
241  }
242  }
243 
244  for (uint32_t i = 1; i <= bins; ++i) {
245  double t = total ->GetBinContent(i);
246  double n = counter->GetBinContent(i);
247  double p = counter->GetBinContent(i+1);
248  average ->SetBinContent(i, t / events);
249  if (n) {
250  running ->SetBinContent(i, t / n);
251  efficiency->SetBinContent(i, p / n);
252  }
253  }
254  }
255 
256 }
int i
Definition: DBlmapReader.cc:9
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventIDconst &, edm::Timestampconst & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
MonitorElement * get(const std::string &path)
Definition: DQMStore.cc:304
assert(m_qm.get())
MonitorElement * book1D(Args &&...args)
Definition: DQMStore.h:115
T min(T a, T b)
Definition: MathUtil.h:58
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:276
TH1F * getTH1F(void) const
int average
Definition: PDRates.py:137
tuple events
Definition: patZpeak.py:19
static std::atomic< unsigned int > counter
TProfile * getTProfile(void) const
Definition: vlib.h:208
tuple size
Write out results.
void FastTimerServiceClient::fillPlotsVsLumi ( DQMStore::IBooker booker,
DQMStore::IGetter getter,
std::string const &  current_path,
std::string const &  suffix,
MEPSet  pset 
)
private

Definition at line 260 of file FastTimerServiceClient.cc.

References assert(), DQMStore::IBooker::bookProfile(), MonitorElement::Fill(), MEPSet::folder, hlt_dqm_clientPB-live_cfg::folder, DQMStore::IGetter::get(), DQMStore::IGetter::getMEs(), MonitorElement::getTProfile(), diffTwoXMLs::label, fjr2json::lumi, visualization-live-secondInstance_cfg::m, hlt_dqm_clientPB-live_cfg::me, MEPSet::name, mergeVDriftHistosByStation::name, MEPSet::nbins, hlt_dqm_clientPB-live_cfg::nbins, MonitorElement::Reset(), DQMStore::IBooker::setCurrentFolder(), DQMStore::IGetter::setCurrentFolder(), findQualityFiles::size, AlCaHLTBitMon_QueryRunRegistry::string, ctpps_dqm_sourceclient-live_cfg::test, MEPSet::xmax, hlt_dqm_clientPB-live_cfg::xmax, MEPSet::xmin, hlt_dqm_clientPB-live_cfg::xmin, y, SiStripMonitorClusterAlca_cfi::ymax, and SiStripMonitorClusterAlca_cfi::ymin.

Referenced by fillProcessSummaryPlots().

260  {
261 
262  std::vector<std::string> menames;
263 
264  static const boost::regex byls(".*byls");
265  static const boost::regex test(suffix);
266  // get all MEs in the current_path
267  getter.setCurrentFolder(current_path);
268  std::vector<std::string> allmenames = getter.getMEs();
269  for ( auto m : allmenames )
270  // get only MEs vs LS
271  if (boost::regex_match(m, byls))
272  menames.push_back(m);
273 
274  // if no MEs available, return
275  if ( menames.size() == 0 )
276  return;
277 
278 
279  // get info for getting the lumi VS LS histogram
280  std::string folder = pset.folder;
281  std::string name = pset.name;
282  int nbins = pset.nbins;
283  double xmin = pset.xmin;
284  double xmax = pset.xmax;
285 
286  // get lumi VS LS ME
287  getter.setCurrentFolder(folder);
288  MonitorElement* lumiVsLS = getter.get(folder+"/"+name);
289  // if no ME available, return
290  if ( !lumiVsLS ) {
291  edm::LogWarning("FastTimerServiceClient") << "no " << name << " ME is available in " << folder << std::endl;
292  return;
293  }
294 
295  // get range and binning for new MEs x-axis
296  size_t size = lumiVsLS->getTProfile()->GetXaxis()->GetNbins();
297  std::string xtitle = lumiVsLS->getTProfile()->GetYaxis()->GetTitle();
298 
299  std::vector<double> lumi;
300  std::vector<int> LS;
301  for ( size_t ibin=1; ibin <= size; ++ibin ) {
302  // avoid to store points w/ no info
303  if ( lumiVsLS->getTProfile()->GetBinContent(ibin) == 0. ) continue;
304 
305  lumi.push_back( lumiVsLS->getTProfile()->GetBinContent(ibin) );
306  LS.push_back ( lumiVsLS->getTProfile()->GetXaxis()->GetBinCenter(ibin) );
307  }
308 
309  booker.setCurrentFolder(current_path);
310  getter.setCurrentFolder(current_path);
311  for ( auto m : menames ) {
312  std::string label = m;
313  label.erase(label.find("_byls"));
314 
315  MonitorElement* me = getter.get(current_path + "/" + m);
316  double ymin = me->getTProfile()->GetMinimum();
317  double ymax = me->getTProfile()->GetMaximum();
318  std::string ytitle = me->getTProfile()->GetYaxis()->GetTitle();
319 
320  MonitorElement* meVsLumi = getter.get( current_path + "/" + label + "_" + suffix );
321  if (meVsLumi) {
322  assert( meVsLumi->getTProfile()->GetXaxis()->GetXmin() == xmin );
323  assert( meVsLumi->getTProfile()->GetXaxis()->GetXmax() == xmax );
324  meVsLumi->Reset(); // do I have to do it ?!?!?
325  } else {
326  meVsLumi = booker.bookProfile(label + "_" + suffix, label + "_" + suffix, nbins, xmin, xmax, ymin, ymax);
327  // TProfile* meVsLumi_p = meVsLumi->getTProfile();
328  meVsLumi->getTProfile()->GetXaxis()->SetTitle(xtitle.c_str());
329  meVsLumi->getTProfile()->GetYaxis()->SetTitle(ytitle.c_str());
330  }
331  for ( size_t ils=0; ils < LS.size(); ++ils ) {
332  int ibin = me->getTProfile()->GetXaxis()->FindBin(LS[ils]);
333  double y = me->getTProfile()->GetBinContent(ibin);
334 
335  meVsLumi->Fill(lumi[ils],y);
336  }
337  }
338 
339 
340 }
MonitorElement * bookProfile(Args &&...args)
Definition: DQMStore.h:157
MonitorElement * get(const std::string &path)
Definition: DQMStore.cc:304
tuple lumi
Definition: fjr2json.py:35
std::string folder
assert(m_qm.get())
void Fill(long long x)
std::vector< std::string > getMEs(void)
Definition: DQMStore.cc:326
std::string name
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:276
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:346
TProfile * getTProfile(void) const
void Reset(void)
reset ME (ie. contents, errors, etc)
tuple size
Write out results.
tuple folder
Histograms Source for live online DQM in P5
void FastTimerServiceClient::fillProcessSummaryPlots ( DQMStore::IBooker booker,
DQMStore::IGetter getter,
std::string const &  path 
)
private

Definition at line 112 of file FastTimerServiceClient.cc.

References DQMStore::IGetter::dirExists(), doPlotsVsPixelLumi_, doPlotsVsScalLumi_, patZpeak::events, fillPathSummaryPlots(), fillPlotsVsLumi(), DQMStore::IGetter::get(), DQMStore::IGetter::getSubdirs(), MonitorElement::getTH1F(), hlt_dqm_clientPB-live_cfg::me, pixelLumiMEPSet_, relval_parameters_module::process_name, scalLumiMEPSet_, DQMStore::IBooker::setCurrentFolder(), and DQMStore::IGetter::setCurrentFolder().

Referenced by fillSummaryPlots().

112  {
113 
114  MonitorElement * me = getter.get(current_path + "/event");
115  if (me == 0)
116  // no FastTimerService DQM information
117  return;
118 
119  if ( doPlotsVsScalLumi_ ) {
120  fillPlotsVsLumi( booker,getter, current_path, "VsScalLumi", scalLumiMEPSet_ );
121  }
122  if ( doPlotsVsPixelLumi_ ) {
123  fillPlotsVsLumi( booker,getter, current_path, "VsPixelLumi", pixelLumiMEPSet_ );
124  }
125 
126  getter.setCurrentFolder(current_path);
127 
128  double events = me->getTH1F()->GetEntries();
129 
130  // look for per-process directories
131  static const boost::regex process_name(".*/process .*");
132  booker.setCurrentFolder(current_path);
133  std::vector<std::string> subdirs = getter.getSubdirs();
134  for (auto const & subdir: subdirs) {
135  if (boost::regex_match(subdir, process_name)) {
136  // look for per-path plots inside each per-process directory
137  if (getter.dirExists(subdir + "/Paths"))
138  fillPathSummaryPlots(booker, getter, events, subdir);
139  }
140  }
141 
142  // look for per-path plots inside the current directory
143  if (getter.dirExists(current_path + "/Paths"))
144  fillPathSummaryPlots(booker, getter, events, current_path);
145 }
void fillPlotsVsLumi(DQMStore::IBooker &booker, DQMStore::IGetter &getter, std::string const &current_path, std::string const &suffix, MEPSet pset)
MonitorElement * get(const std::string &path)
Definition: DQMStore.cc:304
void fillPathSummaryPlots(DQMStore::IBooker &booker, DQMStore::IGetter &getter, double events, std::string const &path)
bool dirExists(const std::string &path)
Definition: DQMStore.cc:334
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:276
TH1F * getTH1F(void) const
std::vector< std::string > getSubdirs(void)
Definition: DQMStore.cc:322
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:346
tuple events
Definition: patZpeak.py:19
void FastTimerServiceClient::fillSummaryPlots ( DQMStore::IBooker booker,
DQMStore::IGetter getter 
)
private

Definition at line 90 of file FastTimerServiceClient.cc.

References fillProcessSummaryPlots(), DQMStore::IGetter::get(), DQMStore::IGetter::getSubdirs(), m_dqm_path, and DQMStore::IBooker::setCurrentFolder().

Referenced by dqmEndJob(), and dqmEndLuminosityBlock().

91 {
92  if (getter.get(m_dqm_path + "/event")) {
93  // the plots are directly in the configured folder
94  fillProcessSummaryPlots(booker, getter, m_dqm_path);
95  } else {
96  static const boost::regex running_n_processes(".*/Running [0-9]+ processes");
98  std::vector<std::string> subdirs = getter.getSubdirs();
99  for (auto const & subdir: subdirs) {
100  if (boost::regex_match(subdir, running_n_processes)) {
101  // the plots are in a per-number-of-processes folder
102  if (getter.get(subdir + "/event"))
103  fillProcessSummaryPlots(booker, getter, subdir);
104  }
105  }
106  }
107 }
MonitorElement * get(const std::string &path)
Definition: DQMStore.cc:304
void fillProcessSummaryPlots(DQMStore::IBooker &booker, DQMStore::IGetter &getter, std::string const &path)
void setCurrentFolder(const std::string &fullpath)
Definition: DQMStore.cc:276
std::vector< std::string > getSubdirs(void)
Definition: DQMStore.cc:322
MEPSet FastTimerServiceClient::getHistoPSet ( edm::ParameterSet  pset)
staticprivate

Definition at line 352 of file FastTimerServiceClient.cc.

References edm::ParameterSet::getParameter(), and AlCaHLTBitMon_QueryRunRegistry::string.

353 {
354  return MEPSet{
355  pset.getParameter<std::string>("folder"),
356  pset.getParameter<std::string>("name"),
357  pset.getParameter<int>("nbins"),
358  pset.getParameter<double>("xmin"),
359  pset.getParameter<double>("xmax"),
360  };
361 }
T getParameter(std::string const &) const

Member Data Documentation

bool FastTimerServiceClient::doPlotsVsPixelLumi_
private

Definition at line 56 of file FastTimerServiceClient.cc.

Referenced by fillProcessSummaryPlots().

bool FastTimerServiceClient::doPlotsVsScalLumi_
private

Definition at line 55 of file FastTimerServiceClient.cc.

Referenced by fillProcessSummaryPlots().

std::string FastTimerServiceClient::m_dqm_path
private

Definition at line 43 of file FastTimerServiceClient.cc.

Referenced by fillSummaryPlots().

MEPSet FastTimerServiceClient::pixelLumiMEPSet_
private

Definition at line 59 of file FastTimerServiceClient.cc.

Referenced by fillProcessSummaryPlots().

MEPSet FastTimerServiceClient::scalLumiMEPSet_
private

Definition at line 58 of file FastTimerServiceClient.cc.

Referenced by fillProcessSummaryPlots().