57 {
58
59 dqm_core::Result*
result =
new dqm_core::Result();
60 result->status_ = dqm_core::Result::Undefined;
62
63 if(
object.
IsA()->InheritsFrom(
"TH2" ) ) {
66 throw dqm_core::BadConfig( ERS_HERE, name, "dimension > 2 " );
67 }
68 } else {
69 throw dqm_core::BadConfig( ERS_HERE, name, "does not inherit from TH2" );
70 }
71
73 int Xbins =
histogram->GetXaxis()->GetNbins();
74 int Ybins =
histogram->GetYaxis()->GetNbins();
75
76 double mean_global =
histogram->GetMean(1);
77
78 float Meanlow;
79 float Meanhigh;
80 float redMean;
81 if (Xbins > 100) {
85 } else if (Xbins < 15) {
89 } else {
93 }
94
95 std::vector<float> MeanX(Ybins, 0.0);
96
97 bool redflag = false;
98 bool yellowflag = false;
99 bool greenflag = false;
100 int Passed=0;
101 for (
int i = 1;
i <= Ybins;
i++) {
102 MeanX[
i]=
h2->GetBinContent(i);
103 if (MeanX[i]==0) {
104 Passed = Passed +1;
105 continue;
106 }
107 else if (MeanX[i] > Meanlow && MeanX[i] < Meanhigh) Passed = Passed +1;
108 if (abs(MeanX[i]-mean_global) > abs(redMean-mean_global)) redflag=true;
109 }
110 double gthreshold;
111 double rthreshold;
112 try {
115 }
116 catch ( dqm_core::Exception & ex ) {
117 throw dqm_core::BadConfig( ERS_HERE, name, ex.what(), ex );
118 }
119 if (Passed >= (Ybins-gthreshold) && not redflag) greenflag=true;
120 else if (Passed >= (Ybins-rthreshold) && not redflag) yellowflag=true;
121 else redflag=true;
122 if ( greenflag ) {
123 result->status_ = dqm_core::Result::Green;
124 } else if ( yellowflag ) {
125 result->status_ = dqm_core::Result::Yellow;
126 } else {
127 result->status_ = dqm_core::Result::Red;
128 }
129 result->tags_[
"Ybins"] = Ybins;
130 result->tags_[
"Passed"] = Passed;
131 result->tags_[
"MeanGlobal"] = mean_global;
133 }
TProfile(*args, **kwargs)
#define IsA
Declare the TObject style functions.