19 errorProb_ = ERROR_PROB_THRESHOLD;
20 warningProb_ = WARNING_PROB_THRESHOLD;
21 setAlgoName(
"NO_ALGORITHM");
23 message_ =
"NO_MESSAGE";
29 raiseDQMError(
"QCriterion",
"virtual runTest method called" );
52 std::cout <<
"QTest:" << getAlgoName() <<
"::runTest called on " 53 << me-> getFullname() <<
"\n";
60 nbins = me->
getTH1F()->GetXaxis()->GetNbins();
61 nbinsref = me->
getRefTH1F()->GetXaxis()->GetNbins();
64 if (nbins != nbinsref)
return -1;
69 nbins = me->
getTH1S()->GetXaxis()->GetNbins();
70 nbinsref = me->
getRefTH1S()->GetXaxis()->GetNbins();
73 if (nbins != nbinsref)
return -1;
78 nbins = me->
getTH1D()->GetXaxis()->GetNbins();
79 nbinsref = me->
getRefTH1D()->GetXaxis()->GetNbins();
82 if (nbins != nbinsref)
return -1;
91 if (nbins != nbinsref)
return -1;
97 nbins = me->
getTH2F()->GetXaxis()->GetNbins() *
98 me->
getTH2F()->GetYaxis()->GetNbins();
99 nbinsref = me->
getRefTH2F()->GetXaxis()->GetNbins() *
103 if (nbins != nbinsref)
return -1;
109 nbins = me->
getTH2S()->GetXaxis()->GetNbins() *
110 me->
getTH2S()->GetYaxis()->GetNbins();
111 nbinsref = me->
getRefTH2S()->GetXaxis()->GetNbins() *
115 if (nbins != nbinsref)
return -1;
121 nbins = me->
getTH2D()->GetXaxis()->GetNbins() *
122 me->
getTH2D()->GetYaxis()->GetNbins();
123 nbinsref = me->
getRefTH2D()->GetXaxis()->GetNbins() *
127 if (nbins != nbinsref)
return -1;
133 nbins = me->
getTH3F()->GetXaxis()->GetNbins() *
134 me->
getTH3F()->GetYaxis()->GetNbins() *
135 me->
getTH3F()->GetZaxis()->GetNbins();
136 nbinsref = me->
getRefTH3F()->GetXaxis()->GetNbins() *
141 if (nbins != nbinsref)
return -1;
148 <<
" ME does not contain TH1F/TH1S/TH1D/TH2F/TH2S/TH2D/TH3F, exiting\n";
155 bool failure =
false;
159 if (contents != ref_->GetBinContent(
bin))
163 badChannels_.push_back(
chan);
166 if (failure)
return 0;
183 std::cout <<
"QTest:" << getAlgoName() <<
"::runTest called on " 184 << me-> getFullname() <<
"\n";
213 <<
" ME does not contain TH1F/TH1S/TH1D/TProfile, exiting\n";
218 int ncx1 = h->GetXaxis()->GetNbins();
219 int ncx2 = ref_->GetXaxis()->GetNbins();
224 <<
" different number of channels! (" 225 << ncx1 <<
", " << ncx2 <<
"), exiting\n";
231 Ndof_ = 0; chi2_ = -1.; ncx1 = ncx2 = -1;
233 int i, i_start, i_end;
239 i_start = h->GetXaxis()->GetFirst();
240 i_end = h->GetXaxis()->GetLast();
245 double sum1=0,
sum2=0;
246 for (i=i_start; i<=i_end; i++)
248 sum1 += h->GetBinContent(i);
249 sum2 += ref_->GetBinContent(i);
257 <<
" Test Histogram " << h->GetName()
258 <<
" is empty, exiting\n";
265 <<
" Ref Histogram " << ref_->GetName()
266 <<
" is empty, exiting\n";
270 double bin1, bin2, err1, err2,
temp;
271 for (i=i_start; i<=i_end; i++)
273 bin1 = h->GetBinContent(i)/sum1;
274 bin2 = ref_->GetBinContent(i)/
sum2;
275 if (bin1 ==0 && bin2==0)
282 err1=h->GetBinError(i); err2=ref_->GetBinError(i);
283 if (err1 == 0 && err2 == 0)
287 <<
" bins with non-zero content and zero error, exiting\n";
290 err1*=err1 ; err2*=err2;
292 chi2 +=temp*temp/(err1+err2);
296 return TMath::Prob(0.5*chi2,
int(0.5*ndof));
308 if (minEntries_ != 0 && me->
getEntries() < minEntries_)
315 std::cout <<
"QTest:" << getAlgoName() <<
"::runTest called on " 316 << me-> getFullname() <<
"\n";
345 <<
" ME does not contain TH2F/TH2S/TH2D/TProfile2D, exiting\n";
350 int ncx1 = h->GetXaxis()->GetNbins();
351 int ncx2 = ref_->GetXaxis()->GetNbins();
352 int ncy1 = h->GetYaxis()->GetNbins();
353 int ncy2 = ref_->GetYaxis()->GetNbins();
354 if ( ( ncx1 != ncx2) || ( ncy1 != ncy2) )
358 <<
" different number of channels! (" 359 << ncx1 <<
", " << ncx2 <<
"), (" 360 << ncy1 <<
", " << ncy2 <<
"), exiting\n";
366 Ndof_ = 0; chi2_ = -1.;
369 int i_start = h->GetXaxis()->GetFirst();
370 int i_end = h->GetXaxis()->GetLast();
371 int j_start = h->GetYaxis()->GetFirst();
372 int j_end = h->GetYaxis()->GetLast();
373 if (h->Integral(i_start, i_end, j_start, j_end) == 0)
377 <<
" Test Histogram " << h->GetName()
378 <<
" is empty, exiting\n";
381 if (ref_->Integral(i_start, i_end, j_start, j_end) == 0)
385 <<
" Ref Histogram " << ref_->GetName()
386 <<
" is empty, exiting\n";
392 double pValue = h->Chi2TestX(ref_, chi2_, Ndof_, igood,
"");
394 if (chi2_==-1. && Ndof_==0)
406 const double difprec = 1
e-5;
416 std::cout <<
"QTest:" << getAlgoName() <<
"::runTest called on " 417 << me-> getFullname() <<
"\n";
446 <<
" ME does not contain TH1F/TH1S/TH1D/TProfile, exiting\n";
451 int ncx1 = h->GetXaxis()->GetNbins();
452 int ncx2 = ref_->GetXaxis()->GetNbins();
457 <<
" different number of channels! (" 458 << ncx1 <<
", " << ncx2 <<
"), exiting\n";
462 double diff1 =
TMath::Abs(h->GetXaxis()->GetXmin() - ref_->GetXaxis()->GetXmin());
463 double diff2 =
TMath::Abs(h->GetXaxis()->GetXmax() - ref_->GetXaxis()->GetXmax());
464 if (diff1 > difprec || diff2 > difprec)
468 <<
" histograms with different binning, exiting\n";
473 Bool_t afunc1 = kFALSE; Bool_t afunc2 = kFALSE;
474 double sum1 = 0,
sum2 = 0;
475 double ew1, ew2, w1 = 0,
w2 = 0;
477 for (bin=1;bin<=ncx1;bin++)
479 sum1 += h->GetBinContent(bin);
480 sum2 += ref_->GetBinContent(bin);
481 ew1 = h->GetBinError(bin);
482 ew2 = ref_->GetBinError(bin);
491 <<
" Test Histogram: " << h->GetName()
492 <<
": integral is zero, exiting\n";
499 <<
" Ref Histogram: " << ref_->GetName()
500 <<
": integral is zero, exiting\n";
504 double tsum1 = sum1;
double tsum2 =
sum2;
505 tsum1 += h->GetBinContent(0);
506 tsum2 += ref_->GetBinContent(0);
507 tsum1 += h->GetBinContent(ncx1+1);
508 tsum2 += ref_->GetBinContent(ncx1+1);
513 double ne1 = h->GetEntries();
514 double ne2 = ref_->GetEntries();
516 double difsum1 = (ne1-tsum1)/tsum1;
518 if (difsum1 > difprec &&
int(ne1) != ncx1)
520 if (h->GetSumw2N() == 0)
524 <<
" Weighted events and no Sumw2 for " 525 << h->GetName() <<
"\n";
529 esum1 = sum1*sum1/w1;
533 double difsum2 = (ne2-tsum2)/tsum2;
535 if (difsum2 > difprec &&
int(ne2) != ncx1)
537 if (ref_->GetSumw2N() == 0)
541 <<
" Weighted events and no Sumw2 for " 542 << ref_->GetName() <<
"\n";
550 double s1 = 1/tsum1;
double s2 = 1/tsum2;
552 double dfmax =0, rsum1 = 0, rsum2 = 0;
557 for ( bin=first; bin<=
last; bin++)
559 rsum1 += s1*h->GetBinContent(bin);
560 rsum2 += s2*ref_->GetBinContent(bin);
566 if (afunc1) z = dfmax*TMath::Sqrt(esum2);
567 else if (afunc2) z = dfmax*TMath::Sqrt(esum1);
568 else z = dfmax*TMath::Sqrt(esum1*esum2/(esum1+esum2));
574 <<
" Numerical problems with histogram " 575 << h->GetName() <<
"\n";
579 <<
" Numerical problems with histogram " 580 << ref_->GetName() <<
"\n";
582 return TMath::KolmogorovProb(z);
590 badChannels_.clear();
599 std::cout <<
"QTest:" << getAlgoName() <<
"::runTest called on " 600 << me-> getFullname() <<
"\n";
618 if (verbose_>0)
std::cout <<
"QTest:ContentsXRange" 620 <<
" does not contain TH1F/TH1S/TH1D, exiting\n";
624 if (!rangeInitialized_)
627 setAllowedXRange(h->GetXaxis()->GetXmin(), h->GetXaxis()->GetXmax());
631 int ncx = h->GetXaxis()->GetNbins();
641 for (bin = first; bin <=
last; ++
bin)
643 double contents = h->GetBinContent(bin);
644 double x = h->GetBinCenter(bin);
646 if (x < xmin_ || x > xmax_)fail +=
contents;
649 if (sum==0)
return 1;
651 return (sum - fail)/sum;
660 badChannels_.clear();
669 std::cout <<
"QTest:" << getAlgoName() <<
"::runTest called on " 670 << me-> getFullname() <<
"\n";
689 <<
" does not contain TH1F/TH1S/TH1D, exiting\n";
693 if (!rangeInitialized_ || !h->GetXaxis())
return 1;
694 int ncx = h->GetXaxis()->GetNbins();
705 for (bin = first; bin <=
last; ++
bin)
707 double contents = h->GetBinContent(bin);
708 bool failure =
false;
709 failure = (contents < ymin_ || contents > ymax_);
713 badChannels_.push_back(
chan);
718 return 1.*(ncx -
fail)/ncx;
722 for (bin = first; bin <=
last; ++
bin)
724 double contents = h->GetBinContent(bin);
725 bool failure =
false;
726 if (contents) failure = (contents < ymin_ || contents > ymax_);
730 return 1.*(ncx -
fail)/ncx;
739 badChannels_.clear();
748 std::cout <<
"QTest:" << getAlgoName() <<
"::runTest called on " 749 << me-> getFullname() <<
"\n";
785 <<
" does not contain TH1F/TH1S/TH1D/TH2F/TH2S/TH2D, exiting\n";
794 if (!rangeInitialized_ || !h1->GetXaxis() )
796 int ncx = h1->GetXaxis()->GetNbins();
802 for (bin = first; bin <=
last; ++
bin)
804 double contents = h1->GetBinContent(bin);
805 bool failure =
false;
806 failure = contents <= ymin_;
810 badChannels_.push_back(
chan);
815 return 1.*(ncx -
fail)/ncx;
820 else if (h2 !=
nullptr )
822 int ncx = h2->GetXaxis()->GetNbins();
823 int ncy = h2->GetYaxis()->GetNbins();
826 for (
int cx = 1; cx <= ncx; ++cx)
828 for (
int cy = 1; cy <= ncy; ++cy)
830 double contents = h2->GetBinContent(h2->GetBin(cx, cy));
831 bool failure =
false;
832 failure = contents <= ymin_;
835 DQMChannel chan(cx, cy, 0, contents, h2->GetBinError(h2->GetBin(cx, cy)));
836 badChannels_.push_back(chan);
842 return 1.*(ncx*ncy -
fail) / (ncx*ncy);
848 <<
" TH1/TH2F are NULL, exiting\n";
860 badChannels_.clear();
868 std::cout <<
"QTest:" << getAlgoName() <<
"::runTest called on " 869 << me-> getFullname() <<
"\n";
875 nbins = me->
getTH1F()->GetXaxis()->GetNbins();
881 nbins = me->
getTH1S()->GetXaxis()->GetNbins();
887 nbins = me->
getTH1D()->GetXaxis()->GetNbins();
893 nbins = me->
getTH2F()->GetXaxis()->GetNbins() *
894 me->
getTH2F()->GetYaxis()->GetNbins();
900 nbins = me->
getTH2S()->GetXaxis()->GetNbins() *
901 me->
getTH2S()->GetYaxis()->GetNbins();
907 nbins = me->
getTH2D()->GetXaxis()->GetNbins() *
908 me->
getTH2D()->GetYaxis()->GetNbins();
916 <<
" does not contain TH1F/TH1S/TH1D or TH2F/TH2S/TH2D, exiting\n";
922 if ( !rangeInitialized_ || !h->GetXaxis() )
932 for (bin = first; bin <=
last; ++
bin)
934 double contents = h->GetBinContent(bin);
935 double average = getAverage(bin, h);
936 bool failure =
false;
938 failure = (((contents-average)/
TMath::Abs(average)) > tolerance_);
944 badChannels_.push_back(
chan);
949 return 1.*(nbins -
fail)/nbins;
959 int ncx = h->GetXaxis()->GetNbins();
960 double sum = 0;
int bin_low, bin_hi;
961 for (
unsigned i = 1;
i <= numNeighbors_; ++
i)
964 bin_low = bin-
i; bin_hi = bin+
i;
967 while (bin_low < first)
968 bin_low = ncx + bin_low;
970 bin_hi = bin_hi - ncx;
971 sum += h->GetBinContent(bin_low) + h->GetBinContent(bin_hi);
974 return sum/(numNeighbors_ * 2);
985 badChannels_.clear();
993 std::cout <<
"QTest:" << getAlgoName() <<
"::runTest called on " 994 << me-> getFullname() <<
"\n";
1004 ncx = me->
getTH2F()->GetXaxis()->GetNbins();
1005 ncy = me->
getTH2F()->GetYaxis()->GetNbins();
1011 ncx = me->
getTH2S()->GetXaxis()->GetNbins();
1012 ncy = me->
getTH2S()->GetYaxis()->GetNbins();
1018 ncx = me->
getTH2D()->GetXaxis()->GetNbins();
1019 ncy = me->
getTH2D()->GetYaxis()->GetNbins();
1039 std::cout <<
"QTest:ContentsWithinExpected" 1040 <<
" ME does not contain TH2F/TH2S/TH2D/TPROFILE/TPROFILE2D, exiting\n";
1048 if (checkMeanTolerance_)
1051 for (
int cx = 1; cx <= ncx; ++cx)
1053 for (
int cy = 1; cy <= ncy; ++cy)
1057 sum += h->GetBinContent(h->GetBin(cx, cy));
1062 sum += h->GetBinContent(h->GetBin(cx, cy));
1067 sum += h->GetBinContent(h->GetBin(cx, cy));
1072 if (me->
getTProfile()->GetBinEntries(h->GetBin(cx)) >= minEntries_/(ncx))
1074 sum += h->GetBinContent(h->GetBin(cx));
1080 if (me->
getTProfile2D()->GetBinEntries(h->GetBin(cx, cy)) >= minEntries_/(ncx*ncy))
1082 sum += h->GetBinContent(h->GetBin(cx, cy));
1096 for (
int cx = 1; cx <= ncx; ++cx)
1098 for (
int cy = 1; cy <= ncy; ++cy)
1100 bool failMean =
false;
1101 bool failRMS =
false;
1102 bool failMeanTolerance =
false;
1105 me->
getTProfile()->GetBinEntries(h->GetBin(cx)) < minEntries_/(ncx))
1109 me->
getTProfile2D()->GetBinEntries(h->GetBin(cx, cy)) < minEntries_/(ncx*ncy))
1114 double mean = h->GetBinContent(h->GetBin(cx, cy));
1115 failMean = (mean < minMean_ || mean > maxMean_);
1120 double rms = h->GetBinError(h->GetBin(cx, cy));
1121 failRMS = (rms < minRMS_ || rms > maxRMS_);
1124 if (checkMeanTolerance_)
1126 double mean = h->GetBinContent(h->GetBin(cx, cy));
1130 if (failMean || failRMS || failMeanTolerance)
1136 h->GetBinContent(h->GetBin(cx, cy)),
1137 h->GetBinError(h->GetBin(cx, cy)));
1138 badChannels_.push_back(chan);
1143 h->GetBinContent(h->GetBin(cx, cy)),
1144 h->GetBinError(h->GetBin(cx, cy)));
1145 badChannels_.push_back(chan);
1150 h->GetBinContent(h->GetBin(cx, cy)),
1151 h->GetBinError(h->GetBin(cx, cy)));
1152 badChannels_.push_back(chan);
1158 h->GetBinError(h->GetBin(cx)));
1159 badChannels_.push_back(chan);
1164 h->GetBinContent(h->GetBin(cx, cy)),
1165 h->GetBinError(h->GetBin(cx, cy)));
1166 badChannels_.push_back(chan);
1172 return 1.*(ncx*ncy -
fail)/(ncx*ncy);
1179 ncx = me->
getTH2F()->GetXaxis()->GetNbins();
1180 ncy = me->
getTH2F()->GetYaxis()->GetNbins();
1185 ncx = me->
getTH2S()->GetXaxis()->GetNbins();
1186 ncy = me->
getTH2S()->GetYaxis()->GetNbins();
1191 ncx = me->
getTH2D()->GetXaxis()->GetNbins();
1192 ncy = me->
getTH2D()->GetYaxis()->GetNbins();
1198 std::cout <<
"QTest:ContentsWithinExpected AS" 1199 <<
" ME does not contain TH2F/TH2S/TH2D, exiting\n";
1205 for (
int cx = 1; cx <= ncx; ++cx)
1207 for (
int cy = 1; cy <= ncy; ++cy)
1209 bool failure =
false;
1210 double Content = h->GetBinContent(h->GetBin(cx, cy));
1212 failure = (Content < minMean_ || Content > maxMean_);
1217 return 1.*(ncx*ncy-
fail)/(ncx*ncy);
1226 std::cout <<
"QTest:ContentsWitinExpected" 1227 <<
" Illogical range: (" << xmin <<
", " << xmax <<
"\n";
1238 std::cout <<
"QTest:ContentsWitinExpected" 1239 <<
" Illogical range: (" << xmin <<
", " << xmax <<
"\n";
1267 std::cout <<
"QTest:" << getAlgoName() <<
"::runTest called on " 1268 << me-> getFullname() <<
"\n";
1270 if (minEntries_ != 0 && me->
getEntries() < minEntries_)
return -1;
1288 <<
" does not contain TH1F/TH1S/TH1D, exiting\n";
1294 double mean = h->GetMean();
1295 if (mean <= xmax_ && mean >= xmin_)
1304 double chi = (h->GetMean() - expMean_)/sigma_;
1305 return TMath::Prob(chi*chi, 1);
1311 <<
" Error, sigma_ is zero, exiting\n";
1317 if (h->GetRMS() != 0.)
1319 double chi = (h->GetMean() - expMean_)/h->GetRMS();
1320 return TMath::Prob(chi*chi, 1);
1326 <<
" Error, RMS is zero, exiting\n";
1333 <<
" Error, neither Range, nor Sigma, nor RMS, exiting\n";
1340 useSigma_ = useRMS_ =
false;
1345 <<
" Illogical range: (" << xmin_ <<
", " << xmax_ <<
"\n";
1350 useRMS_ = useRange_ =
false;
1351 sigma_ = expectedSigma;
1355 <<
" Expected sigma = " << sigma_ <<
"\n";
1361 useSigma_ = useRange_ =
false;
1377 badChannels_.clear();
1386 std::cout <<
"QTest:" << getAlgoName() <<
"::runTest called on " 1387 << me-> getFullname() <<
"\n";
1388 std::cout <<
"\tMin = " << _min <<
"; Max = " << _max <<
"\n";
1389 std::cout <<
"\tMinMedian = " << _minMed <<
"; MaxMedian = " << _maxMed <<
"\n";
1390 std::cout <<
"\tUseEmptyBins = " << (_emptyBins?
"Yes":
"No" )<<
"\n";
1400 std::cout <<
"QTest:ContentsWithinExpected" 1401 <<
" ME does not contain TPROFILE2D, exiting\n";
1405 nBinsX = h->GetNbinsX();
1406 nBinsY = h->GetNbinsY();
1411 for (
int binX = 1; binX <= nBinsX; binX++ ){
1414 for (
int binY = 1; binY <= nBinsY; binY++){
1415 int bin = h->GetBin(binX, binY);
1416 double content = (double)h->GetBinContent(bin);
1417 if ( content == 0 && !_emptyBins)
1419 binValues.push_back(content);
1422 if (binValues.empty())
1424 nbins+=binValues.size();
1427 if(!binValues.empty()){
1428 int medPos = (
int)binValues.size()/2;
1429 nth_element(binValues.begin(),binValues.begin()+medPos,binValues.end());
1430 median = *(binValues.begin()+medPos);
1436 std::cout <<
"QTest: Median is 0; the fixed cuts: [" << _minMed <<
"; " << _maxMed <<
"] are used\n";
1438 for(
int binY = 1; binY <= nBinsY; binY++){
1439 int bin = h->GetBin(binX, binY);
1440 double content = (double)h->GetBinContent(bin);
1444 if (content > _maxMed || content < _minMed){
1446 badChannels_.push_back(
chan);
1454 if (median*entries < _statCut )
1458 if(median > _maxMed || median < _minMed){
1459 for(
int binY = 1; binY <= nBinsY; binY++){
1460 int bin = h->GetBin(binX, binY);
1461 double content = (double)h->GetBinContent(bin);
1465 DQMChannel chan(binX,binY, 0, content/median, h->GetBinError(bin));
1466 badChannels_.push_back(
chan);
1473 float minCut = median*_min;
1474 float maxCut = median*_max;
1475 for(
int binY = 1; binY <= nBinsY; binY++){
1476 int bin = h->GetBin(binX, binY);
1477 double content = (double)h->GetBinContent(bin);
1481 if (content > maxCut || content < minCut){
1482 DQMChannel chan(binX,binY, 0, content/median, h->GetBinError(bin));
1483 badChannels_.push_back(
chan);
1491 std::cout <<
"QTest:CompareToMedian: Histogram is empty" << std::endl;
1514 std::cout <<
"QTest:" << getAlgoName() <<
"::runTest called on " 1515 << me-> getFullname() <<
"\n";
1516 std::cout <<
"\tMin = " << _min <<
"; Max = " << _max <<
"\n";
1529 std::cout <<
"QTest:ContentsWithinExpected" 1530 <<
" ME does not contain TH1F or TH2F, exiting\n";
1540 lastBinX = h1->FindLastBinAbove(_average,1);
1541 lastBinVal = h1->GetBinContent(lastBinX);
1542 if (h1->GetEntries() == 0 || lastBinVal < 0)
return 1;
1544 else if (h2 !=
nullptr)
1547 lastBinX = h2->FindLastBinAbove(_average,1);
1548 lastBinY = h2->FindLastBinAbove(_average,2);
1549 if ( h2->GetEntries() == 0 || lastBinX < 0 || lastBinY < 0 )
return 1;
1550 lastBinVal = h2->GetBinContent(h2->GetBin(lastBinX,lastBinY));
1552 if (verbose_ > 0)
std::cout <<
"QTest:"<< getAlgoName() <<
" Histogram does not exist" << std::endl;
1555 if (verbose_ > 0)
std::cout <<
"Min and Max values " << _min <<
" " << _max <<
" Av value " << _average <<
" lastBinX " << lastBinX<<
" lastBinY " << lastBinY <<
" lastBinVal " << lastBinVal << std::endl;
1556 if (lastBinVal > _min && lastBinVal <= _max)
1566 badChannels_.clear();
1575 std::cout <<
"QTest:" << getAlgoName() <<
"::runTest called on " 1576 << me-> getFullname() <<
"\n";
1593 if (verbose_>0)
std::cout <<
"QTest:CheckVariance" 1595 <<
" does not contain TH1F/TH1D/TPROFILE, exiting\n";
1599 int ncx = h->GetXaxis()->GetNbins();
1608 if (sum==0)
return -1;
1609 double avg = sum/ncx;
1614 sum2 += (contents - avg)*(contents - avg);
1617 double Variance = TMath::Sqrt(sum2/ncx);
TH1F * getRefTH1F(void) const
TH2S * getTH2S(void) const
TH1S * getTH1S(void) const
double getAverage(int bin, const TH1 *h) const
float runTest(const MonitorElement *me)
float runTest(const MonitorElement *me)
common ppss p3p6s2 common epss epspn46 common const1 w2
TProfile2D * getTProfile2D(void) const
float runTest(const MonitorElement *me)
TProfile2D * getRefTProfile2D(void) const
TH3F * getTH3F(void) const
TH1D * getTH1D(void) const
void setRMSRange(double xmin, double xmax)
set expected value for mean
void useSigma(double expectedSigma)
TH2D * getTH2D(void) const
double getEntries(void) const
get # of entries
TH3F * getRefTH3F(void) const
float runTest(const MonitorElement *me)
float runTest(const MonitorElement *me)
TH2F * getRefTH2F(void) const
static const int DID_NOT_RUN
float runTest(const MonitorElement *me)
static const float ERROR_PROB_THRESHOLD
Kind kind(void) const
Get the type of the monitor element.
float runTest(const MonitorElement *me)
const std::string getFullname(void) const
get full name of ME including Pathname
TH2D * getRefTH2D(void) const
bin
set the eta bin as selection string.
void useRange(double xmin, double xmax)
TObject * getRootObject(void) const
float runTest(const MonitorElement *me)
virtual float runTest(const MonitorElement *me)
TH1F * getTH1F(void) const
chan
lumi = TPaveText(lowX+0.38, lowY+0.061, lowX+0.45, lowY+0.161, "NDC") lumi.SetBorderSize( 0 ) lumi...
TProfile * getRefTProfile(void) const
void init(void)
initialize values
void setMeanRange(double xmin, double xmax)
set expected value for mean
float runTest(const MonitorElement *me)
TProfile * getTProfile(void) const
TH2S * getRefTH2S(void) const
float runTest(const MonitorElement *me)
TH2F * getTH2F(void) const
void reset(double vett[256])
TObject * getRefRootObject(void) const
TH1S * getRefTH1S(void) const
float runTest(const MonitorElement *me)
float runTest(const MonitorElement *me)
static const float WARNING_PROB_THRESHOLD
default "probability" values for setting warnings & errors when running tests
TH1D * getRefTH1D(void) const
void raiseDQMError(const char *context, const char *fmt,...)