36 std::function<float(
const unsigned int,
const unsigned int)> SACFunc;
38 SACFunc = [&](
const unsigned int sector,
const unsigned int stack) {
49 const std::string SACname =
"SAC0";
50 hSac0SideA->SetTitle(fmt::format(
"{} ({}-Side)", SACname.data(),
"A").data());
51 hSac0SideC->SetTitle(fmt::format(
"{} ({}-Side)", SACname.data(),
"C").data());
54 std::string title = calDet.getName();
55 std::string
name = calDet.getName();
56 std::replace(
name.begin(),
name.end(),
' ',
'_');
57 std::replace(title.begin(), title.end(),
'_',
' ');
59 const std::string Rationame =
"Ratio";
61 const int bufferSize = TH1::GetDefaultBufferSize();
64 auto h2DIdc0SideA =
new TH2F(fmt::format(
"hIDC0_Aside_2D_{}",
name).
data(), fmt::format(
"{} (A-Side);#it{{x}} (cm);#it{{y}} (cm)", title).
data(),
65 330, -270, 270, 330, -270, 270);
67 auto h2DIdc0SideC =
new TH2F(fmt::format(
"hIDC0_Cside_2D_{}",
name).
data(), fmt::format(
"{} (C-Side);#it{{x}} (cm);#it{{y}} (cm)", title).
data(),
68 330, -270, 270, 330, -270, 270);
70 auto hAsideRatio2D =
new TH2F(fmt::format(
"hRatio_Aside_2D_{}", Rationame).
data(), fmt::format(
"{} (A-Side);#it{{x}} (cm);#it{{y}} (cm)", Rationame).
data(),
71 330, -270, 270, 330, -270, 270);
73 auto hCsideRatio2D =
new TH2F(fmt::format(
"hRatio_CsideRatio_2D_{}", Rationame).
data(), fmt::format(
"{} (C-Side);#it{{x}} (cm);#it{{y}} (cm)", Rationame).
data(),
74 330, -270, 270, 330, -270, 270);
76 auto hAsideRatio1D =
new TH1F(fmt::format(
"h_AsideRatio_1D_{}", Rationame).
data(), fmt::format(
"{} (A-Side);IDC0/SAC0 (arb unit.);Entries", Rationame).
data(),
77 nbins1D, xMin1D, xMax1D);
79 auto hCsideRatio1D =
new TH1F(fmt::format(
"h_CsideRatio_1D_{}", Rationame).
data(), fmt::format(
"{} (C-Side);IDC0/SAC0 (arb unit.);Entries", Rationame).
data(),
80 nbins1D, xMin1D, xMax1D);
83 auto hist2DIdc0 = h2DIdc0SideA;
84 auto histRatio2D = hAsideRatio2D;
85 auto histRatio1D = hAsideRatio1D;
87 hist2DIdc0 = h2DIdc0SideC;
88 histRatio2D = hCsideRatio2D;
89 histRatio1D = hCsideRatio1D;
92 for (
int irow = 0; irow < nrows; ++irow) {
95 const int stackID = (part < 2) ? 0 : part - 1;
96 const auto sacZero = mSacCCDBHelper->
getSACZeroVal(
roc.getSector(), stackID);
98 for (
int ipad = 0; ipad < npads; ++ipad) {
99 const auto val = calDet.getValue(
roc, irow, ipad);
101 const int bin = hist2DIdc0->FindBin(
pos.X(),
pos.Y());
102 if (!hist2DIdc0->GetBinContent(bin)) {
103 hist2DIdc0->SetBinContent(bin,
val);
104 if (
val / sacZero != 0) {
105 histRatio2D->SetBinContent(bin,
val / sacZero);
108 if (
val / sacZero != 0) {
109 histRatio2D->SetBinContent(bin,
val / sacZero);
110 histRatio1D->Fill(
val / sacZero);
116 if (xMax1D > xMin1D) {
118 hSac0SideA->SetMinimum(xMin1DSAC);
119 hSac0SideC->SetMinimum(xMin1DSAC);
120 hSac0SideA->SetMaximum(xMax1DSAC);
121 hSac0SideC->SetMaximum(xMax1DSAC);
123 h2DIdc0SideA->SetMinimum(xMin1D);
124 h2DIdc0SideA->SetMaximum(xMax1D);
125 h2DIdc0SideC->SetMinimum(xMin1D);
126 h2DIdc0SideC->SetMaximum(xMax1D);
127 hAsideRatio2D->SetMinimum(xMin1D);
128 hCsideRatio2D->SetMaximum(xMax1D);
132 gStyle->SetOptStat(
"mr");
133 auto c = outputCanvas;
135 c =
new TCanvas(fmt::format(
"c_{}",
name).
data(), title.data(), 1000, 1000);
137 gStyle->SetStatX(1. - gPad->GetRightMargin());
138 gStyle->SetStatY(1. - gPad->GetTopMargin());
144 h2DIdc0SideA->Draw(
"colz");
145 h2DIdc0SideA->SetStats(0);
146 h2DIdc0SideA->SetTitleOffset(1.05,
"XY");
147 h2DIdc0SideA->SetTitleSize(0.05,
"XY");
151 h2DIdc0SideC->Draw(
"colz");
152 h2DIdc0SideC->SetStats(0);
153 h2DIdc0SideC->SetTitleOffset(1.05,
"XY");
154 h2DIdc0SideC->SetTitleSize(0.05,
"XY");
157 hSac0SideA->Draw(
"colz");
158 hSac0SideA->SetStats(0);
159 hSac0SideA->SetTitleOffset(1.05,
"XY");
160 hSac0SideA->SetTitleSize(0.05,
"XY");
163 hSac0SideC->Draw(
"colz");
164 hSac0SideC->SetStats(0);
165 hSac0SideC->SetTitleOffset(1.05,
"XY");
166 hSac0SideC->SetTitleSize(0.05,
"XY");
170 hAsideRatio2D->Draw(
"colz");
171 hAsideRatio2D->SetStats(0);
172 hAsideRatio2D->SetTitleOffset(1.05,
"XY");
173 hAsideRatio2D->SetTitleSize(0.05,
"XY");
177 hCsideRatio2D->Draw(
"colz");
178 hCsideRatio2D->SetStats(0);
179 hCsideRatio2D->SetTitleOffset(1.05,
"XY");
180 hCsideRatio2D->SetTitleSize(0.05,
"XY");
183 hAsideRatio1D->Draw();
184 hAsideRatio1D->SetTitleOffset(1.05,
"XY");
185 hAsideRatio1D->SetTitleSize(0.05,
"XY");
187 hCsideRatio1D->Draw();
188 hAsideRatio1D->SetTitleOffset(1.05,
"XY");
189 hAsideRatio1D->SetTitleSize(0.05,
"XY");
192 TH1::SetDefaultBufferSize(bufferSize);
195 hAsideRatio1D->SetBit(TObject::kCanDelete);
196 hCsideRatio1D->SetBit(TObject::kCanDelete);
197 h2DIdc0SideA->SetBit(TObject::kCanDelete);
198 h2DIdc0SideC->SetBit(TObject::kCanDelete);
199 hAsideRatio2D->SetBit(TObject::kCanDelete);
200 hCsideRatio2D->SetBit(TObject::kCanDelete);
202 hSac0SideA->SetBit(TObject::kCanDelete);
203 hSac0SideC->SetBit(TObject::kCanDelete);