13 TEveCaloDataVec* MakeVecData(Int_t ncells=0);
17 TEveManager::Create();
20 auto data = MakeVecData(20);
21 data->IncDenyDestroy();
24 auto slot = TEveWindow::CreateWindowInTab(gEve->GetBrowser()->GetTabRight());
25 auto packH = slot->MakePack();
26 packH->SetElementName(
"Projections");
27 packH->SetHorizontal();
28 packH->SetShowTitleBar(kFALSE);
30 slot = packH->NewSlot();
31 auto pack0 = slot->MakePack();
32 pack0->SetShowTitleBar(kFALSE);
33 auto slotLeftTop = pack0->NewSlot();
34 auto slotLeftBottom = pack0->NewSlot();
36 slot = packH->NewSlot();
37 auto pack1 = slot->MakePack();
38 pack1->SetShowTitleBar(kFALSE);
39 auto slotRightTop = pack1->NewSlot();
40 auto slotRightBottom = pack1->NewSlot();
44 TEveCalo3D* calo3d = MakeCalo3D(data, slotRightTop);
45 calo3d->SetMaxTowerH(maxH);
48 calo2d = MakeCalo2D(calo3d, slotLeftTop, TEveProjection::kPT_RPhi);
49 calo2d->SetMaxTowerH(maxH);
50 calo2d = MakeCalo2D(calo3d, slotLeftBottom, TEveProjection::kPT_RhoZ);
51 calo2d->SetMaxTowerH(maxH);
53 TEveCaloLego* lego = MakeCaloLego(data, slotRightBottom);
54 lego->SetAutoRebin(kFALSE);
55 lego->Set2DMode(TEveCaloLego::kValSizeOutline);
57 gEve->AddElement(lego);
58 gEve->GetDefaultGLViewer()->SetCurrentCamera(TGLViewer::kCameraPerspXOY);
60 gEve->GetBrowser()->GetTabRight()->SetTab(1);
61 gEve->FullRedraw3D(kTRUE);
66 TEveCaloDataVec* MakeVecData(Int_t ncells)
72 TFile::SetCacheFileDir(
".");
73 auto hf = TFile::Open(histFile,
"CACHEREAD");
74 TH2F* h1 = (TH2F*)hf->Get(
"ecalLego");
75 TH2F* h2 = (TH2F*)hf->Get(
"hcalLego");
77 auto data =
new TEveCaloDataVec(2);
78 data->RefSliceInfo(0).Setup(
"ECAL", 0.3, kRed);
79 data->RefSliceInfo(1).Setup(
"HCAL", 0.1, kBlue);
81 auto ax = h1->GetXaxis();
82 auto ay = h1->GetYaxis();
84 Int_t xm = 1, xM = ax->GetNbins();
85 Int_t ym = 1, yM = ay->GetNbins();
89 h1->GetMaximumBin(cx, cy, cz);
90 xm = TMath::Max(xm, cx-ncells);
91 xM = TMath::Min(xM, cx+ncells);
92 ym = TMath::Max(ym, cy-ncells);
93 yM = TMath::Min(yM, cy+ncells);
97 for (Int_t i=xm; i<=xM; i+=2) {
98 for (Int_t j=ym; j<=yM; j+=2) {
100 data->AddTower(ax->GetBinLowEdge(i), ax->GetBinUpEdge(i),
101 ay->GetBinLowEdge(j), ay->GetBinUpEdge(j));
102 data->FillSlice(0, h1->GetBinContent(i, j));
103 data->FillSlice(1, h2->GetBinContent(i, j));
105 data->AddTower(ax->GetBinLowEdge(i),
106 2 * ax->GetBinWidth(i) + ax->GetBinLowEdge(i),
107 ay->GetBinLowEdge(j),
108 2 * ay->GetBinWidth(j) + ay->GetBinLowEdge(j));
109 data->FillSlice(0, h2->GetBinContent(i, j));
110 data->FillSlice(1, h2->GetBinContent(i, j));
115 data->SetEtaBins(ax);
116 data->SetPhiBins(ay);