46 m_dqm_path( config.getUntrackedParameter<std::string>(
"dqmPath" ) )
109 TProfile
const *
paths =
nullptr;
115 size = paths->GetXaxis()->GetNbins();
119 size = paths->GetXaxis()->GetNbins();
121 if (( me = dqm->
get(
m_dqm_path +
"/paths_exclusive_time") )) {
123 size = paths->GetXaxis()->GetNbins();
126 if (paths ==
nullptr)
134 for (uint32_t
p = 1;
p <=
size; ++
p) {
136 std::string
label = paths->GetXaxis()->GetBinLabel(
p);
139 if (me_counter == 0
or me_total == 0)
141 TH1F * counter = me_counter->
getTH1F();
143 uint32_t
bins = counter->GetXaxis()->GetNbins();
144 double min = counter->GetXaxis()->GetXmin();
145 double max = counter->GetXaxis()->GetXmax();
146 TH1F *
average = dqm->
book1D(label +
"_module_average", label +
" module average", bins, min, max)->
getTH1F();
147 TH1F * running = dqm->
book1D(label +
"_module_running", label +
" module running", bins, min, max)->
getTH1F();
148 TH1F *
efficiency = dqm->
book1D(label +
"_module_efficiency", label +
" module efficiency", bins, min, max)->
getTH1F();
149 for (uint32_t
i = 1;
i <=
bins; ++
i) {
150 const char *
module = counter->GetXaxis()->GetBinLabel(
i);
151 average ->GetXaxis()->SetBinLabel(
i, module);
152 running ->GetXaxis()->SetBinLabel(
i, module);
153 efficiency->GetXaxis()->SetBinLabel(
i, module);
154 double t = total ->GetBinContent(
i);
155 double n = counter->GetBinContent(
i);
156 double p = counter->GetBinContent(
i+1);
157 average ->SetBinContent(
i, t / events);
159 running ->SetBinContent(
i, t / n);
160 efficiency->SetBinContent(
i, p / n);
163 average->SetYTitle(
"processing time [ms]");
164 running->SetYTitle(
"processing time [ms]");
174 desc.
addUntracked<std::string>(
"dqmPath",
"HLT/TimerService");
175 descriptions.
add(
"fastTimerServiceClient", desc);
ParameterDescriptionBase * addUntracked(U const &iLabel, T const &value)
MonitorElement * book1D(const char *name, const char *title, int nchX, double lowX, double highX)
Book 1D histogram.
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
#define DEFINE_FWK_MODULE(type)
void analyze(const edm::Event &event, const edm::EventSetup &setup)
void endRun(edm::Run const &run, edm::EventSetup const &setup)
void endLuminosityBlock(edm::LuminosityBlock const &lumi, edm::EventSetup const &setup)
const T & max(const T &a, const T &b)
~FastTimerServiceClient()
MonitorElement * get(const std::string &path) const
get ME from full pathname (e.g. "my/long/dir/my_histo")
How EventSelector::AcceptEvent() decides whether to accept an event for output otherwise it is excluding the probing of A single or multiple positive and the trigger will pass if any such matching triggers are PASS or EXCEPTION[A criterion thatmatches no triggers at all is detected and causes a throw.] A single negative with an expectation of appropriate bit checking in the decision and the trigger will pass if any such matching triggers are FAIL or EXCEPTION A wildcarded negative criterion that matches more than one trigger in the trigger but the state exists so we define the behavior If all triggers are the negative crieriion will lead to accepting the event(this again matches the behavior of"!*"before the partial wildcard feature was incorporated).The per-event"cost"of each negative criterion with multiple relevant triggers is about the same as!*was in the past
void beginRun(edm::Run const &run, edm::EventSetup const &setup)
FastTimerServiceClient(edm::ParameterSet const &)
void beginLuminosityBlock(edm::LuminosityBlock const &lumi, edm::EventSetup const &setup)
TH1F * getTH1F(void) const
void add(std::string const &label, ParameterSetDescription const &psetDescription)
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
TProfile * getTProfile(void) const
void setup(std::vector< TH2F > &depth, std::string name, std::string units="")
tuple size
Write out results.
void setCurrentFolder(const std::string &fullpath)