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 else {
102 }
103
104 std::vector<float> MeanY(Xbins, 0.0);
105 bool redflag = false;
106 bool yellowflag = false;
107 bool greenflag = false;
108 int Passed=0;
109 for (
int i = 1;
i <= Xbins;
i++) {
110 MeanY[
i]=
h2->GetBinContent(i);
111 if (MeanY[i] > Meanlow && MeanY[i] < Meanhigh) Passed = Passed +1;
112 if (abs(MeanY[i]) > abs(redMean)) redflag=true;
113 }
114 double gthreshold;
115 double rthreshold;
116 try {
119 }
120 catch ( dqm_core::Exception & ex ) {
121 throw dqm_core::BadConfig( ERS_HERE, name, ex.what(), ex );
122 }
123 if (Passed > gthreshold && not redflag) greenflag=true;
124 else if (Passed > rthreshold && not redflag) yellowflag=true;
125 else redflag=true;
126 if ( greenflag ) {
127 result->status_ = dqm_core::Result::Green;
128 } else if ( yellowflag ) {
129 result->status_ = dqm_core::Result::Yellow;
130 } else {
131 result->status_ = dqm_core::Result::Red;
132 }
133
135 }
TProfile(*args, **kwargs)
#define IsA
Declare the TObject style functions.