]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - EVE/macros/anyscan_init.C
Adding a simple checker to the FMD as well as rearranging the raw histos
[u/mrichter/AliRoot.git] / EVE / macros / anyscan_init.C
index bb52239cf2403738fa20eefe6b5175d3e59f358e..e74124140ebce1ee82ffcf2a0e194a82224c844e 100644 (file)
@@ -1,4 +1,4 @@
-// $Id: NLT_trackcount_init.C 24927 2008-04-04 13:46:04Z mtadel $
+// $Id$
 // Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
 
 /**************************************************************************
@@ -7,24 +7,44 @@
  * full copyright notice.                                                 *
  **************************************************************************/
 
+// This macro has been cloned to visscan_init.C
+// This one will be removed soon and will not be updated any further.
+
 class AliEveMacroExecutor;
 
 class TEveProjectionManager;
 class TEveGeoShape;
 class TEveUtil;
 
-R__EXTERN TEveProjectionManager *gRPhiMgr;
-R__EXTERN TEveProjectionManager *gRhoZMgr;
-
 TEveGeoShape *gGeomGentle     = 0;
 TEveGeoShape *gGeomGentleRPhi = 0;
 TEveGeoShape *gGeomGentleRhoZ = 0;
 TEveGeoShape *gGeomGentleTRD  = 0;
+TEveGeoShape *gGeomGentleMUON = 0;
+
+TEveScene *gRPhiGeomScene  = 0;
+TEveScene *gRhoZGeomScene  = 0;
+TEveScene *gRPhiEventScene = 0;
+TEveScene *gRhoZEventScene = 0;
+
+TEveProjectionManager *gRPhiMgr = 0;
+TEveProjectionManager *gRhoZMgr = 0;
 
-Bool_t gShowTRD = kFALSE;
+TEveViewer *g3DView   = 0;
+TEveViewer *gRPhiView = 0;
+TEveViewer *gRhoZView = 0;
+
+Bool_t gShowTRD      = kFALSE;
+Bool_t gShowMUON     = kTRUE;
+Bool_t gShowMUONRPhi = kFALSE;
+Bool_t gShowMUONRhoZ = kFALSE;
+
+Bool_t gCenterProjectionsAtPrimaryVertex = kFALSE;
 
 void anyscan_init()
 {
+  Warning("anyscan_init", "This macro is deprecated - use visscan_init instead.");
+
   TEveUtil::LoadMacro("alieve_init.C");
   alieve_init(".", -1);
 
@@ -32,37 +52,17 @@ void anyscan_init()
 
   TEveUtil::AssertMacro("VizDB_scan.C");
 
+  AliEveMacroExecutor *exec    = AliEveEventManager::GetMaster()->GetExecutor();
+  TEveBrowser         *browser = gEve->GetBrowser();
 
-  AliEveTrackFitter* fitter = new AliEveTrackFitter();
-  gEve->AddToListTree(fitter, 1);
-  gEve->AddElement(fitter, gEve->GetEventScene());
+  //==============================================================================
+  // Geometry, scenes, projections and viewers
+  //==============================================================================
 
-  AliEveTrackCounter* g_trkcnt = new AliEveTrackCounter("Primary Counter");
-  gEve->AddToListTree(g_trkcnt, kFALSE);
+  browser->ShowCloseTab(kFALSE);
 
+  // Geometry
 
-  gROOT->ProcessLine(".L SplitGLView.C+");
-  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);
-  }
-
-  // geometry
   TEveUtil::LoadMacro("geom_gentle.C");
   gGeomGentle = geom_gentle();
   gGeomGentleRPhi = geom_gentle_rphi(); gGeomGentleRPhi->IncDenyDestroy();
@@ -71,18 +71,106 @@ void anyscan_init()
     TEveUtil::LoadMacro("geom_gentle_trd.C");
     gGeomGentleTRD = geom_gentle_trd();
   }
+  if (gShowMUON) {
+    TEveUtil::LoadMacro("geom_gentle_muon.C");
+    gGeomGentleMUON = geom_gentle_muon();
+  }
 
