120 TProfile
const *
paths =
nullptr;
124 if (( me = getter.
get(current_path +
"/paths_active_time") )) {
126 size = paths->GetXaxis()->GetNbins();
128 if (( me = getter.
get(current_path +
"/paths_total_time") )) {
130 size = paths->GetXaxis()->GetNbins();
132 if (( me = getter.
get(current_path +
"/paths_exclusive_time") )) {
134 size = paths->GetXaxis()->GetNbins();
137 if (paths ==
nullptr)
145 for (uint32_t
p = 1;
p <=
size; ++
p) {
148 MonitorElement * me_counter = getter.
get( current_path +
"/Paths/" + label +
"_module_counter" );
149 MonitorElement * me_total = getter.
get( current_path +
"/Paths/" + label +
"_module_total" );
150 if (me_counter == 0
or me_total == 0)
154 uint32_t bins = counter->GetXaxis()->GetNbins();
155 double min = counter->GetXaxis()->GetXmin();
156 double max = counter->GetXaxis()->GetXmax();
157 TH1F *
average = booker.
book1D(label +
"_module_average", label +
" module average", bins, min, max)->
getTH1F();
158 average ->SetYTitle(
"processing time [ms]");
159 TH1F * running = booker.
book1D(label +
"_module_running", label +
" module running", bins, min, max)->
getTH1F();
160 running ->SetYTitle(
"processing time [ms]");
161 TH1F *
efficiency = booker.
book1D(label +
"_module_efficiency", label +
" module efficiency", bins, min, max)->
getTH1F();
162 efficiency->SetYTitle(
"filter efficiency");
163 efficiency->SetMaximum(1.05);
164 for (uint32_t
i = 1;
i <= bins; ++
i) {
165 const char *
module = counter->GetXaxis()->GetBinLabel(
i);
166 average ->GetXaxis()->SetBinLabel(
i, module);
167 running ->GetXaxis()->SetBinLabel(
i, module);
168 efficiency->GetXaxis()->SetBinLabel(
i, module);
169 double t = total ->GetBinContent(
i);
170 double n = counter->GetBinContent(
i);
171 double p = counter->GetBinContent(
i+1);
172 average ->SetBinContent(
i, t /
events);
174 running ->SetBinContent(
i, t / n);
175 efficiency->SetBinContent(
i, p / n);
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
MonitorElement * get(const std::string &path)
const T & max(const T &a, const T &b)
MonitorElement * book1D(Args &&...args)
void setCurrentFolder(const std::string &fullpath)
TH1F * getTH1F(void) const
static std::atomic< unsigned int > counter
TProfile * getTProfile(void) const
tuple size
Write out results.