9 #include <dqm_core/AlgorithmConfig.h>
17 #include <dqm_core/AlgorithmManager.h>
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++) {
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++) {
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++) {
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++) {
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]){
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){
202 }
else if (NBad < gthreshold){
205 result->status_ = dqm_core::Result::Yellow;
251 out<<
"CSCNoisyDead: Checks to see how many CSC layers are dead or noisy"<<std::endl;
253 out<<
"Mandatory Parameter: HighRange : Fraction above average considered noisy"<<std::endl;
254 out<<
"Mandatory Parameter: LowRange : Fraction below average considered dead"<<std::endl;
256 out<<
"Mandatory Green/Red Threshold : NStrips : "<<std::endl;