10 #include <dqm_core/AlgorithmConfig.h>
13 #include <dqm_core/AlgorithmManager.h>
45 const TObject&
object,
46 const dqm_core::AlgorithmConfig&
config )
50 if(
object.
IsA()->InheritsFrom(
"TH1" ) ) {
53 throw dqm_core::BadConfig( ERS_HERE,
name,
"dimension > 2 " );
56 throw dqm_core::BadConfig( ERS_HERE,
name,
"does not inherit from TH1" );
65 if (
histogram->GetEntries() < minstat ) {
77 catch( dqm_core::Exception & ex ) {
78 throw dqm_core::BadConfig( ERS_HERE,
name, ex.what(), ex );
82 std::vector<bin3> badbinstrip;
86 if (binvalue== ignoreval)
continue;
87 double eta =
histogram->GetXaxis()->GetBinCenter(
k);
88 double phi =
histogram->GetYaxis()->GetBinCenter(
l);
89 if(binvalue > RANGE_D && binvalue < RANGE_U )
continue;
90 bin3 onebin = {eta,phi,
k,
l,binvalue};
91 badbinstrip.push_back(onebin);
95 std::sort(badbinstrip.begin(),badbinstrip.end(),
mySortfunc);
99 for(
unsigned int i=0;
i<badbinstrip.size();
i++){
102 sprintf(
tmp,
"%i-(eta,phi)=(%0.3f,%0.3f)",
count,badbinstrip[
i].m_eta,badbinstrip[
i].m_phi);
107 if(
count>Nmaxpublish)
break;
113 else if (
count>gthreshold)
result->status_ = dqm_core::Result::Yellow;
125 out<<
"BinsOutOfRange: Print out the badbins which are out of range [range_d,range_u] "<<std::endl;
126 out<<
"Optional Parameter: MinStat: Minimum histogram statistics needed to perform Algorithm"<<std::endl;
127 out<<
"Optional Parameter: ignoreval: valued to be ignored for being processed"<<std::endl;
128 out<<
"Optional Parameter: MaxPublish: Max number of bins to save (default 20)"<<std::endl;