Adding ALICE specific implementation of Eve
authorquark <quark@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 19 Jun 2012 13:00:40 +0000 (13:00 +0000)
committerquark <quark@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 19 Jun 2012 13:00:40 +0000 (13:00 +0000)
13 files changed:
EVE/CMakebinalieve.pkg
EVE/CMakelibEveBase.pkg
EVE/EveBase/AliEveEventManager.cxx
EVE/EveBase/AliEveEventManager.h
EVE/EveBase/AliEveMacroExecutorWindow.cxx
EVE/EveBase/AliEveMultiView.cxx
EVE/EveBase/AliEveMultiView.h
EVE/EveBase/EveBaseLinkDef.h
EVE/alice-data/default_geo.root
EVE/alice-macros/phos_clusters.C
EVE/alieve_main/alieve_main.cxx
EVE/alieve_main/alihlteve_main.cxx
EVE/macros/visscan_init.C

index 91dbf26..c49083d 100644 (file)
@@ -32,13 +32,13 @@ set ( CSRCS )
 set ( EINCLUDE )
 set ( ELIBSDIR )
 
-set ( ELIBS  EveBase EveDet MONITOR MUONmapping MUONevaluation MUONsim MUONrec MUONgeometry MUONcalib MUONbase MUONraw MUONtrigger MUONcore TPCfast TPCsim TPCrec TPCbase ITSbase ITSsim ITSrec PMDbase PMDsim PMDrec TRDbase TRDsim TRDrec FMDbase FMDsim FMDrec TOFbase TOFrec TOFsim PHOSUtils PHOSbase PHOSsim PHOSrec ACORDEbase ACORDEsim ACORDErec HMPIDbase HMPIDrec HMPIDsim ZDCbase ZDCsim ZDCrec VZERObase VZEROsim VZEROrec EMCALUtils EMCALbase EMCALsim EMCALrec EMCALraw BCM STRUCT T0base T0sim T0rec STEER CDB AOD ESD STEERBase ANALYSISalice ANALYSIS THijing hijing THbtp TEPEMGEN FASTSIM microcern RAWDatasim RAWDatarec RAWDatabase HLTbase XMLParser STAT OADB)
+set ( ELIBS  EveBase EveDet MUONmapping MUONevaluation MUONsim MUONrec MUONgeometry MUONcalib MUONbase MUONraw MUONtrigger MUONcore TPCfast TPCsim TPCrec TPCbase ITSbase ITSsim ITSrec PMDbase PMDsim PMDrec TRDbase TRDsim TRDrec FMDbase FMDsim FMDrec TOFbase TOFrec TOFsim PHOSUtils PHOSbase PHOSsim PHOSrec ACORDEbase ACORDEsim ACORDErec HMPIDbase HMPIDrec HMPIDsim ZDCbase ZDCsim ZDCrec VZERObase VZEROsim VZEROrec EMCALUtils EMCALbase EMCALsim EMCALrec EMCALraw BCM STRUCT T0base T0sim T0rec STEER CDB AOD ESD STEERBase ANALYSISalice ANALYSIS THijing hijing THbtp TEPEMGEN FASTSIM microcern RAWDatasim RAWDatarec RAWDatabase HLTbase XMLParser STAT OADB MONITOR)
 
 if(PYTHIA6)
   list (APPEND ELIBS EVGEN)
 endif(PYTHIA6)
-set ( PACKBLIBS  ${ROOTCLIBS} ${ROOTPLIBS} -lTreePlayer -lGeomPainter -lGed -lRGL -lEve ${SYSLIBS} )
 
+set ( PACKBLIBS  ${ROOTCLIBS} ${ROOTPLIBS} -lTreePlayer -lGeomPainter -lGed -lRGL -lEve ${SYSLIBS} )
 
 if( ALICE_TARGET STREQUAL "macosx")
                        
