Added muon arms
[u/mrichter/AliRoot.git] / EVE / hlt-macros / od.C
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
32 #include "AliEveHLTEventManager.h"\r
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
77 // -- HOMERManager\r
78 AliEveHOMERManager*                       gHomerManager      = 0;\r
79 AliEveHLTEventManager*                       geventManager      = 0;\r
80 \r
81 // -- Geometry Manager \r
82 TGeoManager*                              gGeoManager        = 0;\r
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
101 void od ( Bool_t showBarrel = kTRUE, Bool_t showMuon = kFALSE ) {\r
102 \r
103   // -- Loading Geometry\r
104   // ---------------------\r
105   Int_t run = 0;\r
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
114     TGeoGlobalMagField::Instance()->SetField(new AliMagF("Maps","Maps", -1., -1, AliMagF::k5kG));\r
115 \r
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
126   cout << "Initializing the EVE viewer"<<endl;\r
127   initializeEveViewer( showBarrel, showMuon, fGeoManager );\r
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
139 \r
140   cout << "Creating the Event Manager"<<endl;\r
141   gEventManager = new AliEveHLTEventManagerHomer();\r
142   gEventManager->SetShowMuon(showMuon);\r
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
162 \r
163   // -- Add hM to EveTree\r
164   // ----------------------\r
165   //gEve->AddToListTree(gHomerManager, kTRUE);\r
166   gEve->AddToListTree(gEventManager, kTRUE);\r
167 \r
168   // -- Create SourceList\r
169   // ----------------------\r
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
188 \r
189   gGeoManager = fGeoManager;\r
190   \r
191 \r
192 }\r
193 \r
194 // -------------------------------------------------------------------------\r
195 Int_t initializeEveViewer( Bool_t showBarrel, Bool_t showMuon, TGeoManager * manager ) {\r
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
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
243   gEve->AddGlobalElement(emcal_re);\r
244   gEve->Redraw3D();\r
245 \r
246   if (gShowMUON) \r
247     gGeomGentleMUON = geom_gentle_muon(kFALSE);\r
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
374   gStyle->SetOptFit(1);\r
375 \r
376 \r
377   \r
378   return 0;\r
379 }\r
380 \r
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
400 \r
401         \r