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