+  // Scenes
 
-  AliEveMacroExecutor *exec = gAliEveEvent->GetExecutor();
+  gRPhiGeomScene  = gEve->SpawnNewScene("RPhi Geometry",
+                    "Scene holding projected geometry for the RPhi view.");
+  gRhoZGeomScene  = gEve->SpawnNewScene("RhoZ Geometry",
+                   "Scene holding projected geometry for the RhoZ view.");
+  gRPhiEventScene = gEve->SpawnNewScene("RPhi Event Data",
+                   "Scene holding projected geometry for the RPhi view.");
+  gRhoZEventScene = gEve->SpawnNewScene("RhoZ Event Data",
+                   "Scene holding projected geometry for the RhoZ view.");
+
+  // Projection managers
+
+  gRPhiMgr = new TEveProjectionManager();
+  gRPhiMgr->SetProjection(TEveProjection::kPT_RPhi);
+  gEve->AddToListTree(gRPhiMgr, kFALSE);
+  {
+    TEveProjectionAxes* a = new TEveProjectionAxes(gRPhiMgr);
+    a->SetMainColor(kWhite);
+    a->SetTitle("R-Phi");
+    a->SetTitleSize(0.05);
+    a->SetTitleFont(102);
+    a->SetLabelSize(0.025);
+    a->SetLabelFont(102);
+    gRPhiGeomScene->AddElement(a);
+  }
+  gRPhiMgr->ImportElements(gGeomGentleRPhi, gRPhiGeomScene);
+  if (gShowTRD)      gRPhiMgr->ImportElements(gGeomGentleTRD, gRPhiGeomScene);
+  if (gShowMUONRPhi) gRPhiMgr->ImportElements(gGeomGentleMUON, gRPhiGeomScene);
+
+  gRhoZMgr = new TEveProjectionManager();
+  gRhoZMgr->SetProjection(TEveProjection::kPT_RhoZ);
+  gEve->AddToListTree(gRhoZMgr, kFALSE);
+  {
+    TEveProjectionAxes* a = new TEveProjectionAxes(gRhoZMgr);
+    a->SetMainColor(kWhite);
+    a->SetTitle("Rho-Z");
+    a->SetTitleSize(0.05);
+    a->SetTitleFont(102);
+    a->SetLabelSize(0.025);
+    a->SetLabelFont(102);
+    gRhoZGeomScene->AddElement(a);
+  }
+  gRhoZMgr->ImportElements(gGeomGentleRhoZ, gRhoZGeomScene);
+  if (gShowTRD)      gRhoZMgr->ImportElements(gGeomGentleTRD, gRhoZGeomScene);
+  if (gShowMUONRhoZ) gRhoZMgr->ImportElements(gGeomGentleMUON, gRhoZGeomScene);
+
+  // Viewers
+
+  TEveWindowSlot *slot = 0;
+  TEveWindowPack *pack = 0;
+
+  slot = TEveWindow::CreateWindowInTab(browser->GetTabRight());
+  pack = slot->MakePack();
+  pack->SetElementName("Multi View");
+  pack->SetHorizontal();
+  pack->SetShowTitleBar(kFALSE);
+  pack->NewSlot()->MakeCurrent();
+  g3DView = gEve->SpawnNewViewer("3D View", "");
+  g3DView->AddScene(gEve->GetGlobalScene());
+  g3DView->AddScene(gEve->GetEventScene());
+
+  pack = pack->NewSlot()->MakePack();
+  pack->SetShowTitleBar(kFALSE);
+  pack->NewSlot()->MakeCurrent();
+  gRPhiView = gEve->SpawnNewViewer("RPhi View", "");
+  gRPhiView->GetGLViewer()->SetCurrentCamera(TGLViewer::kCameraOrthoXOY);
+  gRPhiView->AddScene(gRPhiGeomScene);
+  gRPhiView->AddScene(gRPhiEventScene);
+
+  pack->NewSlot()->MakeCurrent();
+  gRhoZView = gEve->SpawnNewViewer("RhoZ View", "");
+  gRhoZView->GetGLViewer()->SetCurrentCamera(TGLViewer::kCameraOrthoXOY);
+  gRhoZView->AddScene(gRhoZGeomScene);
+  gRhoZView->AddScene(gRhoZEventScene);
+
+
+  //==============================================================================
+  // Registration of per-event macros
+  //==============================================================================
 
   exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "SIM Track",   "kine_tracks.C", "kine_tracks", "", kFALSE));
