66 execute(
const std::string& name,
const TObject&
data,
const dqm_core::AlgorithmConfig& )
69 dqm_core::Result*
result =
new dqm_core::Result();
70 result->status_ = dqm_core::Result::Undefined;
72 if (!
data.IsA()->InheritsFrom(
"TH1")) {
73 throw dqm_core::BadConfig(ERS_HERE, name,
"does not inherit from TH1");
75 const TH1*
h =
static_cast<const TH1*
>(&
data);
76 if (
h->GetDimension() > 2) {
77 throw dqm_core::BadConfig(ERS_HERE, name,
"dimension > 2 ");
83 if (
data.IsA()->InheritsFrom(
"TProfile") ) {
84 const TProfile* hp =
static_cast<const TProfile*
>(&
data);
86 double Average_value = 0.;
87 double Total_entries = 0;
88 int NbinsX =
h->GetNbinsX();
89 for(
int binX = 0; binX < NbinsX; binX++) {
90 double Bin_entries = hp->GetBinEntries(binX + 1);
91 double Bin_value = Bin_entries * (hp->GetBinContent(binX + 1));
92 Total_entries += Bin_entries;
93 Average_value += Bin_value;
95 if (Total_entries > 0) {
96 Average_value = Average_value / Total_entries;
98 std::string Average_name = Form(
"%s_Average", name.c_str());
99 result->tags_[Average_name.c_str()] = Average_value;
105 if((!
data.IsA()->InheritsFrom(
"TProfile")) &&
h->GetDimension() == 1) {
106 double Average_value = 0.;
107 int NbinsX =
h->GetNbinsX();
108 for(
int binX = 0; binX < NbinsX; binX++) {
109 Average_value +=
h->GetBinContent(binX + 1);
111 std::string Average_name = Form(
"%s_Average", name.c_str());
112 result->tags_[Average_name.c_str()] = Average_value;
118 if((!
data.IsA()->InheritsFrom(
"TProfile")) &&
h->GetDimension() == 2) {
119 double Average_value = 0.;
120 int NbinsX =
h->GetNbinsX();
121 int NbinsY =
h->GetNbinsY();
122 for(
int binX = 0; binX < NbinsX; binX++) {
123 for(
int binY = 0; binY < NbinsY; binY++) {
124 Average_value +=
h->GetBinContent(binY + 1, binY + 1);
127 std::string Average_name = Form(
"%s_Average", name.c_str());
128 result->tags_[Average_name.c_str()] = Average_value;