ROOT logo
// $Id$
// 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.                                                 *
 **************************************************************************/

/// \ingroup evemacros
/// \file alieve_init.C

void alieve_init(const TString& cdburi = "",
		 const TString& path   = ".", Int_t event=0,Bool_t showHLTESDTree=kFALSE,
                 const Text_t* esdfile = 0,
                 const Text_t* aodfile = 0,
                 const Text_t* rawfile = 0,
		 Bool_t assert_runloader = kFALSE,
                 Bool_t assert_esd       = kFALSE,
                 Bool_t assert_aod       = kFALSE,
                 Bool_t assert_raw       = kFALSE)
{
  if (cdburi.IsNull() && ! AliCDBManager::Instance()->IsDefaultStorageSet())
  {
    gEnv->SetValue("Root.Stacktrace", "no");
    Fatal("alieve_init.C", "OCDB path MUST be specified as the first argument.");
  }

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

  TEveUtil::AssertMacro("VizDB_scan.C");

  gSystem->ProcessEvents();

  AliEveEventManager::SetFilesPath(path);
  
  if(showHLTESDTree){
   AliEveEventManager::SetESDFileName(esdfile, AliEveEventManager::kHLTTree);
  }
  else
  {
   AliEveEventManager::SetESDFileName(esdfile, AliEveEventManager::kOfflineTree);
  }
  
  AliEveEventManager::SetRawFileName(rawfile);
  AliEveEventManager::SetCdbUri(cdburi);
  AliEveEventManager::SetAssertElements(assert_runloader, assert_esd,
					assert_aod, assert_raw);

  // Open event
  if (path.BeginsWith("alien:") || ! cdburi.BeginsWith("local:"))
  {
    if (gGrid != 0)
    {
      Info("alieve_init", "TGrid already initializied. Skiping checks and initialization.");
    }
    else
    {
      Info("alieve_init", "AliEn requested - connecting.");
      if (gSystem->Getenv("GSHELL_ROOT") == 0)
      {
	      Error("alieve_init", "AliEn environment not initialized. Aborting.");
	      gSystem->Exit(1);
      }
      if (TGrid::Connect("alien") == 0)
      {
	      Error("alieve_init", "TGrid::Connect() failed. Aborting.");
	      gSystem->Exit(1);
      }
    }
  }

  Info("alieve_init", "Opening event %d from '%s' ...", event, path.Data());
  TString name("Event"); // CINT has trouble with direct "Event".
  new AliEveEventManager(name, event);
  gEve->AddEvent(AliEveEventManager::GetMaster());
}

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

  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$");
    TObjArray names;
    while ((filename = gSystem->GetDirEntry(dirhandle)) != 0)
    {
      if (re.Match(filename))
	names.AddLast(new TObjString(filename));
    }
    names.Sort();

    for (Int_t ii=0; ii<names.GetEntries(); ++ii)
    {
      TObjString * si = (TObjString*) names.At(ii);
       f->Add(new TEveMacro(Form("%s/%s", macdir.Data(), (si->GetString()).Data())));
    }
  }
  gSystem->FreeDirectory(dirhandle);

  gROOT->GetListOfBrowsables()->Add(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);
    }
  }
}
 alieve_init.C:1
 alieve_init.C:2
 alieve_init.C:3
 alieve_init.C:4
 alieve_init.C:5
 alieve_init.C:6
 alieve_init.C:7
 alieve_init.C:8
 alieve_init.C:9
 alieve_init.C:10
 alieve_init.C:11
 alieve_init.C:12
 alieve_init.C:13
 alieve_init.C:14
 alieve_init.C:15
 alieve_init.C:16
 alieve_init.C:17
 alieve_init.C:18
 alieve_init.C:19
 alieve_init.C:20
 alieve_init.C:21
 alieve_init.C:22
 alieve_init.C:23
 alieve_init.C:24
 alieve_init.C:25
 alieve_init.C:26
 alieve_init.C:27
 alieve_init.C:28
 alieve_init.C:29
 alieve_init.C:30
 alieve_init.C:31
 alieve_init.C:32
 alieve_init.C:33
 alieve_init.C:34
 alieve_init.C:35
 alieve_init.C:36
 alieve_init.C:37
 alieve_init.C:38
 alieve_init.C:39
 alieve_init.C:40
 alieve_init.C:41
 alieve_init.C:42
 alieve_init.C:43
 alieve_init.C:44
 alieve_init.C:45
 alieve_init.C:46
 alieve_init.C:47
 alieve_init.C:48
 alieve_init.C:49
 alieve_init.C:50
 alieve_init.C:51
 alieve_init.C:52
 alieve_init.C:53
 alieve_init.C:54
 alieve_init.C:55
 alieve_init.C:56
 alieve_init.C:57
 alieve_init.C:58
 alieve_init.C:59
 alieve_init.C:60
 alieve_init.C:61
 alieve_init.C:62
 alieve_init.C:63
 alieve_init.C:64
 alieve_init.C:65
 alieve_init.C:66
 alieve_init.C:67
 alieve_init.C:68
 alieve_init.C:69
 alieve_init.C:70
 alieve_init.C:71
 alieve_init.C:72
 alieve_init.C:73
 alieve_init.C:74
 alieve_init.C:75
 alieve_init.C:76
 alieve_init.C:77
 alieve_init.C:78
 alieve_init.C:79
 alieve_init.C:80
 alieve_init.C:81
 alieve_init.C:82
 alieve_init.C:83
 alieve_init.C:84
 alieve_init.C:85
 alieve_init.C:86
 alieve_init.C:87
 alieve_init.C:88
 alieve_init.C:89
 alieve_init.C:90
 alieve_init.C:91
 alieve_init.C:92
 alieve_init.C:93
 alieve_init.C:94
 alieve_init.C:95
 alieve_init.C:96
 alieve_init.C:97
 alieve_init.C:98
 alieve_init.C:99
 alieve_init.C:100
 alieve_init.C:101
 alieve_init.C:102
 alieve_init.C:103
 alieve_init.C:104
 alieve_init.C:105
 alieve_init.C:106
 alieve_init.C:107
 alieve_init.C:108
 alieve_init.C:109
 alieve_init.C:110
 alieve_init.C:111
 alieve_init.C:112
 alieve_init.C:113
 alieve_init.C:114
 alieve_init.C:115
 alieve_init.C:116
 alieve_init.C:117
 alieve_init.C:118
 alieve_init.C:119
 alieve_init.C:120
 alieve_init.C:121
 alieve_init.C:122
 alieve_init.C:123
 alieve_init.C:124
 alieve_init.C:125
 alieve_init.C:126
 alieve_init.C:127
 alieve_init.C:128
 alieve_init.C:129
 alieve_init.C:130