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;
87 nbins = me->
getTH2F()->GetXaxis()->GetNbins() *
88 me->
getTH2F()->GetYaxis()->GetNbins();
89 nbinsref = me->
getRefTH2F()->GetXaxis()->GetNbins() *
93 if (nbins != nbinsref)
return -1;
99 nbins = me->
getTH2S()->GetXaxis()->GetNbins() *
100 me->
getTH2S()->GetYaxis()->GetNbins();
101 nbinsref = me->
getRefTH2S()->GetXaxis()->GetNbins() *
105 if (nbins != nbinsref)
return -1;
111 nbins = me->
getTH2D()->GetXaxis()->GetNbins() *
112 me->
getTH2D()->GetYaxis()->GetNbins();
113 nbinsref = me->
getRefTH2D()->GetXaxis()->GetNbins() *
117 if (nbins != nbinsref)
return -1;
123 nbins = me->
getTH3F()->GetXaxis()->GetNbins() *
124 me->
getTH3F()->GetYaxis()->GetNbins() *
125 me->
getTH3F()->GetZaxis()->GetNbins();
126 nbinsref = me->
getRefTH3F()->GetXaxis()->GetNbins() *
131 if (nbins != nbinsref)
return -1;
138 <<
" ME does not contain TH1F/TH1S/TH1D/TH2F/TH2S/TH2D/TH3F, exiting\n";
145 bool failure =
false;
149 if (contents != ref_->GetBinContent(
bin))
153 badChannels_.push_back(
chan);
156 if (failure)
return 0;
173 std::cout <<
"QTest:" << getAlgoName() <<
"::runTest called on " 174 << me-> getFullname() <<
"\n";
203 <<
" ME does not contain TH1F/TH1S/TH1D/TProfile, exiting\n";
208 int ncx1 = h->GetXaxis()->GetNbins();
209 int ncx2 = ref_->GetXaxis()->GetNbins();
214 <<
" different number of channels! (" 215 << ncx1 <<
", " << ncx2 <<
"), exiting\n";
221 Ndof_ = 0; chi2_ = -1.; ncx1 = ncx2 = -1;
223 int i, i_start, i_end;
229 i_start = h->GetXaxis()->GetFirst();
230 i_end = h->GetXaxis()->GetLast();
235 double sum1=0,
sum2=0;
236 for (i=i_start; i<=i_end; i++)
238 sum1 += h->GetBinContent(i);
239 sum2 += ref_->GetBinContent(i);
247 <<
" Test Histogram " << h->GetName()
248 <<
" is empty, exiting\n";
255 <<
" Ref Histogram " << ref_->GetName()
256 <<
" is empty, exiting\n";
260 double bin1, bin2, err1, err2,
temp;
261 for (i=i_start; i<=i_end; i++)
263 bin1 = h->GetBinContent(i)/sum1;
264 bin2 = ref_->GetBinContent(i)/
sum2;
265 if (bin1 ==0 && bin2==0)
272 err1=h->GetBinError(i); err2=ref_->GetBinError(i);
273 if (err1 == 0 && err2 == 0)
277 <<
" bins with non-zero content and zero error, exiting\n";
280 err1*=err1 ; err2*=err2;
282 chi2 +=temp*temp/(err1+err2);
286 return TMath::Prob(0.5*chi2,
int(0.5*ndof));
298 if (minEntries_ != 0 && me->
getEntries() < minEntries_)
305 std::cout <<
"QTest:" << getAlgoName() <<
"::runTest called on " 306 << me-> getFullname() <<
"\n";
335 <<
" ME does not contain TH2F/TH2S/TH2D/TProfile2D, exiting\n";
340 int ncx1 = h->GetXaxis()->GetNbins();
341 int ncx2 = ref_->GetXaxis()->GetNbins();
342 int ncy1 = h->GetYaxis()->GetNbins();
343 int ncy2 = ref_->GetYaxis()->GetNbins();
344 if ( ( ncx1 != ncx2) || ( ncy1 != ncy2) )
348 <<
" different number of channels! (" 349 << ncx1 <<
", " << ncx2 <<
"), (" 350 << ncy1 <<
", " << ncy2 <<
"), exiting\n";
356 Ndof_ = 0; chi2_ = -1.;
359 int i_start = h->GetXaxis()->GetFirst();
360 int i_end = h->GetXaxis()->GetLast();
361 int j_start = h->GetYaxis()->GetFirst();
362 int j_end = h->GetYaxis()->GetLast();
363 if (h->Integral(i_start, i_end, j_start, j_end) == 0)
367 <<
" Test Histogram " << h->GetName()
368 <<
" is empty, exiting\n";
371 if (ref_->Integral(i_start, i_end, j_start, j_end) == 0)
375 <<
" Ref Histogram " << ref_->GetName()
376 <<
" is empty, exiting\n";
382 double pValue = h->Chi2TestX(ref_, chi2_, Ndof_, igood,
"");
384 if (chi2_==-1. && Ndof_==0)
396 const double difprec = 1
e-5;
406 std::cout <<
"QTest:" << getAlgoName() <<
"::runTest called on " 407 << me-> getFullname() <<
"\n";
436 <<
" ME does not contain TH1F/TH1S/TH1D/TProfile, exiting\n";
441 int ncx1 = h->GetXaxis()->GetNbins();
442 int ncx2 = ref_->GetXaxis()->GetNbins();
447 <<
" different number of channels! (" 448 << ncx1 <<
", " << ncx2 <<
"), exiting\n";
452 double diff1 =
TMath::Abs(h->GetXaxis()->GetXmin() - ref_->GetXaxis()->GetXmin());
453 double diff2 =
TMath::Abs(h->GetXaxis()->GetXmax() - ref_->GetXaxis()->GetXmax());
454 if (diff1 > difprec || diff2 > difprec)
458 <<
" histograms with different binning, exiting\n";
463 Bool_t afunc1 = kFALSE; Bool_t afunc2 = kFALSE;
464 double sum1 = 0,
sum2 = 0;
465 double ew1, ew2, w1 = 0,
w2 = 0;
467 for (bin=1;bin<=ncx1;bin++)
469 sum1 += h->GetBinContent(bin);
470 sum2 += ref_->GetBinContent(bin);
471 ew1 = h->GetBinError(bin);
472 ew2 = ref_->GetBinError(bin);
481 <<
" Test Histogram: " << h->GetName()
482 <<
": integral is zero, exiting\n";
489 <<
" Ref Histogram: " << ref_->GetName()
490 <<
": integral is zero, exiting\n";
494 double tsum1 = sum1;
double tsum2 =
sum2;
495 tsum1 += h->GetBinContent(0);
496 tsum2 += ref_->GetBinContent(0);
497 tsum1 += h->GetBinContent(ncx1+1);
498 tsum2 += ref_->GetBinContent(ncx1+1);
503 double ne1 = h->GetEntries();
504 double ne2 = ref_->GetEntries();
506 double difsum1 = (ne1-tsum1)/tsum1;
508 if (difsum1 > difprec &&
int(ne1) != ncx1)
510 if (h->GetSumw2N() == 0)
514 <<
" Weighted events and no Sumw2 for " 515 << h->GetName() <<
"\n";
519 esum1 = sum1*sum1/w1;
523 double difsum2 = (ne2-tsum2)/tsum2;
525 if (difsum2 > difprec &&
int(ne2) != ncx1)
527 if (ref_->GetSumw2N() == 0)
531 <<
" Weighted events and no Sumw2 for " 532 << ref_->GetName() <<
"\n";
540 double s1 = 1/tsum1;
double s2 = 1/tsum2;
542 double dfmax =0, rsum1 = 0, rsum2 = 0;
547 for ( bin=first; bin<=
last; bin++)
549 rsum1 += s1*h->GetBinContent(bin);
550 rsum2 += s2*ref_->GetBinContent(bin);
556 if (afunc1) z = dfmax*TMath::Sqrt(esum2);
557 else if (afunc2) z = dfmax*TMath::Sqrt(esum1);
558 else z = dfmax*TMath::Sqrt(esum1*esum2/(esum1+esum2));
564 <<
" Numerical problems with histogram " 565 << h->GetName() <<
"\n";
569 <<
" Numerical problems with histogram " 570 << ref_->GetName() <<
"\n";
572 return TMath::KolmogorovProb(z);
580 badChannels_.clear();
589 std::cout <<
"QTest:" << getAlgoName() <<
"::runTest called on " 590 << me-> getFullname() <<
"\n";
608 if (verbose_>0)
std::cout <<
"QTest:ContentsXRange" 610 <<
" does not contain TH1F/TH1S/TH1D, exiting\n";
614 if (!rangeInitialized_)
617 setAllowedXRange(h->GetXaxis()->GetXmin(), h->GetXaxis()->GetXmax());
621 int ncx = h->GetXaxis()->GetNbins();
631 for (bin = first; bin <=
last; ++
bin)
633 double contents = h->GetBinContent(bin);
634 double x = h->GetBinCenter(bin);
636 if (x < xmin_ || x > xmax_)fail +=
contents;
639 if (sum==0)
return 1;
641 return (sum - fail)/sum;
650 badChannels_.clear();
659 std::cout <<
"QTest:" << getAlgoName() <<
"::runTest called on " 660 << me-> getFullname() <<
"\n";
679 <<
" does not contain TH1F/TH1S/TH1D, exiting\n";
683 if (!rangeInitialized_ || !h->GetXaxis())
return 1;
684 int ncx = h->GetXaxis()->GetNbins();
695 for (bin = first; bin <=
last; ++
bin)
697 double contents = h->GetBinContent(bin);
698 bool failure =
false;
699 failure = (contents < ymin_ || contents > ymax_);
703 badChannels_.push_back(
chan);
708 return 1.*(ncx -
fail)/ncx;
712 for (bin = first; bin <=
last; ++
bin)
714 double contents = h->GetBinContent(bin);
715 bool failure =
false;
716 if (contents) failure = (contents < ymin_ || contents > ymax_);
720 return 1.*(ncx -
fail)/ncx;
729 badChannels_.clear();
738 std::cout <<
"QTest:" << getAlgoName() <<
"::runTest called on " 739 << me-> getFullname() <<
"\n";
775 <<
" does not contain TH1F/TH1S/TH1D/TH2F/TH2S/TH2D, exiting\n";
784 if (!rangeInitialized_ || !h1->GetXaxis() )
786 int ncx = h1->GetXaxis()->GetNbins();
792 for (bin = first; bin <=
last; ++
bin)
794 double contents = h1->GetBinContent(bin);
795 bool failure =
false;
796 failure = contents <= ymin_;
800 badChannels_.push_back(
chan);
805 return 1.*(ncx -
fail)/ncx;
812 int ncx = h2->GetXaxis()->GetNbins();
813 int ncy = h2->GetYaxis()->GetNbins();
816 for (
int cx = 1; cx <= ncx; ++cx)
818 for (
int cy = 1; cy <= ncy; ++cy)
820 double contents = h2->GetBinContent(h2->GetBin(cx, cy));
821 bool failure =
false;
822 failure = contents <= ymin_;
825 DQMChannel chan(cx, cy, 0, contents, h2->GetBinError(h2->GetBin(cx, cy)));
826 badChannels_.push_back(chan);
832 return 1.*(ncx*ncy -
fail) / (ncx*ncy);
838 <<
" TH1/TH2F are NULL, exiting\n";
850 badChannels_.clear();
858 std::cout <<
"QTest:" << getAlgoName() <<
"::runTest called on " 859 << me-> getFullname() <<
"\n";
865 nbins = me->
getTH1F()->GetXaxis()->GetNbins();
871 nbins = me->
getTH1S()->GetXaxis()->GetNbins();
877 nbins = me->
getTH1D()->GetXaxis()->GetNbins();
883 nbins = me->
getTH2F()->GetXaxis()->GetNbins() *
884 me->
getTH2F()->GetYaxis()->GetNbins();
890 nbins = me->
getTH2S()->GetXaxis()->GetNbins() *
891 me->
getTH2S()->GetYaxis()->GetNbins();
897 nbins = me->
getTH2D()->GetXaxis()->GetNbins() *
898 me->
getTH2D()->GetYaxis()->GetNbins();
906 <<
" does not contain TH1F/TH1S/TH1D or TH2F/TH2S/TH2D, exiting\n";
912 if ( !rangeInitialized_ || !h->GetXaxis() )
922 for (bin = first; bin <=
last; ++
bin)
924 double contents = h->GetBinContent(bin);
925 double average = getAverage(bin, h);
926 bool failure =
false;
928 failure = (((contents-average)/
TMath::Abs(average)) > tolerance_);
934 badChannels_.push_back(
chan);
939 return 1.*(nbins -
fail)/nbins;
949 int ncx = h->GetXaxis()->GetNbins();
950 double sum = 0;
int bin_low, bin_hi;
951 for (
unsigned i = 1;
i <= numNeighbors_; ++
i)
954 bin_low = bin-
i; bin_hi = bin+
i;
957 while (bin_low < first)
958 bin_low = ncx + bin_low;
960 bin_hi = bin_hi - ncx;
961 sum += h->GetBinContent(bin_low) + h->GetBinContent(bin_hi);
964 return sum/(numNeighbors_ * 2);
975 badChannels_.clear();
983 std::cout <<
"QTest:" << getAlgoName() <<
"::runTest called on " 984 << me-> getFullname() <<
"\n";
994 ncx = me->
getTH2F()->GetXaxis()->GetNbins();
995 ncy = me->
getTH2F()->GetYaxis()->GetNbins();
1001 ncx = me->
getTH2S()->GetXaxis()->GetNbins();
1002 ncy = me->
getTH2S()->GetYaxis()->GetNbins();
1008 ncx = me->
getTH2D()->GetXaxis()->GetNbins();
1009 ncy = me->
getTH2D()->GetYaxis()->GetNbins();
1029 std::cout <<
"QTest:ContentsWithinExpected" 1030 <<
" ME does not contain TH2F/TH2S/TH2D/TPROFILE/TPROFILE2D, exiting\n";
1038 if (checkMeanTolerance_)
1041 for (
int cx = 1; cx <= ncx; ++cx)
1043 for (
int cy = 1; cy <= ncy; ++cy)
1047 sum += h->GetBinContent(h->GetBin(cx, cy));
1052 sum += h->GetBinContent(h->GetBin(cx, cy));
1057 sum += h->GetBinContent(h->GetBin(cx, cy));
1062 if (me->
getTProfile()->GetBinEntries(h->GetBin(cx)) >= minEntries_/(ncx))
1064 sum += h->GetBinContent(h->GetBin(cx));
1070 if (me->
getTProfile2D()->GetBinEntries(h->GetBin(cx, cy)) >= minEntries_/(ncx*ncy))
1072 sum += h->GetBinContent(h->GetBin(cx, cy));
1086 for (
int cx = 1; cx <= ncx; ++cx)
1088 for (
int cy = 1; cy <= ncy; ++cy)
1090 bool failMean =
false;
1091 bool failRMS =
false;
1092 bool failMeanTolerance =
false;
1095 me->
getTProfile()->GetBinEntries(h->GetBin(cx)) < minEntries_/(ncx))
1099 me->
getTProfile2D()->GetBinEntries(h->GetBin(cx, cy)) < minEntries_/(ncx*ncy))
1104 double mean = h->GetBinContent(h->GetBin(cx, cy));
1105 failMean = (mean < minMean_ || mean > maxMean_);
1110 double rms = h->GetBinError(h->GetBin(cx, cy));
1111 failRMS = (rms < minRMS_ || rms > maxRMS_);
1114 if (checkMeanTolerance_)
1116 double mean = h->GetBinContent(h->GetBin(cx, cy));
1120 if (failMean || failRMS || failMeanTolerance)
1126 h->GetBinContent(h->GetBin(cx, cy)),
1127 h->GetBinError(h->GetBin(cx, cy)));
1128 badChannels_.push_back(chan);
1133 h->GetBinContent(h->GetBin(cx, cy)),
1134 h->GetBinError(h->GetBin(cx, cy)));
1135 badChannels_.push_back(chan);
1140 h->GetBinContent(h->GetBin(cx, cy)),
1141 h->GetBinError(h->GetBin(cx, cy)));
1142 badChannels_.push_back(chan);
1148 h->GetBinError(h->GetBin(cx)));
1149 badChannels_.push_back(chan);
1154 h->GetBinContent(h->GetBin(cx, cy)),
1155 h->GetBinError(h->GetBin(cx, cy)));
1156 badChannels_.push_back(chan);
1162 return 1.*(ncx*ncy -
fail)/(ncx*ncy);
1169 ncx = me->
getTH2F()->GetXaxis()->GetNbins();
1170 ncy = me->
getTH2F()->GetYaxis()->GetNbins();
1175 ncx = me->
getTH2S()->GetXaxis()->GetNbins();
1176 ncy = me->
getTH2S()->GetYaxis()->GetNbins();
1181 ncx = me->
getTH2D()->GetXaxis()->GetNbins();
1182 ncy = me->
getTH2D()->GetYaxis()->GetNbins();
1188 std::cout <<
"QTest:ContentsWithinExpected AS" 1189 <<
" ME does not contain TH2F/TH2S/TH2D, exiting\n";
1195 for (
int cx = 1; cx <= ncx; ++cx)
1197 for (
int cy = 1; cy <= ncy; ++cy)
1199 bool failure =
false;
1200 double Content = h->GetBinContent(h->GetBin(cx, cy));
1202 failure = (Content < minMean_ || Content > maxMean_);
1207 return 1.*(ncx*ncy-
fail)/(ncx*ncy);
1216 std::cout <<
"QTest:ContentsWitinExpected" 1217 <<
" Illogical range: (" << xmin <<
", " << xmax <<
"\n";
1228 std::cout <<
"QTest:ContentsWitinExpected" 1229 <<
" Illogical range: (" << xmin <<
", " << xmax <<
"\n";
1257 std::cout <<
"QTest:" << getAlgoName() <<
"::runTest called on " 1258 << me-> getFullname() <<
"\n";
1260 if (minEntries_ != 0 && me->
getEntries() < minEntries_)
return -1;
1278 <<
" does not contain TH1F/TH1S/TH1D, exiting\n";
1284 double mean = h->GetMean();
1285 if (mean <= xmax_ && mean >= xmin_)
1294 double chi = (h->GetMean() - expMean_)/sigma_;
1295 return TMath::Prob(chi*chi, 1);
1301 <<
" Error, sigma_ is zero, exiting\n";
1307 if (h->GetRMS() != 0.)
1309 double chi = (h->GetMean() - expMean_)/h->GetRMS();
1310 return TMath::Prob(chi*chi, 1);
1316 <<
" Error, RMS is zero, exiting\n";
1323 <<
" Error, neither Range, nor Sigma, nor RMS, exiting\n";
1330 useSigma_ = useRMS_ =
false;
1335 <<
" Illogical range: (" << xmin_ <<
", " << xmax_ <<
"\n";
1340 useRMS_ = useRange_ =
false;
1341 sigma_ = expectedSigma;
1345 <<
" Expected sigma = " << sigma_ <<
"\n";
1351 useSigma_ = useRange_ =
false;
1367 badChannels_.clear();
1376 std::cout <<
"QTest:" << getAlgoName() <<
"::runTest called on " 1377 << me-> getFullname() <<
"\n";
1378 std::cout <<
"\tMin = " << _min <<
"; Max = " << _max <<
"\n";
1379 std::cout <<
"\tMinMedian = " << _minMed <<
"; MaxMedian = " << _maxMed <<
"\n";
1380 std::cout <<
"\tUseEmptyBins = " << (_emptyBins?
"Yes":
"No" )<<
"\n";
1390 std::cout <<
"QTest:ContentsWithinExpected" 1391 <<
" ME does not contain TPROFILE2D, exiting\n";
1395 nBinsX = h->GetNbinsX();
1396 nBinsY = h->GetNbinsY();
1401 for (
int binX = 1; binX <= nBinsX; binX++ ){
1404 for (
int binY = 1; binY <= nBinsY; binY++){
1405 int bin = h->GetBin(binX, binY);
1406 double content = (double)h->GetBinContent(bin);
1407 if ( content == 0 && !_emptyBins)
1409 binValues.push_back(content);
1412 if (binValues.empty())
1414 nbins+=binValues.size();
1417 if(binValues.size()>0){
1418 int medPos = (
int)binValues.size()/2;
1419 nth_element(binValues.begin(),binValues.begin()+medPos,binValues.end());
1420 median = *(binValues.begin()+medPos);
1426 std::cout <<
"QTest: Median is 0; the fixed cuts: [" << _minMed <<
"; " << _maxMed <<
"] are used\n";
1428 for(
int binY = 1; binY <= nBinsY; binY++){
1429 int bin = h->GetBin(binX, binY);
1430 double content = (double)h->GetBinContent(bin);
1434 if (content > _maxMed || content < _minMed){
1436 badChannels_.push_back(
chan);
1444 if (median*entries < _statCut )
1448 if(median > _maxMed || median < _minMed){
1449 for(
int binY = 1; binY <= nBinsY; binY++){
1450 int bin = h->GetBin(binX, binY);
1451 double content = (double)h->GetBinContent(bin);
1455 DQMChannel chan(binX,binY, 0, content/median, h->GetBinError(bin));
1456 badChannels_.push_back(
chan);
1463 float minCut = median*_min;
1464 float maxCut = median*_max;
1465 for(
int binY = 1; binY <= nBinsY; binY++){
1466 int bin = h->GetBin(binX, binY);
1467 double content = (double)h->GetBinContent(bin);
1471 if (content > maxCut || content < minCut){
1472 DQMChannel chan(binX,binY, 0, content/median, h->GetBinError(bin));
1473 badChannels_.push_back(
chan);
1481 std::cout <<
"QTest:CompareToMedian: Histogram is empty" << std::endl;
1504 std::cout <<
"QTest:" << getAlgoName() <<
"::runTest called on " 1505 << me-> getFullname() <<
"\n";
1506 std::cout <<
"\tMin = " << _min <<
"; Max = " << _max <<
"\n";
1519 std::cout <<
"QTest:ContentsWithinExpected" 1520 <<
" ME does not contain TH1F or TH2F, exiting\n";
1530 lastBinX = h1->FindLastBinAbove(_average,1);
1531 lastBinVal = h1->GetBinContent(lastBinX);
1532 if (h1->GetEntries() == 0 || lastBinVal < 0)
return 1;
1534 else if (h2 !=
NULL)
1537 lastBinX = h2->FindLastBinAbove(_average,1);
1538 lastBinY = h2->FindLastBinAbove(_average,2);
1539 if ( h2->GetEntries() == 0 || lastBinX < 0 || lastBinY < 0 )
return 1;
1540 lastBinVal = h2->GetBinContent(h2->GetBin(lastBinX,lastBinY));
1542 if (verbose_ > 0)
std::cout <<
"QTest:"<< getAlgoName() <<
" Histogram does not exist" << std::endl;
1545 if (verbose_ > 0)
std::cout <<
"Min and Max values " << _min <<
" " << _max <<
" Av value " << _average <<
" lastBinX " << lastBinX<<
" lastBinY " << lastBinY <<
" lastBinVal " << lastBinVal << std::endl;
1546 if (lastBinVal > _min && lastBinVal <= _max)
1556 badChannels_.clear();
1565 std::cout <<
"QTest:" << getAlgoName() <<
"::runTest called on " 1566 << me-> getFullname() <<
"\n";
1583 if (verbose_>0)
std::cout <<
"QTest:CheckVariance" 1585 <<
" does not contain TH1F/TH1D/TPROFILE, exiting\n";
1589 int ncx = h->GetXaxis()->GetNbins();
1598 if (sum==0)
return -1;
1599 double avg = sum/ncx;
1604 sum2 += (contents - avg)*(contents - avg);
1607 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)
T x() const
Cartesian x coordinate.
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,...)