22 #include "GaudiKernel/IInterface.h"
23 #include "GaudiKernel/MsgStream.h"
24 #include "GaudiKernel/StatusCode.h"
45 m_configSvc(
"TrigConf::TrigConfigSvc/TrigConfigSvc",
name),
46 m_monGroup(0), m_phiScaleTT(32./
M_PI), m_phiScaleJE(16./
M_PI)
48 declareInterface<TrigT1CaloLWHistogramTool>(
this);
52 "Number of Error Event Number Samples");
54 "Make all eta bins the same size in eta/phi plots");
73 if (
sc.isFailure() ) {
74 msg(MSG::ERROR) <<
"Couldn't connect to " <<
m_configSvc.typeAndName()
77 }
else msg(MSG::INFO) <<
"Connected to " <<
m_configSvc.typeAndName()
81 return StatusCode::SUCCESS;
88 return StatusCode::SUCCESS;
100 std::ostringstream cnum;
102 << std::setiosflags(std::ios::fixed | std::ios::showpoint)
103 << std::setprecision(precision) <<
val;
110 int firstMax,
int secondMin,
int secondMax,
114 const int numSecond = secondMax - secondMin + 1;
118 std::ostringstream cnum;
120 axis->SetBinLabel(
bin, cnum.str().c_str());
129 int firstMin,
int firstMax,
130 int secondMin,
int secondMax,
int step,
int offset,
bool xAxis)
136 std::ostringstream cnum;
138 axis->SetBinLabel(
bin, cnum.str().c_str());
152 std::ostringstream cnum;
154 axis->SetBinLabel(
bin, cnum.str().c_str());
164 std::string newWord(word);
165 if (!xAxis && word.length() > 6) {
167 std::string::size_type
idx =
168 word.find_last_of(
"ABCDEFGHIJKLMNOPQRSTUVWXYZ");
169 if (
idx != std::string::npos &&
idx != 0 &&
idx != word.length()-1) {
170 newWord =
"#splitline{" + word.substr(0,
idx) +
"}{"
171 + word.substr(
idx) +
"}";
183 for (
int bit = 0; bit < 8; ++bit) {
194 std::vector<std::string>&
names)
215 int nthresh = ttc.
max;
217 for (
int thr = 0; thr < nthresh; ++thr) {
218 std::ostringstream cnum;
219 cnum <<
type <<
" " << thr;
220 names.push_back(cnum.str());
228 std::vector<TrigConf::TriggerThreshold*>::const_iterator
it;
230 const std::string thrType((*it)->type());
231 if (
type == def.emType() ||
type == def.tauType()) {
232 if (thrType != def.emType() && thrType != def.tauType())
continue;
233 }
else if (thrType !=
type)
continue;
234 const int threshNum = (*it)->thresholdNumber();
235 if (threshNum >= 0 && threshNum < nthresh) {
236 names[threshNum] = (*it)->name();
249 const std::string&
type,
int offset,
bool xAxis)
252 std::vector<std::string>
names;
255 std::vector<std::string>::const_iterator
it =
names.begin();
267 std::ostringstream cval;
268 const int mask = (1 << nBits) - 1;
269 for (
int thr = 0; thr < nThresh; ++thr) {
270 const int hit = (
val >> (nBits*thr)) &
mask;
272 if (thr != nThresh-1) cval <<
" ";
280 int nThresh,
int nBits)
283 const int mask = (1 << nBits) - 1;
284 for (
int thr = 0; thr < nThresh; ++thr) {
285 const int hit1 = (val1 >> (nBits*thr)) &
mask;
286 const int hit2 = (val2 >> (nBits*thr)) &
mask;
287 if (hit1 && (hit1 == hit2))
result |= (1 << thr);
295 int nThresh,
int nBits)
298 const int mask = (1 << nBits) - 1;
299 for (
int thr = 0; thr < nThresh; ++thr) {
300 const int hit1 = (val1 >> (nBits*thr)) &
mask;
301 const int hit2 = (val2 >> (nBits*thr)) &
mask;
302 if (hit1 != hit2)
result |= (1 << thr);
312 unsigned int mask = 0;
327 int nthresh = ttc.
max;
335 std::vector<TrigConf::TriggerThreshold*>::const_iterator
it;
337 const std::string thrType((*it)->type());
338 if (thrType !=
type)
continue;
339 const int threshNum = (*it)->thresholdNumber();
340 if (threshNum >= 0 && threshNum < nthresh) {
341 mask |= (1<<threshNum);
372 const int nChips = 8;
376 axis->SetTitle(
"Chip/Local Coord");
384 const int nChips = 16;
388 axis->SetTitle(
"Chip/Local Coord");
410 const int nCrates = 4;
414 axis->SetTitle(
"Crate/CMX");
422 const int nCrates = 4;
423 const int nCPMs = 14;
426 axis->SetTitle(
"Crate/Module");
446 const int nCrates = 2;
447 const int nJEMs = 16;
450 axis->SetTitle(
"Crate/Module");
470 const int nCrates = 2;
474 axis->SetTitle(
"Crate/CMX");
482 const int nFrame = 8;
486 axis->SetTitle(
"Frame/Local Coord");
496 newOffset += TrigConf::L1DataDef::max_JET_Threshold_Number();
497 thresholds(
hist, TrigConf::L1DataDef::jbType(), newOffset, xAxis);
498 newOffset += TrigConf::L1DataDef::max_JB_Threshold_Number();
499 thresholds(
hist, TrigConf::L1DataDef::jfType(), newOffset, xAxis);
566 int lastCrate,
int offset,
bool xAxis)
569 if (lastCrate-firstCrate > 1)
step = 4;
572 axis->SetTitle(
"Crate/Module");
581 for (
int bit = 0; bit < 8; ++bit) {
595 axis->SetTitle(
"Submodule/Channel");
605 const std::string&
title,
616 const std::string&
title,
617 int nx,
const double*
xbins)
638 const std::string&
title,
int nx,
const double*
xbins)
649 const std::string&
title,
656 hist->SetOption(
"colz");
663 const std::string&
title,
664 int nx,
const double*
xbins,
670 hist->SetOption(
"colz");
677 const std::string&
title,
678 int nx,
const double*
xbins,
679 int ny,
const double*
ybins)
684 hist->SetOption(
"colz");
691 const std::string&
name,
const std::string&
title,
697 hist->SetOption(
"colz");
704 const std::string&
name,
const std::string&
title,
705 int nx,
const double*
xbins,
int ny,
double ymin,
double ymax)
710 hist->SetOption(
"colz");
717 const std::string&
name,
const std::string&
title,
718 int nx,
const double*
xbins,
int ny,
const double*
ybins)
723 hist->SetOption(
"colz");
730 const std::string&
title,
737 hist->SetOption(
"text");
744 const std::string&
name,
const std::string&
title,
750 hist->GetXaxis()->SetTitle(
"Events with Error/Mismatch");
759 msg(MSG::WARNING) <<
"Could not register histogram : "
769 const std::string&
title,
780 const std::string&
title,
787 hist->SetOption(
"colz");
796 msg(MSG::WARNING) <<
"Could not register histogram : "
809 const std::string&
name,
const std::string&
title)
820 const std::string&
name,
const std::string&
title)
831 const std::string&
name,
const std::string&
title)
838 axis->SetBinLabel(1,
"#color[4]{0}");
839 axis->SetBinLabel(2,
"#color[4]{1}");
840 axis->SetBinLabel(19,
"#color[4]{18}");
841 axis->SetBinLabel(20,
"#color[4]{19}");
842 axis->SetTitle(
"Serialiser FPGA");
849 const std::string&
name,
const std::string&
title)
860 const std::string&
title)
869 axis->SetBinLabel(
bin+58,
"+");
873 hist->SetXTitle(
"eta");
875 const double halfPhiBin =
M_PI/64.;
881 axis->SetBinLabel(64,
"phi");
889 const std::string&
title)
902 axis->SetBinLabel(
bin+58,
"+");
906 hist->SetXTitle(
"eta");
915 else axis->SetBinLabel(64,
"phi");
922 const std::string&
name,
const std::string&
title)
932 const std::string&
name,
const std::string&
title)
937 hist->GetXaxis()->SetTitle(
"Module");
938 hist->GetYaxis()->SetTitle(
"Crate");
945 const std::string&
name,
const std::string&
title)
949 hist->GetXaxis()->SetTitle(
"Module");
957 const std::string&
name,
const std::string&
title)
962 hist->GetYaxis()->SetTitle(
"CMX");
969 const std::string&
name,
const std::string&
title)
980 const std::string&
title)
984 axis->SetBinLabel(1,
"L0/0");
985 axis->SetBinLabel(2,
"L0/1");
986 axis->SetBinLabel(3,
"L1/0");
987 axis->SetBinLabel(4,
"L1/1");
988 axis->SetBinLabel(5,
"L2/0");
989 axis->SetBinLabel(6,
"L2/1");
990 axis->SetBinLabel(7,
"L3/0");
991 axis->SetBinLabel(8,
"L3/1");
992 axis->SetBinLabel(9,
"R0/0");
993 axis->SetBinLabel(10,
"R0/1");
994 axis->SetBinLabel(11,
"R1/0");
995 axis->SetBinLabel(12,
"R1/1");
996 axis->SetBinLabel(13,
"R2/0");
997 axis->SetBinLabel(14,
"R2/1");
998 axis->SetBinLabel(15,
"T/0");
999 axis->SetBinLabel(16,
"T/1");
1000 axis->SetTitle(
"Sum/CMX");
1007 const std::string&
name,
const std::string&
title)
1011 axis->SetBinLabel(1,
"L0");
1012 axis->SetBinLabel(2,
"L1");
1013 axis->SetBinLabel(3,
"L2");
1014 axis->SetBinLabel(4,
"L3");
1015 axis->SetBinLabel(5,
"R0");
1016 axis->SetBinLabel(6,
"R1");
1017 axis->SetBinLabel(7,
"R2");
1018 axis->SetBinLabel(8,
"T");
1019 axis->SetTitle(
"Sum (Local/Remote/Total)");
1027 const std::string&
name,
const std::string&
title,
int cmx)
1031 axis->SetBinLabel(1,
"L0");
1032 axis->SetBinLabel(2,
"L1");
1033 axis->SetBinLabel(3,
"L2");
1034 axis->SetBinLabel(4,
"L3");
1035 axis->SetBinLabel(5,
"R0");
1036 axis->SetBinLabel(6,
"R1");
1037 axis->SetBinLabel(7,
"R2");
1038 axis->SetBinLabel(8,
"T");
1039 axis->SetTitle(
"Sum (Local/Remote/Total)");
1040 std::string
type = (cmx) ? TrigConf::L1DataDef::emType()
1041 : TrigConf::L1DataDef::tauType();
1053 const std::string&
name,
const std::string&
title)
1058 axis->SetBinLabel(1,
"Ex");
1059 axis->SetBinLabel(2,
"Ey");
1060 axis->SetBinLabel(3,
"Et");
1067 const std::string&
name,
const std::string&
title)
1078 const std::string&
name,
const std::string&
title)
1089 const std::string&
name,
const std::string&
title)
1099 const std::string&
name,
const std::string&
title)
1104 hist->SetXTitle(
"Module");
1105 hist->SetYTitle(
"Crate");
1112 const std::string&
title)
1114 const int nxbins = 32;
1115 const double xbins[nxbins+1] = {-4.9,-3.2,-2.9,-2.7,-2.4,-2.2,-2.0,-1.8,-1.6,
1116 -1.4,-1.2,-1.0,-0.8,-0.6,-0.4,-0.2,0.0,0.2,
1117 0.4,0.6,0.8,1.0,1.2,1.4,1.6,1.8,2.0,2.2,2.4,
1120 hist->SetXTitle(
"eta");
1127 const std::string&
title)
1134 for (
int ch = -11;
ch < 12;
ch+=2) {
1137 const double eta =
chan/5. + 0.1;
1140 axis->SetBinLabel(2,
"-15/-3.05");
1141 axis->SetBinLabel(4,
"-13/-2.55");
1142 axis->SetBinLabel(29,
"12/2.55");
1143 axis->SetBinLabel(31,
"14/3.05");
1145 const int nxbins = 32;
1146 const double xbins[nxbins+1] = {-4.9,-3.2,-2.9,-2.7,-2.4,-2.2,-2.0,-1.8,
1147 -1.6,-1.4,-1.2,-1.0,-0.8,-0.6,-0.4,-0.2,
1148 0.0,0.2,0.4,0.6,0.8,1.0,1.2,1.4,1.6,1.8,
1149 2.0,2.2,2.4,2.7,2.9,3.2,4.9};
1151 hist->SetXTitle(
"eta");
1155 const double halfPhiBin =
M_PI/32.;
1161 else axis->SetBinLabel(32,
"phi");
1168 const std::string&
title)
1179 axis->SetBinLabel(2,
"-14/-2.95");
1180 axis->SetBinLabel(4,
"-12/-2.45");
1181 axis->SetBinLabel(28,
"12/2.45");
1182 axis->SetBinLabel(30,
"14/2.95");
1183 axis->SetBinLabel(32,
"16/4.05");
1185 const int nxbins = 32;
1186 const double xbins[nxbins+1] = {-4.0,-3.05,-2.8,-2.55,-2.3,-2.1,-1.9,-1.7,
1187 -1.5,-1.3,-1.1,-0.9,-0.7,-0.5,-0.3,-0.1,
1188 0.1,0.3,0.5,0.7,0.9,1.1,1.3,1.5,1.7,1.9,
1189 2.1,2.3,2.55,2.8,3.05,4.0,4.95};
1191 hist->SetXTitle(
"eta");
1200 else axis->SetBinLabel(32,
"phi");
1207 const std::string&
title,
1211 const int eRange = 256;
1212 const int dRange = 4096*
scale;
1214 for (
int i = 0;
i < eRange; ++
i) {
1218 double binedges[eRange+2];
1220 std::set<int>::const_iterator iter =
sorted.begin();
1221 std::set<int>::const_iterator iterE =
sorted.end();
1222 for (; iter != iterE; ++iter) {
1228 binedges[
nbins] = dRange;
1237 const std::string&
name,
const std::string&
title)
1239 const int nbins = TrigConf::L1DataDef::max_JET_Threshold_Number();
1248 const std::string&
name,
const std::string&
title)
1250 const int nbins = TrigConf::L1DataDef::max_JB_Threshold_Number();
1259 const std::string&
name,
const std::string&
title)
1261 const int nbins = TrigConf::L1DataDef::max_JF_Threshold_Number();
1270 const std::string&
name,
const std::string&
title)
1272 const int nbins = TrigConf::L1DataDef::max_JE_Threshold_Number();
1281 const std::string&
name,
const std::string&
title)
1283 const int nbins = TrigConf::L1DataDef::max_XE_Threshold_Number();
1292 const std::string&
name,
const std::string&
title)
1295 const int nbins = 8;
1304 const std::string&
name,
const std::string&
title)
1307 const int nbins = 8;
1316 const std::string&
name,
const std::string&
title)
1327 const std::string&
name,
const std::string&
title)
1332 hist->SetYTitle(
"Crate");
1343 const std::string&
title)
1345 const int nxbins = 66;
1346 const double xbins[nxbins+1] = {-4.9,-4.475,-4.050,-3.625,-3.2,-3.1,-2.9,
1347 -2.7,-2.5,-2.4,-2.3,-2.2,-2.1,-2.0,-1.9,
1348 -1.8,-1.7,-1.6,-1.5,-1.4,-1.3,-1.2,-1.1,
1349 -1.0,-0.9,-0.8,-0.7,-0.6,-0.5,-0.4,-0.3,
1350 -0.2,-0.1,0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,
1351 0.8,0.9,1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,
1352 1.8,1.9,2.0,2.1,2.2,2.3,2.4,2.5,2.7,2.9,
1353 3.1,3.2,3.625,4.050,4.475,4.9};
1355 hist->SetXTitle(
"eta");
1362 const std::string&
title)
1364 const int nxbins = 62;
1365 const double xbins[nxbins+1] = {-4.9,-4.050,-3.2,-3.1,-2.9,
1366 -2.7,-2.5,-2.4,-2.3,-2.2,-2.1,-2.0,-1.9,
1367 -1.8,-1.7,-1.6,-1.5,-1.4,-1.3,-1.2,-1.1,
1368 -1.0,-0.9,-0.8,-0.7,-0.6,-0.5,-0.4,-0.3,
1369 -0.2,-0.1,0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,
1370 0.8,0.9,1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,
1371 1.8,1.9,2.0,2.1,2.2,2.3,2.4,2.5,2.7,2.9,
1374 hist->SetXTitle(
"eta");
1381 const std::string&
title)
1388 for (
int ch = -25;
ch < 25;
ch+=4) {
1391 const double eta = (
chan/10.)+0.05;
1394 axis->SetBinLabel(1,
"-49/-4.41");
1395 axis->SetBinLabel(5,
"-32/-3.15");
1396 axis->SetBinLabel(62,
"31/3.15");
1397 axis->SetBinLabel(66,
"44/4.41");
1399 const int nxbins = 66;
1400 const double xbins[nxbins+1] = {-4.9,-4.475,-4.050,-3.625,-3.2,-3.1,-2.9,
1401 -2.7,-2.5,-2.4,-2.3,-2.2,-2.1,-2.0,-1.9,
1402 -1.8,-1.7,-1.6,-1.5,-1.4,-1.3,-1.2,-1.1,
1403 -1.0,-0.9,-0.8,-0.7,-0.6,-0.5,-0.4,-0.3,
1404 -0.2,-0.1,0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,
1405 0.8,0.9,1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,
1406 1.8,1.9,2.0,2.1,2.2,2.3,2.4,2.5,2.7,2.9,
1407 3.1,3.2,3.625,4.050,4.475,4.9};
1409 hist->SetXTitle(
"eta");
1414 const double halfPhiBin =
M_PI/64.;
1420 else axis->SetBinLabel(64,
"phi");
1428 const std::string&
title)
1433 axis->SetBinLabel(1,
"-49/-4.17");
1434 axis->SetBinLabel(66,
"44/4.19");
1443 const std::string&
name,
const std::string&
title)
1451 for (
int ch = -25;
ch < 25;
ch+=4) {
1454 const double eta = (
chan/10.)+0.05;
1457 axis->SetBinLabel(1,
"-49/-4.41");
1458 axis->SetBinLabel(5,
"-32/-3.15");
1459 axis->SetBinLabel(62,
"31/3.15");
1460 axis->SetBinLabel(66,
"44/4.41");
1462 const int nxbins = 66;
1463 const double xbins[nxbins+1] = {-4.9,-4.475,-4.050,-3.625,-3.2,-3.1,-2.9,
1464 -2.7,-2.5,-2.4,-2.3,-2.2,-2.1,-2.0,-1.9,
1465 -1.8,-1.7,-1.6,-1.5,-1.4,-1.3,-1.2,-1.1,
1466 -1.0,-0.9,-0.8,-0.7,-0.6,-0.5,-0.4,-0.3,
1467 -0.2,-0.1,0.0,0.1,0.2,0.3,0.4,0.5,0.6,0.7,
1468 0.8,0.9,1.0,1.1,1.2,1.3,1.4,1.5,1.6,1.7,
1469 1.8,1.9,2.0,2.1,2.2,2.3,2.4,2.5,2.7,2.9,
1470 3.1,3.2,3.625,4.050,4.475,4.9};
1472 hist->SetXTitle(
"eta");
1477 const double halfPhiBin =
M_PI/64.;
1483 else axis->SetBinLabel(64,
"phi");
1491 const std::string&
name,
const std::string&
title)
1496 axis->SetBinLabel(1,
"-49/-4.17");
1497 axis->SetBinLabel(66,
"44/4.19");
1506 const std::string&
name,
const std::string&
title,
1507 int firstCrate,
int lastCrate)
1509 const int nbins = (lastCrate-firstCrate+1)*16;
1518 const std::string&
name,
const std::string&
title,
1519 int firstCrate,
int lastCrate)
1521 const int nbins = (lastCrate-firstCrate+1)*16;
1532 const std::string&
name,
const std::string&
title,
1533 int firstCrate,
int lastCrate)
1535 const int nbins = (lastCrate-firstCrate+1)*16;
1546 const std::string&
name,
const std::string&
title,
1547 int firstCrate,
int lastCrate)
1549 const int nbins = (lastCrate-firstCrate+1)*16;
1559 const std::string&
name,
const std::string&
title,
1560 int firstCrate,
int lastCrate)
1562 const int nbins = (lastCrate-firstCrate+1)*16;
1576 int& minBinx,
int& minBiny,
int& maxBinx,
int& maxBiny,
1587 unsigned int ix = 0;
1588 unsigned int iy = 0;
1591 hist->resetActiveBinLoop();
1620 int& minBinx,
int& minBiny,
int& maxBinx,
int& maxBiny,
1633 for (
int ix = 1; ix <=
xbins; ++ix) {
1634 for (
int iy = 1; iy <=
ybins; ++iy) {
1670 const EventContext& ctx = Gaudi::Hive::currentContext();
1673 const int biny =
hist->GetYaxis()->FindBin(
y);
1676 for (
int binx = 1; binx <=
nbins; ++binx) {
1677 const int val =
hist->GetBinContent(binx, biny);
1679 else if (
val == 0) {
1684 for (
int b =
nbins;
b > binx; --
b) {
1685 const int v1 =
hist->GetBinContent(
b-1, biny);
1686 if (v1 == 0)
continue;
1687 const int v2 =
hist->GetBinContent(
b, biny);
1689 hist->SetBinContent(
b, biny, v1);
1701 int nThresh,
int nBits,
int offset)
1704 const int mask = (1 << nBits) - 1;
1705 for (
int thr = 0; thr < nThresh; ++thr) {
1706 const int hit = (
val >> (nBits*thr)) &
mask;
1715 int y,
int nThresh,
int nBits,
int offset)
1718 const int mask = (1 << nBits) - 1;
1719 for (
int thr = 0; thr < nThresh; ++thr) {
1720 const int hit = (
val >> (nBits*thr)) &
mask;
1729 int val,
int nThresh,
int nBits,
int offset)
1732 const int mask = (1 << nBits) - 1;
1733 for (
int thr = 0; thr < nThresh; ++thr) {
1734 const int hit = (
val >> (nBits*thr)) &
mask;
1746 unsigned int ix = 0;
1747 unsigned int iy = 0;
1761 histFrom->
getSums(sumW, sumW2, sumWX, sumWX2, sumWY, sumWY2, sumWXY);
1762 histTo->
setSums(sumW, sumW2, sumWX, sumWX2, sumWY, sumWY2, sumWXY);
1774 for (
int ix = 1; ix <=
xbins; ++ix) {
1775 for (
int iy = 1; iy <=
ybins; ++iy) {
1777 double contentOut = 0.;
1778 double errorOut = 0.;
1781 const double contentIn = contentOut*
entries;
1783 + contentOut*contentOut*
entries);
1797 histFrom->
getSums(sumW, sumW2, sumWX, sumWX2, sumWY, sumWY2, sumWXY,
1799 histTo->
setSums(sumW, sumW2, sumWX, sumWX2, sumWY, sumWY2, sumWXY,
1848 if (eta < -3.2 || eta > 3.2) {
1850 phiMod = floor(phiMod/2)*2. + 1.;
1875 if (
eta > 3.8 &&
eta < 4.0) {
1888 if (eta < -3.2 || eta > 3.2) {
1913 phiMod = floor(phiMod/4)*4. + 2.;
1918 }
else if (
absEta > 2.5) {
1924 phiMod = floor(phiMod/2)*2. + 1.;
1953 phiMod = floor(phiMod/4)*4. + 2.;
1958 }
else if (
absEta > 2.5) {
1964 phiMod = floor(phiMod/2)*2. + 1.;
1992 }
else if (
absEta > 2.5) {
2012 }
else if (
absEta > 2.5) {
2022 double eta,
double phi,
int& binx,
int& biny)
2025 if (eta < -2.5 || eta > 2.5) phiMod += 0.5;
2032 }
else if (
absEta > 2.5) {
2038 biny =
hist->GetYaxis()->FindBin(phiMod);
2044 double eta,
double phi,
int& binx,
int& biny)
2055 if (binx <= 4 || binx >= 63) nbin = 4;
2056 else if (binx <= 8 || binx >= 59) nbin = 2;
2057 const int binyBase = ((biny-1)/nbin)*nbin+1;
2058 for (
int i = 0;
i < nbin; ++
i) {
2087 unsigned int ix = 0;
2088 unsigned int iy = 0;
2091 hist->resetActiveBinLoop();
2095 }
else hist->SetBinError(1, 1, 0.);
2096 hist->setSums(0., 0., 0., 0., 0., 0., 0.);
2109 const double OneSigOneSided = 0.159;
2110 int nbins = hist3->GetNbinsX() + 2;
2111 if (hist3->GetDimension() == 2)
nbins *= (hist3->GetNbinsY() + 2);
2114 if (
denom == 0.)
continue;
2117 if (
eff == 0. ||
eff > 0.99) {
2125 hist3->SetEntries(
hist1->GetEntries());
2126 if (hist3->GetDimension() == 1) {
2127 hist3->SetMinimum(0.);
2128 hist3->SetMaximum(110.);