index e9525e9..0e5cd64 100644 (file)
@@ -35,6 +35,7 @@ set ( DHDR  EveBase/EveBaseLinkDef.h)
 set ( EINCLUDE  RAW ITS TPC EVE/EveBase STEER/STEER STEER/AOD STEER/CDB STEER/ESD STEER/STEERBase)
 
 set ( EXPORT 
+  EveBase/AliEveApplication.h  
   EveBase/AliEveBeamsInfo.h
   EveBase/AliEveCascade.h
   EveBase/AliEveEventManager.h
@@ -48,6 +49,7 @@ set ( EXPORT
   EveBase/AliEveMacroExecutor.h
   EveBase/AliEveMacroExecutorWindow.h
   EveBase/AliEveMagField.h
+  EveBase/AliEveManager.h
   EveBase/AliEveMultiView.h
   EveBase/AliEveTrack.h 
   EveBase/AliEveTrackCounter.h
index f5ac2c0..e531611 100644 (file)
@@ -120,6 +120,7 @@ void AliEveEventManager::InitInternals()
 
   fAutoLoadTimer = new TTimer;
   fAutoLoadTimer->Connect("Timeout()", "AliEveEventManager", this, "AutoLoadNextEvent()");
+  fAutoLoadTimer->Connect("Timeout()", "AliEveEventManager", this, "Timeout()");
 
   fExecutor = new AliEveMacroExecutor;
 
@@ -189,6 +190,8 @@ AliEveEventManager::AliEveEventManager(const TString& name, const TString& path,
 AliEveEventManager::~AliEveEventManager()
 {
   // Destructor.
+  fAutoLoadTimer->Stop();
+       fAutoLoadTimer->Disconnect("Timeout");
 
   delete fSubManagers;
 
@@ -202,6 +205,8 @@ AliEveEventManager::~AliEveEventManager()
 
   fTransientLists->DecDenyDestroy();
   fTransientLists->Destroy();
+  
+  //delete fExecutor;
 }
 
 /******************************************************************************/
@@ -870,6 +875,11 @@ void AliEveEventManager::GotoEvent(Int_t event)
   AliSysInfo::AddStamp(sysInfoHeader + "PostUserActions");
 }
 
+void AliEveEventManager::Timeout()
+{
+               Emit("Timeout()");
+}
+
 void AliEveEventManager::NextEvent()
 {
   // Loads next event.
@@ -888,7 +898,7 @@ void AliEveEventManager::NextEvent()
     // so here we should do it in SetEvent().
     DestroyElements();
 
-    gSystem->ExitLoop();
+
   }
   else if (fESDTree)
   {
@@ -907,7 +917,7 @@ void AliEveEventManager::NextEvent()
 void AliEveEventManager::PrevEvent()
 {
   // Loads previous event.
-
+       
   static const TEveException kEH("AliEveEventManager::PrevEvent ");
 
   if (fAutoLoadTimerRunning)
index 3eb9ca2..b2955c0 100644 (file)
@@ -64,8 +64,9 @@ public:
   virtual Int_t GetMaxEventId(Bool_t refreshESD=kFALSE) const;
   virtual void  GotoEvent(Int_t event);
   virtual void  NextEvent();
-  virtual void  PrevEvent();
+  virtual void  PrevEvent(); 
   virtual void  Close();
+  void Timeout(); // * SIGNAL*
 
   Int_t         GetEventId()         const { return fEventId; }
   AliRunLoader* GetRunLoader()       const { return fRunLoader; }
index 39ac0b6..6d9ac10 100644 (file)
@@ -162,7 +162,7 @@ AliEveMacroExecutorWindow::AliEveMacroExecutorWindow(AliEveMacroExecutor* master
 
   Resize(400, 700);
 
-  SetCleanup(kDeepCleanup);
+  //SetCleanup(kDeepCleanup);
   Layout();
   MapSubwindows();
   MapWindow();
@@ -174,7 +174,8 @@ AliEveMacroExecutorWindow::AliEveMacroExecutorWindow(AliEveMacroExecutor* master
 AliEveMacroExecutorWindow::~AliEveMacroExecutorWindow()
 {
   // Destructor.
-
+       fBoxContents.clear();
+               
   AliEveEventManager::GetMaster()->Disconnect("NewEventLoaded()", this);
 }
 
index 0469f24..6efdba5 100644 (file)
@@ -147,6 +147,20 @@ if(fIsMuonView)
 
 }
 
+AliEveMultiView::~AliEveMultiView()
+{
+               DestroyAllGeometries();
+               
+               delete fGeomGentle;
+               delete fGeomGentleRPhi;
+               delete fGeomGentleRhoZ;
+               
+               delete  fRPhiMgr;
+               delete fRhoZMgr;
+               delete fMuonMgr;
+               
+}
+
 //-------------------------------------------------------------------------
 
 void AliEveMultiView::InitGeomGentle(TEveGeoShape* g3d, TEveGeoShape* grphi, TEveGeoShape* grhoz, TEveGeoShape* gmuon)
index 5713156..bba471a 100644 (file)
@@ -32,7 +32,7 @@ class AliEveMultiView
 {
 public:
   AliEveMultiView(Bool_t setMuonView = kFALSE);
-  virtual ~AliEveMultiView() {}
+  virtual ~AliEveMultiView();
 
   static AliEveMultiView* Instance();
 
index d4af5d0..a63ff7a 100644 (file)
 #pragma link off all globals;
 #pragma link off all classes;
 
+// AliEveApplication
+#pragma link C++ class AliEveApplication+;
+
+// AliEveManager
+#pragma link C++ class AliEveManager+;
+
 // AliEveConfigManager
 #pragma link C++ class AliEveConfigManager+;
 
index a6a943b..3265dff 100644 (file)
Binary files a/EVE/alice-data/default_geo.root and b/EVE/alice-data/default_geo.root differ
index 84f04ce..66e12fd 100644 (file)
@@ -30,6 +30,8 @@ TEvePointSet* phos_clusters(TEveElement* cont=0)
 
   TTree *cTree = rl->GetTreeR("PHOS", false);
 
+       if(!cTree) return 0;
+
   TEvePointSet* clusters = new TEvePointSet(10000);
   clusters->SetOwnIds(kTRUE);
 
index c56a813..fbb22e5 100644 (file)
@@ -1,96 +1,34 @@
 // $Id$
 // Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
+// Mihai Niculescu 2012
 
 /**************************************************************************
  * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. *
  * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for          *
  * full copyright notice.                                                 *
  **************************************************************************/
-#include <TInterpreter.h>
-#include <TRint.h>
-#include <TROOT.h>
-#include <TPRegexp.h>
-#include <TSystem.h>
-#include <TError.h>
-#include <RVersion.h>
-
-#include <TEveUtil.h>
-#include <TEveManager.h>
-#include <TEveSelection.h>
 #include <TEveBrowser.h>
-#include <TEveViewer.h>
 
-#include <Getline.h>
-#include <AliLog.h>
-#include <AliEveConfigManager.h>
+#include <AliEveApplication.h>
+#include <AliEveManager.h>
 
 int main(int argc, char **argv)
 {
-  static const TEveException kEH("alieve::main");
-
-  if (gSystem->Getenv("ALICE_ROOT") == 0)
-  {
-    Error(kEH.Data(), "ALICE_ROOT is not defined, aborting.");
-    gSystem->Exit(1);
-  }
-
-  TString evedir(Form("%s/EVE", gSystem->Getenv("ALICE_ROOT")));
-
-  if (gSystem->AccessPathName(evedir) == kTRUE)
-  {
-    Error(kEH.Data(), "Directory $ALICE_ROOT/EVE does not exist.");
-    gSystem->Exit(1);
-  }
-
-  TString macPath(gROOT->GetMacroPath());
-  macPath += Form(":%s/macros", evedir.Data());
-  gInterpreter->AddIncludePath(evedir);
-  if (gSystem->Getenv("ALICE_ROOT") != 0)
-  {
-    macPath += Form(":%s/alice-macros", evedir.Data());
-    gInterpreter->AddIncludePath(Form("%s/EVE", gSystem->Getenv("ALICE_ROOT")));
-    gInterpreter->AddIncludePath(Form("%s/PWG0", gSystem->Getenv("ALICE_ROOT")));
-    gInterpreter->AddIncludePath(Form("%s/include", gSystem->Getenv("ALICE_ROOT")));
-    gInterpreter->AddIncludePath(gSystem->Getenv("ALICE_ROOT"));
-  }
-  {
-    // TabCom fails on double-colon in macro-path.
-    // I fixed this in ROOT sometime ago ... could be removed
-    // when we go to 5.26.
-    TPMERegexp doubleColon(":{2,}", "og");
-    doubleColon.Substitute(macPath, ":");
-  }
-  gROOT->SetMacroPath(macPath);
-
-  // make sure logger is instantiated
-  AliLog::GetRootLogger();
-  TRint  *app = new TRint("App", &argc, argv);
-
-#if ROOT_VERSION_CODE >= ROOT_VERSION(5,25,4) || defined XXX_LATEST_ROOT
-  // Waiting for update by Pawel. Now GED in ROOT is better again :)
-  // Uncomment when fixed in AliEveGedXXX.
-  // TEveGListTreeEditorFrame::SetEditorClass("AliEveGedEditor");
-#endif
-
-  TEveManager::Create();
-  gEve->GetDefaultViewer()->SetElementName("3D View");
-  gEve->GetSelection()->SetPickToSelect(TEveSelection::kPS_PableCompound);
-  gEve->GetHighlight()->SetPickToSelect(TEveSelection::kPS_PableCompound);
-
-  gEve->RegisterGeometryAlias("Default", Form("%s/alice-data/default_geo.root", evedir.Data()));
-
-  try {AliEveConfigManager::InitializeMaster();}
-  catch (TEveException exc) {
-       AliErrorGeneral("alieve_main",exc.Data());
-  }
-
-  app->Run(kTRUE);
-
-  if (gEve && gEve->GetBrowser())
-    gEve->GetBrowser()->UnmapWindow();
-  TEveManager::Terminate();
-
-  app->Terminate(0);
-
+  AliEveApplication app("AliEve", &argc, argv, 0 , -1);
+  gEve = AliEveManager::Create();
+  
+  // close application when closing EveWindow from X window button
+       gEve->GetBrowser()->Connect("CloseWindow()", "TApplication", &app, "Terminate(=0)");
+       
+  // process command line arguments
+       app.GetOptions(&argc, argv);
+       
+       app.Run();
+
+       if(gEve){
+        delete gEve;
+   gEve = 0;
+       }
+       
   return 0;
 }
index 2ca187b..30088aa 100644 (file)
@@ -90,7 +90,7 @@ int main(int argc, char **argv)
 
   if (gEve && gEve->GetBrowser())
     gEve->GetBrowser()->UnmapWindow();
-  TEveManager::Terminate();
+  gEve->Terminate();
 
   app->Terminate(0);
 
index 48cf7d8..848d010 100644 (file)
@@ -7,6 +7,8 @@
  * full copyright notice.                                                 *
  **************************************************************************/
 
+#include <AliQAHistViewer.h>
+
 class AliEveMacroExecutor;
 class TEveProjectionManager;
 class TEveGeoShape;