58{
60
61 if(
object.
IsA()->InheritsFrom(
"TH1" ) ) {
63 if (
hist->GetDimension() >= 2 ){
64 throw dqm_core::BadConfig( ERS_HERE, name, "dimension >= 2 " );
65 }
66 } else {
67 throw dqm_core::BadConfig( ERS_HERE, name, "does not inherit from TH1" );
68 }
69
70
71 double minstat;
73 double greenTh;
74 double redTh;
75 try {
80 }
81 catch ( dqm_core::Exception & ex ) {
82 throw dqm_core::BadConfig( ERS_HERE, name, ex.what(), ex );
83 }
84
85
86 if (
hist->GetEntries() < minstat ) {
87 ERS_INFO(
"Histogram does not satisfy MinStat requirement " <<
hist->GetName());
88 dqm_core::Result *
result =
new dqm_core::Result(dqm_core::Result::Undefined);
89 result->tags_[
"InsufficientEntries"] =
hist->GetEntries();
91 }
92 ERS_DEBUG(1,
"Statistics: "<<
hist->GetEntries()<<
" entries ");
93
94
95
96 Double_t hit_under_th=0;
97
98 Double_t
N =
hist->GetEntries();
99
100 if(N == 0) {
101 dqm_core::Result*
result =
new dqm_core::Result();
102 result->tags_[
"Empty_Histogram_found_N_Entries"] =
N;
103 result->status_ = dqm_core::Result::Undefined;
105 };
106
108
109 do{
111 if(i>
hist->GetNbinsX()){
112 dqm_core::Result*
result =
new dqm_core::Result();
113 result->tags_[
"Config_error_maximum_bin_exceed_looking_for_bin_number"] =
i;
114 result->status_ = dqm_core::Result::Undefined;
116 };
117 hit_under_th +=
hist->GetBinContent(i);
118 }
while(
hist->GetBinCenter(i)<thresh);
119
120 double percent = 100 - 100*((
double) hit_under_th)/((
double) N);
121
122
123
124 dqm_core::Result*
result =
new dqm_core::Result();
126
127 if( percent >= greenTh ) {
128 result->status_ = dqm_core::Result::Green;
129 }
130 else if( percent <greenTh && percent>redTh ) {
131 result->status_ = dqm_core::Result::Yellow;
132 }
133 else {
134 result->status_ = dqm_core::Result::Red;
135 }
136
137
139}
#define IsA
Declare the TObject style functions.