* EVE/macros/alieve_online.C
[u/mrichter/AliRoot.git] / EVE / macros / alieve_online.C
index c7024d6..4114c55 100644 (file)
  * full copyright notice.                                                 *
  **************************************************************************/
 
-TEveGeoShape *gGeomGentle = 0;
+class TEveProjectionManager;
+class TEveGeoShape;
+class TEveUtil;
+
+Bool_t gCenterProjectionsAtPrimaryVertex = kFALSE;
+
 
 void alieve_online_init()
 {
-  gROOT->LoadMacro("geom_gentle.C");
+  if (gROOT->LoadMacro("MultiView.C++") != 0)
+  {
+    gEnv->SetValue("Root.Stacktrace", "no");
+    Fatal("alieve_online.C", "Failed loading MultiView.C in compiled mode.");
+  }
 
   gROOT->LoadMacro("primary_vertex.C");
   gROOT->LoadMacro("esd_tracks.C");
+  //  Disabled due to memory leaks
+  //  gROOT->LoadMacro("trd_tracks.C++");
+  gROOT->LoadMacro("trd_detectors.C++");
 
   gROOT->LoadMacro("its_clusters.C++");
   gROOT->LoadMacro("tpc_clusters.C++");
-  gROOT->LoadMacro("trd_clusters.C++");
+  gROOT->LoadMacro("tof_clusters.C++");
+  gROOT->LoadMacro("hmpid_clusters.C++");
+  gROOT->LoadMacro("emcal_digits.C++");
 
   gROOT->LoadMacro("acorde_raw.C");
   gROOT->LoadMacro("its_raw.C");
   gROOT->LoadMacro("tpc_raw.C");
+  gROOT->LoadMacro("tof_raw.C");
+  gROOT->LoadMacro("vzero_raw.C");
 
   TEveUtil::AssertMacro("VizDB_scan.C");
 
-  // Temp fix !!!
-  TGeoManager *man = gGeoManager;
-  gGeomGentle = geom_gentle();
-  // Temp fix !!!
-  gGeoManager = man;
-
-  gROOT->ProcessLine(".L SplitGLView.C++g"); // !!!! debug-mode
-  TEveBrowser* browser = gEve->GetBrowser();
-  browser->ExecPlugin("SplitGLView", 0, "new SplitGLView(gClient->GetRoot(), 600, 450, kTRUE)");
-
-  if (gRPhiMgr) {
-    TEveProjectionAxes* a = new TEveProjectionAxes(gRPhiMgr);
-    a->SetNumTickMarks(3);
-    a->SetText("R-Phi");
-    a->SetFontFile("comicbd");
-    a->SetFontSize(10);
-    gEve->GetScenes()->FindChild("R-Phi Projection")->AddElement(a);
-  }
-  if (gRhoZMgr) {
-    TEveProjectionAxes* a = new TEveProjectionAxes(gRhoZMgr);
-    a->SetNumTickMarks(3);
-    a->SetText("Rho-Z");
-    a->SetFontFile("comicbd");
-    a->SetFontSize(10);
-    gEve->GetScenes()->FindChild("Rho-Z Projection")->AddElement(a);
-  }
+  TEveBrowser *browser = gEve->GetBrowser();
+  browser->ShowCloseTab(kFALSE);
+
+  // Gentle-geom loading changes gGeoManager.
+  TEveGeoManagerHolder mgrRestore;
+
+  gMultiView = new MultiView;
 
-  TEveBrowser* browser = gEve->GetBrowser();
+  TEveUtil::LoadMacro("geom_gentle.C");
+  gMultiView->InitGeomGentle(geom_gentle(),
+                             geom_gentle_rphi(), 
+                             geom_gentle_rhoz());
+
+  // See visscan_init.C for how to add TRD / MUON geometry.
+
+  browser->GetTabRight()->SetTab(1);
 
   browser->StartEmbedding(TRootBrowser::kBottom);
   new AliEveEventManagerWindow(AliEveEventManager::GetMaster());
   browser->StopEmbedding("EventCtrl");
 
-  gEve->Redraw3D(kTRUE);
+  browser->MoveResize(0, 0, gClient->GetDisplayWidth(),
+                     gClient->GetDisplayHeight() - 32);
+
+  gEve->GetViewers()->SwitchColorSet();
+
+  TString autoRun(gSystem->Getenv("ONLINERECO_AUTORUN"));
+  if (autoRun == "1" || autoRun.CompareTo("true", TString::kIgnoreCase) == 0)
+  {
+    AliEveEventManager::GetMaster()->SetAutoLoad(kTRUE);
+  }
+
+  {
+    TGTab *tab = gEve->GetBrowser()->GetTab(2);
+
+    TGHorizontalFrame *hf = (TGHorizontalFrame*) tab->GetParent();
+    TGVerticalFrame   *vf = (TGVerticalFrame*)   hf ->GetParent();
+
+    hf->Resize(hf->GetWidth(), hf->GetHeight() + 80);
+    vf->Layout();
+  }
+
+  gEve->FullRedraw3D(kTRUE);
+
+  TGLViewer *glv = gMultiView->f3DView->GetGLViewer();
+  glv->CurrentCamera().RotateRad(-0.4, 1);
+  glv->DoDraw();
 }
 
 void alieve_online_on_new_event()
 {
-  its_raw();
+  if (AliEveEventManager::HasRawReader())
+    its_raw();
   its_clusters();
 
-  tpc_raw();
+  if (AliEveEventManager::HasRawReader())
+    tpc_raw();
   tpc_clusters();
 
-  acorde_raw();
+  if (AliEveEventManager::HasRawReader())
+    tof_raw();
+  tof_clusters();
+
+  hmpid_clusters();
+
+  if (AliEveEventManager::HasRawReader())
+    acorde_raw();
+
+  if (AliEveEventManager::HasRawReader())
+    vzero_raw();
+
+  emcal_digits();
 
   primary_vertex();
   esd_tracks();
 
+  //  Disabled due to memory leaks
+  //  if (AliEveEventManager::HasESDfriend()) trd_tracks();
+  //  AliSysInfo::AddStamp("EveTRDTr");
+  trd_detectors();
+
   AliESDEvent* esd = AliEveEventManager::AssertESD();
   Double_t x[3];
   esd->GetPrimaryVertex()->GetXYZ(x);
 
   TEveElement* top = gEve->GetCurrentEvent();
 
-  if (gRPhiMgr && top) {
-    gRPhiMgr->DestroyElements();
-    gRPhiMgr->SetCenter(x[0], x[1], x[2]);
-    gRPhiMgr->ImportElements(gGeomGentle);
-    gRPhiMgr->ImportElements(top);
-  }
-  if (gRhoZMgr && top) {
-    gRhoZMgr->DestroyElements();
-    gRhoZMgr->SetCenter(x[0], x[1], x[2]);
-    gRhoZMgr->ImportElements(gGeomGentle);
-    gRhoZMgr->ImportElements(top);
-  }
+  gMultiView->DestroyEventRPhi();
+  if (gCenterProjectionsAtPrimaryVertex)
+    gMultiView->SetCenterRPhi(x[0], x[1], x[2]);
+  gMultiView->ImportEventRPhi(top);
 
-  gROOT->ProcessLine("SplitGLView::UpdateSummary()");
+  gMultiView->DestroyEventRhoZ();
+  if (gCenterProjectionsAtPrimaryVertex)
+    gMultiView->SetCenterRhoZ(x[0], x[1], x[2]);
+  gMultiView->ImportEventRhoZ(top);
 }