ROOT logo
/**************************************************************************
 * 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 <../../MONITOR/AliSocket.h>

class TEveProjectionManager;
class TEveGeoShape;
class TEveUtil;
class AliTriggerAnalysis;
class AliSysInfo;

TH2D* V0StateHistogram;

Bool_t gCenterProjectionsAtPrimaryVertex = kFALSE;

void alieve_online()
{
    printf("alieve_online_init() ...\n");
 printf("================================ Correct macro r ...\n");
 
	if (gSystem->Getenv("ALICE_ROOT") != 0)
  {
    gInterpreter->AddIncludePath(Form("%s/MUON", gSystem->Getenv("ALICE_ROOT")));
    gInterpreter->AddIncludePath(Form("%s/MUON/mapping", gSystem->Getenv("ALICE_ROOT")));
  }
  
   AliEveEventManager::SetCdbUri("local://$ALICE_ROOT/OCDB");
  
  Info("alieve_init", "Adding standard macros.");
  TString  hack = gSystem->pwd(); // Problem with TGFileBrowser cding
  alieve_init_import_macros();
  gSystem->cd(hack);
  
  new AliEveEventManager("online", -1);
  //AliEveEventManager::GetMaster()->AddNewEventCommand("alieve_online_on_new_event()");
  gEve->AddEvent(AliEveEventManager::GetMaster());
  
  
  TEveUtil::AssertMacro("VizDB_scan.C");
  
  gSystem->ProcessEvents();
   
  
  
 
  
  AliEveMacroExecutor *exec  = AliEveEventManager::GetMaster()->GetExecutor();
  TEveBrowser         *browser = gEve->GetBrowser();
  browser->ShowCloseTab(kFALSE);
  

  // Gentle-geom loading changes gGeoManager.
  //TEveGeoManagerHolder mgrRestore;

  AliEveMultiView *multiView = new AliEveMultiView(kTRUE);

  TEveUtil::LoadMacro("geom_gentle.C");
  multiView->InitGeomGentle(geom_gentle(),
                             geom_gentle_rphi(), 
                             geom_gentle_rhoz(),
                             geom_gentle_rhoz());

  TEveUtil::LoadMacro("geom_gentle_trd.C");
  multiView->InitGeomGentleTrd(geom_gentle_trd());

  TEveUtil::LoadMacro("geom_gentle_muon.C");
  multiView->InitGeomGentleMuon(geom_gentle_muon(), kFALSE, kFALSE, kTRUE);

  //============================================================================
  // Standard macros to execute -- not all are enabled by default.
  //============================================================================

  
   printf("============ Setting macro executor\n");

  AliEveMacroExecutor *exec = AliEveEventManager::GetMaster()->GetExecutor();

  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));
  exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC PVTX Box",     "primary_vertex.C", "primary_vertex_box",         "kFALSE, 3, 3, 3", kFALSE));
  exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC PVTX",         "primary_vertex.C", "primary_vertex_spd",         "",                kTRUE));
  exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC PVTX Ellipse", "primary_vertex.C", "primary_vertex_ellipse_spd", "",                kTRUE));
  exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC PVTX Box",     "primary_vertex.C", "primary_vertex_box_spd",     "kFALSE, 3, 3, 3", kFALSE));
  exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC PVTX",         "primary_vertex.C", "primary_vertex_tpc",         "",                kFALSE));
  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::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"));
  exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "REC Clus HMPID", "hmpid_clusters.C", "hmpid_clusters"));
  exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "REC Clus MUON",  "muon_clusters.C",  "muon_clusters"));

  exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "DIG EMCAL",   "emcal_digits.C",   "emcal_digits"));

  exec->AddMacro(new AliEveMacro(AliEveMacro::kRawReader, "RAW ITS",     "its_raw.C",     "its_raw"));
  //  exec->AddMacro(new AliEveMacro(AliEveMacro::kRawReader, "RAW TPC",     "tpc_raw.C",     "tpc_raw"));
  exec->AddMacro(new AliEveMacro(AliEveMacro::kRawReader, "RAW TOF",     "tof_raw.C",     "tof_raw"));
  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::kRawReader, "RAW MUON",    "muon_raw.C",  "muon_raw"));
  exec->AddMacro(new AliEveMacro(AliEveMacro::kRawReader, "RAW FMD",     "fmd_raw.C",     "fmd_raw"));

  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 MUON", "esd_muon_tracks.C", "esd_muon_tracks",        "kTRUE,kFALSE", kTRUE));
  exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC FMD",        "fmd_esd.C",           "fmd_esd",                "", kTRUE));

  // ???
  // exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC TRD", "trd_detectors.C", "trd_detectors",         "", kFALSE));
  // trd_tracks disabled due to memory leaks

  //----------------------------------------------------------------------------

  slot = TEveWindow::CreateWindowInTab(browser->GetTabRight());
  slot->StartEmbedding();
  AliEveMacroExecutorWindow* exewin = new AliEveMacroExecutorWindow(exec);
  slot->StopEmbedding("DataSelection");
  exewin->PopulateMacros();

  //============================================================================
  // Final GUI setup
  //============================================================================

  browser->GetTabRight()->SetTab(1);

  browser->StartEmbedding(TRootBrowser::kBottom);
  new AliEveEventManagerWindow(AliEveEventManager::GetMaster());
  browser->StopEmbedding("EventCtrl");

  browser->MoveResize(0, 0, gClient->GetDisplayWidth(),
		      gClient->GetDisplayHeight() - 32);

  gEve->GetViewers()->SwitchColorSet();
  gEve->FullRedraw3D(kTRUE);
	gSystem->ProcessEvents();

  TGLViewer *glv1 = multiView->Get3DView()->GetGLViewer();
  TGLViewer *glv2 = multiView->GetRPhiView()->GetGLViewer();
  TGLViewer *glv3 = multiView->GetRhoZView()->GetGLViewer();

  glv1->CurrentCamera().RotateRad(-0.4, -1.8);
  glv2->CurrentCamera().Dolly(450, kFALSE, kFALSE);
  glv3->CurrentCamera().Dolly(1500, kFALSE, kFALSE);

  gEve->FullRedraw3D();
  gSystem->ProcessEvents();
  
  // Register command to call on each event.
  // AliEveEventManager::GetMaster()->AddNewEventCommand("alieve_online_on_new_event();");
  //AliEveEventManager::GetMaster()->GotoEvent(-1);
 
  printf("================================ Connecting to Server ...\n");
   
    //AliEveEventManager::ConnectToServer("tcp://137.138.55.173", 5024);
  if(AliEveEventManager::ConnectToServer("tcp://137.138.93.150", 5024))
  {
	  printf("\nconnected\n");
  }	else printf("not connected\n");
    
    AliSocket* subscriber = AliEveEventManager::AssertSubscriber();
  
  	if(subscriber ==0) {
  		printf("===================== Not connected! ====================\n");
    }

  

  gEve->Redraw3D(kTRUE);
    
}


Int_t      g_pic_id  = 0;
Int_t      g_pic_max = 100;
TTimeStamp g_pic_prev(0, 0);

void alieve_online_on_new_event()
{
  AliSysInfo::AddStamp("on_new_event_start");
 
	AliSysInfo::AddStamp("on_new_event_end");
}

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_online.C:1
 alieve_online.C:2
 alieve_online.C:3
 alieve_online.C:4
 alieve_online.C:5
 alieve_online.C:6
 alieve_online.C:7
 alieve_online.C:8
 alieve_online.C:9
 alieve_online.C:10
 alieve_online.C:11
 alieve_online.C:12
 alieve_online.C:13
 alieve_online.C:14
 alieve_online.C:15
 alieve_online.C:16
 alieve_online.C:17
 alieve_online.C:18
 alieve_online.C:19
 alieve_online.C:20
 alieve_online.C:21
 alieve_online.C:22
 alieve_online.C:23
 alieve_online.C:24
 alieve_online.C:25
 alieve_online.C:26
 alieve_online.C:27
 alieve_online.C:28
 alieve_online.C:29
 alieve_online.C:30
 alieve_online.C:31
 alieve_online.C:32
 alieve_online.C:33
 alieve_online.C:34
 alieve_online.C:35
 alieve_online.C:36
 alieve_online.C:37
 alieve_online.C:38
 alieve_online.C:39
 alieve_online.C:40
 alieve_online.C:41
 alieve_online.C:42
 alieve_online.C:43
 alieve_online.C:44
 alieve_online.C:45
 alieve_online.C:46
 alieve_online.C:47
 alieve_online.C:48
 alieve_online.C:49
 alieve_online.C:50
 alieve_online.C:51
 alieve_online.C:52
 alieve_online.C:53
 alieve_online.C:54
 alieve_online.C:55
 alieve_online.C:56
 alieve_online.C:57
 alieve_online.C:58
 alieve_online.C:59
 alieve_online.C:60
 alieve_online.C:61
 alieve_online.C:62
 alieve_online.C:63
 alieve_online.C:64
 alieve_online.C:65
 alieve_online.C:66
 alieve_online.C:67
 alieve_online.C:68
 alieve_online.C:69
 alieve_online.C:70
 alieve_online.C:71
 alieve_online.C:72
 alieve_online.C:73
 alieve_online.C:74
 alieve_online.C:75
 alieve_online.C:76
 alieve_online.C:77
 alieve_online.C:78
 alieve_online.C:79
 alieve_online.C:80
 alieve_online.C:81
 alieve_online.C:82
 alieve_online.C:83
 alieve_online.C:84
 alieve_online.C:85
 alieve_online.C:86
 alieve_online.C:87
 alieve_online.C:88
 alieve_online.C:89
 alieve_online.C:90
 alieve_online.C:91
 alieve_online.C:92
 alieve_online.C:93
 alieve_online.C:94
 alieve_online.C:95
 alieve_online.C:96
 alieve_online.C:97
 alieve_online.C:98
 alieve_online.C:99
 alieve_online.C:100
 alieve_online.C:101
 alieve_online.C:102
 alieve_online.C:103
 alieve_online.C:104
 alieve_online.C:105
 alieve_online.C:106
 alieve_online.C:107
 alieve_online.C:108
 alieve_online.C:109
 alieve_online.C:110
 alieve_online.C:111
 alieve_online.C:112
 alieve_online.C:113
 alieve_online.C:114
 alieve_online.C:115
 alieve_online.C:116
 alieve_online.C:117
 alieve_online.C:118
 alieve_online.C:119
 alieve_online.C:120
 alieve_online.C:121
 alieve_online.C:122
 alieve_online.C:123
 alieve_online.C:124
 alieve_online.C:125
 alieve_online.C:126
 alieve_online.C:127
 alieve_online.C:128
 alieve_online.C:129
 alieve_online.C:130
 alieve_online.C:131
 alieve_online.C:132
 alieve_online.C:133
 alieve_online.C:134
 alieve_online.C:135
 alieve_online.C:136
 alieve_online.C:137
 alieve_online.C:138
 alieve_online.C:139
 alieve_online.C:140
 alieve_online.C:141
 alieve_online.C:142
 alieve_online.C:143
 alieve_online.C:144
 alieve_online.C:145
 alieve_online.C:146
 alieve_online.C:147
 alieve_online.C:148
 alieve_online.C:149
 alieve_online.C:150
 alieve_online.C:151
 alieve_online.C:152
 alieve_online.C:153
 alieve_online.C:154
 alieve_online.C:155
 alieve_online.C:156
 alieve_online.C:157
 alieve_online.C:158
 alieve_online.C:159
 alieve_online.C:160
 alieve_online.C:161
 alieve_online.C:162
 alieve_online.C:163
 alieve_online.C:164
 alieve_online.C:165
 alieve_online.C:166
 alieve_online.C:167
 alieve_online.C:168
 alieve_online.C:169
 alieve_online.C:170
 alieve_online.C:171
 alieve_online.C:172
 alieve_online.C:173
 alieve_online.C:174
 alieve_online.C:175
 alieve_online.C:176
 alieve_online.C:177
 alieve_online.C:178
 alieve_online.C:179
 alieve_online.C:180
 alieve_online.C:181
 alieve_online.C:182
 alieve_online.C:183
 alieve_online.C:184
 alieve_online.C:185
 alieve_online.C:186
 alieve_online.C:187
 alieve_online.C:188
 alieve_online.C:189
 alieve_online.C:190
 alieve_online.C:191
 alieve_online.C:192
 alieve_online.C:193
 alieve_online.C:194
 alieve_online.C:195
 alieve_online.C:196
 alieve_online.C:197
 alieve_online.C:198
 alieve_online.C:199
 alieve_online.C:200
 alieve_online.C:201
 alieve_online.C:202
 alieve_online.C:203
 alieve_online.C:204
 alieve_online.C:205
 alieve_online.C:206
 alieve_online.C:207
 alieve_online.C:208
 alieve_online.C:209
 alieve_online.C:210
 alieve_online.C:211
 alieve_online.C:212
 alieve_online.C:213
 alieve_online.C:214
 alieve_online.C:215
 alieve_online.C:216
 alieve_online.C:217
 alieve_online.C:218
 alieve_online.C:219
 alieve_online.C:220
 alieve_online.C:221
 alieve_online.C:222
 alieve_online.C:223
 alieve_online.C:224
 alieve_online.C:225
 alieve_online.C:226
 alieve_online.C:227
 alieve_online.C:228
 alieve_online.C:229
 alieve_online.C:230
 alieve_online.C:231
 alieve_online.C:232
 alieve_online.C:233
 alieve_online.C:234
 alieve_online.C:235
 alieve_online.C:236
 alieve_online.C:237
 alieve_online.C:238