Fixes in case no raw data is available during online reco+viz (Matevz)
[u/mrichter/AliRoot.git] / EVE / macros / alieve_online.C
index 7b59917c33dea4665ecf894b15e26ecf3c051d6f..b5d3b344a48336a2d873d2e24820eac3d5c57c2c 100644 (file)
@@ -4,9 +4,98 @@
  * full copyright notice.                                                 *
  **************************************************************************/
 
-void alieve_online()
+TEveGeoShape *gGeomGentle = 0;
+
+void alieve_online_init()
+{
+  gROOT->LoadMacro("geom_gentle.C");
+
+  gROOT->LoadMacro("primary_vertex.C");
+  gROOT->LoadMacro("esd_tracks.C");
+
+  gROOT->LoadMacro("its_clusters.C++");
+  gROOT->LoadMacro("tpc_clusters.C++");
+  gROOT->LoadMacro("trd_clusters.C++");
+  gROOT->LoadMacro("hmpid_clusters.C++");
+
+  gROOT->LoadMacro("acorde_raw.C");
+  gROOT->LoadMacro("its_raw.C");
+  gROOT->LoadMacro("tpc_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->StartEmbedding(TRootBrowser::kBottom);
+  new AliEveEventManagerWindow(AliEveEventManager::GetMaster());
+  browser->StopEmbedding("EventCtrl");
+
+  gEve->Redraw3D(kTRUE);
+}
+
+void alieve_online_on_new_event()
 {
-  // List of macros to be executed
-  gROOT->Macro("its_raw.C");
-  gROOT->Macro("its_clusters.C");
+  if (AliEveEventManager::HasRawReader())
+    its_raw();
+  its_clusters();
+
+  if (AliEveEventManager::HasRawReader())
+    tpc_raw();
+  tpc_clusters();
+
+  hmpid_clusters();
+
+  if (AliEveEventManager::HasRawReader())
+    acorde_raw();
+
+  primary_vertex();
+  esd_tracks();
+
+  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);
+  }
+
+  gROOT->ProcessLine("SplitGLView::UpdateSummary()");
 }