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.                                                 *
 **************************************************************************/
 
#if !defined(__CINT__) || defined(__MAKECINT__)
#include <AliQAHistViewer.h>
#endif

class AliEveMacroExecutor;
class TEveProjectionManager;
class TEveGeoShape;
class TEveUtil;
class TSystem;
class TInterpreter;


Bool_t gShowMuonRPhi = kFALSE;
Bool_t gShowMuonRhoZ = kTRUE;

Bool_t gCenterProjectionsAtPrimaryVertex = kFALSE;


void visscan_init(const TString& cdburi = "",
		  const TString& path   = ".",
		  Bool_t showHLTESDTree=kFALSE,
		  Bool_t showMuon = kTRUE,
		  Bool_t showTrd = kFALSE)
{
  
  if (showMuon)
  {
    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")));
    }
  }
  else
  {
    gShowMuonRPhi = gShowMuonRhoZ = kFALSE;
  }
  
  if (cdburi.IsNull() && ! AliCDBManager::Instance()->IsDefaultStorageSet())
  {
    gEnv->SetValue("Root.Stacktrace", "no");
    Fatal("visscan_init.C", "OCDB path MUST be specified as the first argument.");
  }

  AliEveEventManager::AddAODfriend("AliAOD.VertexingHF.root");

  TEveUtil::LoadMacro("alieve_init.C");
  alieve_init(cdburi, path, -1, showHLTESDTree);

  // TEveLine::SetDefaultSmooth(1);

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

  AliEveMacroExecutor *exec    = AliEveEventManager::GetMaster()->GetExecutor();
  TEveBrowser         *browser = gEve->GetBrowser();
  browser->ShowCloseTab(kFALSE);


  //==============================================================================
  // Geometry, scenes, projections and viewers
  //==============================================================================

  AliEveMultiView *mv = new AliEveMultiView;

  mv->SetDepth(-10);

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

  if (showTrd) {
    TEveUtil::LoadMacro("geom_gentle_trd.C");
    mv->InitGeomGentleTrd(geom_gentle_trd());
  }

  if (gShowMuonRPhi || gShowMuonRhoZ) {
    TEveUtil::LoadMacro("geom_gentle_muon.C+");
    mv->InitGeomGentleMuon(geom_gentle_muon(kFALSE), gShowMuonRPhi, gShowMuonRhoZ, kFALSE);
  }

  mv->SetDepth(0);

  //==============================================================================
  // 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 Hits ITS", "its_hits.C",    "its_hits",    "", kFALSE));
  exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "SIM Hits TPC", "tpc_hits.C",    "tpc_hits",    "", kFALSE));
  exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "SIM Hits T0",  "t0_hits.C",     "t0_hits",     "", kFALSE));
  exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "SIM Hits FMD", "fmd_hits.C",    "fmd_hits",    "", kFALSE));
  exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "SIM Hits ACORDE", "acorde_hits.C",    "acorde_hits",    "", kFALSE));
  exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "SIM Hits EMCAL", "emcal_hits.C",    "emcal_hits",    "", kFALSE));
  exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "SIM Hits TOF",  "tof_hits.C",     "tof_hits",     "", kFALSE));
  exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "SIM Hits TRD", "trd_hits.C",    "trd_hits",    "", kFALSE));
  exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "SIM Hits VZERO", "vzero_hits.C",    "vzero_hits",    "", kFALSE));

  exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "DIG ITS",     "its_digits.C",  "its_digits",  "", kFALSE));
  exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "DIG TPC",     "tpc_digits.C",  "tpc_digits",  "", kFALSE));
  exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "DIG TOF",     "tof_digits.C",  "tof_digits",  "", kFALSE));
  exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "DIG HMPID",   "hmpid_digits.C","hmpid_digits","", kFALSE));
  exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "DIG FMD",     "fmd_digits.C",  "fmd_digits",  "", kFALSE));

  exec->AddMacro(new AliEveMacro(AliEveMacro::kRawReader, "RAW ITS",     "its_raw.C",     "its_raw",     "", kFALSE));
  exec->AddMacro(new AliEveMacro(AliEveMacro::kRawReader, "RAW TPC",     "tpc_raw.C",     "tpc_raw",     "", kFALSE));
  exec->AddMacro(new AliEveMacro(AliEveMacro::kRawReader, "RAW TOF",     "tof_raw.C",     "tof_raw",     "", kFALSE));
  exec->AddMacro(new AliEveMacro(AliEveMacro::kRawReader, "RAW HMPID",   "hmpid_raw.C",   "hmpid_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));
  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 SPD",         "primary_vertex.C", "primary_vertex_spd",         "",                kTRUE));
  exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC PVTX Ellipse SPD", "primary_vertex.C", "primary_vertex_ellipse_spd", "",                kTRUE));
  exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC PVTX Box SPD",     "primary_vertex.C", "primary_vertex_box_spd",     "kFALSE, 3, 3, 3", kFALSE));
  exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC PVTX TPC",         "primary_vertex.C", "primary_vertex_tpc",         "",                kFALSE));
  exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC PVTX Ellipse TPC", "primary_vertex.C", "primary_vertex_ellipse_tpc", "",                kFALSE));
  exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC PVTX Box TPC",     "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_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 KINK", "esd_kink_points.C",     "esd_kink_points"));
  exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC KINK", "esd_kink.C",            "esd_kink"));

  exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC Tracks",              "esd_tracks.C", "esd_tracks",              "", kFALSE));
  exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC Tracks ITS standalone",          "esd_tracks.C", "esd_tracks_ITS_standalone",              "", kFALSE));
  exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC Tracks ITS",          "esd_tracks.C", "esd_tracks_ITS",              "", kFALSE));
  exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC Tracks TPC",           "esd_tracks.C", "esd_tracks_TPC",              "", kFALSE));
  exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC Tracks MI",           "esd_tracks.C", "esd_tracks_MI",           "", kFALSE));
  exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC Tracks by category",  "esd_tracks.C", "esd_tracks_by_category",  "", kTRUE));
  exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC Tracks by anal cuts", "esd_tracks.C", "esd_tracks_by_anal_cuts", "", kFALSE));
  exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC Tracks Lego", "lego.C", "lego", "", kFALSE));
  exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC Tracks Beams Info", "beams_info.C", "beams_info", "", kFALSE));

  exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC Tracklets SPD", "esd_spd_tracklets.C", "esd_spd_tracklets", "", kTRUE));

  exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC ZDC",      "esd_zdc.C", "esd_zdc", "", kFALSE));

  exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "REC Clusters",     "clusters.C",     "clusters", "", kFALSE));
  exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "REC Clusters ITS", "its_clusters.C", "its_clusters"));
  exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "REC Clusters TPC", "tpc_clusters.C", "tpc_clusters"));
  exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "REC Clusters TRD", "trd_clusters.C", "trd_clusters"));
  exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "REC Clusters TOF", "tof_clusters.C", "tof_clusters"));
  exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "REC Clusters HMPID", "hmpid_clusters.C", "hmpid_clusters"));
  exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "REC Clusters PHOS", "phos_clusters.C", "phos_clusters"));

  exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "REC Clusters TPC", "vplot_tpc.C",    "vplot_tpc", "", kFALSE));

  exec->AddMacro(new AliEveMacro(AliEveMacro::kAOD, "ANA HF",   "aod_HF.C",   "aod_HF",   "", kFALSE));
  exec->AddMacro(new AliEveMacro(AliEveMacro::kAOD, "ANA Jets", "jetplane.C", "jetplane", "", kFALSE));

  exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "DUMP VZERO",   "vzero_dump.C",   "vzero_dump",   "", kFALSE));
  
  if (showMuon)
  {
    exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "SIM TrackRef MUON", "muon_trackRefs.C", "muon_trackRefs", "kTRUE", kFALSE));
    exec->AddMacro(new AliEveMacro(AliEveMacro::kRawReader, "RAW MUON", "muon_raw.C", "muon_raw", "", kFALSE));
    exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "DIG MUON", "muon_digits.C", "muon_digits", "", kFALSE));
    exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "REC Clusters MUON", "muon_clusters.C", "muon_clusters", "", kTRUE));
    exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC Tracks MUON", "esd_muon_tracks.C", "esd_muon_tracks", "kTRUE,kFALSE", kTRUE));
  }

  //==============================================================================
  // Additional GUI components
  //==============================================================================

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

  // Event selection tab
  slot = TEveWindow::CreateWindowInTab(browser->GetTabRight());
  slot->StartEmbedding();
  new AliEveEventSelectorWindow(gClient->GetRoot(), 600, 400, AliEveEventManager::GetMaster()->GetEventSelector());
  slot->StopEmbedding("Selections");

  // QA viewer
