1 #ifndef HcalObjRepresent_h
2 #define HcalObjRepresent_h
32 #include "TPaveLabel.h"
35 namespace HcalObjRepresent {
38 template <
class Items,
class Item>
47 typedef std::tuple<int, int, int>
Coord;
50 typedef std::map<std::pair<std::string, int>, TH2F*>
DepthMap;
71 int iphi, ieta,
depth;
75 std::vector<Item> itemsVec;
76 std::pair<std::string, int> depthKey;
77 const char* histLabel;
78 for (std::pair<
std::string, std::vector<Item> >
cont : (*payload_).getAllContainers()) {
79 subDetName = std::get<0>(
cont);
80 itemsVec = std::get<1>(
cont);
84 for (Item
item : itemsVec) {
88 depth = detId.
depth();
89 Coord coord = std::make_tuple(depth, ieta, iphi);
91 if (subDetName[0] ==
'H' && depth != 0) {
92 valContainer->insert(std::pair<std::tuple<int, int, int>, Item>(coord,
item));
94 depthKey = std::make_pair(subDetName, depth);
96 auto depthVal =
depths_.find(depthKey);
97 if (depthVal ==
depths_.end()) {
98 histLabel = (
"run" + std::to_string(
run_) +
"_" + subDetName +
"_d" + std::to_string(depth)).c_str();
99 depths_.insert(std::make_pair(std::make_pair(subDetName, depth),
100 new TH2F(histLabel, histLabel, 83, -42.5, 41.5, 71, 0.5, 71.5)));
113 throw cms::Exception(
"Value definition not found") <<
"getValue definition not found for " <<
payload_->myname();
119 Item* cell =
nullptr;
120 Coord coord = std::make_tuple(depth, ieta, iphi);
123 auto it = valContainer->find(coord);
124 if (it != valContainer->end())
130 <<
"Unavailable Conditions of type " <<
payload_->myname() <<
" for cell " << subDetName <<
" (" << depth
131 <<
", " << ieta <<
", " << iphi <<
")";
146 DepthMap::iterator depth1;
147 std::pair<std::string, int>
key;
150 for (depth1 = myDepths.begin(); depth1 != myDepths.end(); depth1++) {
152 if (theirDepths.count(key) != 0) {
153 myDepths.at(key)->Divide((
const TH1*)theirDepths.at(key));
156 <<
"trying to plot conditions for " <<
payload_->myname() <<
"; found value for " << std::get<0>(
key)
157 <<
" depth " << std::to_string(std::get<1>(key)) <<
" in run " <<
GetRun() <<
" but not in run "
166 DepthMap::iterator depth1;
167 std::pair<std::string, int>
key;
170 for (depth1 = myDepths.begin(); depth1 != myDepths.end(); depth1++) {
172 if (theirDepths.count(key) != 0) {
173 myDepths.at(key)->Add(myDepths.at(key), theirDepths.at(key), 1, -1);
176 <<
"trying to plot conditions for " <<
payload_->myname() <<
"; found value for " << std::get<0>(
key)
177 <<
" depth " << std::to_string(std::get<1>(key)) <<
" in run " <<
GetRun() <<
" but not in run "
187 Double_t adjustMin = 1;
189 int nBinsX = hist->GetXaxis()->GetNbins();
190 int nBinsY = hist->GetYaxis()->GetNbins();
191 for (
int i = 0;
i < nBinsX;
i++) {
192 for (
int j = 0;
j < nBinsY;
j++) {
193 tempMin = hist->GetBinContent(
i,
j);
194 if ((tempMin != 0) && (tempMin < adjustMin))
198 amp =
std::max((1 - adjustMin), (hist->GetMaximum() - 1));
200 return std::make_pair(1 - amp, 1 + amp);
203 amp =
std::max((0 - hist->GetMinimum()), hist->GetMaximum());
204 return std::make_pair((-1 * amp), amp);
206 Double_t adjustMin = 10000;
208 int nBinsX = hist->GetXaxis()->GetNbins();
209 int nBinsY = hist->GetYaxis()->GetNbins();
210 for (
int i = 0;
i < nBinsX;
i++) {
211 for (
int j = 0;
j < nBinsY;
j++) {
212 tempMin = hist->GetBinContent(
i,
j);
213 if ((tempMin != 0) && (tempMin < adjustMin))
217 return std::make_pair(((adjustMin == 10000) ? hist->GetMinimum() : adjustMin), hist->GetMaximum());
223 gStyle->SetOptStat(0);
224 gStyle->SetPalette(1);
225 gStyle->SetOptFit(0);
226 gStyle->SetLabelFont(42);
227 gStyle->SetLabelFont(42);
228 gStyle->SetTitleFont(42);
229 gStyle->SetTitleFont(42);
230 gStyle->SetMarkerSize(0);
231 gStyle->SetTitleOffset(1.3,
"Y");
232 gStyle->SetTitleOffset(1.0,
"X");
233 gStyle->SetNdivisions(510);
234 gStyle->SetStatH(0.11);
235 gStyle->SetStatW(0.33);
236 gStyle->SetTitleW(0.4);
237 gStyle->SetTitleX(0.13);
238 gStyle->SetPadTickX(1);
239 gStyle->SetPadTickY(1);
248 int xBins = (plotType ==
"EtaProfile") ? 83 : 71;
250 int xMin = (plotType ==
"EtaProfile") ? etaMin :
phiMin;
251 int xMax = (plotType ==
"EtaProfile") ?
etaMax :
phiMax;
252 int otherMin = (plotType ==
"EtaProfile") ?
phiMin : etaMin;
253 int otherMax = (plotType ==
"EtaProfile") ?
phiMax :
etaMax;
254 TH1D* retHist =
new TH1D(newName, newName, xBins, xMin, xMax);
260 for (
int i = xMin;
i <= xMax;
i++ && bin++) {
263 for (
int j = otherMin;
j <= otherMax;
j++) {
264 ieta = (plotType ==
"EtaProfile") ?
i :
j;
266 iphi = (plotType ==
"EtaProfile") ?
j :
i;
268 channelVal = hist->GetBinContent(ieta, iphi);
270 if (channelVal != 0) {
271 sumVal += channelVal;
277 retHist->Fill(
i, sumVal / ((Double_t)numChannels));
290 std::pair<float, float>
range;
297 if (
depths_.count(std::make_pair(subDetName,
i)) == 0) {
301 padNum =
i + startCanv - 1;
302 if (subDetName ==
"HO")
305 canvas->GetPad(padNum)->SetGridx(1);
306 canvas->GetPad(padNum)->SetGridy(1);
308 if (plotForm ==
"2DHist") {
309 canvas->GetPad(padNum)->SetRightMargin(0.13);
311 depths_[std::make_pair(subDetName,
i)]->Draw(
"colz");
312 depths_[std::make_pair(subDetName,
i)]->SetContour(100);
313 depths_[std::make_pair(subDetName,
i)]->GetXaxis()->SetTitle(
"ieta");
314 depths_[std::make_pair(subDetName,
i)]->GetYaxis()->SetTitle(
"iphi");
315 depths_[std::make_pair(subDetName,
i)]->GetXaxis()->CenterTitle();
316 depths_[std::make_pair(subDetName,
i)]->GetYaxis()->CenterTitle();
317 depths_[std::make_pair(subDetName,
i)]->GetZaxis()->SetRangeUser(std::get<0>(range), std::get<1>(range));
318 depths_[std::make_pair(subDetName,
i)]->GetYaxis()->SetTitleSize(0.06);
319 depths_[std::make_pair(subDetName,
i)]->GetYaxis()->SetTitleOffset(0.80);
320 depths_[std::make_pair(subDetName,
i)]->GetXaxis()->SetTitleSize(0.06);
321 depths_[std::make_pair(subDetName,
i)]->GetXaxis()->SetTitleOffset(0.80);
322 depths_[std::make_pair(subDetName,
i)]->GetYaxis()->SetLabelSize(0.055);
323 depths_[std::make_pair(subDetName,
i)]->GetXaxis()->SetLabelSize(0.055);
325 canvas->GetPad(padNum)->SetLeftMargin(0.152);
326 canvas->GetPad(padNum)->SetRightMargin(0.02);
328 newName = (
"run_" + std::to_string(
run_) +
"_" + subDetName +
"_d" + std::to_string(
i) +
"_" +
329 (plotForm ==
"EtaProfile" ?
"ieta" :
"iphi"))
334 projection->Draw(
"hist");
335 projection->GetXaxis()->SetTitle((plotForm ==
"EtaProfile" ?
"ieta" :
"iphi"));
336 projection->GetXaxis()->CenterTitle();
337 projection->GetYaxis()->SetTitle(
341 label.SetTextAlign(26);
342 label.SetTextSize(0.05);
344 0.3, 0.95, (
"run_" + std::to_string(
run_) +
"_" + subDetName +
"_d" + std::to_string(
i)).c_str());
345 projection->GetYaxis()->CenterTitle();
346 projection->GetXaxis()->SetTitleSize(0.06);
347 projection->GetYaxis()->SetTitleSize(0.06);
348 projection->GetXaxis()->SetTitleOffset(0.80);
349 projection->GetXaxis()->SetLabelSize(0.055);
350 projection->GetYaxis()->SetTitleOffset(1.34);
351 projection->GetYaxis()->SetLabelSize(0.055);
362 TCanvas* HAll =
new TCanvas(
"HAll",
"HAll", 1680, (
GetTopoMode() ==
"2015/2016") ? 1680 : 2500);
363 HAll->Divide(3, (
GetTopoMode() ==
"2015/2016") ? 3 : 6, 0.02, 0.01);
364 FillCanv(HAll,
"HB", 1, 1, profile);
365 FillCanv(HAll,
"HO", 4, 3, profile);
366 FillCanv(HAll,
"HF", 1, 4, profile);
374 TCanvas*
HF =
new TCanvas(
"HF",
"HF", 1600, 1000);
375 HF->Divide(3, 2, 0.02, 0.01);
382 TCanvas*
HE =
new TCanvas(
"HE",
"HE", 1680, 1680);
383 HE->Divide(3, 3, 0.02, 0.01);
390 TCanvas* HBHO =
new TCanvas(
"HBHO",
"HBHO", 1680, 1680);
391 HBHO->Divide(3, 3, 0.02, 0.01);
394 FillCanv(HBHO,
"HB", 1, 4,
"EtaProfile");
395 FillCanv(HBHO,
"HO", 4, 6,
"EtaProfile");
396 FillCanv(HBHO,
"HB", 1, 7,
"PhiProfile");
397 FillCanv(HBHO,
"HO", 4, 9,
"PhiProfile");
406 return "(" + unit +
")";
426 std::map<std::string, std::string>
units_ = {{
"HcalPedestals",
"ADC"},
428 {
"HcalL1TriggerObjects",
""},
429 {
"HcalPedestalWidths",
"ADC"},
430 {
"HcalRespCorrs",
""},
431 {
"Dark Current",
""},
437 if (subDetString ==
"HB")
439 else if (subDetString ==
"HE")
441 else if (subDetString ==
"HF")
443 else if (subDetString ==
"HO")
445 else if (subDetString ==
"HT")
447 else if (subDetString ==
"CALIB")
449 else if (subDetString ==
"CASTOR")
452 else if (subDetString ==
"ZDC_EM" || subDetString ==
"ZDC" || subDetString ==
"ZDC_HAD" ||
453 subDetString ==
"ZDC_LUM")
456 throw cms::Exception(
"subDetString " + subDetString +
" not found in Item");
461 if (
depths_.count(std::make_pair(
"HF", 4)) != 0 ||
depths_.count(std::make_pair(
"HE", 7)) != 0)
485 TLine*
l =
new TLine;
487 for (
int i = 1;
i < nbRows;
i++) {
488 double y = (double)
i;
489 l =
new TLine(0., y, nbColumns, y);
493 for (
int i = 1;
i < nbColumns;
i++) {
494 double x = (double)
i;
495 double y = (double)nbRows;
496 l =
new TLine(x, 0., x, y);
503 std::ostringstream streamObj2;
517 std::stringstream
ss;
518 unsigned int mask = 1 << 31;
519 for (
unsigned short int i = 0;
i < 32; ++
i) {
532 unsigned int statadd = 0x1 << (bitnumber);
533 return (status & statadd) ? (
true) : (
false);
537 std::stringstream
ss;
538 for (
unsigned int i = 0;
i < 9; ++
i) {
540 ss <<
"[" << bitMap[
i] <<
"]" << statusBitArray[bitMap[
i]] <<
"; ";
550 for (
unsigned int i = 0;
i < depth.size(); ++
i) {
551 depth[
i].SetXTitle(
"i#eta");
552 depth[
i].SetYTitle(
"i#phi");
555 std::stringstream
label;
558 for (
int i = -41;
i <= -29;
i =
i + 2) {
560 depth[0].GetXaxis()->SetBinLabel(i + 42, label.str().c_str());
561 depth[1].GetXaxis()->SetBinLabel(i + 42, label.str().c_str());
564 depth[0].GetXaxis()->SetBinLabel(14,
"-29HE");
565 depth[1].GetXaxis()->SetBinLabel(14,
"-29HE");
568 for (
int i = -27;
i <= 27;
i =
i + 2) {
570 depth[0].GetXaxis()->SetBinLabel(i + 43, label.str().c_str());
573 depth[0].GetXaxis()->SetBinLabel(72,
"29HE");
574 for (
int i = 29;
i <= 41;
i =
i + 2) {
576 depth[0].GetXaxis()->SetBinLabel(i + 44, label.str().c_str());
579 for (
int i = 16;
i <= 28;
i =
i + 2) {
581 depth[1].GetXaxis()->SetBinLabel(i, label.str().c_str());
584 depth[1].GetXaxis()->SetBinLabel(29,
"NULL");
585 for (
int i = 15;
i <= 27;
i =
i + 2) {
587 depth[1].GetXaxis()->SetBinLabel(i + 15, label.str().c_str());
591 depth[1].GetXaxis()->SetBinLabel(44,
"29HE");
592 for (
int i = 29;
i <= 41;
i =
i + 2) {
594 depth[1].GetXaxis()->SetBinLabel(i + 16, label.str().c_str());
599 depth[2].GetXaxis()->SetBinLabel(1,
"-28");
600 depth[2].GetXaxis()->SetBinLabel(2,
"-27");
601 depth[2].GetXaxis()->SetBinLabel(3,
"Null");
602 depth[2].GetXaxis()->SetBinLabel(4,
"-16");
603 depth[2].GetXaxis()->SetBinLabel(5,
"Null");
604 depth[2].GetXaxis()->SetBinLabel(6,
"16");
605 depth[2].GetXaxis()->SetBinLabel(7,
"Null");
606 depth[2].GetXaxis()->SetBinLabel(8,
"27");
607 depth[2].GetXaxis()->SetBinLabel(9,
"28");
612 const int binmapd2[] = {-42, -41, -40, -39, -38, -37, -36, -35, -34, -33, -32, -31, -30, -29, -28,
613 -27, -26, -25, -24, -23, -22, -21, -20, -19, -18, -17, -16, -15, -9999, 15,
614 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30,
615 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42};
619 const int binmapd3[] = {-28, -27, -9999, -16, -9999, 16, -9999, 27, 28};
636 ieta < 0 ? etabin-- : etabin++;
640 else if (depth == 2) {
646 }
else if (ieta > 14) {
661 else if (ieta == -27)
663 else if (ieta == -16)
690 }
else if (depth == 2) {
694 if (ieta == 17 || ieta == -17)
709 }
else if (depth == 2) {
725 else if (depth == 2) {
727 if (
abs(ieta) > 29 ||
abs(ieta) < 18)
732 }
else if (depth == 3) {
733 if (eta < 0 || eta > 8)
780 }
else if (depth == 2) {
789 if (ieta == 17 || ieta == -17)
791 else if (ieta <= -30)
797 }
else if (depth == 3) {
805 }
else if (depth == 4) {
819 std::vector<std::string>
name;
820 name.push_back(
"HB HE HF Depth 1 ");
821 name.push_back(
"HB HE HF Depth 2 ");
822 name.push_back(
"HE Depth 3 ");
823 name.push_back(
"HO Depth 4 ");
841 }
else if (depth == 2) {
842 if (
abs(ieta) == 15 ||
abs(ieta) == 16)
861 if (
abs(ieta) >= 17 &&
abs(ieta) <= 28)
863 if (ieta == -29 && etabin == 13)
865 if (ieta == 29 && etabin == 71)
867 }
else if (depth == 2) {
868 if (
abs(ieta) >= 17 &&
abs(ieta) <= 28)
870 if (ieta == -29 && etabin == 13)
872 if (ieta == 29 && etabin == 43)
874 }
else if (depth == 3)
890 if (ieta == -29 && etabin == 13)
892 else if (ieta == 29 && etabin == 71)
894 else if (
abs(ieta) >= 29)
896 }
else if (depth == 2) {
897 if (ieta == -29 && etabin == 13)
899 else if (ieta == 29 && etabin == 43)
901 else if (
abs(ieta) >= 29)
923 if (ieta >= 5 && ieta <= 10 && iphi >= 47 && iphi <= 58)
926 if (ieta >= 11 && ieta <= 15 && iphi >= 59 && iphi <= 70)
937 const int ie(
abs(ies));
940 (ip >= 1) && (ip <= 72) && (dp >= 1) && (ie >= 1) &&
941 (((sd ==
HcalBarrel) && (((ie <= 14) && (dp == 1)) || (((ie == 15) || (ie == 16)) && (dp <= 2)))) ||
943 (((ie == 16) && (dp == 3)) || ((ie == 17) && (dp == 1)) || ((ie >= 18) && (ie <= 20) && (dp <= 2)) ||
944 ((ie >= 21) && (ie <= 26) && (dp <= 2) && (ip % 2 == 1)) ||
945 ((ie >= 27) && (ie <= 28) && (dp <= 3) && (ip % 2 == 1)) || ((ie == 29) && (dp <= 2) && (ip % 2 == 1)))) ||
946 ((sd ==
HcalOuter) && (ie <= 15) && (dp == 4)) ||
948 (((ie >= 29) && (ie <= 39) && (ip % 2 == 1)) || ((ie >= 40) && (ie <= 41) && (ip % 4 == 3))))));
955 std::stringstream
label;
956 for (
int i = -41;
i <= -29;
i =
i + 2) {
958 h.GetXaxis()->SetBinLabel(i + 42, label.str().c_str());
961 h.GetXaxis()->SetBinLabel(14,
"-29HE");
964 for (
int i = -27;
i <= 27;
i =
i + 2) {
966 h.GetXaxis()->SetBinLabel(i + 43, label.str().c_str());
969 h.GetXaxis()->SetBinLabel(72,
"29HE");
970 for (
int i = 29;
i <= 41;
i =
i + 2) {
972 h.GetXaxis()->SetBinLabel(i + 44, label.str().c_str());
983 for (
unsigned int d = 0;
d < 3; ++
d) {
987 for (
int eta = 0;
eta < hh[
d].GetNbinsX(); ++
eta) {
989 if (ieta == -9999 ||
abs(ieta) < 21)
991 for (
int phi = 0; phi < hh[
d].GetNbinsY(); ++phi) {
993 if (iphi % 2 == 1 &&
abs(ieta) < 40 && iphi < 73) {
994 hh[
d].SetBinContent(
eta + 1, iphi + 1, hh[
d].GetBinContent(
eta + 1, iphi));
998 else if (
abs(ieta) > 39 && iphi % 4 == 3 && iphi < 73) {
1000 hh[
d].SetBinContent(
eta + 1, (iphi) % 72 + 1, hh[
d].GetBinContent(
eta + 1, iphi));
1001 hh[
d].SetBinContent(
eta + 1, (iphi + 1) % 72 + 1, hh[
d].GetBinContent(
eta + 1, iphi));
1002 hh[
d].SetBinContent(
eta + 1, (iphi + 2) % 72 + 1, hh[
d].GetBinContent(
eta + 1, iphi));
1022 int phibins = hh.GetNbinsY();
1027 if (ieta == -9999 ||
abs(ieta) < 21)
1030 for (
int phi = 0; phi < phibins; ++phi) {
1032 if (iphi % 2 == 1 &&
abs(ieta) < 40 && iphi < 73)
1034 binval = hh.GetBinContent(
eta + 1, iphi);
1035 hh.SetBinContent(
eta + 1, iphi + 1, binval);
1037 else if (
abs(ieta) > 39 && iphi % 4 == 3 && iphi < 73)
1041 hh.SetBinContent(
eta + 1, (iphi) % 72 + 1, hh.GetBinContent(
eta + 1, iphi));
1042 hh.SetBinContent(
eta + 1, (iphi + 1) % 72 + 1, hh.GetBinContent(
eta + 1, iphi));
1043 hh.SetBinContent(
eta + 1, (iphi + 2) % 72 + 1, hh.GetBinContent(
eta + 1, iphi));
1056 depth[
id.depth() - 1].Fill(
id.ieta() < 0 ?
id.ieta() - 1 :
id.ieta() + 1,
id.iphi(), val);
1058 depth[
id.depth() - 1].Fill(
id.ieta(),
id.iphi(), val);
1062 for (
unsigned int d = 0;
d < depth.size();
d++)
1070 if (
units.empty()) {
1072 unittitle =
"No Units";
1074 unitname =
" " +
units;
1081 depth.push_back(TH2F((
"HB HE HF Depth 1 " + name + unitname).c_str(),
1082 (name +
" Depth 1 -- HB HE HF (" + unittitle +
")").c_str(),
1092 for (
int i = 0;
i <= 72;
i++)
1093 ybins[
i] = (
float)(
i + 0.5);
1094 float xbinsd2[] = {-42.5, -41.5, -40.5, -39.5, -38.5, -37.5, -36.5, -35.5, -34.5, -33.5, -32.5, -31.5,
1095 -30.5, -29.5, -28.5, -27.5, -26.5, -25.5, -24.5, -23.5, -22.5, -21.5, -20.5, -19.5,
1096 -18.5, -17.5, -16.5, -15.5, -14.5, 14.5, 15.5, 16.5, 17.5, 18.5, 19.5, 20.5,
1097 21.5, 22.5, 23.5, 24.5, 25.5, 26.5, 27.5, 28.5, 29.5, 30.5, 31.5, 32.5,
1098 33.5, 34.5, 35.5, 36.5, 37.5, 38.5, 39.5, 40.5, 41.5, 42.5};
1101 depth.push_back(TH2F((
"HB HE HF Depth 2 " + name + unitname).c_str(),
1102 (name +
" Depth 2 -- HB HE HF (" + unittitle +
")").c_str(),
1109 float xbins[] = {-28.5, -27.5, -26.5, -16.5, -15.5, 15.5, 16.5, 26.5, 27.5, 28.5};
1111 depth.push_back(TH2F((
"HE Depth 3 " + name + unitname).c_str(),
1112 (name +
" Depth 3 -- HE (" + unittitle +
")").c_str(),
1120 depth.push_back(TH2F((
"HO Depth 4 " + name + unitname).c_str(),
1121 (name +
" Depth 4 -- HO (" + unittitle +
")").c_str(),
1129 for (
unsigned int i = 0;
i < depth.size(); ++
i)
1130 depth[
i].Draw(
"colz");
1140 setup(graphData, name);
1142 std::stringstream x;
1144 for (
unsigned int d = 0;
d < graphData.size(); ++
d) {
1145 graphData[
d].Reset();
1146 x <<
"Gain " <<
id <<
" for HCAL depth " <<
d + 1;
1150 graphData[
d].SetTitle(
1157 int ieta,
depth, iphi;
1164 HcalGains::tAllContWithNames::const_iterator iter;
1165 std::vector<HcalGain>::const_iterator contIter;
1172 for (iter = allContainers.begin(); iter != allContainers.end(); ++iter) {
1174 for (contIter = (*iter).second.begin(); contIter != (*iter).second.end(); ++contIter) {
1175 hcal_id =
HcalDetId((uint32_t)(*contIter).rawId());
1177 depth = hcal_id.
depth();
1178 if (depth < 1 || depth > 4)
1181 ieta = hcal_id.
ieta();
1182 iphi = hcal_id.
iphi();
1185 ieta > 0 ? ++ieta : --ieta;
1188 gain = (*contIter).getValue(i);
1192 graphData[depth - 1].Fill(ieta, iphi, gain);
1208 unsigned int nr,
id;
1212 std::stringstream
ss(
"");
1215 ss <<
rootname.str() <<
" for HCAL depth ";
1217 ss <<
rootname.str() <<
nr <<
" for HCAL depth ";
1219 setup(graphData, ss.str());
1222 for (
unsigned int d = 0;
d < graphData.size(); ++
d) {
1223 graphData[
d].Reset();
1227 ss <<
plotname.str() <<
" for HCAL depth " <<
d + 1;
1229 ss <<
plotname.str() <<
nr <<
" for HCAL depth " <<
d + 1;
1233 graphData[
d].SetTitle(
1248 draw(graphData, ss.str());
1258 virtual void doFillIn(std::vector<TH2F>& graphData) = 0;
1264 gStyle->SetPalette(1);
1265 const Int_t NCont = 999;
1266 gStyle->SetNumberContours(NCont);
1267 TCanvas
canvas(
"CC map",
"CC map", 840, 369 * 4);
1269 TPad pad1(
"pad1",
"pad1", 0.0, 0.75, 1.0, 1.0);
1271 TPad pad2(
"pad2",
"pad2", 0.0, 0.5, 1.0, 0.75);
1273 TPad pad3(
"pad3",
"pad3", 0.0, 0.25, 1.0, 0.5);
1275 TPad pad4(
"pad4",
"pad4", 0.0, 0.0, 1.0, 0.25);
1279 graphData[0].SetStats(
false);
1280 graphData[0].Draw(
"colz");
1283 graphData[1].SetStats(
false);
1284 graphData[1].Draw(
"colz");
1287 graphData[2].SetStats(
false);
1288 graphData[2].Draw(
"colz");
1291 graphData[3].SetStats(
false);
1292 graphData[3].Draw(
"colz");
1294 canvas.SaveAs(filename.c_str());
1299 if (
units.empty()) {
1301 unittitle =
"No Units";
1303 unitname =
" " +
units;
1310 depth.push_back(TH2F((
"HB HE HF Depth 1 " + name + unitname).c_str(),
1311 (name +
" Depth 1 -- HB HE HF (" + unittitle +
")").c_str(),
1321 for (
int i = 0;
i <= 72;
i++)
1322 ybins[
i] = (
float)(
i + 0.5);
1323 float xbinsd2[] = {-42.5, -41.5, -40.5, -39.5, -38.5, -37.5, -36.5, -35.5, -34.5, -33.5, -32.5, -31.5,
1324 -30.5, -29.5, -28.5, -27.5, -26.5, -25.5, -24.5, -23.5, -22.5, -21.5, -20.5, -19.5,
1325 -18.5, -17.5, -16.5, -15.5, -14.5, 14.5, 15.5, 16.5, 17.5, 18.5, 19.5, 20.5,
1326 21.5, 22.5, 23.5, 24.5, 25.5, 26.5, 27.5, 28.5, 29.5, 30.5, 31.5, 32.5,
1327 33.5, 34.5, 35.5, 36.5, 37.5, 38.5, 39.5, 40.5, 41.5, 42.5};
1330 depth.push_back(TH2F((
"HB HE HF Depth 2 " + name + unitname).c_str(),
1331 (name +
" Depth 2 -- HB HE HF (" + unittitle +
")").c_str(),
1338 float xbins[] = {-28.5, -27.5, -26.5, -16.5, -15.5, 15.5, 16.5, 26.5, 27.5, 28.5};
1340 depth.push_back(TH2F((
"HE Depth 3 " + name + unitname).c_str(),
1341 (name +
" Depth 3 -- HE (" + unittitle +
")").c_str(),
1349 depth.push_back(TH2F((
"HO Depth 4 " + name + unitname).c_str(),
1350 (name +
" Depth 4 -- HO (" + unittitle +
")").c_str(),
1358 for (
unsigned int i = 0;
i < depth.size(); ++
i)
1359 depth[
i].Draw(
"colz");
1367 for (
unsigned int i = 0;
i < depth.size(); ++
i) {
1368 depth[
i].SetXTitle(
"i#eta");
1369 depth[
i].SetYTitle(
"i#phi");
1372 std::stringstream
label;
1375 for (
int i = -41;
i <= -29;
i =
i + 2) {
1377 depth[0].GetXaxis()->SetBinLabel(i + 42, label.str().c_str());
1378 depth[1].GetXaxis()->SetBinLabel(i + 42, label.str().c_str());
1381 depth[0].GetXaxis()->SetBinLabel(14,
"-29HE");
1382 depth[1].GetXaxis()->SetBinLabel(14,
"-29HE");
1385 for (
int i = -27;
i <= 27;
i =
i + 2) {
1387 depth[0].GetXaxis()->SetBinLabel(i + 43, label.str().c_str());
1390 depth[0].GetXaxis()->SetBinLabel(72,
"29HE");
1391 for (
int i = 29;
i <= 41;
i =
i + 2) {
1393 depth[0].GetXaxis()->SetBinLabel(i + 44, label.str().c_str());
1396 for (
int i = 16;
i <= 28;
i =
i + 2) {
1398 depth[1].GetXaxis()->SetBinLabel(i, label.str().c_str());
1401 depth[1].GetXaxis()->SetBinLabel(29,
"NULL");
1402 for (
int i = 15;
i <= 27;
i =
i + 2) {
1404 depth[1].GetXaxis()->SetBinLabel(i + 15, label.str().c_str());
1408 depth[1].GetXaxis()->SetBinLabel(44,
"29HE");
1409 for (
int i = 29;
i <= 41;
i =
i + 2) {
1411 depth[1].GetXaxis()->SetBinLabel(i + 16, label.str().c_str());
1416 depth[2].GetXaxis()->SetBinLabel(1,
"-28");
1417 depth[2].GetXaxis()->SetBinLabel(2,
"-27");
1418 depth[2].GetXaxis()->SetBinLabel(3,
"Null");
1419 depth[2].GetXaxis()->SetBinLabel(4,
"-16");
1420 depth[2].GetXaxis()->SetBinLabel(5,
"Null");
1421 depth[2].GetXaxis()->SetBinLabel(6,
"16");
1422 depth[2].GetXaxis()->SetBinLabel(7,
"Null");
1423 depth[2].GetXaxis()->SetBinLabel(8,
"27");
1424 depth[2].GetXaxis()->SetBinLabel(9,
"28");
std::vector< std::string > HcalEtaPhiHistNames()
tHcalValCont ZDCvalContainer
tHcalValCont HEvalContainer
TCanvas * getCanvasHBHO()
void Divide(HcalDataContainer *dataCont2)
void SetEtaPhiLabels(TH2F &h)
tHcalValCont HOvalContainer
tuple cont
load Luminosity info ##
uint16_t *__restrict__ id
tHcalValCont CALIBvalContainer
void Subtract(HcalDataContainer *dataCont2)
std::stringstream rootname
tHcalValCont HTvalContainer
std::string getBitsSummary(uint32_t bits, std::string statusBitArray[], short unsigned int bitMap[])
bool validDetId(HcalSubdetector sd, int ies, int ip, int dp)
void setBinLabels(std::vector< TH2F > &depth)
ADataRepr(unsigned int d)
bool isHE(int etabin, int depth)
virtual float getValue(Item *item)
void drawTable(int nbRows, int nbColumns)
tHcalValCont HBvalContainer
std::tuple< int, int, int > Coord
std::string IntToBinary(unsigned int number)
void setTopoModeFromValConts(bool throwOnFail=false)
bool isHB(int etabin, int depth)
std::vector< tHcalCont > tAllContWithNames
void FillCanv(TCanvas *canvas, std::string subDetName, int startDepth=1, int startCanv=1, std::string plotForm="2DHist")
const uint16_t range(const Frame &aFrame)
constexpr HcalSubdetector subdet() const
get the subdetector
std::map< std::string, int > subDetDepths_
int CalcIeta(int subdet, int eta, int depth)
bool isSiPM(int ieta, int iphi, int depth)
constexpr int iphi() const
get the cell iphi
void Fill(HcalDetId &id, double val, std::vector< TH2F > &depth)
virtual void doFillIn(std::vector< TH2F > &graphData)=0
std::map< Coord, Item > tHcalValCont
if(conf_.getParameter< bool >("UseStripCablingDB"))
void setup(std::vector< TH2F > &depth, std::string name, std::string units="")
std::stringstream plotname
const bool isBitSet(unsigned int bitnumber, unsigned int status)
tuple key
prepare the HTCondor submission files and eventually submit them
TCanvas * getCanvasAll(std::string profile="2DHist")
Abs< T >::type abs(const T &t)
void draw(std::vector< TH2F > &graphData, std::string filename)
constexpr int ieta() const
get the cell ieta
std::map< std::pair< std::string, int >, TH2F * > DepthMap
void fillOneGain(std::vector< TH2F > &graphData, std::string units="")
int CalcEtaBin(int subdet, int ieta, int depth)
void fillOneGain(std::vector< TH2F > &graphData, HcalGains::tAllContWithNames &allContainers, std::string name, int id, std::string units="")
tHcalValCont CASTORvalContainer
std::string SciNotatStr(float num)
TH1D * GetProjection(TH2F *hist, std::string plotType, const char *newName, std::string subDetName, int depth)
HcalDataContainer(std::shared_ptr< Items > payload, unsigned int run)
Item * getItemFromValCont(std::string subDetName, int depth, int ieta, int iphi, bool throwOnFail)
bool isHF(int etabin, int depth)
void FillUnphysicalHEHFBins(std::vector< TH2F > &hh)
std::pair< float, float > GetRange(TH1 *hist)
std::stringstream filename
TString units(TString variable, Char_t axis)
tHcalValCont HFvalContainer
bool isHO(int etabin, int depth)
void Reset(std::vector< TH2F > &depth)
constexpr int depth() const
get the tower depth
tHcalValCont * getContFromString(std::string subDetString)
void setBinLabels(std::vector< TH2F > &depth)
std::map< std::string, std::string > units_
The Signals That Services Can Subscribe To This is based on ActivityRegistry h
Helper function to determine trigger accepts.
virtual ~HcalDataContainer()
void setup(std::vector< TH2F > &depth, std::string name, std::string units="")
std::shared_ptr< Items > payload_
Basic3DVector unit() const
std::string GetTopoMode()
std::map< std::string, int > GetSubDetDepths()
std::string GetUnit(std::string type)