ROOT logo
// $Id: alieve_init.C 30728 2009-01-22 18:14:34Z mtadel $
// Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007

/**************************************************************************
 * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. *
 * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for          *
 * full copyright notice.                                                 *
 **************************************************************************/
#if !defined(__CINT__) || defined(__MAKECINT__)
#include "TROOT.h"
#include "TSystem.h"
#include "TString.h"
#include "TFolder.h"
#include "TPRegexp.h"
#include "TEveUtil.h"

#include "TEveManager.h"
#include "TEvePointSet.h"
#include "TEveBrowser.h"

#include "TSystemDirectory.h"
#include "TGFileBrowser.h"
#include "TEveMacro.h"
#endif

using namespace std;

typedef list<string> StringList;


void alieve_init_import_macros()
{
  // Put macros in the list of browsables, add a macro browser to
  // top-level GUI.
  typedef list<string> StringList;

  TString macdir("$(ALICE_ROOT)/EVE/alice-macros");
  gSystem->ExpandPathName(macdir);

  TFolder* f = gEve->GetMacroFolder();
  void* dirhandle = gSystem->OpenDirectory(macdir.Data());
  if (dirhandle != 0)
  {
    char* filename;
    TPMERegexp re("\\.C$");
    StringList names; // This form understood by cint (fails with std::string).
    while ((filename = (char*)gSystem->GetDirEntry(dirhandle)) != 0)
    {
      if (re.Match(filename))
	names.push_back(filename);
    }
    names.sort();
    //PH The line below is replaced waiting for a fix in Root
    //PH which permits to use variable siza arguments in CINT
    //PH on some platforms (alphalinuxgcc, solariscc5, etc.)
    // f->Add(new TEveMacro(Form("%s/%s", macdir.Data(), filename)));
    char fullName[1000];
    for (StringList::iterator si=names.begin(); si!=names.end(); ++si)
    {
      sprintf(fullName,"%s/%s", macdir.Data(), si->c_str());
      f->Add(new TEveMacro(fullName));
    }
  }
  gSystem->FreeDirectory(dirhandle);

  gROOT->GetListOfBrowsables()->Add
    // (new TSystemDirectory("alice-macros", macdir.Data())); // !!!! this spits blood, but then works
    (new TSystemDirectory(macdir.Data(), macdir.Data()));

  {
    TEveBrowser   *br = gEve->GetBrowser();
    TGFileBrowser *fb = 0;
    fb = br->GetFileBrowser();
    fb->GotoDir(macdir);
    {
      br->StartEmbedding(0);
      fb = br->MakeFileBrowser();
      fb->BrowseObj(f);
      fb->Show();
      br->StopEmbedding();
      br->SetTabTitle("Macros", 0);
      br->SetTab(0, 0);
    }
  }
}

void alieve_init_basic_vizdb()
{
  TEvePointSet* ps;

  ps = new TEvePointSet();
  ps->SetMarkerColor(4);
  ps->SetMarkerSize(0.2);
  ps->SetMarkerStyle(2);
  gEve->InsertVizDBEntry("Clusters", ps);
}