/*
  slot = TEveWindow::CreateWindowInTab(browser->GetTabRight());
  slot->StartEmbedding();
  new AliQAHistViewer(gClient->GetRoot(), 600, 400, kTRUE);
  slot->StopEmbedding("QA histograms");

  browser->GetTabRight()->SetTab(1);
*/
  browser->StartEmbedding(TRootBrowser::kBottom);
  new AliEveEventManagerWindow(AliEveEventManager::GetMaster());
  browser->StopEmbedding("EventCtrl");

  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->GetViewers()->SwitchColorSet();
  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);

  gEve->Redraw3D(kTRUE);
}

/******************************************************************************/

void on_new_event()
{
  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");
    win_title += "; Event # in ESD file: ";
    win_title += esd->GetEventNumberInFile();
    gEve->GetBrowser()->SetWindowName(win_title);
  }

  TEveElement* top = gEve->GetCurrentEvent();

  AliEveMultiView *mv = AliEveMultiView::Instance();

  //mv->DestroyEventRPhi();
  if (gCenterProjectionsAtPrimaryVertex)
    mv->SetCenterRPhi(x[0], x[1], x[2]);
  mv->ImportEventRPhi(top);

  //mv->DestroyEventRhoZ();
  if (gCenterProjectionsAtPrimaryVertex)
    mv->SetCenterRhoZ(x[0], x[1], x[2]);
  mv->ImportEventRhoZ(top);
}
 visscan_init.C:1
 visscan_init.C:2
 visscan_init.C:3
 visscan_init.C:4
 visscan_init.C:5
 visscan_init.C:6
 visscan_init.C:7
 visscan_init.C:8
 visscan_init.C:9
 visscan_init.C:10
 visscan_init.C:11
 visscan_init.C:12
 visscan_init.C:13
 visscan_init.C:14
 visscan_init.C:15
 visscan_init.C:16
 visscan_init.C:17
 visscan_init.C:18
 visscan_init.C:19
 visscan_init.C:20
 visscan_init.C:21
 visscan_init.C:22
 visscan_init.C:23
 visscan_init.C:24
 visscan_init.C:25
 visscan_init.C:26
 visscan_init.C:27
 visscan_init.C:28
 visscan_init.C:29
 visscan_init.C:30
 visscan_init.C:31
 visscan_init.C:32
 visscan_init.C:33
 visscan_init.C:34
 visscan_init.C:35
 visscan_init.C:36
 visscan_init.C:37
 visscan_init.C:38
 visscan_init.C:39
 visscan_init.C:40
 visscan_init.C:41
 visscan_init.C:42
 visscan_init.C:43
 visscan_init.C:44
 visscan_init.C:45
 visscan_init.C:46
 visscan_init.C:47
 visscan_init.C:48
 visscan_init.C:49
 visscan_init.C:50
 visscan_init.C:51
 visscan_init.C:52
 visscan_init.C:53
 visscan_init.C:54
 visscan_init.C:55
 visscan_init.C:56
 visscan_init.C:57
 visscan_init.C:58
 visscan_init.C:59
 visscan_init.C:60
 visscan_init.C:61
 visscan_init.C:62
 visscan_init.C:63
 visscan_init.C:64
 visscan_init.C:65
 visscan_init.C:66
 visscan_init.C:67
 visscan_init.C:68
 visscan_init.C:69
 visscan_init.C:70
 visscan_init.C:71
 visscan_init.C:72
 visscan_init.C:73
 visscan_init.C:74
 visscan_init.C:75
 visscan_init.C:76
 visscan_init.C:77
 visscan_init.C:78
 visscan_init.C:79
 visscan_init.C:80
 visscan_init.C:81
 visscan_init.C:82
 visscan_init.C:83
 visscan_init.C:84
 visscan_init.C:85
 visscan_init.C:86
 visscan_init.C:87
 visscan_init.C:88
 visscan_init.C:89
 visscan_init.C:90
 visscan_init.C:91
 visscan_init.C:92
 visscan_init.C:93
 visscan_init.C:94
 visscan_init.C:95
 visscan_init.C:96
 visscan_init.C:97
 visscan_init.C:98
 visscan_init.C:99
 visscan_init.C:100
 visscan_init.C:101
 visscan_init.C:102
 visscan_init.C:103
 visscan_init.C:104
 visscan_init.C:105
 visscan_init.C:106
 visscan_init.C:107
 visscan_init.C:108
 visscan_init.C:109
 visscan_init.C:110
 visscan_init.C:111
 visscan_init.C:112
 visscan_init.C:113
 visscan_init.C:114
 visscan_init.C:115
 visscan_init.C:116
 visscan_init.C:117
 visscan_init.C:118
 visscan_init.C:119
 visscan_init.C:120
 visscan_init.C:121
 visscan_init.C:122
 visscan_init.C:123
 visscan_init.C:124
 visscan_init.C:125
 visscan_init.C:126
 visscan_init.C:127
 visscan_init.C:128
 visscan_init.C:129
 visscan_init.C:130
 visscan_init.C:131
 visscan_init.C:132
 visscan_init.C:133
 visscan_init.C:134
 visscan_init.C:135
 visscan_init.C:136
 visscan_init.C:137
 visscan_init.C:138
 visscan_init.C:139
 visscan_init.C:140
 visscan_init.C:141
 visscan_init.C:142
 visscan_init.C:143
 visscan_init.C:144
 visscan_init.C:145
 visscan_init.C:146
 visscan_init.C:147
 visscan_init.C:148
 visscan_init.C:149
 visscan_init.C:150
 visscan_init.C:151
 visscan_init.C:152
 visscan_init.C:153
 visscan_init.C:154
 visscan_init.C:155
 visscan_init.C:156
 visscan_init.C:157
 visscan_init.C:158
 visscan_init.C:159
 visscan_init.C:160
 visscan_init.C:161
 visscan_init.C:162
 visscan_init.C:163
 visscan_init.C:164
 visscan_init.C:165
 visscan_init.C:166
 visscan_init.C:167
 visscan_init.C:168
 visscan_init.C:169
 visscan_init.C:170
 visscan_init.C:171
 visscan_init.C:172
 visscan_init.C:173
 visscan_init.C:174
 visscan_init.C:175
 visscan_init.C:176
 visscan_init.C:177
 visscan_init.C:178
 visscan_init.C:179
 visscan_init.C:180
 visscan_init.C:181
 visscan_init.C:182
 visscan_init.C:183
 visscan_init.C:184
 visscan_init.C:185
 visscan_init.C:186
 visscan_init.C:187
 visscan_init.C:188
 visscan_init.C:189
 visscan_init.C:190
 visscan_init.C:191
 visscan_init.C:192
 visscan_init.C:193
 visscan_init.C:194
 visscan_init.C:195
 visscan_init.C:196
 visscan_init.C:197
 visscan_init.C:198
 visscan_init.C:199
 visscan_init.C:200
 visscan_init.C:201
 visscan_init.C:202
 visscan_init.C:203
 visscan_init.C:204
 visscan_init.C:205
 visscan_init.C:206
 visscan_init.C:207
 visscan_init.C:208
 visscan_init.C:209
 visscan_init.C:210
 visscan_init.C:211
 visscan_init.C:212
 visscan_init.C:213
 visscan_init.C:214
 visscan_init.C:215
 visscan_init.C:216
 visscan_init.C:217
 visscan_init.C:218
 visscan_init.C:219
 visscan_init.C:220
 visscan_init.C:221
 visscan_init.C:222
 visscan_init.C:223
 visscan_init.C:224
 visscan_init.C:225
 visscan_init.C:226
 visscan_init.C:227
 visscan_init.C:228
 visscan_init.C:229
 visscan_init.C:230
 visscan_init.C:231
 visscan_init.C:232
 visscan_init.C:233
 visscan_init.C:234
 visscan_init.C:235
 visscan_init.C:236
 visscan_init.C:237
 visscan_init.C:238
 visscan_init.C:239
 visscan_init.C:240
 visscan_init.C:241
 visscan_init.C:242
 visscan_init.C:243
 visscan_init.C:244
 visscan_init.C:245
 visscan_init.C:246
 visscan_init.C:247
 visscan_init.C:248
 visscan_init.C:249
 visscan_init.C:250
 visscan_init.C:251
 visscan_init.C:252
 visscan_init.C:253
 visscan_init.C:254
 visscan_init.C:255
 visscan_init.C:256
 visscan_init.C:257
 visscan_init.C:258
 visscan_init.C:259
 visscan_init.C:260
 visscan_init.C:261
 visscan_init.C:262
 visscan_init.C:263
 visscan_init.C:264
 visscan_init.C:265
 visscan_init.C:266
 visscan_init.C:267
 visscan_init.C:268
 visscan_init.C:269
 visscan_init.C:270
 visscan_init.C:271
 visscan_init.C:272
 visscan_init.C:273
 visscan_init.C:274
 visscan_init.C:275
 visscan_init.C:276
 visscan_init.C:277
 visscan_init.C:278
 visscan_init.C:279