41 const TObject &
object,
42 const dqm_core::AlgorithmConfig &
config )
54 if(
object.
IsA()->InheritsFrom(
"TProfile" ))
58 if(
object.
IsA()->InheritsFrom(
"TH1" )) {
61 throw dqm_core::BadConfig( ERS_HERE, name,
"dimension > 2 " );
64 throw dqm_core::BadConfig( ERS_HERE, name,
"does not inherit from TH1" );
68 refhist =
static_cast<TH1 *
>(
config.getReference() );
70 catch ( dqm_core::Exception & ex ) {
71 throw dqm_core::BadRefHist(ERS_HERE,name,
" Could not retreive reference");
74 if (
histogram->GetDimension() != refhist->GetDimension() ) {
75 throw dqm_core::BadRefHist( ERS_HERE, name,
"Dimension" );
78 if ((
histogram->GetNbinsX() != refhist->GetNbinsX()) || (
histogram->GetNbinsY() != refhist->GetNbinsY())) {
79 throw dqm_core::BadRefHist( ERS_HERE, name,
"number of bins" );
84 std::string thresh=
"ChiSqPerNdof";
89 catch ( dqm_core::Exception & ex ) {
90 throw dqm_core::BadConfig( ERS_HERE, name, ex.what(), ex );
97 TProfile * prof_hist(0);
98 TProfile * prof_ref(0);
100 prof_hist = (TProfile*)
histogram->Clone();
101 prof_ref = (TProfile*)refhist->Clone();
118 double significance = 0;
121 for(
int i=1; i<
histogram->GetNbinsX()+1; i++){
126 double uncert1 =
histogram->GetBinError(i);
127 double uncert2 =
reference->GetBinError(i);
128 double uncert = std::sqrt(uncert1*uncert1 + uncert2*uncert2);
135 badbin = prof_hist->GetBinEntries(i)<2 || prof_ref->GetBinEntries(i)<2;
144 if(uncert !=0 && badbin ==0){
146 significance += (
diff/uncert)*(
diff/uncert);
150 dqm_core::Result*
result =
new dqm_core::Result();
152 std::string out =
"ChiSqPerBin";
153 std::string out1=
"ChiSqTotal";
154 std::string out2=
"ChiSqUsedBins";
158 double value = significance/numchi;
159 result->tags_[out] = value;
160 result->tags_[out1] = significance;
161 result->tags_[out2] = numchi;
162 if ( value <= gthresho ) {
163 result->status_ = dqm_core::Result::Green;
164 }
else if ( value < rthresho ) {
165 result->status_ = dqm_core::Result::Yellow;
167 result->status_ = dqm_core::Result::Red;
173 result->status_ = dqm_core::Result::Undefined;
181 result->tags_[
"EntriesReference"] = refhist->GetEntries();
182 result->tags_[
"MeanReference"] = refhist->GetMean();
183 result->tags_[
"RMSReference"] = refhist->GetRMS();
void diff(const Jet &rJet1, const Jet &rJet2, std::map< std::string, double > varDiff)
Difference between jets - Non-Class function required by trigger.