void hlt_alieve_init()
{
  typedef list<string> StringList;

  Info("alieve_init", "Adding standard macros.");
  TString  hack = gSystem->pwd(); // Problem with TGFileBrowser cding
  alieve_init_import_macros();
  gSystem->cd(hack);

  alieve_init_basic_vizdb();
  // Temporarily assert also default vizdb.
  TEveUtil::AssertMacro("VizDB_scan.C");

  gSystem->ProcessEvents();
}

 hlt_alieve_init.C:1
 hlt_alieve_init.C:2
 hlt_alieve_init.C:3
 hlt_alieve_init.C:4
 hlt_alieve_init.C:5
 hlt_alieve_init.C:6
 hlt_alieve_init.C:7
 hlt_alieve_init.C:8
 hlt_alieve_init.C:9
 hlt_alieve_init.C:10
 hlt_alieve_init.C:11
 hlt_alieve_init.C:12
 hlt_alieve_init.C:13
 hlt_alieve_init.C:14
 hlt_alieve_init.C:15
 hlt_alieve_init.C:16
 hlt_alieve_init.C:17
 hlt_alieve_init.C:18
 hlt_alieve_init.C:19
 hlt_alieve_init.C:20
 hlt_alieve_init.C:21
 hlt_alieve_init.C:22
 hlt_alieve_init.C:23
 hlt_alieve_init.C:24
 hlt_alieve_init.C:25
 hlt_alieve_init.C:26
 hlt_alieve_init.C:27
 hlt_alieve_init.C:28
 hlt_alieve_init.C:29
 hlt_alieve_init.C:30
 hlt_alieve_init.C:31
 hlt_alieve_init.C:32
 hlt_alieve_init.C:33
 hlt_alieve_init.C:34
 hlt_alieve_init.C:35
 hlt_alieve_init.C:36
 hlt_alieve_init.C:37
 hlt_alieve_init.C:38
 hlt_alieve_init.C:39
 hlt_alieve_init.C:40
 hlt_alieve_init.C:41
 hlt_alieve_init.C:42
 hlt_alieve_init.C:43
 hlt_alieve_init.C:44
 hlt_alieve_init.C:45
 hlt_alieve_init.C:46
 hlt_alieve_init.C:47
 hlt_alieve_init.C:48
 hlt_alieve_init.C:49
 hlt_alieve_init.C:50
 hlt_alieve_init.C:51
 hlt_alieve_init.C:52
 hlt_alieve_init.C:53
 hlt_alieve_init.C:54
 hlt_alieve_init.C:55
 hlt_alieve_init.C:56
 hlt_alieve_init.C:57
 hlt_alieve_init.C:58
 hlt_alieve_init.C:59
 hlt_alieve_init.C:60
 hlt_alieve_init.C:61
 hlt_alieve_init.C:62
 hlt_alieve_init.C:63
 hlt_alieve_init.C:64
 hlt_alieve_init.C:65
 hlt_alieve_init.C:66
 hlt_alieve_init.C:67
 hlt_alieve_init.C:68
 hlt_alieve_init.C:69
 hlt_alieve_init.C:70
 hlt_alieve_init.C:71
 hlt_alieve_init.C:72
 hlt_alieve_init.C:73
 hlt_alieve_init.C:74
 hlt_alieve_init.C:75
 hlt_alieve_init.C:76
 hlt_alieve_init.C:77
 hlt_alieve_init.C:78
 hlt_alieve_init.C:79
 hlt_alieve_init.C:80
 hlt_alieve_init.C:81
 hlt_alieve_init.C:82
 hlt_alieve_init.C:83
 hlt_alieve_init.C:84
 hlt_alieve_init.C:85
 hlt_alieve_init.C:86
 hlt_alieve_init.C:87
 hlt_alieve_init.C:88
 hlt_alieve_init.C:89
 hlt_alieve_init.C:90
 hlt_alieve_init.C:91
 hlt_alieve_init.C:92
 hlt_alieve_init.C:93
 hlt_alieve_init.C:94
 hlt_alieve_init.C:95
 hlt_alieve_init.C:96
 hlt_alieve_init.C:97
 hlt_alieve_init.C:98
 hlt_alieve_init.C:99
 hlt_alieve_init.C:100
 hlt_alieve_init.C:101
 hlt_alieve_init.C:102
 hlt_alieve_init.C:103
 hlt_alieve_init.C:104
 hlt_alieve_init.C:105
 hlt_alieve_init.C:106
 hlt_alieve_init.C:107
 hlt_alieve_init.C:108
 hlt_alieve_init.C:109
 hlt_alieve_init.C:110
 hlt_alieve_init.C:111
 hlt_alieve_init.C:112
 hlt_alieve_init.C:113
 hlt_alieve_init.C:114