1 #ifndef HcalObjRepresent_h
2 #define HcalObjRepresent_h
32 #include "TPaveLabel.h"
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;
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) {
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;
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;
149 DepthMap theirDepths = dataCont2->
GetDepths();
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;
169 DepthMap theirDepths = dataCont2->
GetDepths();
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);
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;
252 int otherMin = (plotType ==
"EtaProfile") ?
phiMin :
etaMin;
253 int otherMax = (plotType ==
"EtaProfile") ?
phiMax :
etaMax;
263 for (
int j = otherMin;
j <= otherMax;
j++) {
264 ieta = (plotType ==
"EtaProfile") ?
i :
j;
266 iphi = (plotType ==
"EtaProfile") ?
j :
i;
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);
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) {
709 }
else if (
depth == 2) {
725 else if (
depth == 2) {
732 }
else if (
depth == 3) {
733 if (eta < 0 || eta > 8)
780 }
else if (
depth == 2) {
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) {
863 if (
ieta == -29 && etabin == 13)
865 if (
ieta == 29 && etabin == 71)
867 }
else if (
depth == 2) {
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)
896 }
else if (
depth == 2) {
897 if (
ieta == -29 && etabin == 13)
899 else if (
ieta == 29 && etabin == 43)
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)))) ||
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) {
991 for (
int phi = 0; phi < hh[
d].GetNbinsY(); ++phi) {
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();
1030 for (
int phi = 0; phi < phibins; ++phi) {
1034 binval = hh.GetBinContent(
eta + 1,
iphi);
1035 hh.SetBinContent(
eta + 1,
iphi + 1, binval);
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));
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)
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(
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());
1178 if (depth < 1 || depth > 4)
1188 gain = (*contIter).getValue(
i);
1208 unsigned int nr,
id;
1212 std::stringstream
ss(
"");
1222 for (
unsigned int d = 0;
d < graphData.size(); ++
d) {
1223 graphData[
d].Reset();
1227 ss <<
plotname.str() <<
" 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");
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)
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");