+
   exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "SIM Hit ITS", "its_hits.C",    "its_hits",    "", kFALSE));
   exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "SIM Hit TPC", "tpc_hits.C",    "tpc_hits",    "", kFALSE));
-  exec->AddMacro(new AliEveMacro(AliEveMacro::kRawReader, "TPC RAW",     "tpc_raw.C",     "tpc_raw",     "", kFALSE));
-  exec->AddMacro(new AliEveMacro(AliEveMacro::kRawReader, "FMD RAW",     "fmd_raw.C",     "fmd_raw",     "", kFALSE));
-  exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "FMD DIGITS",  "fmd_digits.C",  "fmd_digits",  "", kFALSE));
-  exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "FMD Hits",    "fmd_hits.C",    "fmd_hits",    "", kFALSE));
-  exec->AddMacro(new AliEveMacro(AliEveMacro::kRawReader, "VZERO RAW",   "vzero_raw.C",   "vzero_raw",   "", kFALSE));
+  exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "SIM Hit T0",  "t0_hits.C",     "t0_hits",     "", kFALSE));
+  exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "SIM Hit FMD", "fmd_hits.C",    "fmd_hits",    "", kFALSE));
+
+  exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "DIG FMD",     "fmd_digits.C",  "fmd_digits",  "", kFALSE));
+
+  exec->AddMacro(new AliEveMacro(AliEveMacro::kRawReader, "RAW TPC",     "tpc_raw.C",     "tpc_raw",     "", kFALSE));
+  exec->AddMacro(new AliEveMacro(AliEveMacro::kRawReader, "RAW T0",      "t0_raw.C",      "t0_raw",      "", kFALSE));
+  exec->AddMacro(new AliEveMacro(AliEveMacro::kRawReader, "RAW FMD",     "fmd_raw.C",     "fmd_raw",     "", kFALSE));
+  exec->AddMacro(new AliEveMacro(AliEveMacro::kRawReader, "RAW VZERO",   "vzero_raw.C",   "vzero_raw",   "", kFALSE));
+  exec->AddMacro(new AliEveMacro(AliEveMacro::kRawReader, "RAW ACORDE",  "acorde_raw.C",  "acorde_raw",  "", kFALSE));
 
   exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC PVTX",         "primary_vertex.C", "primary_vertex",             "",                kTRUE));
   exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC PVTX Ellipse", "primary_vertex.C", "primary_vertex_ellipse",     "",                kTRUE));
@@ -94,38 +182,78 @@ void anyscan_init()
   exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC PVTX Ellipse", "primary_vertex.C", "primary_vertex_ellipse_tpc", "",                kFALSE));
   exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC PVTX Box",     "primary_vertex.C", "primary_vertex_box_tpc",     "kFALSE, 3, 3, 3", kFALSE));
 
-  exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC V0",   "esd_V0_points.C",  "esd_V0_points"));
-  exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC V0",   "esd_V0.C",         "esd_V0"));
-  // exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "esd_tracks.C",     ""));
-  TEveUtil::LoadMacro("esd_tracks.C");
+  exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC V0",   "esd_V0_points.C",       "esd_V0_points_onfly"));
+  exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC V0",   "esd_V0_points.C",       "esd_V0_points_offline"));
+  exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC V0",   "esd_V0.C",              "esd_V0"));
+  exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC CSCD", "esd_cascade_points.C",  "esd_cascade_points"));
+  exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC CSCD", "esd_cascade.C",         "esd_cascade"));
+
+  exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC Track", "esd_tracks.C", "esd_tracks",             "", kFALSE));
+  exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC Track", "esd_tracks.C", "esd_tracks_MI",          "", kFALSE));
+  exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC Track", "esd_tracks.C", "esd_tracks_by_category", "", kTRUE));
 
