39 const TObject &
object,
40 const dqm_core::AlgorithmConfig &
config )
44 if(
object.
IsA()->InheritsFrom(
"TH2" )) {
47 throw dqm_core::BadConfig( ERS_HERE, name,
"dimension != 2 " );
50 throw dqm_core::BadConfig( ERS_HERE, name,
"does not inherit from TH2");
62 catch( dqm_core::Exception & ex ) {
63 throw dqm_core::BadConfig( ERS_HERE, name, ex.what(), ex );
66 double phi_s_sum, phi_l_sum, eta_s_sum, eta_l_sum;
68 double phi_s_avg[48], phi_l_avg[48], eta_s_avg[192], eta_l_avg[192];
76 for (
int i = 0; i < 48; i++) {
81 for (
int i = 0; i < 192; i++) {
87 for(
size_t x = 0;
x < 48;
x++) {
88 int xbin =
histogram->GetXaxis()->FindBin(
x-48);
92 for(
size_t y = 6;
y < 86;
y++) {
97 double content =
histogram->GetBinContent(xbin,
y);
100 phi_l_sum += content;
102 phi_s_sum += content;
107 phi_s_avg[
x] = (phi_s_sum/32.0);
108 phi_l_avg[
x] = (phi_l_sum/32.0);
112 for(
size_t x = 0;
x < 192;
x++) {
113 int xbin =
histogram->GetXaxis()->FindBin(
x+1);
116 for(
size_t y = 6;
y < 86;
y++) {
121 double content =
histogram->GetBinContent(xbin,
y);
124 eta_l_sum += content;
126 eta_s_sum += content;
130 eta_s_avg[
x] = (eta_s_sum/32.0);
131 eta_l_avg[
x] = (eta_l_sum/32.0);
135 for(
size_t x = 0;
x < 48;
x++) {
136 int xbin =
histogram->GetXaxis()->FindBin(
int(
x)-48);
139 for(
size_t y = 6;
y < 86;
y++) {
144 double content =
histogram->GetBinContent(xbin,
y);
147 if(content > (1+high)*phi_l_avg[
x]){
149 }
else if(content < (1-low)*phi_l_avg[
x]){
153 if(content > (1+high)*phi_s_avg[
x]){
155 }
else if(content < (1-low)*phi_s_avg[
x]){
164 for(
size_t x = 0;
x < 192;
x++) {
165 int xbin =
histogram->GetXaxis()->FindBin(
x+1);
168 for(
size_t y = 6;
y < 86;
y++) {
173 double content =
histogram->GetBinContent(xbin,
y);
176 if(content > (1+high)*eta_l_avg[
x]){
178 }
else if(content < (1-low)*eta_l_avg[
x]){
182 if(content > (1+high)*eta_s_avg[
x]){
184 }
else if(content < (1-low)*eta_s_avg[
x]){
192 dqm_core::Result*
result =
new dqm_core::Result();
193 NBad = NphiNoisy + NphiDead + NetaNoisy + NetaDead;
194 result->tags_.insert(std::make_pair(
"NBad",NBad));
195 result->tags_.insert(std::make_pair(
"NphiNoisy",NphiNoisy));
196 result->tags_.insert(std::make_pair(
"NphiDead",NphiDead));
197 result->tags_.insert(std::make_pair(
"NetaNoisy",NetaNoisy));
198 result->tags_.insert(std::make_pair(
"NetaDead",NetaDead));
200 if (NBad >= rthreshold){
201 result->status_ = dqm_core::Result::Red;
202 }
else if (NBad < gthreshold){
203 result->status_ = dqm_core::Result::Green;
205 result->status_ = dqm_core::Result::Yellow;
static dqm_algorithms::BinContentComp myInstance