33 const char* histFile =
34 "http://amraktad.web.cern.ch/amraktad/cms_calo_hist.root";
36 TEveCaloLego* MakeCaloLego(TEveCaloData* data, TEveWindowSlot* slot);
37 TEveCalo2D* MakeCalo2D(TEveCalo3D* calo3d, TEveWindowSlot* slot, TEveProjection::EPType_e t);
38 TEveCalo3D* MakeCalo3D(TEveCaloData* data, TEveWindowSlot* slot);
39 TEveCalo2D* MakeCalo2D(TEveCalo3D* calo3d, TEveWindowSlot* slot, TEveProjection::EPType_e t);
40 void MakeViewerScene(TEveWindowSlot* slot, TEveViewer*& v, TEveScene*& s);
41 void add_jet(TEveElement*,
const char*, Float_t, Float_t, Float_t, Float_t);
46 TEveManager::Create();
49 TFile::SetCacheFileDir(
".");
50 auto hf = TFile::Open(histFile,
"CACHEREAD");
51 auto ecalHist = (TH2F*)hf->Get(
"ecalLego");
52 auto hcalHist = (TH2F*)hf->Get(
"hcalLego");
53 auto data =
new TEveCaloDataHist();
54 data->AddHistogram(ecalHist);
55 data->RefSliceInfo(0).Setup(
"ECAL", 0.3, kBlue);
56 data->AddHistogram(hcalHist);
57 data->RefSliceInfo(1).Setup(
"HCAL", 0.1, kRed);
58 data->GetEtaBins()->SetTitleFont(120);
59 data->GetEtaBins()->SetTitle(
"h");
60 data->GetPhiBins()->SetTitleFont(120);
61 data->GetPhiBins()->SetTitle(
"f");
62 data->IncDenyDestroy();
63 gEve->AddToListTree(data, kFALSE);
67 auto lego = MakeCaloLego(data, 0);
74 auto slot = TEveWindow::CreateWindowInTab(gEve->GetBrowser()->GetTabRight());
75 auto packH = slot->MakePack();
76 packH->SetElementName(
"Projections");
77 packH->SetHorizontal();
78 packH->SetShowTitleBar(kFALSE);
80 slot = packH->NewSlot();
81 auto pack0 = slot->MakePack();
82 pack0->SetShowTitleBar(kFALSE);
83 auto slotLeftTop = pack0->NewSlot();
84 auto slotLeftBottom = pack0->NewSlot();
86 slot = packH->NewSlot();
87 auto pack1 = slot->MakePack();
88 pack1->SetShowTitleBar(kFALSE);
89 auto slotRightTop = pack1->NewSlot();
90 auto slotRightBottom = pack1->NewSlot();
93 auto calo3d = MakeCalo3D(data, slotRightTop);
94 MakeCalo2D(calo3d, slotLeftTop, TEveProjection::kPT_RPhi);
95 MakeCalo2D(calo3d, slotLeftBottom, TEveProjection::kPT_RhoZ);
96 lego = MakeCaloLego(data, slotRightBottom);
99 gEve->GetBrowser()->GetTabRight()->SetTab(1);
100 gEve->Redraw3D(kTRUE);
104 TEveCaloLego* MakeCaloLego(TEveCaloData* data, TEveWindowSlot* slot)
111 MakeViewerScene(slot, v, s);
113 v = gEve->GetDefaultViewer();
114 s = gEve->GetEventScene();
116 v->SetElementName(
"Viewer - Lego");
117 s->SetElementName(
"Scene - Lego");
119 auto lego =
new TEveCaloLego(data);
125 lego->InitMainTrans();
126 lego->RefMainTrans().SetScale(TMath::TwoPi(), TMath::TwoPi(), TMath::Pi());
129 auto glv = v->GetGLViewer();
130 TEveCaloLegoOverlay* overlay =
new TEveCaloLegoOverlay();
131 glv->AddOverlayElement(overlay);
132 overlay->SetCaloLego(lego);
135 glv->SetCurrentCamera(TGLViewer::kCameraOrthoXOY);
137 (
new TEveLegoEventHandler(glv->GetGLWidget(), glv, lego));
138 gEve->AddToListTree(lego, kTRUE);
144 TEveCalo3D* MakeCalo3D(TEveCaloData* data, TEveWindowSlot* slot)
148 TEveViewer* v; TEveScene* s;
149 MakeViewerScene(slot, v, s);
150 v->SetElementName(
"Viewer - 3D");
151 s->SetElementName(
"Scene - 3D");
153 auto calo3d =
new TEveCalo3D(data);
154 calo3d->SetBarrelRadius(129.00);
155 calo3d->SetEndCapPos(268.36);
156 s->AddElement(calo3d);
158 add_jet(calo3d,
"JetCone Lojz", 1.4, 1.0, 0.4, 0.2);
159 add_jet(calo3d,
"JetCone Mici", -2.0, -2.1, 0.2, 0.4);
165 TEveCalo2D* MakeCalo2D(TEveCalo3D* calo3d, TEveWindowSlot* slot,
166 TEveProjection::EPType_e t)
170 TEveViewer* v; TEveScene* s;
171 MakeViewerScene(slot, v, s);
172 v->SetElementName(
"Viewer - 2D");
173 s->SetElementName(
"Scene - 2D");
175 auto mng =
new TEveProjectionManager();
176 mng->SetProjection(t);
178 auto axes =
new TEveProjectionAxes(mng);
180 TEveCalo2D* calo2d = (TEveCalo2D*) mng->ImportElements(calo3d);
181 s->AddElement(calo2d);
183 v->GetGLViewer()->SetCurrentCamera(TGLViewer::kCameraOrthoXOY);
185 gEve->AddToListTree(mng, kTRUE);
186 gEve->AddToListTree(calo2d, kTRUE);
192 void MakeViewerScene(TEveWindowSlot* slot, TEveViewer*& v, TEveScene*& s)
196 v =
new TEveViewer(
"Viewer");
197 v->SpawnGLViewer(gEve->GetEditor());
198 slot->ReplaceWindow(v);
199 gEve->GetViewers()->AddElement(v);
200 s = gEve->SpawnNewScene(
"Scene");
205 void add_jet(TEveElement* parent,
const char* name,
206 Float_t eta, Float_t phi,
207 Float_t deta, Float_t dphi)
209 auto jet =
new TEveJetCone(name, name);
210 jet->SetMainTransparency(60);
211 jet->SetLineColor(kRed);
212 jet->SetCylinder(129 - 10, 268.36 - 10);
213 jet->AddEllipticCone(eta, phi, deta, dphi);
214 jet->SetPickable(kTRUE);
215 jet->SetHighlightFrame(kFALSE);
216 parent->AddElement(jet);