-  exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC Track", "esd_spd_tracklets.C", "esd_spd_tracklets", "", kFALSE));
+  exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC Tracklet", "esd_spd_tracklets.C", "esd_spd_tracklets", "", kFALSE));
 
+  exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC ZDC",      "esd_zdc.C", "esd_zdc", "", kFALSE));
+
+  exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "REC Clus",     "clusters.C+",     "clusters", "", kFALSE));
   exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "REC Clus ITS", "its_clusters.C+", "its_clusters"));
   exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "REC Clus TPC", "tpc_clusters.C+", "tpc_clusters"));
   exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "REC Clus TRD", "trd_clusters.C+", "trd_clusters"));
   exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "REC Clus TOF", "tof_clusters.C+", "tof_clusters"));
 
-  TEveBrowser* browser = gEve->GetBrowser();
 
-  browser->StartEmbedding(TRootBrowser::kRight);
+  //==============================================================================
+  // Additional GUI components
+  //==============================================================================
+
+  slot = TEveWindow::CreateWindowInTab(browser->GetTabRight());
+  slot->StartEmbedding();
   AliEveMacroExecutorWindow* exewin = new AliEveMacroExecutorWindow(exec);
-  browser->StopEmbedding("DataSelection");
+  slot->StopEmbedding("DataSelection");
   exewin->PopulateMacros();
 
-  browser->StartEmbedding();
+  slot = TEveWindow::CreateWindowInTab(browser->GetTabRight());
+  slot->StartEmbedding();
   new AliQAHistViewer(gClient->GetRoot(), 600, 400, kTRUE);
-  browser->StopEmbedding("QA histograms");
+  slot->StopEmbedding("QA histograms");
 
   browser->GetTabRight()->SetTab(1);
 
   browser->StartEmbedding(TRootBrowser::kBottom);
-  new AliEveEventManagerWindow;
+  new AliEveEventManagerWindow(AliEveEventManager::GetMaster());
   browser->StopEmbedding("EventCtrl");
 
-  // event
-  gAliEveEvent->AddNewEventCommand("on_new_event();");
-  gAliEveEvent->GotoEvent(0);
+  slot = TEveWindow::CreateWindowInTab(browser->GetTabRight());
+  TEveWindowTab *store_tab = slot->MakeTab();
+  store_tab->SetElementNameTitle("WindowStore",
+    "Undocked windows whose previous container is not known\n"
+    "are placed here when the main-frame is closed.");
+  gEve->GetWindowManager()->SetDefaultContainer(store_tab);
+
+  //==============================================================================
+  // AliEve objects - global tools
+  //==============================================================================
+
+  AliEveTrackFitter* fitter = new AliEveTrackFitter();
+  gEve->AddToListTree(fitter, 1);
+  gEve->AddElement(fitter, gEve->GetEventScene());
+
+  AliEveTrackCounter* g_trkcnt = new AliEveTrackCounter("Primary Counter");
+  gEve->AddToListTree(g_trkcnt, kFALSE);
+
+
+  //==============================================================================
+  // Final stuff
+  //==============================================================================
+
+  // A refresh to show proper window.
+  gEve->Redraw3D(kTRUE);
+  gSystem->ProcessEvents();
+
+  // Register command to call on each event.
+  AliEveEventManager::GetMaster()->AddNewEventCommand("on_new_event();");
+  AliEveEventManager::GetMaster()->GotoEvent(0);
 
   gEve->EditElement(g_trkcnt);
 
