65 execute(
const std::string& name,
const TObject&
object,
const dqm_core::AlgorithmConfig& config)
68 dqm_core::Result* result =
new dqm_core::Result();
69 result->status_ = dqm_core::Result::Undefined;
72 if(
object.
IsA()->InheritsFrom(
"TH2" ) ) {
73 histogram =
static_cast<const TH2*
>(&object);
75 throw dqm_core::BadConfig( ERS_HERE, name,
"dimension > 2 " );
78 throw dqm_core::BadConfig( ERS_HERE, name,
"does not inherit from TH2" );
81 int Xbins =
histogram->GetXaxis()->GetNbins();
82 int Ybins =
histogram->GetYaxis()->GetNbins();
93 }
else if (Ybins > 100) {
104 std::vector<float> MeanY(Xbins, 0.0);
105 bool redflag =
false;
106 bool yellowflag =
false;
107 bool greenflag =
false;
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;
120 catch ( dqm_core::Exception & ex ) {
121 throw dqm_core::BadConfig( ERS_HERE, name, ex.what(), ex );
123 if (Passed > gthreshold && not redflag) greenflag=
true;
124 else if (Passed > rthreshold && not redflag) yellowflag=
true;
127 result->status_ = dqm_core::Result::Green;
128 }
else if ( yellowflag ) {
129 result->status_ = dqm_core::Result::Yellow;
131 result->status_ = dqm_core::Result::Red;