66 {
67
68 dqm_core::Result*
result =
new dqm_core::Result();
69 result->status_ = dqm_core::Result::Undefined;
71
72 if(
object.
IsA()->InheritsFrom(
"TH2" ) ) {
75 throw dqm_core::BadConfig( ERS_HERE, name, "dimension > 2 " );
76 }
77 } else {
78 throw dqm_core::BadConfig( ERS_HERE, name, "does not inherit from TH2" );
79 }
81 int Xbins =
histogram->GetXaxis()->GetNbins();
82 int Ybins =
histogram->GetYaxis()->GetNbins();
83
84 float Meanlow = 0;
85 float Meanhigh = 0.0;
86 float redMean = 0.0;
87 if (Ybins < 15) {
91
92
93 } else if (Ybins > 100) {
97 }
98
99 float MeanY[36];
100 bool redflag = false;
101 bool yellowflag = false;
102 bool greenflag = false;
103 int Passed=0;
104 for (
int i = 1;
i <= Xbins;
i++) {
105 MeanY[
i]=h2->GetBinContent(i);
106 if (MeanY[i]==0) {
107 Passed = Passed +1;
108 continue;
109 }
110 if (MeanY[i] > Meanlow && MeanY[i] < Meanhigh) Passed = Passed +1;
111 if (abs(MeanY[i]) > abs(redMean)) redflag=true;
112 }
113 double gthreshold;
114 double rthreshold;
115 try {
118 }
119 catch ( dqm_core::Exception & ex ) {
120 throw dqm_core::BadConfig( ERS_HERE, name, ex.what(), ex );
121 }
122 if (Passed -2 > gthreshold && not redflag) greenflag=true;
123 else if (Passed -2 > rthreshold && not redflag) yellowflag=true;
124 else redflag=true;
125 if ( greenflag ) {
126 result->status_ = dqm_core::Result::Green;
127 } else if ( yellowflag ) {
128 result->status_ = dqm_core::Result::Yellow;
129 } else {
130 result->status_ = dqm_core::Result::Red;
131 }
132
134 }
TProfile(*args, **kwargs)
#define IsA
Declare the TObject style functions.