@@ -136,30 +264,45 @@ void anyscan_init()
 
 void on_new_event()
 {
-  printf("on_new_event() entered ...\n");
-
-  TEveElementList* cont = esd_tracks_vertex_cut();
-
-  // Here we expect five TEveTrackList containers.
-  // First two have reasonable primaries (sigma-to-prim-vertex < 5).
-  // Other three are almost certainly secondaries.
-  Int_t count = 1;
   AliEveTrackCounter* g_trkcnt = AliEveTrackCounter::fgInstance;
   g_trkcnt->Reset();
-  g_trkcnt->SetEventId(gAliEveEvent->GetEventId());
-  TEveElement::List_i i = cont->BeginChildren();
-  while (i != cont->EndChildren()) {
-    TEveTrackList* l = dynamic_cast<TEveTrackList*>(*i);
-    if (l != 0) {
-      // l->SetLineWidth(2);
-      g_trkcnt->RegisterTracks(l, (count <= 2));
-      ++count;
+  g_trkcnt->SetEventId(AliEveEventManager::GetMaster()->GetEventId());
+
+  if (g_esd_tracks_by_category_container != 0)
+  {
+    TEveElementList* cont = g_esd_tracks_by_category_container;
+
+    // Here we expect several TEveTrackList containers.
+    // First two have reasonable primaries (sigma-to-prim-vertex < 5).
+    // Others are almost certainly secondaries.
+    Int_t count = 1;
+    TEveElement::List_i i = cont->BeginChildren();
+    while (i != cont->EndChildren())
+    {
+      TEveTrackList* l = dynamic_cast<TEveTrackList*>(*i);
+      if (l != 0)
+      {
+       g_trkcnt->RegisterTracks(l, (count <= 2));
+       ++count;
+      }
+      ++i;
     }
-    ++i;
+
+    // Set it to zero, so that we do not reuse an old one.
+    g_esd_tracks_by_category_container = 0;
+  }
+  else
+  {
+    Warning("on_new_event", "g_esd_tracks_by_category_container not initialized.");
   }
 
-  AliESDEvent* esd = AliEveEventManager::AssertESD();
+  Double_t x[3] = { 0, 0, 0 };
+
+  if (AliEveEventManager::HasESD())
   {
+    AliESDEvent* esd = AliEveEventManager::AssertESD();
+    esd->GetPrimaryVertex()->GetXYZ(x);
+
     TTimeStamp ts(esd->GetTimeStamp());
     TString win_title("Eve Main Window -- Timestamp: ");
     win_title += ts.AsString("s");
@@ -167,25 +310,21 @@ void on_new_event()
     win_title += esd->GetEventNumberInFile();
     gEve->GetBrowser()->SetWindowName(win_title);
   }
-  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(gGeomGentleRPhi);
-    if (gShowTRD) gRPhiMgr->ImportElements(gGeomGentleTRD);
-    gRPhiMgr->ImportElements(top);
+  if (gRPhiMgr && top)
+  {
+    gRPhiEventScene->DestroyElements();
+    if (gCenterProjectionsAtPrimaryVertex)
+      gRPhiMgr->SetCenter(x[0], x[1], x[2]);
+    gRPhiMgr->ImportElements(top, gRPhiEventScene);
   }
-  if (gRhoZMgr && top) {
-    gRhoZMgr->DestroyElements();
-    gRhoZMgr->SetCenter(x[0], x[1], x[2]);
-    gRhoZMgr->ImportElements(gGeomGentleRhoZ);
-    if (gShowTRD) gRhoZMgr->ImportElements(gGeomGentleTRD);
-    gRhoZMgr->ImportElements(top);
+  if (gRhoZMgr && top)
+  {
+    gRhoZEventScene->DestroyElements();
+    if (gCenterProjectionsAtPrimaryVertex)
+      gRhoZMgr->SetCenter(x[0], x[1], x[2]);
+    gRhoZMgr->ImportElements(top, gRhoZEventScene);
   }
-
-  gROOT->ProcessLine("SplitGLView::UpdateSummary()");
 }