]>
Commit | Line | Data |
---|---|---|
8b669499 | 1 | //-*- Mode: C++ -*-\r |
2 | \r | |
3 | // ** USED macros :\r | |
4 | // ***************************************************\r | |
5 | // - hlt_alieve_init.C\r | |
6 | // - VizDB_scan.C\r | |
7 | // - geom_gentle_hlt.C\r | |
8 | // - geom_gentle_muon.C\r | |
9 | // ***************************************************\r | |
10 | \r | |
11 | #if !defined(__CINT__) || defined(__MAKECINT__)\r | |
12 | \r | |
13 | //****************** ROOT ******************************************\r | |
14 | #include "TRandom.h"\r | |
15 | #include "TVirtualPad.h"\r | |
16 | #include "TGLViewer.h"\r | |
17 | #include "TThread.h"\r | |
18 | #include "TGFileBrowser.h"\r | |
19 | #include "TStyle.h"\r | |
20 | #include "TList.h"\r | |
21 | #include "TDirectory.h"\r | |
22 | #include "TFile.h"\r | |
23 | #include "TH2.h"\r | |
24 | #include "TCanvas.h"\r | |
25 | #include "TColor.h"\r | |
26 | #include "TVector3.h"\r | |
27 | \r | |
28 | //****************** ROOT/EVE **************************************\r | |
29 | #include "TEveManager.h"\r | |
30 | \r | |
31 | #include "AliEveHOMERManager.h"\r | |
30e7579c | 32 | #include "AliEveHLTEventManager.h"\r |
8b669499 | 33 | #include "geom_gentle_hlt.C"\r |
34 | \r | |
35 | //***************************************************************\r | |
36 | #include "HLT/rec/AliHLTReconstructor.h"\r | |
37 | \r | |
38 | \r | |
39 | \r | |
40 | #endif\r | |
41 | \r | |
42 | \r | |
43 | \r | |
44 | // -----------------------------------------------------------------\r | |
45 | // -- Geometry / Scenes --\r | |
46 | // -----------------------------------------------------------------\r | |
47 | \r | |
48 | TEveGeoShape *gGeomGentle = 0;\r | |
49 | TEveGeoShape *gGeomGentleRPhi = 0;\r | |
50 | TEveGeoShape *gGeomGentleRhoZ = 0;\r | |
51 | TEveGeoShape *gGeomGentleTRD = 0;\r | |
52 | TEveGeoShape *gGeomGentleMUON = 0;\r | |
53 | \r | |
54 | TEveScene *gRPhiGeomScene = 0;\r | |
55 | TEveScene *gRhoZGeomScene = 0;\r | |
56 | TEveScene *gRPhiEventScene = 0;\r | |
57 | TEveScene *gRhoZEventScene = 0;\r | |
58 | \r | |
59 | TEveProjectionManager *gRPhiMgr = 0;\r | |
60 | TEveProjectionManager *gRhoZMgr = 0;\r | |
61 | \r | |
62 | TEveViewer *g3DView = 0;\r | |
63 | TEveViewer *gRPhiView = 0;\r | |
64 | TEveViewer *gRhoZView = 0;\r | |
65 | \r | |
66 | // -----------------------------------------------------------------\r | |
67 | // -- Geometry / Scenes Parameters --\r | |
68 | // -----------------------------------------------------------------\r | |
69 | \r | |
70 | // -- Parameters to show different geometries\r | |
71 | Bool_t gShowMUON = kTRUE;\r | |
72 | Bool_t gShowMUONRPhi = kFALSE;\r | |
73 | Bool_t gShowMUONRhoZ = kTRUE;\r | |
74 | Bool_t gShowTRD = kFALSE;\r | |
75 | \r | |
76 | \r | |
8b669499 | 77 | // -- HOMERManager\r |
78 | AliEveHOMERManager* gHomerManager = 0;\r | |
30e7579c | 79 | AliEveHLTEventManager* geventManager = 0;\r |
8b669499 | 80 | \r |
81 | // -- Geometry Manager \r | |
82 | TGeoManager* gGeoManager = 0;\r | |
8b669499 | 83 | \r |
84 | \r | |
85 | //Container for gGeoManager till it is broken\r | |
86 | TGeoManager *fGeoManager = 0;\r | |
87 | // -----------------------------------------------------------------\r | |
88 | // -- Methods --\r | |
89 | // -----------------------------------------------------------------\r | |
90 | \r | |
91 | Int_t initializeEveViewer( Bool_t showBarrel, Bool_t showMuon );\r | |
92 | \r | |
93 | void writeToFile();\r | |
94 | \r | |
95 | \r | |
96 | // #################################################################\r | |
97 | // #################################################################\r | |
98 | // #################################################################\r | |
99 | \r | |
100 | // -----------------------------------------------------------------\r | |
b277b277 | 101 | void od ( Bool_t showBarrel = kTRUE, Bool_t showMuon = kFALSE ) {\r |
8b669499 | 102 | \r |
103 | // -- Loading Geometry\r | |
104 | // ---------------------\r | |
d5180d24 | 105 | Int_t run = 0;\r |
8b669499 | 106 | AliCDBManager::Instance()->SetDefaultStorage("local://$ALICE_ROOT/OCDB");\r |
107 | AliCDBManager::Instance()->SetRun(run);\r | |
108 | AliGeomManager::LoadGeometry();\r | |
109 | // The default in the simulation is the following line\r | |
110 | // TGeoGlobalMagField::Instance()->SetField(new AliMagF("Maps","Maps", -1., -1, AliMagF::k5kG));\r | |
111 | // However for the current setting of +ve L3 and +ve Dipole magnetic field\r | |
112 | // the following setting creates the field close to real field with currect polarity\r | |
113 | if(showMuon)\r | |
d5180d24 | 114 | TGeoGlobalMagField::Instance()->SetField(new AliMagF("Maps","Maps", -1., -1, AliMagF::k5kG));\r |
8b669499 | 115 | \r |
8b669499 | 116 | // Get the pointer to gGeoManager before it's broken (bug in alieve)\r |
117 | fGeoManager = gGeoManager;\r | |
118 | \r | |
119 | // -- Initialize pointsets and add macros\r | |
120 | // ----------------------------------------\r | |
121 | //TEveUtil::LoadMacro("hlt_alieve_init.C");\r | |
122 | //hlt_alieve_init(".", -1);\r | |
123 | \r | |
124 | // -- Initialize Eve\r | |
125 | // -------------------\r | |
30e7579c | 126 | cout << "Initializing the EVE viewer"<<endl;\r |
b088c0a1 | 127 | initializeEveViewer( showBarrel, showMuon, fGeoManager );\r |
8b669499 | 128 | \r |
129 | // -- Reset gGeoManager to the original pointer\r | |
130 | // ----------------------------------------------\r | |
131 | \r | |
132 | // -- Finalize Eve\r | |
133 | // -----------------\r | |
134 | gSystem->ProcessEvents();\r | |
135 | gEve->Redraw3D(kTRUE);\r | |
136 | \r | |
137 | // -- Create new hM object\r | |
138 | // -------------------------\r | |
30e7579c | 139 | \r |
140 | cout << "Creating the Event Manager"<<endl;\r | |
141 | gEventManager = new AliEveHLTEventManagerHomer();\r | |
d5180d24 | 142 | gEventManager->SetShowMuon(showMuon);\r |
30e7579c | 143 | gEventManager->SetEveManager(gEve);\r |
144 | gEventManager->SetGeoManager(gGeoManager);\r | |
145 | gEventManager->SetRPhiManager(gRPhiMgr);\r | |
146 | gEventManager->SetRPhiEventScene(gRPhiEventScene);\r | |
147 | gEventManager->SetRPhiViewer(gRPhiView);\r | |
148 | gEventManager->SetRhoZManager(gRhoZMgr);\r | |
149 | gEventManager->SetRhoZEventScene(gRhoZEventScene);\r | |
150 | gEventManager->SetRhoZViewer(gRhoZView);\r | |
151 | \r | |
152 | //gEventManager->SetBarrelFlag(showBarrel);\r | |
153 | //gEventManager->SetMuonFlag(showMuon);\r | |
154 | \r | |
155 | // Int_t iResult = gHomerManager->Initialize();\r | |
156 | // if (iResult) { \r | |
157 | // printf("Error Initializing AliHLTHOMERManager, quitting");\r | |
158 | // return; \r | |
159 | // }\r | |
160 | \r | |
161 | // gEventManager->SetHomerManager(gHomerManager);\r | |
8b669499 | 162 | \r |
163 | // -- Add hM to EveTree\r | |
164 | // ----------------------\r | |
30e7579c | 165 | //gEve->AddToListTree(gHomerManager, kTRUE);\r |
166 | gEve->AddToListTree(gEventManager, kTRUE);\r | |
8b669499 | 167 | \r |
168 | // -- Create SourceList\r | |
169 | // ----------------------\r | |
30e7579c | 170 | // iResult = gHomerManager->CreateEveSourcesListLoop();\r |
171 | // if (iResult) {\r | |
172 | // printf ("Couldn't find active services. Giving up. \n");\r | |
173 | // return;\r | |
174 | // } \r | |
175 | \r | |
176 | \r | |
177 | // if ( showBarrel ) {\r | |
178 | // gHomerManager->ConnectEVEtoHOMER("TPC" );\r | |
179 | // } else if ( MUONMode ) {\r | |
180 | // gHomerManager->ConnectEVEtoHOMER("MUON");\r | |
181 | // } else if( TRDMode ) {\r | |
182 | // gHomerManager->ConnectEVEtoHOMER("TRD"); \r | |
183 | // } else {\r | |
184 | // cout<<" No detectors selected, nothing will be displayed"<<endl;\r | |
185 | // } \r | |
186 | // THIS LINE DOES NOT WORK. PLEASE USE ANOTHER LINE!\r | |
187 | \r | |
8b669499 | 188 | \r |
189 | gGeoManager = fGeoManager;\r | |
190 | \r | |
191 | \r | |
192 | }\r | |
193 | \r | |
194 | // -------------------------------------------------------------------------\r | |
b088c0a1 | 195 | Int_t initializeEveViewer( Bool_t showBarrel, Bool_t showMuon, TGeoManager * manager ) {\r |
8b669499 | 196 | \r |
197 | //=============================================================================\r | |
198 | // Visualization database\r | |
199 | //============================================================================\r | |
200 | \r | |
201 | TEveUtil::AssertMacro("VizDB_scan.C");\r | |
202 | \r | |
203 | // alieve_vizdb();\r | |
204 | \r | |
205 | \r | |
206 | \r | |
207 | //==============================================================================\r | |
208 | // -- Geometry, scenes, projections and viewers\r | |
209 | //==============================================================================\r | |
210 | \r | |
211 | TEveBrowser *browser = gEve->GetBrowser();\r | |
212 | browser->ShowCloseTab(kFALSE);\r | |
213 | \r | |
214 | // -- Disable extra geometry\r | |
215 | // ---------------------------\r | |
216 | if (!showMuon)\r | |
217 | gShowMUON = gShowMUONRPhi = gShowMUONRhoZ = kFALSE;\r | |
218 | \r | |
219 | // -- Load Geometry\r | |
220 | // ------------------\r | |
221 | TEveUtil::LoadMacro("geom_gentle_hlt.C");\r | |
222 | gGeomGentle = geom_gentle_hlt();\r | |
223 | gGeomGentleRPhi = geom_gentle_rphi(); gGeomGentleRPhi->IncDenyDestroy();\r | |
224 | gGeomGentleRhoZ = geom_gentle_rhoz(); gGeomGentleRhoZ->IncDenyDestroy();\r | |
225 | gGeomGentleTRD = geom_gentle_trd();\r | |
226 | \r | |
227 | gGeoManager = fGeoManager;\r | |
228 | \r | |
229 | gEMCALNode = gGeoManager->GetTopVolume()->FindNode("XEN1_1");\r | |
230 | \r | |
231 | TEveGeoTopNode* emcal_re = new TEveGeoTopNode(gGeoManager, gEMCALNode);\r | |
b088c0a1 | 232 | emcal_re->SetVisLevel(1);\r |
233 | // emcal_re->FirstChild()->Dump();\r | |
234 | \r | |
235 | // for(Int_t i = 4; i < 11; i++) {\r | |
236 | // emcal_re->FindChild(Form("SMOD_%d", i))->SetRnrState(kFALSE);\r | |
237 | // }\r | |
238 | // emcal_re->FindChild("SM10_1")->SetRnrState(kFALSE);\r | |
239 | // emcal_re->FindChild("SM10_2")->SetRnrState(kFALSE);\r | |
240 | \r | |
241 | \r | |
242 | \r | |
8b669499 | 243 | gEve->AddGlobalElement(emcal_re);\r |
244 | gEve->Redraw3D();\r | |
245 | \r | |
246 | if (gShowMUON) \r | |
d5180d24 | 247 | gGeomGentleMUON = geom_gentle_muon(kFALSE);\r |
8b669499 | 248 | \r |
249 | // -- Scenes\r | |
250 | // -----------\r | |
251 | gRPhiGeomScene = gEve->SpawnNewScene("RPhi Geometry",\r | |
252 | "Scene holding projected geometry for the RPhi view.");\r | |
253 | gRhoZGeomScene = gEve->SpawnNewScene("RhoZ Geometry",\r | |
254 | "Scene holding projected geometry for the RhoZ view.");\r | |
255 | gRPhiEventScene = gEve->SpawnNewScene("RPhi Event Data",\r | |
256 | "Scene holding projected geometry for the RPhi view.");\r | |
257 | gRhoZEventScene = gEve->SpawnNewScene("RhoZ Event Data",\r | |
258 | "Scene holding projected geometry for the RhoZ view.");\r | |
259 | \r | |
260 | // -- Projection managers\r | |
261 | // ------------------------\r | |
262 | \r | |
263 | gRPhiMgr = new TEveProjectionManager();\r | |
264 | gRPhiMgr->SetProjection(TEveProjection::kPT_RPhi);\r | |
265 | gEve->AddToListTree(gRPhiMgr, kFALSE);\r | |
266 | {\r | |
267 | TEveProjectionAxes* a = new TEveProjectionAxes(gRPhiMgr);\r | |
268 | a->SetMainColor(kWhite);\r | |
269 | a->SetTitle("R-Phi");\r | |
270 | a->SetTitleSize(0.05);\r | |
271 | a->SetTitleFont(102);\r | |
272 | a->SetLabelSize(0.025);\r | |
273 | a->SetLabelFont(102);\r | |
274 | gRPhiGeomScene->AddElement(a);\r | |
275 | }\r | |
276 | gRPhiMgr->SetCurrentDepth(-10);\r | |
277 | gRPhiMgr->ImportElements(gGeomGentleRPhi, gRPhiGeomScene);\r | |
278 | gRPhiMgr->SetCurrentDepth(0);\r | |
279 | gRPhiMgr->ImportElements(gGeomGentleTRD, gRPhiGeomScene);\r | |
280 | if (gShowMUONRPhi) gRPhiMgr->ImportElements(gGeomGentleMUON, gRPhiGeomScene);\r | |
281 | \r | |
282 | gRhoZMgr = new TEveProjectionManager();\r | |
283 | gRhoZMgr->SetProjection(TEveProjection::kPT_RhoZ);\r | |
284 | gEve->AddToListTree(gRhoZMgr, kFALSE);\r | |
285 | {\r | |
286 | TEveProjectionAxes* a = new TEveProjectionAxes(gRhoZMgr);\r | |
287 | a->SetMainColor(kWhite);\r | |
288 | a->SetTitle("Rho-Z");\r | |
289 | a->SetTitleSize(0.05);\r | |
290 | a->SetTitleFont(102);\r | |
291 | a->SetLabelSize(0.025);\r | |
292 | a->SetLabelFont(102);\r | |
293 | gRhoZGeomScene->AddElement(a);\r | |
294 | }\r | |
295 | gRhoZMgr->SetCurrentDepth(-10);\r | |
296 | gRhoZMgr->ImportElements(gGeomGentleRhoZ, gRhoZGeomScene);\r | |
297 | gRhoZMgr->SetCurrentDepth(0);\r | |
298 | gRhoZMgr->ImportElements(gGeomGentleTRD, gRhoZGeomScene);\r | |
299 | \r | |
300 | if (gShowMUONRhoZ) gRhoZMgr->ImportElements(gGeomGentleMUON, gRhoZGeomScene);\r | |
301 | \r | |
302 | // -- Viewers\r | |
303 | // ------------\r | |
304 | \r | |
305 | TEveWindowSlot *slot = TEveWindow::CreateWindowInTab(browser->GetTabRight());\r | |
306 | TEveWindowPack *pack = slot->MakePack();\r | |
307 | pack->SetElementName("Multi View");\r | |
308 | pack->SetHorizontal();\r | |
309 | pack->SetShowTitleBar(kFALSE);\r | |
310 | pack->NewSlot()->MakeCurrent();\r | |
311 | g3DView = gEve->SpawnNewViewer("3D View", "");\r | |
312 | g3DView->AddScene(gEve->GetGlobalScene());\r | |
313 | g3DView->AddScene(gEve->GetEventScene());\r | |
314 | \r | |
315 | \r | |
316 | pack = pack->NewSlot()->MakePack();\r | |
317 | pack->SetShowTitleBar(kFALSE);\r | |
318 | pack->NewSlot()->MakeCurrent();\r | |
319 | gRPhiView = gEve->SpawnNewViewer("RPhi View", "");\r | |
320 | gRPhiView->GetGLViewer()->SetCurrentCamera(TGLViewer::kCameraOrthoXOY);\r | |
321 | gRPhiView->AddScene(gRPhiGeomScene);\r | |
322 | gRPhiView->AddScene(gRPhiEventScene);\r | |
323 | \r | |
324 | pack->NewSlot()->MakeCurrent();\r | |
325 | gRhoZView = gEve->SpawnNewViewer("RhoZ View", "");\r | |
326 | gRhoZView->GetGLViewer()->SetCurrentCamera(TGLViewer::kCameraOrthoXOY);\r | |
327 | gRhoZView->AddScene(gRhoZGeomScene);\r | |
328 | gRhoZView->AddScene(gRhoZEventScene);\r | |
329 | \r | |
330 | \r | |
331 | \r | |
332 | //Add HLT Text to windows\r | |
333 | \r | |
334 | TGLOverlayButton *ob1 = new TGLOverlayButton(g3DView->GetGLViewer(), "HLT", 0, 20, 110, 60);\r | |
335 | ob1->SetAlphaValues(0.8, 0.8);\r | |
336 | // cout << "color" << ob1->GetBackColor() << endl;\r | |
337 | //ob1->SetBackColor(8421631);\r | |
338 | //ob1->SetBackColor(10492431);\r | |
339 | TGLOverlayButton *ob2 = new TGLOverlayButton(g3DView->GetGLViewer(), "ALICE", 0, 0, 110, 20);\r | |
340 | ob2->SetAlphaValues(0.8, 0.8);\r | |
341 | //ob2->SetBackColor(0.2);\r | |
342 | TGLOverlayButton *ob3 = new TGLOverlayButton(gEve->GetDefaultGLViewer(), "HLT", 0, 20, 110, 60);\r | |
343 | ob3->SetAlphaValues(0.8, 0.8);\r | |
344 | TGLOverlayButton *ob4 = new TGLOverlayButton(gEve->GetDefaultGLViewer(), "ALICE", 0, 0, 110, 20);\r | |
345 | ob4->SetAlphaValues(0.8, 0.8);\r | |
346 | \r | |
347 | \r | |
348 | TGLOverlayButton *ne = new TGLOverlayButton(gEve->GetDefaultGLViewer(), "Next Event", 110, 0, 210, 20);\r | |
349 | ne->SetAlphaValues(0.0, 0.8);\r | |
350 | \r | |
351 | // -- List of Viewers\r | |
352 | // --------------------\r | |
353 | \r | |
354 | TEveViewerList *viewerlist = new TEveViewerList();\r | |
355 | viewerlist->AddElement(gEve->GetDefaultViewer());\r | |
356 | \r | |
357 | viewerlist->AddElement(g3DView);\r | |
358 | viewerlist->AddElement(gRhoZView);\r | |
359 | viewerlist->AddElement(gRPhiView);\r | |
360 | viewerlist->SwitchColorSet();\r | |
361 | \r | |
362 | //==============================================================================\r | |
363 | // -- Macros / QA histograms\r | |
364 | //==============================================================================\r | |
365 | \r | |
366 | // -- Registration of per-event macros\r | |
367 | // -------------------------------------\r | |
368 | \r | |
369 | AliEveMacroExecutor *exec = new AliEveMacroExecutor();\r | |
370 | \r | |
371 | \r | |
372 | \r | |
373 | gStyle->SetPalette(1, 0);\r | |
8b669499 | 374 | gStyle->SetOptFit(1);\r |
375 | \r | |
376 | \r | |
377 | \r | |
378 | return 0;\r | |
379 | }\r | |
380 | \r | |
8b669499 | 381 | //****************************************************************************\r |
382 | void writeToFile(){\r | |
383 | \r | |
384 | TList * bList = gHomerManager->GetBlockList();\r | |
385 | if(bList){\r | |
386 | TFile * file = TFile::Open(Form("Event_0x%016X_ITS.root", gHomerManager->GetEventID()), "RECREATE"); \r | |
387 | bList->Write("blockList", TObject::kSingleKey);\r | |
388 | file->Close();\r | |
389 | }\r | |
390 | \r | |
391 | bList = gHomerManager->GetAsyncBlockList();\r | |
392 | if(bList){\r | |
393 | TFile * afile = TFile::Open(Form("Event_0x%016X_Async.root", gHomerManager->GetEventID()), "RECREATE"); \r | |
394 | bList->Write("blockList", TObject::kSingleKey);\r | |
395 | afile->Close();\r | |
396 | }\r | |
397 | }\r | |
398 | \r | |
399 | \r | |
8b669499 | 400 | \r |
401 | \r |