40 if (
object.
IsA()->InheritsFrom(
"TH1")) {
43 throw dqm_core::BadConfig(ERS_HERE, name,
"dimension > 1");
46 throw dqm_core::BadConfig(ERS_HERE, name,
"does not inherit from TH1");
58 dqm_core::Result *
result =
new dqm_core::Result(dqm_core::Result::Undefined);
63 if (firstbin>lastbin){
64 dqm_core::Result *
result =
new dqm_core::Result(dqm_core::Result::Undefined);
65 result->tags_[
"Range_is_not_correct "] = 1;
70 dqm_core::Result *
result =
new dqm_core::Result(dqm_core::Result::Undefined);
71 result->tags_[
"Range_is_not_correct "] = 2;
76 dqm_core::Result *
result =
new dqm_core::Result(dqm_core::Result::Undefined);
77 result->tags_[
"Range_is_not_correct "] = 3;
82 refhist =
dynamic_cast<const TH1*
>(
config.getReference() );
84 catch ( dqm_core::Exception & ex ) {
85 throw dqm_core::BadRefHist(ERS_HERE,name,
" Could not retreive reference");
89 throw dqm_core::BadRefHist(ERS_HERE, name,
"Reference is not a histogram");
92 if (
histogram->GetDimension() != refhist->GetDimension() ) {
93 throw dqm_core::BadRefHist( ERS_HERE, name,
"Dimension" );
96 if ((
histogram->GetNbinsX() != refhist->GetNbinsX()) || (
histogram->GetNbinsY() != refhist->GetNbinsY())) {
97 throw dqm_core::BadRefHist( ERS_HERE, name,
"Non-matching number of bins of reference" );
100 std::map<std::string, double> results;
104 double sumcontent = 0;
105 double CorrectedMean= 0;
107 for (
int i = firstbin; i <= lastbin; ++i) {
109 const double binContent =
histogram->GetBinContent(i);
110 const double binCenter =
histogram->GetXaxis()->GetBinCenter(i);
112 sum += binContent*binCenter;
113 sumcontent += binContent;
118 dqm_core::Result *
result =
new dqm_core::Result(dqm_core::Result::Undefined);
119 result->tags_[
"Content_is_zero "] = 1;
123 mean = sum/sumcontent;
125 if (correctusingbin1>0){
128 double correctionfactor=bin0/Nentries;
129 CorrectedMean=
mean-(p0+p1*correctionfactor);
132 results[
"Weighted_mean"] =
mean;
133 results[
"Abs_Diff"] = std::fabs(
mean-expectedaverage);
134 if (correctusingbin1>0){
135 results[
"Corrected_Weighted_mean"]= CorrectedMean+expectedaverage;
136 results[
"Corrected_Abs_Diff"]=std::fabs(CorrectedMean);
138 results[
"Corrected_Weighted_mean"]=0;
139 results[
"Corrected_Abs_Diff"]=0;
static dqm_algorithms::BinContentComp myInstance
void mean(std::vector< double > &bins, std::vector< double > &values, const std::vector< std::string > &files, const std::string &histname, const std::string &tplotname, const std::string &label="")