28 {
30
31 if(
object.
IsA()->InheritsFrom(
"TH1" ) ) {
33 } else {
34 throw dqm_core::BadConfig( ERS_HERE, name, "does not inherit from TH1" );
35 }
36
40
41
43 dqm_core::Result *
result =
new dqm_core::Result(dqm_core::Result::Undefined);
44 result->tags_[
"InsufficientEffectiveEntries"] =
histogram->GetEffectiveEntries();
46 }
47
48 TObject* ro =
config.getReference();
49 const TObject* firstReference=0;
50 TObject* secondReference=0;
51 try {
53 }catch ( dqm_core::Exception & ex ) {
54 throw dqm_core::BadRefHist(ERS_HERE,name," Could not retreive reference");
55 }
56
57
58 const TH1* refhist = dynamic_cast<const TH1*>(firstReference);
59 if ( refhist==0 ){
60 throw dqm_core::BadRefHist( ERS_HERE, "Dimension", name );
61 }
62
63 if ((
histogram->GetDimension() != refhist->GetDimension()) || (
histogram->GetNbinsX() != refhist->GetNbinsX()) || (
histogram->GetNbinsY() != refhist->GetNbinsY()) || refhist->GetNbinsZ() !=
histogram->GetNbinsZ() ) {
64 throw dqm_core::BadRefHist( ERS_HERE, "number of bins", name );
65 }
66
67
69
70
74
76
77 dqm_core::Result*
result =
new dqm_core::Result();
78 TH1* resulthisto;
80 resulthisto->Reset();
81
82
83 for(
int i=range[0];
i<
range[1];
i++){
84 double binContent =
histogram->GetBinContent(i);
85 double refContent = refhist->GetBinContent(i);
86 double binErr =
histogram->GetBinError(i);
87
88 if(std::abs(binContent - refContent) < binErr && check_bin_err){
89
90 continue;
91 }
92
93 double diff = binContent - refContent;
94 double adiff = std::abs(
diff);
96
99 }else{
101 }
102
103 if(adiff > threshold){
104
106 resulthisto->SetBinContent(i, binContent);
107 if (publish &&
count< maxpublish){
109 }
110 }
111 }
112
114 result->object_ = boost::shared_ptr<TObject>(resulthisto);
115
118
119 if(
count >= rthreshold){
120 result->status_ = dqm_core::Result::Red;
121 }
else if(
count <= gthreshold){
122 result->status_ = dqm_core::Result::Green;
123 }else{
124 result->status_ = dqm_core::Result::Yellow;
125 }
126
128}
void diff(const Jet &rJet1, const Jet &rJet2, std::map< std::string, double > varDiff)
Difference between jets - Non-Class function required by trigger.
int count(std::string s, const std::string ®x)
count how many occurances of a regx are in a string
setBGCode setTAP setLVL2ErrorBits bool
#define IsA
Declare the TObject style functions.