ROOT logo
//-*- Mode: C++ -*-

// ** USED macros :
// ***************************************************
// - hlt_alieve_init.C
// - VizDB_scan.C
// - geom_gentle_hlt.C
// - geom_gentle_muon.C
// ***************************************************

#if !defined(__CINT__) || defined(__MAKECINT__)

//****************** ROOT ******************************************
#include "TTimer.h"
#include "TRandom.h"
#include "TVirtualPad.h"
#include "TGLViewer.h"
#include "TThread.h"
#include "TGFileBrowser.h"
#include "TStyle.h"
#include "TList.h"
#include "TDirectory.h"
#include "TFile.h"
#include "TH2.h"
#include "TCanvas.h"
#include "TColor.h"
#include "TVector3.h"

//****************** ROOT/EVE **************************************
#include "TEveManager.h"
#include "TEvePointSet.h"
#include "TEveTrack.h"
#include "TEveVSDStructs.h"
#include "TEveTrackPropagator.h"
#include "TEveScene.h"
#include "TEveElement.h"
#include "TEveUtil.h"
#include "TEveEventManager.h"
#include "TEveProjectionAxes.h"
#include "TEveWindowManager.h"
#include "TEveViewer.h"
#include "TEveText.h"
#include "TEveProjectionManager.h"
#include "TEveGeoShape.h"
#include "TEveBoxSet.h"
#include "TEveTrans.h"
#include "TEveRGBAPalette.h"
#include "TLine.h"
#include "TEveStraightLineSet.h"
#include "TGeoNode.h"
#include "TGeoManager.h"
#include "TGLOverlayButton.h"

//****************** AliRoot ***************************************
#include "AliESDEvent.h"
#include "AliCDBManager.h"
#include "AliRawReaderMemory.h"
#include "AliTPCRawStream.h"
#include "AliGeomManager.h"

//****************** AliRoot/EVE ***********************************
#include "AliHLTHOMERManager.h"
#include "AliEveHOMERManager.h"
#include "AliEveTPCLoader.h" 
#include "AliEveTPCData.h"
#include "AliEveITSDigitsInfo.h"
#include "AliEveITSModule.h"
#include "AliEveMacroExecutor.h"
#include "AliEveMacro.h"
#include "AliEveTrack.h"

//****************** AliRoot/HLT ***********************************
#include "AliHLTHOMERBlockDesc.h"
#include "AliHLTHOMERReader.h"
#include "AliHLTMUONUtils.h"
#include "AliHLTMUONDataBlockReader.h"
#include "AliHLTTriggerDecision.h"
#include "AliHLTGlobalTriggerDecision.h"
#include "AliHLTTPCCATrackParam.h"

//****************** AliRoot/MUON **********************************
#include "AliMUONCalibrationData.h"
#include "AliMUONVCalibParam.h"
#include "AliMUONGeometryTransformer.h"
#include "AliMUONGeometryDetElement.h"
#include "AliMUONConstants.h"

#include "AliMpCDB.h"
#include "AliMpDDLStore.h"
#include "AliMpDetElement.h"
#include "AliMpDEIterator.h"
#include "AliMpVSegmentation.h"
#include "AliMpSegmentation.h"
#include "AliMpTriggerCrate.h"
#include "AliMpLocalBoard.h"

//****************** AliRoot/ITS ***********************************
#include "AliITSRecPoint.h"

//****************** AliRoot/TRD ***********************************
#include "AliHLTTRDCluster.h"
#include "AliTRDcluster.h"
#include "AliTRDCalibraVdriftLinearFit.h"

//****************** AliRoot/EMCAL *********************************
#include "AliHLTCaloClusterDataStruct.h"
#include "AliHLTCaloClusterReader.h"

#include "HLT/CALO/AliHLTCaloChannelDataHeaderStruct.h"
#include "HLT/CALO/AliHLTCaloChannelDataStruct.h"

//****************** AliRoot/PHOS **********************************
#include "AliPHOSGeometry.h"
#include "HLT/PHOS/AliHLTPHOSDigitDataStruct.h"
#include  "AliHLTPHOSChannelDataHeaderStruct.h"
#include  "AliHLTPHOSChannelDataStruct.h"
#include  "HLT/CALO/AliHLTCaloChannelDataHeaderStruct.h"
#include  "HLT/CALO/AliHLTCaloChannelDataStruct.h"
#include "AliHLTCaloDigitDataStruct.h"
//****************** Macros ****************************************
#include "hlt_structs.C"
#include "hlt_alieve_init.C"
#include "geom_gentle_hlt.C"
#include "alice-macros/esd_tracks.C"
#include "hlt_esd_tracks.C"

//#include "alieve_vizdb.C"

#endif

class TEveTrackList;
class TEveProjectionManager;
class TEveGeoShape;
class TEveUtil;
class AliEveMacroExecutor;
class TEveScene;
class TEveElement;
class TEveText;
class AliHLTTriggerDecision;
class TEvePointSet;
class TEvePointSetArray;
class AliHLTHOMERBlockDesc;

class TEveViewer;


// -----------------------------------------------------------------
// --                       Geometry / Scenes                     --
// -----------------------------------------------------------------

TEveGeoShape *gGeomGentle     = 0;
TEveGeoShape *gGeomGentleRPhi = 0;
TEveGeoShape *gGeomGentleRhoZ = 0;
TEveGeoShape *gGeomGentleTRD  = 0;
TEveGeoShape *gGeomGentleMUON = 0;

TEveScene *gRPhiGeomScene  = 0;
TEveScene *gRhoZGeomScene  = 0;
TEveScene *gRPhiEventScene = 0;
TEveScene *gRhoZEventScene = 0;

TEveProjectionManager *gRPhiMgr = 0;
TEveProjectionManager *gRhoZMgr = 0;

TEveViewer *g3DView   = 0;
TEveViewer *gRPhiView = 0;
TEveViewer *gRhoZView = 0;

// -----------------------------------------------------------------
// --                Geometry / Scenes Parameters                 --
// -----------------------------------------------------------------

// -- Parameters to show different geometries
Bool_t gShowMUON     = kTRUE;
Bool_t gShowMUONRPhi = kFALSE;
Bool_t gShowMUONRhoZ = kTRUE;
Bool_t gShowTRD      = kFALSE;

Bool_t gCenterProjectionsAtPrimaryVertex = kFALSE;

// -----------------------------------------------------------------
// --                         Members                            --
// -----------------------------------------------------------------

// -- Timer for automatic event loop
TTimer                                    eventTimer;
TTimer                                    eventTimerFast;

// -- HOMERManager
AliEveHOMERManager*                       gHomerManager      = 0;

// -- Geometry Manager 
TGeoManager*                              gGeoManager        = 0;
AliPHOSGeometry*                          gPHOSGeom          = 0;

// -- Cluster members
TEvePointSet*                             gSPDClusters       = 0;
TEvePointSet*                             gSSDClusters       = 0;
TEvePointSet*                             gSDDClusters       = 0;
TEvePointSet*                             gTRDClusters       = 0;
TEvePointSetArray*                        gTRDColClusters    = 0;
TEvePointSet*                             gTPCClusters       = 0;
TEvePointSet*                             gTPCTestClusters       = 0;
TEvePointSetArray*                        gTPCColClusters    = 0;
TEveBoxSet*                               gPHOSBoxSet[5]     = {0, 0, 0, 0, 0}; 
TEveBoxSet*                               gEMCALBoxSet[13]   = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
TEvePointSet*                             gMUONClusters      = 0;
TEveStraightLineSet*                      gMUONTracks        = 0;

// -- Text output members
TEveText*                                 gHLTText           = 0;

// -- Tracks members
TEveTrackList*                            gTPCTrack          = 0;

// -- Canvas for histograms
TCanvas*                                  gTRDCanvas         = 0;
TCanvas*                                  gTPCCanvas         = 0;
TCanvas*                                  gTPCClustCanvas          = 0;
TCanvas*                                  gTRDCalibCanvas    = 0;
TCanvas*                                  gTRDEORCanvas      = 0;
TCanvas*                                  gPrimVertexCanvas  = 0;
TCanvas*                                  gSPDVertexCanvas   = 0;
TCanvas*                                  gITSCanvas         = 0;
TCanvas*                                  gSSDCanvas0        = 0;
TCanvas*                                  gSSDCanvas1        = 0;
TCanvas*                                  gV0Canvas          = 0;
TCanvas*                                  gPHOSCanvas          = NULL;
TCanvas*                                  gEMCALCanvas          = 0;

// -- vertex --
Int_t                                     gSPDVertexHistoCount  = 0;


// -- ITS --
Int_t                                     gITSHistoCount     = 0;
Int_t                                     gSSDHistoCount0    = 0;
Int_t                                     gSSDHistoCount1    = 0;

// -- TRD --
Int_t                                     gTRDHistoCount     = 0;
Int_t                                     gTRDEvents         = 0;
Int_t                                     gTRDBins           = 12;

// -- TPC --
Int_t                                     gTPCBins           = 15;
TH1F*                                     gTPCCharge         = 0;
TH1F*                                     gTPCQMax           = 0;
TH1F*                                     gTPCQMaxOverCharge = 0;

TH1F*                                     gTPCPt        = 0; // KK
TH1F*                                     gTPCEta       = 0; 
TH1F*                                     gTPCPsi       = 0; 
TH1F*                                     gTPCnClusters = 0; 
TH1F*                                     gTPCMult      = 0;

// -- PHOS --
TEveElementList*                          gPHOSElementList   = 0;
Int_t                                     gPHOSHistoCount    =0;
// -- EMCAL
TEveElementList*                          gEMCALElementList  = 0;
TGeoNode*                                 gEMCALNode         = 0;
Int_t                                     gEMCALHistoCount    =0;

// --- Flag if eventloop is running
Bool_t                                    gEventLoopStarted = kFALSE;


//Container for gGeoManager till it is broken
TGeoManager *fGeoManager = 0;
// -----------------------------------------------------------------
// --                          Methods                            --
// -----------------------------------------------------------------

Int_t initializeEveViewer( Bool_t TPCMode, Bool_t MUONMode, Bool_t TRDMode );

void nextEvent();

Int_t processEvent();

Int_t processPHOSClusters( AliHLTHOMERBlockDesc* block);
Int_t processPHOSDigits(AliHLTHOMERBlockDesc* block);

Int_t processEMCALClusters( AliHLTHOMERBlockDesc* block);

Int_t processEsdTracks( AliHLTHOMERBlockDesc* block, TEveTrackList* cont );

Int_t processHLTRDLST( AliHLTHOMERBlockDesc* block );

Int_t processROOTTOBJ( AliHLTHOMERBlockDesc* block, TEveText* text );

Int_t processTPCClusters( AliHLTHOMERBlockDesc * block, TEvePointSet *cont, TEvePointSetArray *contCol = NULL );

Int_t processTRDClusters( AliHLTHOMERBlockDesc * block, TEvePointSet *cont, TEvePointSetArray *contCol);

Int_t processTRDHistograms( AliHLTHOMERBlockDesc * block, TCanvas * canvas );

Int_t processITSHistograms( AliHLTHOMERBlockDesc * block, TCanvas * canvas );

Int_t processSSDHistograms( AliHLTHOMERBlockDesc * block, TCanvas * canvas, TCanvas * canvas1 );

Int_t processPrimVertexHistograms( AliHLTHOMERBlockDesc * block, TCanvas * canvas );

Int_t processSPDVertexHistograms( AliHLTHOMERBlockDesc * block, TCanvas * canvas );

Int_t processV0Histograms( AliHLTHOMERBlockDesc * block, TCanvas * canvas );

Int_t processTRDCalibHistograms( AliHLTHOMERBlockDesc *block, TCanvas *canvas );

Int_t processMUONClusters( AliHLTHOMERBlockDesc* block );

Int_t processMUONTracks( AliHLTHOMERBlockDesc* block );

Int_t processITSClusters( AliHLTHOMERBlockDesc* block, TEvePointSet* cont );

Int_t processITSHist( AliHLTHOMERBlockDesc* block );

//Global functions

Int_t processBlock( AliHLTHOMERBlockDesc* block );

void resetDisplay();

//Detector specific block handlers
Int_t processTRDBlock(AliHLTHOMERBlockDesc * block);
void processISPDBlock(AliHLTHOMERBlockDesc * block);
void processISDDBlock(AliHLTHOMERBlockDesc * block);
void processISSDBlock(AliHLTHOMERBlockDesc * block);
void processMUONBlock(AliHLTHOMERBlockDesc * block);
Int_t processPHOSBlock (AliHLTHOMERBlockDesc * block);
TEveElementList * createPHOSElementList();
void processEMCALBlock(AliHLTHOMERBlockDesc * block);
TEveElementList * createEMCALElementList();
void processHLTBlock(AliHLTHOMERBlockDesc * block);
void processTPCBlock(AliHLTHOMERBlockDesc * block);
void processITSBlock(AliHLTHOMERBlockDesc * block);
//Generic functions

TCanvas * CreateCanvas(TString  tabTitle, TString  canvasTitle );

Int_t updateDisplay();

Int_t AddHistogramsToCanvas(AliHLTHOMERBlockDesc * block, TCanvas * canvas, Int_t &cdCount );

void writeToFile();


// #################################################################
// #################################################################
// #################################################################

// -----------------------------------------------------------------
void onlineDisplay(Bool_t TPCMode = kTRUE, Bool_t MUONMode = kFALSE, Bool_t TRDMode = kFALSE) {

  // -- Loading Geometry
  // ---------------------
  Int_t run = 67179;
  AliCDBManager::Instance()->SetDefaultStorage("local://$ALICE_ROOT/OCDB");
  AliCDBManager::Instance()->SetRun(run);
  AliGeomManager::LoadGeometry();

  // Get the pointer to gGeoManager before it's broken (bug in alieve)
  fGeoManager = gGeoManager;

  // -- Create new hM object
  // -------------------------
  gHomerManager = new AliEveHOMERManager();
  gHomerManager->SetRetryCount(100,10);

  Int_t iResult = gHomerManager->Initialize();
  if (iResult) { 
    printf("Error Initializing AliHLTHOMERManager, quitting");
    return; 
  }

  // -- Add hM to EveTree
  // ----------------------
  gEve->AddToListTree(gHomerManager, kTRUE);

  // -- Create SourceList
  // ----------------------
  iResult = gHomerManager->CreateEveSourcesListLoop();
  if (iResult) {
    printf ("Couldn't find active services. returning\n");
    return;
  } 

  // -- Initialize pointsets and add macros
  // ----------------------------------------
  //TEveUtil::LoadMacro("hlt_alieve_init.C");
  //hlt_alieve_init(".", -1);

  // -- Initialize Eve
  // -------------------
  initializeEveViewer( TPCMode, MUONMode, TRDMode);

  // -- Reset gGeoManager to the original pointer
  // ----------------------------------------------
  gGeoManager = fGeoManager;
  gPHOSGeom = AliPHOSGeometry::GetInstance("IHEP", "IHEP");

  // -- Finalize Eve
  // -----------------
  gSystem->ProcessEvents();
  gEve->Redraw3D(kTRUE);

  if ( TPCMode ) {
    gHomerManager->ConnectEVEtoHOMER("TPC" );
  } else if ( MUONMode ) {
    gHomerManager->ConnectEVEtoHOMER("MUON");
  } else if( TRDMode ) {
    gHomerManager->ConnectEVEtoHOMER("TRD");  
  } else {
    cout<<" No detectors selected, nothing will be displayed"<<endl;
  }	

  g_esd_tracks_true_field = kFALSE;

}

// -------------------------------------------------------------------------
Int_t initializeEveViewer( Bool_t TPCMode, Bool_t MUONMode, Bool_t TRDMode) {
  
  //=============================================================================
  // Visualization database
  //============================================================================

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

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


  TEveBrowser         *browser = gEve->GetBrowser();
  browser->ShowCloseTab(kFALSE);
  
  // -- Disable extra geometry
  // ---------------------------
  if (!MUONMode)
    gShowMUON = gShowMUONRPhi = gShowMUONRhoZ = kFALSE;
  
  // -- Load Geometry
  // ------------------
  TEveUtil::LoadMacro("geom_gentle_hlt.C");
  gGeomGentle = geom_gentle_hlt();
  gGeomGentleRPhi = geom_gentle_rphi(); gGeomGentleRPhi->IncDenyDestroy();
  gGeomGentleRhoZ = geom_gentle_rhoz(); gGeomGentleRhoZ->IncDenyDestroy();
  gGeomGentleTRD  = geom_gentle_trd();

  gGeoManager = fGeoManager;

  gEMCALNode = gGeoManager->GetTopVolume()->FindNode("XEN1_1");

  TEveGeoTopNode* emcal_re = new TEveGeoTopNode(gGeoManager, gEMCALNode);
  gEve->AddGlobalElement(emcal_re);
  gEve->Redraw3D();

  if (gShowMUON) 
    gGeomGentleMUON = geom_gentle_muon(kFALSE);
  
  // -- Scenes
  // -----------
  gRPhiGeomScene  = gEve->SpawnNewScene("RPhi Geometry",
                    "Scene holding projected geometry for the RPhi view.");
  gRhoZGeomScene  = gEve->SpawnNewScene("RhoZ Geometry",
		    "Scene holding projected geometry for the RhoZ view.");
  gRPhiEventScene = gEve->SpawnNewScene("RPhi Event Data",
		    "Scene holding projected geometry for the RPhi view.");
  gRhoZEventScene = gEve->SpawnNewScene("RhoZ Event Data",
		    "Scene holding projected geometry for the RhoZ view.");

  // -- Projection managers
  // ------------------------

  gRPhiMgr = new TEveProjectionManager();
  gRPhiMgr->SetProjection(TEveProjection::kPT_RPhi);
  gEve->AddToListTree(gRPhiMgr, kFALSE);
  {
    TEveProjectionAxes* a = new TEveProjectionAxes(gRPhiMgr);
    a->SetMainColor(kWhite);
    a->SetTitle("R-Phi");
    a->SetTitleSize(0.05);
    a->SetTitleFont(102);
    a->SetLabelSize(0.025);
    a->SetLabelFont(102);
    gRPhiGeomScene->AddElement(a);
  }
  gRPhiMgr->SetCurrentDepth(-10);
  gRPhiMgr->ImportElements(gGeomGentleRPhi, gRPhiGeomScene);
  gRPhiMgr->SetCurrentDepth(0);
  gRPhiMgr->ImportElements(gGeomGentleTRD, gRPhiGeomScene);
  if (gShowMUONRPhi) gRPhiMgr->ImportElements(gGeomGentleMUON, gRPhiGeomScene);

  gRhoZMgr = new TEveProjectionManager();
  gRhoZMgr->SetProjection(TEveProjection::kPT_RhoZ);
  gEve->AddToListTree(gRhoZMgr, kFALSE);
  {
    TEveProjectionAxes* a = new TEveProjectionAxes(gRhoZMgr);
    a->SetMainColor(kWhite);
    a->SetTitle("Rho-Z");
    a->SetTitleSize(0.05);
    a->SetTitleFont(102);
    a->SetLabelSize(0.025);
    a->SetLabelFont(102);
    gRhoZGeomScene->AddElement(a);
  }
  gRhoZMgr->SetCurrentDepth(-10);
  gRhoZMgr->ImportElements(gGeomGentleRhoZ, gRhoZGeomScene);
  gRhoZMgr->SetCurrentDepth(0);
  if (gShowTRD)      gRhoZMgr->ImportElements(gGeomGentleTRD, gRhoZGeomScene);
  if (gShowMUONRhoZ) gRhoZMgr->ImportElements(gGeomGentleMUON, gRhoZGeomScene);

  // -- Viewers
  // ------------

  TEveWindowSlot *slot = TEveWindow::CreateWindowInTab(browser->GetTabRight());
  TEveWindowPack *pack = slot->MakePack();
  pack->SetElementName("Multi View");
  pack->SetHorizontal();
  pack->SetShowTitleBar(kFALSE);
  pack->NewSlot()->MakeCurrent();
  g3DView = gEve->SpawnNewViewer("3D View", "");
  g3DView->AddScene(gEve->GetGlobalScene());
  g3DView->AddScene(gEve->GetEventScene());


  pack = pack->NewSlot()->MakePack();
  pack->SetShowTitleBar(kFALSE);
  pack->NewSlot()->MakeCurrent();
  gRPhiView = gEve->SpawnNewViewer("RPhi View", "");
  gRPhiView->GetGLViewer()->SetCurrentCamera(TGLViewer::kCameraOrthoXOY);
  gRPhiView->AddScene(gRPhiGeomScene);
  gRPhiView->AddScene(gRPhiEventScene);

  pack->NewSlot()->MakeCurrent();
  gRhoZView = gEve->SpawnNewViewer("RhoZ View", "");
  gRhoZView->GetGLViewer()->SetCurrentCamera(TGLViewer::kCameraOrthoXOY);
  gRhoZView->AddScene(gRhoZGeomScene);
  gRhoZView->AddScene(gRhoZEventScene);


   
  //Add HLT Text to windows
 
  TGLOverlayButton *ob1 = new TGLOverlayButton(g3DView->GetGLViewer(),  "HLT", 0, 20, 110, 60);
  ob1->SetAlphaValues(0.8, 0.8);
  //  cout << "color" << ob1->GetBackColor() << endl;
  //ob1->SetBackColor(8421631);
  ob1->SetBackColor(10492431);
  TGLOverlayButton *ob2 = new TGLOverlayButton(g3DView->GetGLViewer(),  "ALICE", 0, 0, 110, 20);
  ob2->SetAlphaValues(0.8, 0.8);
  ob1->SetBackColor(0.2);
  TGLOverlayButton *ob3 = new TGLOverlayButton(gEve->GetDefaultGLViewer(),  "HLT", 0, 20, 110, 60);
  ob3->SetAlphaValues(0.8, 0.8);
  TGLOverlayButton *ob4 = new TGLOverlayButton(gEve->GetDefaultGLViewer(),  "ALICE", 0, 0, 110, 20);
  ob4->SetAlphaValues(0.8, 0.8);


  // -- List of Viewers
  // --------------------

  TEveViewerList *viewerlist = new TEveViewerList();
  viewerlist->AddElement(gEve->GetDefaultViewer());

  viewerlist->AddElement(g3DView);
  viewerlist->AddElement(gRhoZView);
  viewerlist->AddElement(gRPhiView);
  viewerlist->SwitchColorSet();

  //==============================================================================
  // -- Macros / QA histograms
  //==============================================================================

  // -- Registration of per-event macros
  // -------------------------------------

  AliEveMacroExecutor *exec    = new AliEveMacroExecutor();
  

#if 0
  exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "SIM Track",   "kine_tracks.C", "kine_tracks", "", kFALSE));

  exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "SIM Hit ITS", "its_hits.C",    "its_hits",    "", kFALSE));
  exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "SIM Hit TPC", "tpc_hits.C",    "tpc_hits",    "", kFALSE));
  exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "SIM Hit T0",  "t0_hits.C",     "t0_hits",     "", kFALSE));
  exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "SIM Hit FMD", "fmd_hits.C",    "fmd_hits",    "", kFALSE));

  exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "DIG FMD",     "fmd_digits.C",  "fmd_digits",  "", kFALSE));

  exec->AddMacro(new AliEveMacro(AliEveMacro::kRawReader, "RAW TPC",     "tpc_raw.C",     "tpc_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",         "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));
#endif
  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 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 Tracklet", "esd_spd_tracklets.C", "esd_spd_tracklets", "", kFALSE));

  exec->AddMacro(new AliEveMacro(AliEveMacro::kESD, "REC ZDC",      "esd_zdc.C", "esd_zdc", "", kFALSE));
#if 0
  exec->AddMacro(new AliEveMacro(AliEveMacro::kRunLoader, "REC Clus",     "clusters.C+",     "clusters", "", 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 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));

  // -- QA Viewer
  // --------------
# endif


  //==============================================================================
  // -- Histograms
  //==============================================================================


  slot = TEveWindow::CreateWindowInTab(browser->GetTabRight());
  slot->StartEmbedding();  
  gPrimVertexCanvas = new TCanvas("canvasPrimVertex","canvasPrimVertex", 600, 400);
  slot->StopEmbedding("Primary Vertex");

  slot = TEveWindow::CreateWindowInTab(browser->GetTabRight());
  slot->StartEmbedding();  
  gSPDVertexCanvas = new TCanvas("canvasSPDVertex","canvasSPDVertex", 600, 400);
  slot->StopEmbedding("SPD Vertex");

  slot = TEveWindow::CreateWindowInTab(browser->GetTabRight());
  slot->StartEmbedding();  
  gV0Canvas = new TCanvas("canvasV0","canvasV0", 600, 400);
  slot->StopEmbedding("V0");


  slot = TEveWindow::CreateWindowInTab(browser->GetTabRight());
  slot->StartEmbedding();
  gSSDCanvas0 = new TCanvas("canvasSSD0","canvasSSD0", 600, 400);
  slot->StopEmbedding("SSD QA 0");

  slot = TEveWindow::CreateWindowInTab(browser->GetTabRight());
  slot->StartEmbedding();
  gSSDCanvas1 = new TCanvas("canvasSSD1","canvasSSD1", 600, 400);
  slot->StopEmbedding("SSD QA 1");

  slot = TEveWindow::CreateWindowInTab(browser->GetTabRight());
  slot->StartEmbedding();
  gTPCClustCanvas = new TCanvas("canvasTPCClust","canvasTPCClust", 600, 400);
  gTPCClustCanvas->Divide(3, 2);
  slot->StopEmbedding("TPC Cluster QA Histograms ");


  //==============================================================================
  // -- Additional GUI components
  //==============================================================================
  
  slot = TEveWindow::CreateWindowInTab(browser->GetTabRight());
  TEveWindowTab *storeTab = slot->MakeTab();
  storeTab->SetElementNameTitle("WindowStore",
   				 "Undocked windows whose previous container is not known\n"
 				 "are placed here when the main-frame is closed.");
  gEve->GetWindowManager()->SetDefaultContainer(storeTab);
  
  

  return 0;
}

// -----------------------------------------------------------------
void nextEvent() {

  if ( gHomerManager->NextEvent() ) {
    if (gEventLoopStarted) {
      cout << "HomerManager failed getting next event, trying to reconnect" << endl;

      gHomerManager->DisconnectHOMER();
      gHomerManager->ConnectEVEtoHOMER();
      nextEvent();
   
    } else {
      return;
    }
  }

  processEvent();
}

TCanvas * CreateCanvas(TString  tabTitle, TString  canvasTitle ) {

  

//   TEveWindowSlot *slot = TEveWindow::CreateWindowInTab(gEve->GetBrowser()->GetTabRight());
//   slot->StartEmbedding();
//   TCanvas * canvas = new TCanvas(canvasTitle.Data(),canvasTitle.Data(), 600, 400);
//   slot->StopEmbedding(tabTitle.Data());
 
  cout << "Create"<<endl;

  TCanvas * canvas = gEve->AddCanvasTab(canvasTitle.Data());
  return canvas;
}


// -----------------------------------------------------------------
Int_t processEvent() {

  Int_t iResult = 0;

  gStyle->SetPalette(1, 0);
  gEve->DisableRedraw();

  resetDisplay();
  
  //==============================================================================
  // -- Process Blocks
  //==============================================================================

  AliHLTHOMERBlockDesc* block = 0;

  if ( gHomerManager->GetBlockList() == NULL) {
    printf ("onlineDisplay:   No regular BlockList ... \n");
    cout << endl;
    //return -1;
    
  } else {
    
    if (gHomerManager->GetBlockList()->IsEmpty() ) {
      printf ("onlineDisplay:   No Sync Blocks in list ... \n");
      cout<<endl;
      return -2;
    }  
    
    
    TIter next(gHomerManager->GetBlockList());
    
    while ((block = (AliHLTHOMERBlockDesc*)next())) {
      iResult = processBlock(block);
    } 
  }

  //Read out histograms and elements from detectors outside physics 1 partition
  TIter anext(gHomerManager->GetAsyncBlockList());
  
  while ( (block = (AliHLTHOMERBlockDesc*)anext()) ) {
    iResult = processBlock(block);
  }
  
  updateDisplay();

  return iResult;
}


void resetDisplay() {


  //==============================================================================
  // -- Reset
  //==============================================================================
  
  if ( gTRDCanvas ) {
    gTRDCanvas->Clear();
    gTRDCanvas->Divide(3,2);
  }
  if(gTRDCalibCanvas){
    gTRDCalibCanvas->Clear();
    gTRDCalibCanvas->Divide(2,2);
  }
  if(gTRDEORCanvas){
    gTRDEORCanvas->Clear();
    gTRDEORCanvas->Divide(3,2);
  }
  
  if(gSSDCanvas0) {
    gSSDCanvas0->Clear();
    gSSDCanvas0->Divide(6,6);
  }

  if(gSSDCanvas1) {
    gSSDCanvas1->Clear();
    gSSDCanvas1->Divide(2,3);
  }
  
  if(gITSCanvas) {
    gITSCanvas->Clear();
    gITSCanvas->Divide(3,3);
  }

  if(gPrimVertexCanvas) {
    gPrimVertexCanvas->Clear();
    gPrimVertexCanvas->Divide(2,2);
  }

  if(gSPDVertexCanvas) {
    gSPDVertexCanvas->Clear();
    gSPDVertexCanvas->Divide(2,2);
  }

  if(gV0Canvas) {
    gV0Canvas->Clear();
    gV0Canvas->Divide(2,2);
  }

  if(gPHOSCanvas) {
    gPHOSCanvas->Clear();
    gPHOSCanvas->Divide(3, 3);
  }

  if(gEMCALCanvas) {
    gEMCALCanvas->Clear();
    gEMCALCanvas->Divide(3, 3);
  }

  if ( gTPCTrack )     gTPCTrack->DestroyElements();

  if ( gSPDClusters )  gSPDClusters->Reset();
  if ( gSSDClusters )  gSSDClusters->Reset();
  if ( gSDDClusters )  gSDDClusters->Reset();
  if ( gTPCClusters )  gTPCClusters->Reset();
  if ( gTPCTestClusters )  gTPCTestClusters->Reset();
  if ( gTRDClusters )  gTRDClusters->Reset();
  if ( gMUONClusters ) gMUONClusters->Reset();
  if ( gMUONTracks ){
    gMUONTracks->Destroy();
    gMUONTracks = 0x0;
  }

  if ( gPHOSBoxSet[1] )
    for(int im = 0; im < 5; im++)
      gPHOSBoxSet[im]->Reset();   

  if ( gEMCALElementList)
    for(int i = 0; i < 12; i++) {
      gEMCALBoxSet[i]->Reset();
    }
  
  if ( gTPCColClusters )
    for (Int_t ii = 0; ii <= gTPCBins+1; ++ii) 
      gTPCColClusters->GetBin(ii)->Reset();
  
  if ( gTRDColClusters )
    for (Int_t ii = 0; ii <= gTRDBins+1; ++ii) 
      gTRDColClusters->GetBin(ii)->Reset();

  gTRDHistoCount = 0;
  gSPDVertexHistoCount = 0;
  gSSDHistoCount0 = 0;
  gSSDHistoCount1 = 0;
  gITSHistoCount = 0;
  gPHOSHistoCount = 0;
  gEMCALHistoCount = 0;

  
}


Int_t updateDisplay() {
  Int_t iResult = 0;

  
  //==============================================================================
  // -- Update Objects
  //==============================================================================
  
  // -- TPC Histograms
  if ( gTPCCanvas && gTPCCharge && gTPCQMax) {

    gTPCCanvas->Clear();    
    gTPCCanvas->Divide(1,3);

    gTPCCanvas->cd(1);
    gTPCCharge->Draw();

    gTPCCanvas->cd(2);
    gTPCQMax->Draw();

    gTPCCanvas->cd(3);
    gTPCQMaxOverCharge->Draw();

    gTPCCanvas->Update();
  }

  if ( gTPCClusters ) gTPCClusters->ResetBBox();
  if ( gTPCTestClusters ) gTPCTestClusters->ResetBBox();
  if ( gTRDClusters ) gTRDClusters->ResetBBox();
  if ( gSPDClusters ) gSPDClusters->ResetBBox();
  if ( gSDDClusters ) gSDDClusters->ResetBBox();
  if ( gSSDClusters ) gSSDClusters->ResetBBox();
  if ( gMUONClusters ) gMUONClusters->ResetBBox();

  if ( gPHOSBoxSet[1] )
    for(int im = 0; im < 5; im++)
      gPHOSBoxSet[im]->ResetBBox();      

  if ( gEMCALElementList )
    for(int sm = 0; sm < 12; sm++) 
      gEMCALBoxSet[sm]->ResetBBox();
    
  //==============================================================================
  // -- Set EventID in Window Title  
  // -- Update Objects
  //==============================================================================

  TString winTitle("Eve Main Window -- Event ID : ");
  winTitle += Form("0x%016X ", gHomerManager->GetEventID() );
  gEve->GetBrowser()->SetWindowName(winTitle);

  //==============================================================================
  // -- Set Projections
  //==============================================================================

  // XXX Primary vertex ... to be retrieved from the ESD
  Double_t x[3] = { 0, 0, 0 };
  
  TEveElement* top = gEve->GetCurrentEvent();
  
  if (gRPhiMgr && top) {
    gRPhiEventScene->DestroyElements();
    if (gCenterProjectionsAtPrimaryVertex)
      gRPhiMgr->SetCenter(x[0], x[1], x[2]);
    gRPhiMgr->ImportElements(top, gRPhiEventScene);
  }
  
  if (gRhoZMgr && top) {
    gRhoZEventScene->DestroyElements();
    if (gCenterProjectionsAtPrimaryVertex)
      gRhoZMgr->SetCenter(x[0], x[1], x[2]);
    gRhoZMgr->ImportElements(top, gRhoZEventScene);
  }

  //==============================================================================

  gEve->Redraw3D(0,1); // (0, 1)
  gEve->EnableRedraw(); 

  return iResult;

}


// -----------------------------------------------------------------
Int_t processITSHist(AliHLTHOMERBlockDesc* /*block*/) {
  return 0;
}

// -----------------------------------------------------------------
Int_t processHLTRDLST(AliHLTHOMERBlockDesc* /*block*/) {
  return 0;
}

// -----------------------------------------------------------------
Int_t processROOTTOBJ(AliHLTHOMERBlockDesc* block, TEveText* /*et*/) {
  
  // -- AliHLTGlobalTriggerDecision
  if ( ! block->GetClassName().CompareTo("AliHLTGlobalTriggerDecision") ) {

    AliHLTGlobalTriggerDecision *trig = dynamic_cast<AliHLTGlobalTriggerDecision*>( block->GetTObject());
    trig->Print(); 
    
    // et->SetText("balle");;

    // TEveText* tt = new TEveText("Trigger: Class is known ;-) ");
    // gEve->AddElement(tt);

  }
  else {
    printf(" Unknown root object %s",block->GetClassName().Data() );
  }

  return 0;
}

// -----------------------------------------------------------------
Int_t processEsdTracks( AliHLTHOMERBlockDesc* block, TEveTrackList* cont ) {

  AliESDEvent* esd = (AliESDEvent *) (block->GetTObject());
  esd->GetStdContent();
  
  esd_track_propagator_setup(cont->GetPropagator(),-0.1*esd->GetMagneticField(), 520);

  //  printf( "Number of ESD Tracks : %d \n", esd->GetNumberOfTracks());

  for (Int_t iter = 0; iter < esd->GetNumberOfTracks(); ++iter) {
    //AliEveTrack* track = dynamic_cast<AliEveTrack*>(esd_make_track(esd->GetTrack(iter), cont));
    AliEveTrack* track = dynamic_cast<AliEveTrack*>(hlt_esd_make_track(esd->GetTrack(iter), cont));
    cont->AddElement(track);
    
//     gTPCPt->Fill(esd->GetTrack(iter)->GetSignedPt()); // KK
//     gTPCEta->Fill(esd->GetTrack(iter)->GetSnp());
//     gTPCPsi->Fill(esd->GetTrack(iter)->GetTgl());
//     gTPCnClusters->Fill(esd->GetTrack(iter)->GetTPCNcls());  
  }
  
//   gTPCMult->Fill(esd->GetNumberOfTracks()); // KK
  
//   Int_t icd = 0;
//   gTPCClustCanvas->Clear();
//   gTPCClustCanvas->Divide(2, 2);
//   gTPCClustCanvas->cd(icd++);
//   gTPCPt->Draw();
//   gTPCClustCanvas->cd(icd++);
//   gTPCEta->Draw();
//   gTPCClustCanvas->cd(icd++);
//   gTPCPsi->Draw();
//   gTPCClustCanvas->cd(icd++);
//   gTPCnClusters->Draw();
//   gTPCClustCanvas->cd(icd++);
//   gTPCMult->Draw();
//   gTPCClustCanvas->Update();

  
  cont->SetTitle(Form("N=%d", esd->GetNumberOfTracks()) );
  cont->MakeTracks();
  
  return 0;
}

// // -----------------------------------------------------------------
// Int_t processPHOSClusters(AliHLTHOMERBlockDesc* block) {


//   cout <<"Processgin phos clusters"<<endl;
   
//   AliHLTCaloChannelDataHeaderStruct *chh = reinterpret_cast<AliHLTCaloChannelDataHeaderStruct*> (block->GetData());
  
//   AliHLTCaloChannelDataStruct *chd = reinterpret_cast<AliHLTCaloChannelDataStruct*>(chh+1);

//   for(Int_t i = 0; i < chh->fNChannels; i++, chd++) {
    
//     Int_t gain = (chd->fChannelID >> 12)&0x1;    
//     Int_t module = (chd->fChannelID >> 13)&0x1f;
//     module = 4 -module;
   

//     if(gain == 1)
      
//       {
// 	Float_t x = (static_cast<Float_t>(chd->fChannelID&0x3f) - 32)* 2.2;
// 	Float_t z = (static_cast<Float_t>((chd->fChannelID >> 6)&0x3f) - 28) * 2.2;
// 	//	gPHOSBoxSet[ds->fModule]->AddBox(ds->fLocX, 0, ds->fLocZ, 2.2, ds->fEnergy*20, 2.2);
// 	gPHOSBoxSet[module]->AddBox(x, 0, z, 2.2, chd->fEnergy/1, 2.2);
// 	gPHOSBoxSet[module]->DigitValue(static_cast<Int_t>(chd->fEnergy));
//       }



//   }
// cout <<"done with phos"<<endl;


//   return 0;
// }



// // -----------------------------------------------------------------
Int_t processPHOSDigits(AliHLTHOMERBlockDesc* block) {

  AliHLTCaloDigitDataStruct *ds = reinterpret_cast<AliHLTCaloDigitDataStruct*> (block->GetData());
  UInt_t nDigits = block->GetSize()/sizeof(AliHLTCaloDigitDataStruct);
    

  for(UInt_t i = 0; i < nDigits; i++, ds++) {

    Float_t x = (ds->fX - 32)* 2.2;
      Float_t z = (ds->fZ - 28) * 2.2;

      cout << "MODULE DIGITTYP  :" << ds->fModule;

    gPHOSBoxSet[4-ds->fModule]->AddBox(x, 0, z, 2.2, ds->fEnergy*20, 2.2);
    gPHOSBoxSet[4-ds->fModule]->DigitValue(static_cast<Int_t>(ds->fEnergy*10));
  }

  return 0;
}


// -----------------------------------------------------------------
Int_t processPHOSClusters(AliHLTHOMERBlockDesc* block) {

  AliHLTCaloClusterHeaderStruct *dh = reinterpret_cast<AliHLTCaloClusterHeaderStruct*> (block->GetData());
  AliHLTCaloClusterReader * clusterReader = new AliHLTCaloClusterReader();
  clusterReader->SetMemory(dh);  

  AliHLTCaloClusterDataStruct * ds;

  Int_t nc = 0;

  
  while( (ds = clusterReader->NextCluster()) ){
    nc++;
    cout << "Cluster nr " << nc  << "   Energy  " << ds->fEnergy<< "      " << ds->fGlobalPos[0] << " " << ds->fGlobalPos[1] << " " << ds->fGlobalPos[2] << endl;


    gPHOSBoxSet[2]->AddBox(ds->fGlobalPos[0], 0, ds->fGlobalPos[2], 2.2, -ds->fEnergy*20, 2.2);
    gPHOSBoxSet[2]->DigitValue(static_cast<Int_t>(ds->fEnergy*10));
  }

  return 0;
}



// -----------------------------------------------------------------
Int_t processEMCALClusters(AliHLTHOMERBlockDesc* block) {

  cout << "EMCAL"<<endl;

  AliHLTCaloChannelDataHeaderStruct *dhs = reinterpret_cast<AliHLTCaloChannelDataHeaderStruct*> (block->GetData());
  Short_t nC = dhs->fNChannels;
  AliHLTUInt8_t *ui = reinterpret_cast<AliHLTUInt8_t*>(dhs) + sizeof(AliHLTCaloChannelDataHeaderStruct);
  AliHLTCaloChannelDataStruct *ds = reinterpret_cast<AliHLTCaloChannelDataStruct*>(ui);
  
  UShort_t fX =0;
  UShort_t fZ =0;
  UShort_t fGain =0;
  UShort_t fModuleId =0;
  


  for(Short_t s = 0; s < nC; s++ ) {
      
    fX = ds->fChannelID&0x3f;
    fZ = (ds->fChannelID >> 6)&0x3f;
    fGain = (ds->fChannelID >> 12)&0x1;
    fModuleId  = (ds->fChannelID >> 13)&0x1f;
    
    //    cout << fX << " " << fZ << " " << fGain << " " << fModuleId <<endl;
   
    if ( (  fModuleId < 12 ) ) {
      gEMCALBoxSet[fModuleId]->AddBox(10, fX*6-12*6, fZ*6-24*6, ds->fEnergy/4, 6, 6);
      gEMCALBoxSet[fModuleId]->DigitValue(static_cast<Int_t>(ds->fEnergy));
    } 
    ds++;
    
  }
  
  return 0;
}

// -----------------------------------------------------------------
Int_t processITSClusters(AliHLTHOMERBlockDesc* block, TEvePointSet* cont) {

  AliHLTITSClusterData *cd = reinterpret_cast<AliHLTITSClusterData*> (block->GetData());
  UChar_t *data            = reinterpret_cast<UChar_t*> (cd->fSpacePoints);
  
  if ( cd->fSpacePointCnt != 0 ) {
    for (Int_t iter = 0; iter < cd->fSpacePointCnt; ++iter, data += sizeof(AliHLTITSSpacePointData)) {
      AliHLTITSSpacePointData *sp = reinterpret_cast<AliHLTITSSpacePointData*> (data);
  
      Int_t lab[4]   = {0,0,0,0};
      Float_t hit[6] = {0,0,0,0,0,0};
      Int_t info[3]  = {0,0,0};
 				 
      lab[0]  = sp->fTracks[0];
      lab[1]  = sp->fTracks[1];
      lab[2]  = sp->fTracks[2];
      lab[3]  = sp->fIndex;
      hit[0]  = sp->fY;
      hit[1]  = sp->fZ;
      hit[2]  = sp->fSigmaY2;
      hit[3]  = sp->fSigmaZ2;
      hit[4]  = sp->fQ;
      hit[5]  = sp->fSigmaYZ;
      info[0] = sp->fNy;
      info[1] = sp->fNz;
      info[2] = sp->fLayer;
      
      Float_t xyz[3];
      AliITSRecPoint recpoint(lab,hit,info);
      recpoint.GetGlobalXYZ(xyz);

      cont->SetNextPoint(xyz[0], xyz[1], xyz[2]);
    }
  }
  return 0;
}

// -----------------------------------------------------------------
Int_t processTPCClusters(AliHLTHOMERBlockDesc* block, TEvePointSet* cont, TEvePointSetArray *contCol ) {

  

  Int_t   slice = block->GetSubDetector();
  Float_t phi   = ( slice + 0.5 ) * TMath::Pi() / 9.0;  
  Float_t cos   = TMath::Cos( phi );
  Float_t sin   = TMath::Sin( phi );
  
  AliHLTTPCClusterData *cd = reinterpret_cast<AliHLTTPCClusterData*> (block->GetData());
  UChar_t *data            = reinterpret_cast<UChar_t*> (cd->fSpacePoints);


  if(!gTPCCanvas){
    gTPCCanvas = gEve->AddCanvasTab("TPC QA");
    gTPCCharge = new TH1F("ClusterCharge","ClusterCharge",100,0,500);
    gTPCQMax = new TH1F("QMax","QMax",50,0,250);
    gTPCQMaxOverCharge = new TH1F("QMaxOverCharge","QMaxOverCharge",50,0,1);
  }



  





  if ( cd->fSpacePointCnt != 0 ) {
    for (Int_t iter = 0; iter < cd->fSpacePointCnt; ++iter, data += sizeof(AliHLTTPCSpacePointData)) {
      AliHLTTPCSpacePointData *sp = reinterpret_cast<AliHLTTPCSpacePointData*> (data);
      cont->SetNextPoint(cos*sp->fX - sin*sp->fY, sin*sp->fX + cos*sp->fY, sp->fZ);
      if (contCol)
	contCol->Fill(cos*sp->fX - sin*sp->fY, sin*sp->fX + cos*sp->fY, sp->fZ, sp->fCharge);

      gTPCCharge->Fill(sp->fCharge);
      gTPCQMax->Fill(sp->fQMax);
      gTPCQMaxOverCharge->Fill(((Float_t)sp->fQMax)/((Float_t)sp->fCharge));
    }
  }
  
  return 0;
}

// -----------------------------------------------------------------
Int_t processMUONClusters(AliHLTHOMERBlockDesc* block) {
  
  Int_t iResult = 0;
  
  unsigned long size = block->GetSize();
  Int_t * buffer ;

  buffer = (Int_t *)block->GetData();
//   cout<<"block size : "<<size<<", buffer : "<<buffer<<", DataType : "<<block->GetDataType()<<endl;

// //   for(int idata=0;idata<int(size);idata++)
// //     printf("\tbuffer[%d] : %d\n",idata,buffer[idata]);
  
  
  
  if(block->GetDataType().CompareTo("RECHITS") == 0){

    AliHLTMUONRecHitsBlockReader trackblock((char*)buffer, size);
    const AliHLTMUONRecHitStruct* hit = trackblock.GetArray();
    
    for(AliHLTUInt32_t ientry = 0; ientry < trackblock.Nentries(); ientry++){
//       cout << setw(13) << left << hit->fX << setw(0);
//       cout << setw(13) << left << hit->fY << setw(0);
//       cout << hit->fZ << setw(0) << endl;
      if(hit->fX!=0.0 && hit->fY!=0.0 && hit->fZ!=0.0)
	gMUONClusters->SetNextPoint(hit->fX,hit->fY,hit->fZ);
      hit++;
      
    }// track hit loop
  }

  else{// if rechits
    //     if(!strcmp((BlockType(ULong64_t(reader->GetBlockDataType(i)))).Data(),"TRIGRECS")){
  
    AliHLTMUONTriggerRecordsBlockReader trigblock(buffer, size);
    const AliHLTMUONTriggerRecordStruct* trigrec = trigblock.GetArray();
    for(AliHLTUInt32_t ientry = 0; ientry < trigblock.Nentries(); ientry++){
      
      const AliHLTMUONRecHitStruct* hit = &trigrec->fHit[0];
      for(AliHLTUInt32_t ch = 0; ch < 4; ch++)
	{
// 	  cout << setw(10) << left << ch + 11 << setw(0);
// 	  cout << setw(13) << left << hit->fX << setw(0);
// 	  cout << setw(13) << left << hit->fY << setw(0);
// 	  cout << hit->fZ << setw(0) << endl;
	  if(hit->fX!=0.0 && hit->fY!=0.0 && hit->fZ!=0.0)
	    gMUONClusters->SetNextPoint(hit->fX,hit->fY,hit->fZ);
	  hit++;
	}// trig chamber loop
      trigrec++;
    }//trig hit loop
  }//else trigger

  return iResult;
}

// -----------------------------------------------------------------
Int_t processMUONTracks(AliHLTHOMERBlockDesc* block) {
  
  Int_t iResult = 0;
  
  unsigned long size = block->GetSize();
  Int_t * buffer = (Int_t *)block->GetData();
  AliHLTMUONRecHitStruct hit1,hit2;
  hit1.fX = hit1.fY = hit1.fZ = hit2.fX = hit2.fY = hit2.fZ = 0;
  Int_t ch1=0, ch2=0;
  Float_t x0=0.0,y0=0.0,z0=0.0;
  Float_t x3=0.0,y3=0.0,z3=0.0;
  if(block->GetDataType().CompareTo("MANTRACK") == 0){  
    AliHLTMUONMansoTracksBlockReader mantrackblock(buffer, size);
    const AliHLTMUONMansoTrackStruct* mtrack = mantrackblock.GetArray();
    for(AliHLTUInt32_t ientry = 0; ientry < mantrackblock.Nentries(); ientry++){
      const AliHLTMUONRecHitStruct* hit = &mtrack->fHit[0];
      for(AliHLTUInt32_t ch = 0; ch < 4; ch++){
	// cout << setw(10) << left << ch + 7 << setw(0);
	// cout << setw(13) << left << hit->fX << setw(0);
	// cout << setw(13) << left << hit->fY << setw(0);
	// cout << hit->fZ << setw(0) << endl;
	if(hit->fZ != 0.0){
	  if(ch==0 || ch==1){
	    hit1 = *hit; ch1 = ch+6;
	  }else{
	    hit2 = *hit; ch2 = ch+6;
	  }
	}
	hit++;
      }// trig chamber loop
      // printf("ch : %d, (X,Y,Z) : (%f,%f,%f)\n",ch1,hit1.fX,hit1.fY,hit1.fZ);
      // printf("ch : %d, (X,Y,Z) : (%f,%f,%f)\n",ch2,hit2.fX,hit2.fY,hit2.fZ);
      // meminfo();
      z3 = AliMUONConstants::DefaultChamberZ(ch2+4);
      y3 =  hit1.fY - (hit1.fZ-z3)*(hit1.fY - hit2.fY)/(hit1.fZ - hit2.fZ) ;
      x3 =  hit1.fX - (hit1.fZ-z3)*(hit1.fX - hit2.fX)/(hit1.fZ - hit2.fZ) ;

      z0 = AliMUONConstants::DefaultChamberZ(ch1);
      y0 =  hit1.fY - (hit1.fZ-z0)*(hit1.fY - hit2.fY)/(hit1.fZ - hit2.fZ) ;
      x0 =  hit1.fX - (hit1.fZ-z0)*(hit1.fX - hit2.fX)/(hit1.fZ - hit2.fZ) ;
      

      gMUONTracks->AddLine(x0,y0,z0,x3,y3,z3);
      mtrack++;
    }
    cout<<"NofManso Tracks : "<<mantrackblock.Nentries()<<endl;
  }
  
  return iResult;

}

 
// -----------------------------------------------------------------
Int_t processTRDClusters(AliHLTHOMERBlockDesc* block, TEvePointSet *cont, TEvePointSetArray *contCol) {
  
  Int_t iResult = 0;

  Int_t sm = block->GetSubDetector();
  if ( sm == 6 ) sm = 7;
  
  Float_t phi   = ( sm + 0.5 ) * TMath::Pi() / 9.0;  
  Float_t cos   = TMath::Cos( phi );
  Float_t sin   = TMath::Sin( phi );
  
  Byte_t* ptrData = reinterpret_cast<Byte_t*>(block->GetData());
  UInt_t ptrSize = block->GetSize();

  for (UInt_t size = 0; size+sizeof(AliHLTTRDCluster) <= ptrSize; size+=sizeof(AliHLTTRDCluster) ) {
    AliHLTTRDCluster *cluster = reinterpret_cast<AliHLTTRDCluster*>(&(ptrData[size]));
   
    AliTRDcluster *trdCluster = new AliTRDcluster;
    cluster->ExportTRDCluster( trdCluster );
   
    contCol->Fill(cos*trdCluster->GetX() - sin*trdCluster->GetY(), 
		   sin*trdCluster->GetX() + cos*trdCluster->GetY(), 
		   trdCluster->GetZ(),
		   trdCluster->GetQ() );    
     
    cont->SetNextPoint(cos*trdCluster->GetX() - sin*trdCluster->GetY(), 
    		       sin*trdCluster->GetX() + cos*trdCluster->GetY(), trdCluster->GetZ());
  }
  
  return iResult;
}

// -----------------------------------------------------------------
Int_t processTRDHistograms(AliHLTHOMERBlockDesc* block, TCanvas * canvas) {

  Int_t iResult = 0;

  if ( ! block->GetClassName().CompareTo("TH1F")) {
    TH1F* histo = reinterpret_cast<TH1F*>(block->GetTObject());
    ++gTRDHistoCount;
  
    TVirtualPad* pad = canvas->cd(gTRDHistoCount);
    histo->Draw();
    pad->SetGridy();
    pad->SetGridx();

    if ( ! strcmp(histo->GetName(), "nscls") ) {
      gTRDEvents = static_cast<Int_t>(histo->GetEntries());
	 histo->GetXaxis()->SetRangeUser(0.,15.);
    }

    if ( ! strcmp(histo->GetName(),"sclsdist") ||
	 ! strcmp(histo->GetName(),"evSize") )
      pad->SetLogy();
  }

  gTRDCanvas->Update();

  return iResult;
}

// -----------------------------------------------------------------
Int_t processPrimVertexHistograms(AliHLTHOMERBlockDesc* block, TCanvas * canvas) {

  Int_t iResult = 0;

  if ( ! block->GetClassName().CompareTo("TH1F")) {
    TH1F* histo = reinterpret_cast<TH1F*>(block->GetTObject());
    if( histo ){
      TString name(histo->GetName());
      if( !name.CompareTo("primVertexZ") ){
	canvas->cd(2);
	histo->Draw();
      }else if( !name.CompareTo("primVertexX") ){
	canvas->cd(3);
	histo->Draw();
      }else if( !name.CompareTo("primVertexY") ){
	canvas->cd(4);
	histo->Draw();
      }
    }
  }  else if ( ! block->GetClassName().CompareTo("TH2F")) {
    TH2F *hista = reinterpret_cast<TH2F*>(block->GetTObject());
    if (hista ){
       TString name(hista->GetName());
       if( !name.CompareTo("primVertexXY")) {      
	 canvas->cd(1);
	 hista->Draw();
       }
    }
  }
  canvas->cd();

  return iResult;
}

// -----------------------------------------------------------------
Int_t processSPDVertexHistograms(AliHLTHOMERBlockDesc* block, TCanvas * canvas) {

  Int_t iResult = 0;

  if ( ! block->GetClassName().CompareTo("TH1F")) {
    TH1F* histo = reinterpret_cast<TH1F*>(block->GetTObject());
    ++gSPDVertexHistoCount;
  
    canvas->cd(gSPDVertexHistoCount);
    histo->Draw();

  }  
  else if ( ! block->GetClassName().CompareTo("TH2F")) {
    TH2F *hista = reinterpret_cast<TH2F*>(block->GetTObject());
    if (hista) {
      ++gSPDVertexHistoCount;
  
      canvas->cd(gSPDVertexHistoCount);
      hista->Draw();
    }
  }
  canvas->cd();

  return iResult;
}

// -----------------------------------------------------------------
Int_t processV0Histograms(AliHLTHOMERBlockDesc* block, TCanvas * canvas) {

  cout << "Processing to see if it's V0 histogram, !!!!!!!!!"<<endl;

  Int_t iResult = 0;
  bool update = 0;
  if ( ! block->GetClassName().CompareTo("TH1F")) {
    TH1F* histo = reinterpret_cast<TH1F*>(block->GetTObject());
    if( histo ){
      TString name(histo->GetName());
      if( !name.CompareTo("hKShort") ){
	canvas->cd(1);
	histo->Draw();
	update = 1;
      }else if( !name.CompareTo("hLambda") ){
	canvas->cd(3);
	histo->Draw();
	update = 1;
      }
    }
  }  else if ( ! block->GetClassName().CompareTo("TH2F")) {
    TH2F *hista = reinterpret_cast<TH2F*>(block->GetTObject());
    if (hista ){
       TString name(hista->GetName());
       if( !name.CompareTo("hAP")) {      
	 canvas->cd(2);
	 hista->Draw();
	 update = 1;
       }
       else if( !name.CompareTo("hGammaXY")) {      
	 canvas->cd(4);
	 hista->Draw();
	 update = 1;
       }
    }
  }
  if( update ){
    canvas->cd();
    canvas->Update();
  }
  return iResult;
}


// -----------------------------------------------------------------
Int_t processITSHistograms(AliHLTHOMERBlockDesc* block, TCanvas * canvas) {

  Int_t iResult = 0;

  if ( ! block->GetClassName().CompareTo("TH1F")) {
    TH1F* histo = reinterpret_cast<TH1F*>(block->GetTObject());
    ++gITSHistoCount;
  
    canvas->cd(gITSHistoCount);
    histo->Draw();

  } 
  else if ( ! block->GetClassName().CompareTo("TH2F")) {
    TH2F *hista = reinterpret_cast<TH2F*>(block->GetTObject());
    if (hista) {
      ++gITSHistoCount;
      
      canvas->cd(gITSHistoCount);
      hista->Draw("COLZ");
    }
  }
  canvas->cd();

  return iResult;
}


Int_t AddHistogramsToCanvas(AliHLTHOMERBlockDesc * block, TCanvas * canvas, Int_t &cdCount ) {

  if (canvas == NULL) 
    cout <<"fucked canvasn"<<endl;
    

  Int_t iResult = 0;

  if ( ! block->GetClassName().CompareTo("TObjArray")) {
    TIter next((TObjArray*)(block->GetTObject()));
    TObject *object;
    while (( object = (TObject*) next())) {
      TH1* histo = dynamic_cast<TH1*>(object);
      cout <<" cd "<< cdCount << endl;
      canvas->cd(++cdCount);
      cout <<"draw"<<endl;
      histo->Draw();
      cout <<"drew"<<endl;
    }
  }

  //  canvas->cd();
  canvas->Update();

  return iResult;
}


// -----------------------------------------------------------------
Int_t processSSDHistograms(AliHLTHOMERBlockDesc* block, TCanvas *canvas0, TCanvas *canvas1) {

  Int_t iResult = 0;

  if ( ! block->GetClassName().CompareTo("TH1F")) {
    TH1F* histo = reinterpret_cast<TH1F*>(block->GetTObject());
    ++gSSDHistoCount0;
  
    canvas0->cd(gSSDHistoCount0);
    histo->Draw();
  }  
  else if ( ! block->GetClassName().CompareTo("TH2F")) {
    TH2F *hista = reinterpret_cast<TH2F*>(block->GetTObject());
    if (hista) {
      ++gSSDHistoCount1;
  
      canvas1->cd(gSSDHistoCount1);
      hista->Draw("COLZ");
    }
  }  else if ( ! block->GetClassName().CompareTo("TObjArray")) {
    TIter next((TObjArray*)(block->GetTObject()));
    TObject *object;
    while (( object = (TObject*) next())) {
      TString string;
      string = "TH1F";
      TString string2;
      string2 = "TH2F";

      if ( !(string.CompareTo(object->ClassName())) ) {
	TH1F* histo = reinterpret_cast<TH1F*>(object);
	++gSSDHistoCount0;
	
	canvas0->cd(gSSDHistoCount0);
	histo->Draw();
	
      } 
      else if ( !(string2.CompareTo(object->ClassName()) ) ) {
	TH2F* histo = reinterpret_cast<TH2F*>(object);
	++gSSDHistoCount1;
	
	canvas1->cd(gSSDHistoCount1);
	histo->Draw("COLZ");
      }
    }
  }

  canvas0->cd();  canvas1->cd();
  
  return iResult;
}


//*-------------------------------------------------------------------------------------- 
Int_t processTRDCalibHistograms(AliHLTHOMERBlockDesc* block, TCanvas * canvas) {
  Int_t iResult = 0;

  TObjArray *HistArray=(TObjArray*)block->GetTObject();
  Int_t nCalibHistos=HistArray->GetEntriesFast();
  for(Int_t CalibHistoCount=0;CalibHistoCount<nCalibHistos;CalibHistoCount++){
    canvas->cd(CalibHistoCount+1);
    
    if(HistArray->At(CalibHistoCount)->InheritsFrom("TH2S")){
	 TH2S *histCalib=(TH2S*)(HistArray->At(CalibHistoCount));
	 histCalib->Draw("colz");
       }
     else if(HistArray->At(CalibHistoCount)->InheritsFrom("TH2")){
      //TH2D *histCalib=dynamic_cast<TH2D*>(HistArray->At(CalibHistoCount));
      TH2D *histCalib=(TH2D*)(HistArray->At(CalibHistoCount));
      histCalib->Draw("lego2");
    }
    else if(HistArray->At(CalibHistoCount)->InheritsFrom("TH1")){
      //TH1D *histCalib=dynamic_cast<TH1D*>(HistArray->At(CalibHistoCount));
      TH1D *histCalib=(TH1D*)(HistArray->At(CalibHistoCount));
      histCalib->Draw();
    }
    else if(HistArray->At(CalibHistoCount)->InheritsFrom("AliTRDCalibraVdriftLinearFit")){
      //TH2S *histCalib = ((dynamic_cast<AliTRDCalibraVdriftLinearFit*>(HistArray->At(CalibHistoCount)))->GetLinearFitterHisto(10,kTRUE));
      TH2S *histCalib =(TH2S*)(((AliTRDCalibraVdriftLinearFit*)HistArray->At(CalibHistoCount))->GetLinearFitterHisto(10,kTRUE));

      histCalib->Draw();
    }
    
   
  }
  
  gTRDCalibCanvas->Update();

 return iResult;
}
//****************************************************************************



void writeToFile(){

  TList * bList = gHomerManager->GetBlockList();
  TFile * file = TFile::Open(Form("Event_0x%016X_ITS.root", gHomerManager->GetEventID()), "RECREATE"); 
  bList->Write("blockList", TObject::kSingleKey);
  file->Close();
  
  bList = gHomerManager->GetAsyncBlockList();
  TFile * afile = TFile::Open(Form("Event_0x%016X_Async.root", gHomerManager->GetEventID()), "RECREATE"); 
  bList->Write("blockList", TObject::kSingleKey);
  afile->Close();


//   TIter next(bList);
  
//   AliHLTHOMERBlockDesc* block = 0;
  
//   // -- Iterate over blocks in the block list
//   // ------------------------------------------
//   while ((block = (AliHLTHOMERBlockDesc*)next())) {
//     cout << "balle " << endl;
//   }
  
}


// -----------------------------------------------------------------
void loopEvent() {
  eventTimer.SetCommand("nextEvent()");
  eventTimer.Start(6000);
}

// -----------------------------------------------------------------
void stopLoopEvent() {
  eventTimer.Stop();
}


// -----------------------------------------------------------------
void loopEventFast() {
  eventTimerFast.SetCommand("nextEvent()");
  eventTimerFast.Start(500);
}

// -----------------------------------------------------------------
void stopLoopEventFast() {
  eventTimerFast.Stop();
}

// -----------------------------------------------------------------
void EventLoopFast() {
  
  // Start/stop event loop
  if ( gEventLoopStarted ) {
    loopEventFast();
    gEventLoopStarted = kTRUE;
  
  } else {  
    stopLoopEventFast();
    gEventLoopStarted = kFALSE;
  
  }
}



Int_t processBlock (AliHLTHOMERBlockDesc * block ){

  
#if 1//DEBUG
   printf( "------------------- xxxxxxxxxxxxxxx ----------------------\n");
   printf( "Detector           : %s\n", block->GetDetector().Data() );
   printf( "Datatype           : %s\n", block->GetDataType().Data() );
   if (block->IsTObject() )
     printf( "Is TObject of class: %s\n", block->GetClassName().Data() );
   printf( "------------------- xxxxxxxxxxxxxxx ----------------------\n");
#endif

  
  Int_t iResult = 0;

  if ( ! block->GetDetector().CompareTo("HLT") ) 
    processHLTBlock(block);
  
  else if ( ! block->GetDetector().CompareTo("TPC") ) 
    processTPCBlock(block);
  
  else if ( ! block->GetDetector().CompareTo("TRD") ) 
    iResult = processTRDBlock(block);

  else if ( ! block->GetDetector().CompareTo("MUON") && gShowMUON ) 
    processMUONBlock(block);

  else if ( ! block->GetDetector().CompareTo("ISPD") )
    processISPDBlock(block);

  else if ( ! block->GetDetector().CompareTo("ISDD") )
    processISDDBlock(block);

  else if ( ! block->GetDetector().CompareTo("ISSD") )
    processISSDBlock(block);

  else if ( ! block->GetDetector().CompareTo("PHOS") ) 
    processPHOSBlock(block);

  else if ( ! block->GetDetector().CompareTo("EMCA") )
    processEMCALBlock(block);

  else if ( ! block->GetDetector().CompareTo("ITS") )
    processITSBlock(block);
 
  

  if ( block->GetDataType().CompareTo("ROOTHIST") == 0 )     
    processV0Histograms( block , gV0Canvas);
   
  return iResult;
} 


void processITSBlock(AliHLTHOMERBlockDesc * block) {
  
  if ( block->GetDataType().CompareTo("ROOTHIST") == 0 ) {
    if(!gITSCanvas){
      gITSCanvas = gEve->AddCanvasTab("ITS QA");
    }
    processITSHistograms( block , gITSCanvas);
    gITSCanvas->Update();
  } 
}


 Int_t processTRDBlock (AliHLTHOMERBlockDesc * block) {

   Int_t iResult = 0;

  if ( ! block->GetDataType().CompareTo("CLUSTERS") ) {
     
    if(!gTRDClusters){
      gTRDClusters = new TEvePointSet("TRD Clusters");
      gTRDClusters->SetMainColor(kBlue);
      gTRDClusters->SetMarkerStyle((Style_t)kFullDotSmall);
      //gEve->AddElement(gTRDClusters);
    } 

    if(!gTRDColClusters){
      gTRDColClusters = new TEvePointSetArray("TRD Clusters Colorized");
      gTRDColClusters->SetMainColor(kRed);
      gTRDColClusters->SetMarkerStyle(4); // antialiased circle
      //	  gTRDColClusters->SetMarkerStyle((Style_t)kFullDotSmall);
      gTRDColClusters->SetMarkerSize(0.4);
      gTRDColClusters->InitBins("Cluster Charge", gTRDBins, 0., gTRDBins*100.);

      //TColor::SetPalette(1, 0); // Spectrum palette
      const Int_t nCol = TColor::GetNumberOfColors();
      for (Int_t ii = 0; ii < gTRDBins+1; ++ii)
	gTRDColClusters->GetBin(ii)->SetMainColor(TColor::GetColorPalette(ii * nCol / (gTRDBins+2)));
	  
      gEve->AddElement(gTRDColClusters);
    } 

    iResult = processTRDClusters( block, gTRDClusters, gTRDColClusters );
    //gTRDClusters->ElementChanged();
    gTRDColClusters->ElementChanged();
  }

  // -- Process TRD Histograms
  else if ( block->GetDataType().CompareTo("ROOTHIST") == 0 ) {
    if(!gTRDCanvas) {
      gTRDCanvas = gEve->AddCanvasTab("TRD");
      gTRDCanvas->Divide(3,2);
    }
    iResult = processTRDHistograms( block, gTRDCanvas );     
  }

  else if(block->GetDataType().CompareTo("CALIBRAH")==0){
     
    if(!gTRDCalibCanvas){
      gTRDCalibCanvas = gEve->AddCanvasTab("TRD Calib");
      gTRDCalibCanvas->Divide(2,2);
    }
     
    iResult=processTRDCalibHistograms(block,gTRDCalibCanvas);
  }

  else if(block->GetDataType().CompareTo("CALIBEOR")==0){
     
    if(!gTRDEORCanvas){
      gTRDEORCanvas = gEve->AddCanvasTab("TRD QA");
      gTRDEORCanvas->Divide(3,2);       
    }
  
    iResult=processTRDCalibHistograms(block,gTRDEORCanvas);
  }
  return iResult;
}

void processMUONBlock(AliHLTHOMERBlockDesc * block){

   // -- Process MUON Clusters
   if ( (block->GetDataType().CompareTo("RECHITS") == 0) || (block->GetDataType().CompareTo("TRIGRECS") == 0) ) {
	
     if ( !gMUONClusters ) {
       gMUONClusters = new TEvePointSet("MUON RecHits");
       gMUONClusters->SetMainColor(kBlue);
       gMUONClusters->SetMarkerStyle(20);
       gEve->AddElement(gMUONClusters);
     }
	
     processMUONClusters( block );
     gMUONClusters->ElementChanged();
	
   }else if(block->GetDataType().CompareTo("MANTRACK") == 0){
	
     if ( !gMUONTracks ) {
       gMUONTracks = new TEveStraightLineSet("MUON Tracks");
       gMUONTracks->SetMainColor(kRed);
       gMUONTracks->SetLineWidth(3);
       gEve->AddElement(gMUONTracks);
     }

     processMUONTracks( block );
     gMUONTracks->ElementChanged();


   } 
}


void processISPDBlock( AliHLTHOMERBlockDesc * block) {

  if ( block->GetDataType().CompareTo("CLUSTERS") == 0 ) {
    
    if(!gSPDClusters){
      gSPDClusters = new TEvePointSet("SPD Clusters");
      gSPDClusters->SetMainColor(kBlack);
      gSPDClusters->SetMarkerStyle((Style_t)kFullDotMedium);
      gEve->AddElement(gSPDClusters);
    } 
    
    processITSClusters( block , gSPDClusters);
    gSPDClusters->ElementChanged();

  } else if ( block->GetDataType().CompareTo("ROOTHIST") == 0 ) {
    processSPDVertexHistograms( block , gSPDVertexCanvas);
    gSPDVertexCanvas->Update();
  } 
} 

void processISDDBlock(AliHLTHOMERBlockDesc * block){
  
  if ( block->GetDataType().CompareTo("CLUSTERS") == 0 ) {
    
    if(!gSDDClusters){
      gSDDClusters = new TEvePointSet("SDD Clusters");
      gSDDClusters->SetMainColor(kPink);
      gSDDClusters->SetMarkerStyle((Style_t)kFullDotMedium);
      gEve->AddElement(gSDDClusters);
    } 
    
    processITSClusters( block , gSDDClusters);
    gSDDClusters->ElementChanged();
  } 
}

void processISSDBlock(AliHLTHOMERBlockDesc * block){
  if ( block->GetDataType().CompareTo("CLUSTERS") == 0 ) {
    
    if(!gSSDClusters){
      gSSDClusters = new TEvePointSet("SSD Clusters");
      gSSDClusters->SetMainColor(kBlue);
      gSSDClusters->SetMarkerStyle((Style_t)kFullDotMedium);
      gEve->AddElement(gSSDClusters);
    } 
    
    processITSClusters( block , gSSDClusters);
    gSSDClusters->ElementChanged();
  } 
  
  else if ( block->GetDataType().CompareTo("ROOTOBAR") == 0 ) {
    processSSDHistograms( block , gSSDCanvas0, gSSDCanvas1);
    gSSDCanvas0->Update();
    gSSDCanvas1->Update();
  } 
}
 
        

Int_t processPHOSBlock(AliHLTHOMERBlockDesc * block) { 
  
  Int_t iResult = 0;

  if ( block->GetDataType().CompareTo("ROOTHIST") == 0 ) { 
    
    if(!gPHOSCanvas) {
      gPHOSCanvas = CreateCanvas("PHOS QA", "PHOS QA");
      gPHOSCanvas->Divide(3, 2);
    }
    
    AddHistogramsToCanvas(block, gPHOSCanvas, gPHOSHistoCount);
   
 
  } else {
    
    cout <<"PHOS block not histo"<<endl;

    if( !gPHOSElementList )
      gPHOSElementList = createPHOSElementList();
        
    if ( block->GetDataType().CompareTo("CALOCLUS") == 0 )
      iResult = processPHOSClusters( block );
      
    else if ( block->GetDataType().CompareTo("DIGITTYP") == 0 )
      iResult = processPHOSDigits( block);
    
    else if ( block->GetDataType().CompareTo("CHANNELT") == 0 ) 
      iResult = processPHOSClusters( block );
  
  
    //Update the eve elements
    for(int im = 0; im < 5; im++)
      gPHOSBoxSet[im]->ElementChanged();
    
  }
  
  return iResult;
} 


TEveElementList * createPHOSElementList() {
  
  TEveElementList * elementList  = new TEveElementList("PHOS Cells");
  
  gEve->AddElement(elementList);
  
  TVector3 center;
  Float_t angle;
  
  // -- Create boxsets
  for(int im = 0; im < 5; im++) {
    
    TEveRGBAPalette* pal = new TEveRGBAPalette(0,120);
    pal->SetLimits(-0.1, 1024);
    gPHOSBoxSet[im] = new TEveBoxSet(Form("Cells Module %d" , im));
    gPHOSBoxSet[im]->SetPalette(pal);
    gPHOSBoxSet[im]->Reset(TEveBoxSet::kBT_AABox, kFALSE, 64);
    gPHOSBoxSet[im]->SetOwnIds(kTRUE);
    
    
    gPHOSGeom->GetModuleCenter(center, "CPV", im+1);
    angle = gPHOSGeom->GetPHOSAngle(im+1)*TMath::Pi()/180;
    
    gPHOSBoxSet[im]->RefitPlex();
    TEveTrans& t = gPHOSBoxSet[im]->RefMainTrans();
    t.SetupRotation(1, 2, angle );
    t.SetPos(center.X(), center.Y(), center.Z());
    
    elementList->AddElement(gPHOSBoxSet[im]);
  }

  return elementList;
}


void processEMCALBlock(AliHLTHOMERBlockDesc * block) {	

  Int_t iResult = 0;
  
  if ( block->GetDataType().CompareTo("ROOTHIST") == 0 ) { 
    
    if(!gEMCALCanvas) {
      gEMCALCanvas = CreateCanvas("EMCAL QA", "EMCAL QA");
      gEMCALCanvas->Divide(3, 2);
    }
    AddHistogramsToCanvas(block, gEMCALCanvas, gEMCALHistoCount);
   
 
  } else {

    if( !gEMCALElementList ){
      gEMCALElementList = createEMCALElementList();
    }

    if ( block->GetDataType().CompareTo("CALOCLUS") == 0 ) {
      iResult = processEMCALClusters( block );
      for(int sm = 0; sm < 12; sm++) {
	gEMCALBoxSet[sm]->ElementChanged();
      }
    }
  } 
}

TEveElementList * createEMCALElementList() { 
  TEveElementList * elementList = new TEveElementList("EMCAL Cells");
  elementList->SetTitle("Tooltip");
  gEve->AddElement(elementList);
  
  gStyle->SetPalette(1, 0);
  TEveRGBAPalette* pal = new TEveRGBAPalette(0, 512);
  pal->SetLimits(0, 1024);
  
  
  for (Int_t sm=0; sm<12; ++sm) {
    
    TEveBoxSet* q = new TEveBoxSet(Form("SM %d", sm+1));
    q->SetOwnIds(kTRUE);
    
    q->Reset(TEveBoxSet::kBT_AABox, kFALSE, 64);
    q->RefMainTrans().SetFrom(*gEMCALNode->GetDaughter(sm)->GetMatrix());
    q->SetPalette(pal);
    
    gEve->AddElement(q, elementList);
    gEMCALBoxSet[sm] = q;
  }

  return elementList;
}

void processHLTBlock(AliHLTHOMERBlockDesc * block) {

  if ( ! block->GetDataType().CompareTo("ALIESDV0") ) {
    if(!gTPCTrack){
      gTPCTrack = new TEveTrackList("ESD Tracks");
      gTPCTrack->SetMainColor(6);
      gEve->AddElement(gTPCTrack);
    }
    
    processEsdTracks(block, gTPCTrack);
    gTPCTrack->ElementChanged();
  } 
  
  else if ( ! block->GetDataType().CompareTo("ROOTTOBJ") ) {
    processROOTTOBJ( block, gHLTText );
  } 

  else if ( ! block->GetDataType().CompareTo("HLTRDLST") ) {
    processHLTRDLST( block );
  } 

  else if ( !block->GetDataType().CompareTo("ROOTHIST") ) {      
    
    processPrimVertexHistograms( block , gPrimVertexCanvas);
    gPrimVertexCanvas->Update();    
  }

} 


void processTPCBlock(AliHLTHOMERBlockDesc * block) {

  cout <<"Processing tpc clusters"<<endl;

  if ( ! block->GetDataType().CompareTo("CLUSTERS") ) {
    if(!gTPCClusters){	  
      gTPCClusters = new TEvePointSet("TPC Clusters");
      //gTPCClusters->ApplyVizTag("TPC Clusters");
      gTPCClusters->SetMainColor(kRed);
      gTPCClusters->SetMarkerStyle((Style_t)kFullDotSmall);
      //gEve->AddElement(gTPCClusters);
    } 
    
    if(!gTPCColClusters){
      gTPCColClusters = new TEvePointSetArray("TPC Clusters Colorized");
      gTPCColClusters->SetMainColor(kRed);
      gTPCColClusters->SetMarkerStyle(4); // antialiased circle
      gTPCColClusters->SetMarkerSize(0.4);
      gTPCColClusters->InitBins("Cluster Charge", gTPCBins, 0., gTPCBins*20.);
      
      const Int_t nCol = TColor::GetNumberOfColors();
      
      for (Int_t ii = 0; ii < gTPCBins+1; ++ii)
	gTPCColClusters->GetBin(ii)->SetMainColor(TColor::GetColorPalette(ii * nCol / (gTPCBins+2)));
      
      gEve->AddElement(gTPCColClusters);
    } 
    
    processTPCClusters(block, gTPCClusters, gTPCColClusters);
    //gTPCClusters->ElementChanged();
    gTPCColClusters->ElementChanged();
  }
      
  else if ( ! block->GetDataType().CompareTo("HWCL_ALT") ) {
    if(!gTPCTestClusters){	  
      
      gTPCTestClusters = new TEvePointSet("TPC Clusters Test");
      //ggTPCTestClusters->ApplyVizTag("TPC Clusters");
      gTPCTestClusters->SetMainColor(kBlue);
      gTPCTestClusters->SetMarkerStyle((Style_t)kFullDotSmall);
      gEve->AddElement(gTPCTestClusters);
    }
    
    processTPCClusters(block, gTPCTestClusters);
    gTPCTestClusters->ElementChanged();
  }
} 
 onlineDisplay.C:1
 onlineDisplay.C:2
 onlineDisplay.C:3
 onlineDisplay.C:4
 onlineDisplay.C:5
 onlineDisplay.C:6
 onlineDisplay.C:7
 onlineDisplay.C:8
 onlineDisplay.C:9
 onlineDisplay.C:10
 onlineDisplay.C:11
 onlineDisplay.C:12
 onlineDisplay.C:13
 onlineDisplay.C:14
 onlineDisplay.C:15
 onlineDisplay.C:16
 onlineDisplay.C:17
 onlineDisplay.C:18
 onlineDisplay.C:19
 onlineDisplay.C:20
 onlineDisplay.C:21
 onlineDisplay.C:22
 onlineDisplay.C:23
 onlineDisplay.C:24
 onlineDisplay.C:25
 onlineDisplay.C:26
 onlineDisplay.C:27
 onlineDisplay.C:28
 onlineDisplay.C:29
 onlineDisplay.C:30
 onlineDisplay.C:31
 onlineDisplay.C:32
 onlineDisplay.C:33
 onlineDisplay.C:34
 onlineDisplay.C:35
 onlineDisplay.C:36
 onlineDisplay.C:37
 onlineDisplay.C:38
 onlineDisplay.C:39
 onlineDisplay.C:40
 onlineDisplay.C:41
 onlineDisplay.C:42
 onlineDisplay.C:43
 onlineDisplay.C:44
 onlineDisplay.C:45
 onlineDisplay.C:46
 onlineDisplay.C:47
 onlineDisplay.C:48
 onlineDisplay.C:49
 onlineDisplay.C:50
 onlineDisplay.C:51
 onlineDisplay.C:52
 onlineDisplay.C:53
 onlineDisplay.C:54
 onlineDisplay.C:55
 onlineDisplay.C:56
 onlineDisplay.C:57
 onlineDisplay.C:58
 onlineDisplay.C:59
 onlineDisplay.C:60
 onlineDisplay.C:61
 onlineDisplay.C:62
 onlineDisplay.C:63
 onlineDisplay.C:64
 onlineDisplay.C:65
 onlineDisplay.C:66
 onlineDisplay.C:67
 onlineDisplay.C:68
 onlineDisplay.C:69
 onlineDisplay.C:70
 onlineDisplay.C:71
 onlineDisplay.C:72
 onlineDisplay.C:73
 onlineDisplay.C:74
 onlineDisplay.C:75
 onlineDisplay.C:76
 onlineDisplay.C:77
 onlineDisplay.C:78
 onlineDisplay.C:79
 onlineDisplay.C:80
 onlineDisplay.C:81
 onlineDisplay.C:82
 onlineDisplay.C:83
 onlineDisplay.C:84
 onlineDisplay.C:85
 onlineDisplay.C:86
 onlineDisplay.C:87
 onlineDisplay.C:88
 onlineDisplay.C:89
 onlineDisplay.C:90
 onlineDisplay.C:91
 onlineDisplay.C:92
 onlineDisplay.C:93
 onlineDisplay.C:94
 onlineDisplay.C:95
 onlineDisplay.C:96
 onlineDisplay.C:97
 onlineDisplay.C:98
 onlineDisplay.C:99
 onlineDisplay.C:100
 onlineDisplay.C:101
 onlineDisplay.C:102
 onlineDisplay.C:103
 onlineDisplay.C:104
 onlineDisplay.C:105
 onlineDisplay.C:106
 onlineDisplay.C:107
 onlineDisplay.C:108
 onlineDisplay.C:109
 onlineDisplay.C:110
 onlineDisplay.C:111
 onlineDisplay.C:112
 onlineDisplay.C:113
 onlineDisplay.C:114
 onlineDisplay.C:115
 onlineDisplay.C:116
 onlineDisplay.C:117
 onlineDisplay.C:118
 onlineDisplay.C:119
 onlineDisplay.C:120
 onlineDisplay.C:121
 onlineDisplay.C:122
 onlineDisplay.C:123
 onlineDisplay.C:124
 onlineDisplay.C:125
 onlineDisplay.C:126
 onlineDisplay.C:127
 onlineDisplay.C:128
 onlineDisplay.C:129
 onlineDisplay.C:130
 onlineDisplay.C:131
 onlineDisplay.C:132
 onlineDisplay.C:133
 onlineDisplay.C:134
 onlineDisplay.C:135
 onlineDisplay.C:136
 onlineDisplay.C:137
 onlineDisplay.C:138
 onlineDisplay.C:139
 onlineDisplay.C:140
 onlineDisplay.C:141
 onlineDisplay.C:142
 onlineDisplay.C:143
 onlineDisplay.C:144
 onlineDisplay.C:145
 onlineDisplay.C:146
 onlineDisplay.C:147
 onlineDisplay.C:148
 onlineDisplay.C:149
 onlineDisplay.C:150
 onlineDisplay.C:151
 onlineDisplay.C:152
 onlineDisplay.C:153
 onlineDisplay.C:154
 onlineDisplay.C:155
 onlineDisplay.C:156
 onlineDisplay.C:157
 onlineDisplay.C:158
 onlineDisplay.C:159
 onlineDisplay.C:160
 onlineDisplay.C:161
 onlineDisplay.C:162
 onlineDisplay.C:163
 onlineDisplay.C:164
 onlineDisplay.C:165
 onlineDisplay.C:166
 onlineDisplay.C:167
 onlineDisplay.C:168
 onlineDisplay.C:169
 onlineDisplay.C:170
 onlineDisplay.C:171
 onlineDisplay.C:172
 onlineDisplay.C:173
 onlineDisplay.C:174
 onlineDisplay.C:175
 onlineDisplay.C:176
 onlineDisplay.C:177
 onlineDisplay.C:178
 onlineDisplay.C:179
 onlineDisplay.C:180
 onlineDisplay.C:181
 onlineDisplay.C:182
 onlineDisplay.C:183
 onlineDisplay.C:184
 onlineDisplay.C:185
 onlineDisplay.C:186
 onlineDisplay.C:187
 onlineDisplay.C:188
 onlineDisplay.C:189
 onlineDisplay.C:190
 onlineDisplay.C:191
 onlineDisplay.C:192
 onlineDisplay.C:193
 onlineDisplay.C:194
 onlineDisplay.C:195
 onlineDisplay.C:196
 onlineDisplay.C:197
 onlineDisplay.C:198
 onlineDisplay.C:199
 onlineDisplay.C:200
 onlineDisplay.C:201
 onlineDisplay.C:202
 onlineDisplay.C:203
 onlineDisplay.C:204
 onlineDisplay.C:205
 onlineDisplay.C:206
 onlineDisplay.C:207
 onlineDisplay.C:208
 onlineDisplay.C:209
 onlineDisplay.C:210
 onlineDisplay.C:211
 onlineDisplay.C:212
 onlineDisplay.C:213
 onlineDisplay.C:214
 onlineDisplay.C:215
 onlineDisplay.C:216
 onlineDisplay.C:217
 onlineDisplay.C:218
 onlineDisplay.C:219
 onlineDisplay.C:220
 onlineDisplay.C:221
 onlineDisplay.C:222
 onlineDisplay.C:223
 onlineDisplay.C:224
 onlineDisplay.C:225
 onlineDisplay.C:226
 onlineDisplay.C:227
 onlineDisplay.C:228
 onlineDisplay.C:229
 onlineDisplay.C:230
 onlineDisplay.C:231
 onlineDisplay.C:232
 onlineDisplay.C:233
 onlineDisplay.C:234
 onlineDisplay.C:235
 onlineDisplay.C:236
 onlineDisplay.C:237
 onlineDisplay.C:238
 onlineDisplay.C:239
 onlineDisplay.C:240
 onlineDisplay.C:241
 onlineDisplay.C:242
 onlineDisplay.C:243
 onlineDisplay.C:244
 onlineDisplay.C:245
 onlineDisplay.C:246
 onlineDisplay.C:247
 onlineDisplay.C:248
 onlineDisplay.C:249
 onlineDisplay.C:250
 onlineDisplay.C:251
 onlineDisplay.C:252
 onlineDisplay.C:253
 onlineDisplay.C:254
 onlineDisplay.C:255
 onlineDisplay.C:256
 onlineDisplay.C:257
 onlineDisplay.C:258
 onlineDisplay.C:259
 onlineDisplay.C:260
 onlineDisplay.C:261
 onlineDisplay.C:262
 onlineDisplay.C:263
 onlineDisplay.C:264
 onlineDisplay.C:265
 onlineDisplay.C:266
 onlineDisplay.C:267
 onlineDisplay.C:268
 onlineDisplay.C:269
 onlineDisplay.C:270
 onlineDisplay.C:271
 onlineDisplay.C:272
 onlineDisplay.C:273
 onlineDisplay.C:274
 onlineDisplay.C:275
 onlineDisplay.C:276
 onlineDisplay.C:277
 onlineDisplay.C:278
 onlineDisplay.C:279
 onlineDisplay.C:280
 onlineDisplay.C:281
 onlineDisplay.C:282
 onlineDisplay.C:283
 onlineDisplay.C:284
 onlineDisplay.C:285
 onlineDisplay.C:286
 onlineDisplay.C:287
 onlineDisplay.C:288
 onlineDisplay.C:289
 onlineDisplay.C:290
 onlineDisplay.C:291
 onlineDisplay.C:292
 onlineDisplay.C:293
 onlineDisplay.C:294
 onlineDisplay.C:295
 onlineDisplay.C:296
 onlineDisplay.C:297
 onlineDisplay.C:298
 onlineDisplay.C:299
 onlineDisplay.C:300
 onlineDisplay.C:301
 onlineDisplay.C:302
 onlineDisplay.C:303
 onlineDisplay.C:304
 onlineDisplay.C:305
 onlineDisplay.C:306
 onlineDisplay.C:307
 onlineDisplay.C:308
 onlineDisplay.C:309
 onlineDisplay.C:310
 onlineDisplay.C:311
 onlineDisplay.C:312
 onlineDisplay.C:313
 onlineDisplay.C:314
 onlineDisplay.C:315
 onlineDisplay.C:316
 onlineDisplay.C:317
 onlineDisplay.C:318
 onlineDisplay.C:319
 onlineDisplay.C:320
 onlineDisplay.C:321
 onlineDisplay.C:322
 onlineDisplay.C:323
 onlineDisplay.C:324
 onlineDisplay.C:325
 onlineDisplay.C:326
 onlineDisplay.C:327
 onlineDisplay.C:328
 onlineDisplay.C:329
 onlineDisplay.C:330
 onlineDisplay.C:331
 onlineDisplay.C:332
 onlineDisplay.C:333
 onlineDisplay.C:334
 onlineDisplay.C:335
 onlineDisplay.C:336
 onlineDisplay.C:337
 onlineDisplay.C:338
 onlineDisplay.C:339
 onlineDisplay.C:340
 onlineDisplay.C:341
 onlineDisplay.C:342
 onlineDisplay.C:343
 onlineDisplay.C:344
 onlineDisplay.C:345
 onlineDisplay.C:346
 onlineDisplay.C:347
 onlineDisplay.C:348
 onlineDisplay.C:349
 onlineDisplay.C:350
 onlineDisplay.C:351
 onlineDisplay.C:352
 onlineDisplay.C:353
 onlineDisplay.C:354
 onlineDisplay.C:355
 onlineDisplay.C:356
 onlineDisplay.C:357
 onlineDisplay.C:358
 onlineDisplay.C:359
 onlineDisplay.C:360
 onlineDisplay.C:361
 onlineDisplay.C:362
 onlineDisplay.C:363
 onlineDisplay.C:364
 onlineDisplay.C:365
 onlineDisplay.C:366
 onlineDisplay.C:367
 onlineDisplay.C:368
 onlineDisplay.C:369
 onlineDisplay.C:370
 onlineDisplay.C:371
 onlineDisplay.C:372
 onlineDisplay.C:373
 onlineDisplay.C:374
 onlineDisplay.C:375
 onlineDisplay.C:376
 onlineDisplay.C:377
 onlineDisplay.C:378
 onlineDisplay.C:379
 onlineDisplay.C:380
 onlineDisplay.C:381
 onlineDisplay.C:382
 onlineDisplay.C:383
 onlineDisplay.C:384
 onlineDisplay.C:385
 onlineDisplay.C:386
 onlineDisplay.C:387
 onlineDisplay.C:388
 onlineDisplay.C:389
 onlineDisplay.C:390
 onlineDisplay.C:391
 onlineDisplay.C:392
 onlineDisplay.C:393
 onlineDisplay.C:394
 onlineDisplay.C:395
 onlineDisplay.C:396
 onlineDisplay.C:397
 onlineDisplay.C:398
 onlineDisplay.C:399
 onlineDisplay.C:400
 onlineDisplay.C:401
 onlineDisplay.C:402
 onlineDisplay.C:403
 onlineDisplay.C:404
 onlineDisplay.C:405
 onlineDisplay.C:406
 onlineDisplay.C:407
 onlineDisplay.C:408
 onlineDisplay.C:409
 onlineDisplay.C:410
 onlineDisplay.C:411
 onlineDisplay.C:412
 onlineDisplay.C:413
 onlineDisplay.C:414
 onlineDisplay.C:415
 onlineDisplay.C:416
 onlineDisplay.C:417
 onlineDisplay.C:418
 onlineDisplay.C:419
 onlineDisplay.C:420
 onlineDisplay.C:421
 onlineDisplay.C:422
 onlineDisplay.C:423
 onlineDisplay.C:424
 onlineDisplay.C:425
 onlineDisplay.C:426
 onlineDisplay.C:427
 onlineDisplay.C:428
 onlineDisplay.C:429
 onlineDisplay.C:430
 onlineDisplay.C:431
 onlineDisplay.C:432
 onlineDisplay.C:433
 onlineDisplay.C:434
 onlineDisplay.C:435
 onlineDisplay.C:436
 onlineDisplay.C:437
 onlineDisplay.C:438
 onlineDisplay.C:439
 onlineDisplay.C:440
 onlineDisplay.C:441
 onlineDisplay.C:442
 onlineDisplay.C:443
 onlineDisplay.C:444
 onlineDisplay.C:445
 onlineDisplay.C:446
 onlineDisplay.C:447
 onlineDisplay.C:448
 onlineDisplay.C:449
 onlineDisplay.C:450
 onlineDisplay.C:451
 onlineDisplay.C:452
 onlineDisplay.C:453
 onlineDisplay.C:454
 onlineDisplay.C:455
 onlineDisplay.C:456
 onlineDisplay.C:457
 onlineDisplay.C:458
 onlineDisplay.C:459
 onlineDisplay.C:460
 onlineDisplay.C:461
 onlineDisplay.C:462
 onlineDisplay.C:463
 onlineDisplay.C:464
 onlineDisplay.C:465
 onlineDisplay.C:466
 onlineDisplay.C:467
 onlineDisplay.C:468
 onlineDisplay.C:469
 onlineDisplay.C:470
 onlineDisplay.C:471
 onlineDisplay.C:472
 onlineDisplay.C:473
 onlineDisplay.C:474
 onlineDisplay.C:475
 onlineDisplay.C:476
 onlineDisplay.C:477
 onlineDisplay.C:478
 onlineDisplay.C:479
 onlineDisplay.C:480
 onlineDisplay.C:481
 onlineDisplay.C:482
 onlineDisplay.C:483
 onlineDisplay.C:484
 onlineDisplay.C:485
 onlineDisplay.C:486
 onlineDisplay.C:487
 onlineDisplay.C:488
 onlineDisplay.C:489
 onlineDisplay.C:490
 onlineDisplay.C:491
 onlineDisplay.C:492
 onlineDisplay.C:493
 onlineDisplay.C:494
 onlineDisplay.C:495
 onlineDisplay.C:496
 onlineDisplay.C:497
 onlineDisplay.C:498
 onlineDisplay.C:499
 onlineDisplay.C:500
 onlineDisplay.C:501
 onlineDisplay.C:502
 onlineDisplay.C:503
 onlineDisplay.C:504
 onlineDisplay.C:505
 onlineDisplay.C:506
 onlineDisplay.C:507
 onlineDisplay.C:508
 onlineDisplay.C:509
 onlineDisplay.C:510
 onlineDisplay.C:511
 onlineDisplay.C:512
 onlineDisplay.C:513
 onlineDisplay.C:514
 onlineDisplay.C:515
 onlineDisplay.C:516
 onlineDisplay.C:517
 onlineDisplay.C:518
 onlineDisplay.C:519
 onlineDisplay.C:520
 onlineDisplay.C:521
 onlineDisplay.C:522
 onlineDisplay.C:523
 onlineDisplay.C:524
 onlineDisplay.C:525
 onlineDisplay.C:526
 onlineDisplay.C:527
 onlineDisplay.C:528
 onlineDisplay.C:529
 onlineDisplay.C:530
 onlineDisplay.C:531
 onlineDisplay.C:532
 onlineDisplay.C:533
 onlineDisplay.C:534
 onlineDisplay.C:535
 onlineDisplay.C:536
 onlineDisplay.C:537
 onlineDisplay.C:538
 onlineDisplay.C:539
 onlineDisplay.C:540
 onlineDisplay.C:541
 onlineDisplay.C:542
 onlineDisplay.C:543
 onlineDisplay.C:544
 onlineDisplay.C:545
 onlineDisplay.C:546
 onlineDisplay.C:547
 onlineDisplay.C:548
 onlineDisplay.C:549
 onlineDisplay.C:550
 onlineDisplay.C:551
 onlineDisplay.C:552
 onlineDisplay.C:553
 onlineDisplay.C:554
 onlineDisplay.C:555
 onlineDisplay.C:556
 onlineDisplay.C:557
 onlineDisplay.C:558
 onlineDisplay.C:559
 onlineDisplay.C:560
 onlineDisplay.C:561
 onlineDisplay.C:562
 onlineDisplay.C:563
 onlineDisplay.C:564
 onlineDisplay.C:565
 onlineDisplay.C:566
 onlineDisplay.C:567
 onlineDisplay.C:568
 onlineDisplay.C:569
 onlineDisplay.C:570
 onlineDisplay.C:571
 onlineDisplay.C:572
 onlineDisplay.C:573
 onlineDisplay.C:574
 onlineDisplay.C:575
 onlineDisplay.C:576
 onlineDisplay.C:577
 onlineDisplay.C:578
 onlineDisplay.C:579
 onlineDisplay.C:580
 onlineDisplay.C:581
 onlineDisplay.C:582
 onlineDisplay.C:583
 onlineDisplay.C:584
 onlineDisplay.C:585
 onlineDisplay.C:586
 onlineDisplay.C:587
 onlineDisplay.C:588
 onlineDisplay.C:589
 onlineDisplay.C:590
 onlineDisplay.C:591
 onlineDisplay.C:592
 onlineDisplay.C:593
 onlineDisplay.C:594
 onlineDisplay.C:595
 onlineDisplay.C:596
 onlineDisplay.C:597
 onlineDisplay.C:598
 onlineDisplay.C:599
 onlineDisplay.C:600
 onlineDisplay.C:601
 onlineDisplay.C:602
 onlineDisplay.C:603
 onlineDisplay.C:604
 onlineDisplay.C:605
 onlineDisplay.C:606
 onlineDisplay.C:607
 onlineDisplay.C:608
 onlineDisplay.C:609
 onlineDisplay.C:610
 onlineDisplay.C:611
 onlineDisplay.C:612
 onlineDisplay.C:613
 onlineDisplay.C:614
 onlineDisplay.C:615
 onlineDisplay.C:616
 onlineDisplay.C:617
 onlineDisplay.C:618
 onlineDisplay.C:619
 onlineDisplay.C:620
 onlineDisplay.C:621
 onlineDisplay.C:622
 onlineDisplay.C:623
 onlineDisplay.C:624
 onlineDisplay.C:625
 onlineDisplay.C:626
 onlineDisplay.C:627
 onlineDisplay.C:628
 onlineDisplay.C:629
 onlineDisplay.C:630
 onlineDisplay.C:631
 onlineDisplay.C:632
 onlineDisplay.C:633
 onlineDisplay.C:634
 onlineDisplay.C:635
 onlineDisplay.C:636
 onlineDisplay.C:637
 onlineDisplay.C:638
 onlineDisplay.C:639
 onlineDisplay.C:640
 onlineDisplay.C:641
 onlineDisplay.C:642
 onlineDisplay.C:643
 onlineDisplay.C:644
 onlineDisplay.C:645
 onlineDisplay.C:646
 onlineDisplay.C:647
 onlineDisplay.C:648
 onlineDisplay.C:649
 onlineDisplay.C:650
 onlineDisplay.C:651
 onlineDisplay.C:652
 onlineDisplay.C:653
 onlineDisplay.C:654
 onlineDisplay.C:655
 onlineDisplay.C:656
 onlineDisplay.C:657
 onlineDisplay.C:658
 onlineDisplay.C:659
 onlineDisplay.C:660
 onlineDisplay.C:661
 onlineDisplay.C:662
 onlineDisplay.C:663
 onlineDisplay.C:664
 onlineDisplay.C:665
 onlineDisplay.C:666
 onlineDisplay.C:667
 onlineDisplay.C:668
 onlineDisplay.C:669
 onlineDisplay.C:670
 onlineDisplay.C:671
 onlineDisplay.C:672
 onlineDisplay.C:673
 onlineDisplay.C:674
 onlineDisplay.C:675
 onlineDisplay.C:676
 onlineDisplay.C:677
 onlineDisplay.C:678
 onlineDisplay.C:679
 onlineDisplay.C:680
 onlineDisplay.C:681
 onlineDisplay.C:682
 onlineDisplay.C:683
 onlineDisplay.C:684
 onlineDisplay.C:685
 onlineDisplay.C:686
 onlineDisplay.C:687
 onlineDisplay.C:688
 onlineDisplay.C:689
 onlineDisplay.C:690
 onlineDisplay.C:691
 onlineDisplay.C:692
 onlineDisplay.C:693
 onlineDisplay.C:694
 onlineDisplay.C:695
 onlineDisplay.C:696
 onlineDisplay.C:697
 onlineDisplay.C:698
 onlineDisplay.C:699
 onlineDisplay.C:700
 onlineDisplay.C:701
 onlineDisplay.C:702
 onlineDisplay.C:703
 onlineDisplay.C:704
 onlineDisplay.C:705
 onlineDisplay.C:706
 onlineDisplay.C:707
 onlineDisplay.C:708
 onlineDisplay.C:709
 onlineDisplay.C:710
 onlineDisplay.C:711
 onlineDisplay.C:712
 onlineDisplay.C:713
 onlineDisplay.C:714
 onlineDisplay.C:715
 onlineDisplay.C:716
 onlineDisplay.C:717
 onlineDisplay.C:718
 onlineDisplay.C:719
 onlineDisplay.C:720
 onlineDisplay.C:721
 onlineDisplay.C:722
 onlineDisplay.C:723
 onlineDisplay.C:724
 onlineDisplay.C:725
 onlineDisplay.C:726
 onlineDisplay.C:727
 onlineDisplay.C:728
 onlineDisplay.C:729
 onlineDisplay.C:730
 onlineDisplay.C:731
 onlineDisplay.C:732
 onlineDisplay.C:733
 onlineDisplay.C:734
 onlineDisplay.C:735
 onlineDisplay.C:736
 onlineDisplay.C:737
 onlineDisplay.C:738
 onlineDisplay.C:739
 onlineDisplay.C:740
 onlineDisplay.C:741
 onlineDisplay.C:742
 onlineDisplay.C:743
 onlineDisplay.C:744
 onlineDisplay.C:745
 onlineDisplay.C:746
 onlineDisplay.C:747
 onlineDisplay.C:748
 onlineDisplay.C:749
 onlineDisplay.C:750
 onlineDisplay.C:751
 onlineDisplay.C:752
 onlineDisplay.C:753
 onlineDisplay.C:754
 onlineDisplay.C:755
 onlineDisplay.C:756
 onlineDisplay.C:757
 onlineDisplay.C:758
 onlineDisplay.C:759
 onlineDisplay.C:760
 onlineDisplay.C:761
 onlineDisplay.C:762
 onlineDisplay.C:763
 onlineDisplay.C:764
 onlineDisplay.C:765
 onlineDisplay.C:766
 onlineDisplay.C:767
 onlineDisplay.C:768
 onlineDisplay.C:769
 onlineDisplay.C:770
 onlineDisplay.C:771
 onlineDisplay.C:772
 onlineDisplay.C:773
 onlineDisplay.C:774
 onlineDisplay.C:775
 onlineDisplay.C:776
 onlineDisplay.C:777
 onlineDisplay.C:778
 onlineDisplay.C:779
 onlineDisplay.C:780
 onlineDisplay.C:781
 onlineDisplay.C:782
 onlineDisplay.C:783
 onlineDisplay.C:784
 onlineDisplay.C:785
 onlineDisplay.C:786
 onlineDisplay.C:787
 onlineDisplay.C:788
 onlineDisplay.C:789
 onlineDisplay.C:790
 onlineDisplay.C:791
 onlineDisplay.C:792
 onlineDisplay.C:793
 onlineDisplay.C:794
 onlineDisplay.C:795
 onlineDisplay.C:796
 onlineDisplay.C:797
 onlineDisplay.C:798
 onlineDisplay.C:799
 onlineDisplay.C:800
 onlineDisplay.C:801
 onlineDisplay.C:802
 onlineDisplay.C:803
 onlineDisplay.C:804
 onlineDisplay.C:805
 onlineDisplay.C:806
 onlineDisplay.C:807
 onlineDisplay.C:808
 onlineDisplay.C:809
 onlineDisplay.C:810
 onlineDisplay.C:811
 onlineDisplay.C:812
 onlineDisplay.C:813
 onlineDisplay.C:814
 onlineDisplay.C:815
 onlineDisplay.C:816
 onlineDisplay.C:817
 onlineDisplay.C:818
 onlineDisplay.C:819
 onlineDisplay.C:820
 onlineDisplay.C:821
 onlineDisplay.C:822
 onlineDisplay.C:823
 onlineDisplay.C:824
 onlineDisplay.C:825
 onlineDisplay.C:826
 onlineDisplay.C:827
 onlineDisplay.C:828
 onlineDisplay.C:829
 onlineDisplay.C:830
 onlineDisplay.C:831
 onlineDisplay.C:832
 onlineDisplay.C:833
 onlineDisplay.C:834
 onlineDisplay.C:835
 onlineDisplay.C:836
 onlineDisplay.C:837
 onlineDisplay.C:838
 onlineDisplay.C:839
 onlineDisplay.C:840
 onlineDisplay.C:841
 onlineDisplay.C:842
 onlineDisplay.C:843
 onlineDisplay.C:844
 onlineDisplay.C:845
 onlineDisplay.C:846
 onlineDisplay.C:847
 onlineDisplay.C:848
 onlineDisplay.C:849
 onlineDisplay.C:850
 onlineDisplay.C:851
 onlineDisplay.C:852
 onlineDisplay.C:853
 onlineDisplay.C:854
 onlineDisplay.C:855
 onlineDisplay.C:856
 onlineDisplay.C:857
 onlineDisplay.C:858
 onlineDisplay.C:859
 onlineDisplay.C:860
 onlineDisplay.C:861
 onlineDisplay.C:862
 onlineDisplay.C:863
 onlineDisplay.C:864
 onlineDisplay.C:865
 onlineDisplay.C:866
 onlineDisplay.C:867
 onlineDisplay.C:868
 onlineDisplay.C:869
 onlineDisplay.C:870
 onlineDisplay.C:871
 onlineDisplay.C:872
 onlineDisplay.C:873
 onlineDisplay.C:874
 onlineDisplay.C:875
 onlineDisplay.C:876
 onlineDisplay.C:877
 onlineDisplay.C:878
 onlineDisplay.C:879
 onlineDisplay.C:880
 onlineDisplay.C:881
 onlineDisplay.C:882
 onlineDisplay.C:883
 onlineDisplay.C:884
 onlineDisplay.C:885
 onlineDisplay.C:886
 onlineDisplay.C:887
 onlineDisplay.C:888
 onlineDisplay.C:889
 onlineDisplay.C:890
 onlineDisplay.C:891
 onlineDisplay.C:892
 onlineDisplay.C:893
 onlineDisplay.C:894
 onlineDisplay.C:895
 onlineDisplay.C:896
 onlineDisplay.C:897
 onlineDisplay.C:898
 onlineDisplay.C:899
 onlineDisplay.C:900
 onlineDisplay.C:901
 onlineDisplay.C:902
 onlineDisplay.C:903
 onlineDisplay.C:904
 onlineDisplay.C:905
 onlineDisplay.C:906
 onlineDisplay.C:907
 onlineDisplay.C:908
 onlineDisplay.C:909
 onlineDisplay.C:910
 onlineDisplay.C:911
 onlineDisplay.C:912
 onlineDisplay.C:913
 onlineDisplay.C:914
 onlineDisplay.C:915
 onlineDisplay.C:916
 onlineDisplay.C:917
 onlineDisplay.C:918
 onlineDisplay.C:919
 onlineDisplay.C:920
 onlineDisplay.C:921
 onlineDisplay.C:922
 onlineDisplay.C:923
 onlineDisplay.C:924
 onlineDisplay.C:925
 onlineDisplay.C:926
 onlineDisplay.C:927
 onlineDisplay.C:928
 onlineDisplay.C:929
 onlineDisplay.C:930
 onlineDisplay.C:931
 onlineDisplay.C:932
 onlineDisplay.C:933
 onlineDisplay.C:934
 onlineDisplay.C:935
 onlineDisplay.C:936
 onlineDisplay.C:937
 onlineDisplay.C:938
 onlineDisplay.C:939
 onlineDisplay.C:940
 onlineDisplay.C:941
 onlineDisplay.C:942
 onlineDisplay.C:943
 onlineDisplay.C:944
 onlineDisplay.C:945
 onlineDisplay.C:946
 onlineDisplay.C:947
 onlineDisplay.C:948
 onlineDisplay.C:949
 onlineDisplay.C:950
 onlineDisplay.C:951
 onlineDisplay.C:952
 onlineDisplay.C:953
 onlineDisplay.C:954
 onlineDisplay.C:955
 onlineDisplay.C:956
 onlineDisplay.C:957
 onlineDisplay.C:958
 onlineDisplay.C:959
 onlineDisplay.C:960
 onlineDisplay.C:961
 onlineDisplay.C:962
 onlineDisplay.C:963
 onlineDisplay.C:964
 onlineDisplay.C:965
 onlineDisplay.C:966
 onlineDisplay.C:967
 onlineDisplay.C:968
 onlineDisplay.C:969
 onlineDisplay.C:970
 onlineDisplay.C:971
 onlineDisplay.C:972
 onlineDisplay.C:973
 onlineDisplay.C:974
 onlineDisplay.C:975
 onlineDisplay.C:976
 onlineDisplay.C:977
 onlineDisplay.C:978
 onlineDisplay.C:979
 onlineDisplay.C:980
 onlineDisplay.C:981
 onlineDisplay.C:982
 onlineDisplay.C:983
 onlineDisplay.C:984
 onlineDisplay.C:985
 onlineDisplay.C:986
 onlineDisplay.C:987
 onlineDisplay.C:988
 onlineDisplay.C:989
 onlineDisplay.C:990
 onlineDisplay.C:991
 onlineDisplay.C:992
 onlineDisplay.C:993
 onlineDisplay.C:994
 onlineDisplay.C:995
 onlineDisplay.C:996
 onlineDisplay.C:997
 onlineDisplay.C:998
 onlineDisplay.C:999
 onlineDisplay.C:1000
 onlineDisplay.C:1001
 onlineDisplay.C:1002
 onlineDisplay.C:1003
 onlineDisplay.C:1004
 onlineDisplay.C:1005
 onlineDisplay.C:1006
 onlineDisplay.C:1007
 onlineDisplay.C:1008
 onlineDisplay.C:1009
 onlineDisplay.C:1010
 onlineDisplay.C:1011
 onlineDisplay.C:1012
 onlineDisplay.C:1013
 onlineDisplay.C:1014
 onlineDisplay.C:1015
 onlineDisplay.C:1016
 onlineDisplay.C:1017
 onlineDisplay.C:1018
 onlineDisplay.C:1019
 onlineDisplay.C:1020
 onlineDisplay.C:1021
 onlineDisplay.C:1022
 onlineDisplay.C:1023
 onlineDisplay.C:1024
 onlineDisplay.C:1025
 onlineDisplay.C:1026
 onlineDisplay.C:1027
 onlineDisplay.C:1028
 onlineDisplay.C:1029
 onlineDisplay.C:1030
 onlineDisplay.C:1031
 onlineDisplay.C:1032
 onlineDisplay.C:1033
 onlineDisplay.C:1034
 onlineDisplay.C:1035
 onlineDisplay.C:1036
 onlineDisplay.C:1037
 onlineDisplay.C:1038
 onlineDisplay.C:1039
 onlineDisplay.C:1040
 onlineDisplay.C:1041
 onlineDisplay.C:1042
 onlineDisplay.C:1043
 onlineDisplay.C:1044
 onlineDisplay.C:1045
 onlineDisplay.C:1046
 onlineDisplay.C:1047
 onlineDisplay.C:1048
 onlineDisplay.C:1049
 onlineDisplay.C:1050
 onlineDisplay.C:1051
 onlineDisplay.C:1052
 onlineDisplay.C:1053
 onlineDisplay.C:1054
 onlineDisplay.C:1055
 onlineDisplay.C:1056
 onlineDisplay.C:1057
 onlineDisplay.C:1058
 onlineDisplay.C:1059
 onlineDisplay.C:1060
 onlineDisplay.C:1061
 onlineDisplay.C:1062
 onlineDisplay.C:1063
 onlineDisplay.C:1064
 onlineDisplay.C:1065
 onlineDisplay.C:1066
 onlineDisplay.C:1067
 onlineDisplay.C:1068
 onlineDisplay.C:1069
 onlineDisplay.C:1070
 onlineDisplay.C:1071
 onlineDisplay.C:1072
 onlineDisplay.C:1073
 onlineDisplay.C:1074
 onlineDisplay.C:1075
 onlineDisplay.C:1076
 onlineDisplay.C:1077
 onlineDisplay.C:1078
 onlineDisplay.C:1079
 onlineDisplay.C:1080
 onlineDisplay.C:1081
 onlineDisplay.C:1082
 onlineDisplay.C:1083
 onlineDisplay.C:1084
 onlineDisplay.C:1085
 onlineDisplay.C:1086
 onlineDisplay.C:1087
 onlineDisplay.C:1088
 onlineDisplay.C:1089
 onlineDisplay.C:1090
 onlineDisplay.C:1091
 onlineDisplay.C:1092
 onlineDisplay.C:1093
 onlineDisplay.C:1094
 onlineDisplay.C:1095
 onlineDisplay.C:1096
 onlineDisplay.C:1097
 onlineDisplay.C:1098
 onlineDisplay.C:1099
 onlineDisplay.C:1100
 onlineDisplay.C:1101
 onlineDisplay.C:1102
 onlineDisplay.C:1103
 onlineDisplay.C:1104
 onlineDisplay.C:1105
 onlineDisplay.C:1106
 onlineDisplay.C:1107
 onlineDisplay.C:1108
 onlineDisplay.C:1109
 onlineDisplay.C:1110
 onlineDisplay.C:1111
 onlineDisplay.C:1112
 onlineDisplay.C:1113
 onlineDisplay.C:1114
 onlineDisplay.C:1115
 onlineDisplay.C:1116
 onlineDisplay.C:1117
 onlineDisplay.C:1118
 onlineDisplay.C:1119
 onlineDisplay.C:1120
 onlineDisplay.C:1121
 onlineDisplay.C:1122
 onlineDisplay.C:1123
 onlineDisplay.C:1124
 onlineDisplay.C:1125
 onlineDisplay.C:1126
 onlineDisplay.C:1127
 onlineDisplay.C:1128
 onlineDisplay.C:1129
 onlineDisplay.C:1130
 onlineDisplay.C:1131
 onlineDisplay.C:1132
 onlineDisplay.C:1133
 onlineDisplay.C:1134
 onlineDisplay.C:1135
 onlineDisplay.C:1136
 onlineDisplay.C:1137
 onlineDisplay.C:1138
 onlineDisplay.C:1139
 onlineDisplay.C:1140
 onlineDisplay.C:1141
 onlineDisplay.C:1142
 onlineDisplay.C:1143
 onlineDisplay.C:1144
 onlineDisplay.C:1145
 onlineDisplay.C:1146
 onlineDisplay.C:1147
 onlineDisplay.C:1148
 onlineDisplay.C:1149
 onlineDisplay.C:1150
 onlineDisplay.C:1151
 onlineDisplay.C:1152
 onlineDisplay.C:1153
 onlineDisplay.C:1154
 onlineDisplay.C:1155
 onlineDisplay.C:1156
 onlineDisplay.C:1157
 onlineDisplay.C:1158
 onlineDisplay.C:1159
 onlineDisplay.C:1160
 onlineDisplay.C:1161
 onlineDisplay.C:1162
 onlineDisplay.C:1163
 onlineDisplay.C:1164
 onlineDisplay.C:1165
 onlineDisplay.C:1166
 onlineDisplay.C:1167
 onlineDisplay.C:1168
 onlineDisplay.C:1169
 onlineDisplay.C:1170
 onlineDisplay.C:1171
 onlineDisplay.C:1172
 onlineDisplay.C:1173
 onlineDisplay.C:1174
 onlineDisplay.C:1175
 onlineDisplay.C:1176
 onlineDisplay.C:1177
 onlineDisplay.C:1178
 onlineDisplay.C:1179
 onlineDisplay.C:1180
 onlineDisplay.C:1181
 onlineDisplay.C:1182
 onlineDisplay.C:1183
 onlineDisplay.C:1184
 onlineDisplay.C:1185
 onlineDisplay.C:1186
 onlineDisplay.C:1187
 onlineDisplay.C:1188
 onlineDisplay.C:1189
 onlineDisplay.C:1190
 onlineDisplay.C:1191
 onlineDisplay.C:1192
 onlineDisplay.C:1193
 onlineDisplay.C:1194
 onlineDisplay.C:1195
 onlineDisplay.C:1196
 onlineDisplay.C:1197
 onlineDisplay.C:1198
 onlineDisplay.C:1199
 onlineDisplay.C:1200
 onlineDisplay.C:1201
 onlineDisplay.C:1202
 onlineDisplay.C:1203
 onlineDisplay.C:1204
 onlineDisplay.C:1205
 onlineDisplay.C:1206
 onlineDisplay.C:1207
 onlineDisplay.C:1208
 onlineDisplay.C:1209
 onlineDisplay.C:1210
 onlineDisplay.C:1211
 onlineDisplay.C:1212
 onlineDisplay.C:1213
 onlineDisplay.C:1214
 onlineDisplay.C:1215
 onlineDisplay.C:1216
 onlineDisplay.C:1217
 onlineDisplay.C:1218
 onlineDisplay.C:1219
 onlineDisplay.C:1220
 onlineDisplay.C:1221
 onlineDisplay.C:1222
 onlineDisplay.C:1223
 onlineDisplay.C:1224
 onlineDisplay.C:1225
 onlineDisplay.C:1226
 onlineDisplay.C:1227
 onlineDisplay.C:1228
 onlineDisplay.C:1229
 onlineDisplay.C:1230
 onlineDisplay.C:1231
 onlineDisplay.C:1232
 onlineDisplay.C:1233
 onlineDisplay.C:1234
 onlineDisplay.C:1235
 onlineDisplay.C:1236
 onlineDisplay.C:1237
 onlineDisplay.C:1238
 onlineDisplay.C:1239
 onlineDisplay.C:1240
 onlineDisplay.C:1241
 onlineDisplay.C:1242
 onlineDisplay.C:1243
 onlineDisplay.C:1244
 onlineDisplay.C:1245
 onlineDisplay.C:1246
 onlineDisplay.C:1247
 onlineDisplay.C:1248
 onlineDisplay.C:1249
 onlineDisplay.C:1250
 onlineDisplay.C:1251
 onlineDisplay.C:1252
 onlineDisplay.C:1253
 onlineDisplay.C:1254
 onlineDisplay.C:1255
 onlineDisplay.C:1256
 onlineDisplay.C:1257
 onlineDisplay.C:1258
 onlineDisplay.C:1259
 onlineDisplay.C:1260
 onlineDisplay.C:1261
 onlineDisplay.C:1262
 onlineDisplay.C:1263
 onlineDisplay.C:1264
 onlineDisplay.C:1265
 onlineDisplay.C:1266
 onlineDisplay.C:1267
 onlineDisplay.C:1268
 onlineDisplay.C:1269
 onlineDisplay.C:1270
 onlineDisplay.C:1271
 onlineDisplay.C:1272
 onlineDisplay.C:1273
 onlineDisplay.C:1274
 onlineDisplay.C:1275
 onlineDisplay.C:1276
 onlineDisplay.C:1277
 onlineDisplay.C:1278
 onlineDisplay.C:1279
 onlineDisplay.C:1280
 onlineDisplay.C:1281
 onlineDisplay.C:1282
 onlineDisplay.C:1283
 onlineDisplay.C:1284
 onlineDisplay.C:1285
 onlineDisplay.C:1286
 onlineDisplay.C:1287
 onlineDisplay.C:1288
 onlineDisplay.C:1289
 onlineDisplay.C:1290
 onlineDisplay.C:1291
 onlineDisplay.C:1292
 onlineDisplay.C:1293
 onlineDisplay.C:1294
 onlineDisplay.C:1295
 onlineDisplay.C:1296
 onlineDisplay.C:1297
 onlineDisplay.C:1298
 onlineDisplay.C:1299
 onlineDisplay.C:1300
 onlineDisplay.C:1301
 onlineDisplay.C:1302
 onlineDisplay.C:1303
 onlineDisplay.C:1304
 onlineDisplay.C:1305
 onlineDisplay.C:1306
 onlineDisplay.C:1307
 onlineDisplay.C:1308
 onlineDisplay.C:1309
 onlineDisplay.C:1310
 onlineDisplay.C:1311
 onlineDisplay.C:1312
 onlineDisplay.C:1313
 onlineDisplay.C:1314
 onlineDisplay.C:1315
 onlineDisplay.C:1316
 onlineDisplay.C:1317
 onlineDisplay.C:1318
 onlineDisplay.C:1319
 onlineDisplay.C:1320
 onlineDisplay.C:1321
 onlineDisplay.C:1322
 onlineDisplay.C:1323
 onlineDisplay.C:1324
 onlineDisplay.C:1325
 onlineDisplay.C:1326
 onlineDisplay.C:1327
 onlineDisplay.C:1328
 onlineDisplay.C:1329
 onlineDisplay.C:1330
 onlineDisplay.C:1331
 onlineDisplay.C:1332
 onlineDisplay.C:1333
 onlineDisplay.C:1334
 onlineDisplay.C:1335
 onlineDisplay.C:1336
 onlineDisplay.C:1337
 onlineDisplay.C:1338
 onlineDisplay.C:1339
 onlineDisplay.C:1340
 onlineDisplay.C:1341
 onlineDisplay.C:1342
 onlineDisplay.C:1343
 onlineDisplay.C:1344
 onlineDisplay.C:1345
 onlineDisplay.C:1346
 onlineDisplay.C:1347
 onlineDisplay.C:1348
 onlineDisplay.C:1349
 onlineDisplay.C:1350
 onlineDisplay.C:1351
 onlineDisplay.C:1352
 onlineDisplay.C:1353
 onlineDisplay.C:1354
 onlineDisplay.C:1355
 onlineDisplay.C:1356
 onlineDisplay.C:1357
 onlineDisplay.C:1358
 onlineDisplay.C:1359
 onlineDisplay.C:1360
 onlineDisplay.C:1361
 onlineDisplay.C:1362
 onlineDisplay.C:1363
 onlineDisplay.C:1364
 onlineDisplay.C:1365
 onlineDisplay.C:1366
 onlineDisplay.C:1367
 onlineDisplay.C:1368
 onlineDisplay.C:1369
 onlineDisplay.C:1370
 onlineDisplay.C:1371
 onlineDisplay.C:1372
 onlineDisplay.C:1373
 onlineDisplay.C:1374
 onlineDisplay.C:1375
 onlineDisplay.C:1376
 onlineDisplay.C:1377
 onlineDisplay.C:1378
 onlineDisplay.C:1379
 onlineDisplay.C:1380
 onlineDisplay.C:1381
 onlineDisplay.C:1382
 onlineDisplay.C:1383
 onlineDisplay.C:1384
 onlineDisplay.C:1385
 onlineDisplay.C:1386
 onlineDisplay.C:1387
 onlineDisplay.C:1388
 onlineDisplay.C:1389
 onlineDisplay.C:1390
 onlineDisplay.C:1391
 onlineDisplay.C:1392
 onlineDisplay.C:1393
 onlineDisplay.C:1394
 onlineDisplay.C:1395
 onlineDisplay.C:1396
 onlineDisplay.C:1397
 onlineDisplay.C:1398
 onlineDisplay.C:1399
 onlineDisplay.C:1400
 onlineDisplay.C:1401
 onlineDisplay.C:1402
 onlineDisplay.C:1403
 onlineDisplay.C:1404
 onlineDisplay.C:1405
 onlineDisplay.C:1406
 onlineDisplay.C:1407
 onlineDisplay.C:1408
 onlineDisplay.C:1409
 onlineDisplay.C:1410
 onlineDisplay.C:1411
 onlineDisplay.C:1412
 onlineDisplay.C:1413
 onlineDisplay.C:1414
 onlineDisplay.C:1415
 onlineDisplay.C:1416
 onlineDisplay.C:1417
 onlineDisplay.C:1418
 onlineDisplay.C:1419
 onlineDisplay.C:1420
 onlineDisplay.C:1421
 onlineDisplay.C:1422
 onlineDisplay.C:1423
 onlineDisplay.C:1424
 onlineDisplay.C:1425
 onlineDisplay.C:1426
 onlineDisplay.C:1427
 onlineDisplay.C:1428
 onlineDisplay.C:1429
 onlineDisplay.C:1430
 onlineDisplay.C:1431
 onlineDisplay.C:1432
 onlineDisplay.C:1433
 onlineDisplay.C:1434
 onlineDisplay.C:1435
 onlineDisplay.C:1436
 onlineDisplay.C:1437
 onlineDisplay.C:1438
 onlineDisplay.C:1439
 onlineDisplay.C:1440
 onlineDisplay.C:1441
 onlineDisplay.C:1442
 onlineDisplay.C:1443
 onlineDisplay.C:1444
 onlineDisplay.C:1445
 onlineDisplay.C:1446
 onlineDisplay.C:1447
 onlineDisplay.C:1448
 onlineDisplay.C:1449
 onlineDisplay.C:1450
 onlineDisplay.C:1451
 onlineDisplay.C:1452
 onlineDisplay.C:1453
 onlineDisplay.C:1454
 onlineDisplay.C:1455
 onlineDisplay.C:1456
 onlineDisplay.C:1457
 onlineDisplay.C:1458
 onlineDisplay.C:1459
 onlineDisplay.C:1460
 onlineDisplay.C:1461
 onlineDisplay.C:1462
 onlineDisplay.C:1463
 onlineDisplay.C:1464
 onlineDisplay.C:1465
 onlineDisplay.C:1466
 onlineDisplay.C:1467
 onlineDisplay.C:1468
 onlineDisplay.C:1469
 onlineDisplay.C:1470
 onlineDisplay.C:1471
 onlineDisplay.C:1472
 onlineDisplay.C:1473
 onlineDisplay.C:1474
 onlineDisplay.C:1475
 onlineDisplay.C:1476
 onlineDisplay.C:1477
 onlineDisplay.C:1478
 onlineDisplay.C:1479
 onlineDisplay.C:1480
 onlineDisplay.C:1481
 onlineDisplay.C:1482
 onlineDisplay.C:1483
 onlineDisplay.C:1484
 onlineDisplay.C:1485
 onlineDisplay.C:1486
 onlineDisplay.C:1487
 onlineDisplay.C:1488
 onlineDisplay.C:1489
 onlineDisplay.C:1490
 onlineDisplay.C:1491
 onlineDisplay.C:1492
 onlineDisplay.C:1493
 onlineDisplay.C:1494
 onlineDisplay.C:1495
 onlineDisplay.C:1496
 onlineDisplay.C:1497
 onlineDisplay.C:1498
 onlineDisplay.C:1499
 onlineDisplay.C:1500
 onlineDisplay.C:1501
 onlineDisplay.C:1502
 onlineDisplay.C:1503
 onlineDisplay.C:1504
 onlineDisplay.C:1505
 onlineDisplay.C:1506
 onlineDisplay.C:1507
 onlineDisplay.C:1508
 onlineDisplay.C:1509
 onlineDisplay.C:1510
 onlineDisplay.C:1511
 onlineDisplay.C:1512
 onlineDisplay.C:1513
 onlineDisplay.C:1514
 onlineDisplay.C:1515
 onlineDisplay.C:1516
 onlineDisplay.C:1517
 onlineDisplay.C:1518
 onlineDisplay.C:1519
 onlineDisplay.C:1520
 onlineDisplay.C:1521
 onlineDisplay.C:1522
 onlineDisplay.C:1523
 onlineDisplay.C:1524
 onlineDisplay.C:1525
 onlineDisplay.C:1526
 onlineDisplay.C:1527
 onlineDisplay.C:1528
 onlineDisplay.C:1529
 onlineDisplay.C:1530
 onlineDisplay.C:1531
 onlineDisplay.C:1532
 onlineDisplay.C:1533
 onlineDisplay.C:1534
 onlineDisplay.C:1535
 onlineDisplay.C:1536
 onlineDisplay.C:1537
 onlineDisplay.C:1538
 onlineDisplay.C:1539
 onlineDisplay.C:1540
 onlineDisplay.C:1541
 onlineDisplay.C:1542
 onlineDisplay.C:1543
 onlineDisplay.C:1544
 onlineDisplay.C:1545
 onlineDisplay.C:1546
 onlineDisplay.C:1547
 onlineDisplay.C:1548
 onlineDisplay.C:1549
 onlineDisplay.C:1550
 onlineDisplay.C:1551
 onlineDisplay.C:1552
 onlineDisplay.C:1553
 onlineDisplay.C:1554
 onlineDisplay.C:1555
 onlineDisplay.C:1556
 onlineDisplay.C:1557
 onlineDisplay.C:1558
 onlineDisplay.C:1559
 onlineDisplay.C:1560
 onlineDisplay.C:1561
 onlineDisplay.C:1562
 onlineDisplay.C:1563
 onlineDisplay.C:1564
 onlineDisplay.C:1565
 onlineDisplay.C:1566
 onlineDisplay.C:1567
 onlineDisplay.C:1568
 onlineDisplay.C:1569
 onlineDisplay.C:1570
 onlineDisplay.C:1571
 onlineDisplay.C:1572
 onlineDisplay.C:1573
 onlineDisplay.C:1574
 onlineDisplay.C:1575
 onlineDisplay.C:1576
 onlineDisplay.C:1577
 onlineDisplay.C:1578
 onlineDisplay.C:1579
 onlineDisplay.C:1580
 onlineDisplay.C:1581
 onlineDisplay.C:1582
 onlineDisplay.C:1583
 onlineDisplay.C:1584
 onlineDisplay.C:1585
 onlineDisplay.C:1586
 onlineDisplay.C:1587
 onlineDisplay.C:1588
 onlineDisplay.C:1589
 onlineDisplay.C:1590
 onlineDisplay.C:1591
 onlineDisplay.C:1592
 onlineDisplay.C:1593
 onlineDisplay.C:1594
 onlineDisplay.C:1595
 onlineDisplay.C:1596
 onlineDisplay.C:1597
 onlineDisplay.C:1598
 onlineDisplay.C:1599
 onlineDisplay.C:1600
 onlineDisplay.C:1601
 onlineDisplay.C:1602
 onlineDisplay.C:1603
 onlineDisplay.C:1604
 onlineDisplay.C:1605
 onlineDisplay.C:1606
 onlineDisplay.C:1607
 onlineDisplay.C:1608
 onlineDisplay.C:1609
 onlineDisplay.C:1610
 onlineDisplay.C:1611
 onlineDisplay.C:1612
 onlineDisplay.C:1613
 onlineDisplay.C:1614
 onlineDisplay.C:1615
 onlineDisplay.C:1616
 onlineDisplay.C:1617
 onlineDisplay.C:1618
 onlineDisplay.C:1619
 onlineDisplay.C:1620
 onlineDisplay.C:1621
 onlineDisplay.C:1622
 onlineDisplay.C:1623
 onlineDisplay.C:1624
 onlineDisplay.C:1625
 onlineDisplay.C:1626
 onlineDisplay.C:1627
 onlineDisplay.C:1628
 onlineDisplay.C:1629
 onlineDisplay.C:1630
 onlineDisplay.C:1631
 onlineDisplay.C:1632
 onlineDisplay.C:1633
 onlineDisplay.C:1634
 onlineDisplay.C:1635
 onlineDisplay.C:1636
 onlineDisplay.C:1637
 onlineDisplay.C:1638
 onlineDisplay.C:1639
 onlineDisplay.C:1640
 onlineDisplay.C:1641
 onlineDisplay.C:1642
 onlineDisplay.C:1643
 onlineDisplay.C:1644
 onlineDisplay.C:1645
 onlineDisplay.C:1646
 onlineDisplay.C:1647
 onlineDisplay.C:1648
 onlineDisplay.C:1649
 onlineDisplay.C:1650
 onlineDisplay.C:1651
 onlineDisplay.C:1652
 onlineDisplay.C:1653
 onlineDisplay.C:1654
 onlineDisplay.C:1655
 onlineDisplay.C:1656
 onlineDisplay.C:1657
 onlineDisplay.C:1658
 onlineDisplay.C:1659
 onlineDisplay.C:1660
 onlineDisplay.C:1661
 onlineDisplay.C:1662
 onlineDisplay.C:1663
 onlineDisplay.C:1664
 onlineDisplay.C:1665
 onlineDisplay.C:1666
 onlineDisplay.C:1667
 onlineDisplay.C:1668
 onlineDisplay.C:1669
 onlineDisplay.C:1670
 onlineDisplay.C:1671
 onlineDisplay.C:1672
 onlineDisplay.C:1673
 onlineDisplay.C:1674
 onlineDisplay.C:1675
 onlineDisplay.C:1676
 onlineDisplay.C:1677
 onlineDisplay.C:1678
 onlineDisplay.C:1679
 onlineDisplay.C:1680
 onlineDisplay.C:1681
 onlineDisplay.C:1682
 onlineDisplay.C:1683
 onlineDisplay.C:1684
 onlineDisplay.C:1685
 onlineDisplay.C:1686
 onlineDisplay.C:1687
 onlineDisplay.C:1688
 onlineDisplay.C:1689
 onlineDisplay.C:1690
 onlineDisplay.C:1691
 onlineDisplay.C:1692
 onlineDisplay.C:1693
 onlineDisplay.C:1694
 onlineDisplay.C:1695
 onlineDisplay.C:1696
 onlineDisplay.C:1697
 onlineDisplay.C:1698
 onlineDisplay.C:1699
 onlineDisplay.C:1700
 onlineDisplay.C:1701
 onlineDisplay.C:1702
 onlineDisplay.C:1703
 onlineDisplay.C:1704
 onlineDisplay.C:1705
 onlineDisplay.C:1706
 onlineDisplay.C:1707
 onlineDisplay.C:1708
 onlineDisplay.C:1709
 onlineDisplay.C:1710
 onlineDisplay.C:1711
 onlineDisplay.C:1712
 onlineDisplay.C:1713
 onlineDisplay.C:1714
 onlineDisplay.C:1715
 onlineDisplay.C:1716
 onlineDisplay.C:1717
 onlineDisplay.C:1718
 onlineDisplay.C:1719
 onlineDisplay.C:1720
 onlineDisplay.C:1721
 onlineDisplay.C:1722
 onlineDisplay.C:1723
 onlineDisplay.C:1724
 onlineDisplay.C:1725
 onlineDisplay.C:1726
 onlineDisplay.C:1727
 onlineDisplay.C:1728
 onlineDisplay.C:1729
 onlineDisplay.C:1730
 onlineDisplay.C:1731
 onlineDisplay.C:1732
 onlineDisplay.C:1733
 onlineDisplay.C:1734
 onlineDisplay.C:1735
 onlineDisplay.C:1736
 onlineDisplay.C:1737
 onlineDisplay.C:1738
 onlineDisplay.C:1739
 onlineDisplay.C:1740
 onlineDisplay.C:1741
 onlineDisplay.C:1742
 onlineDisplay.C:1743
 onlineDisplay.C:1744
 onlineDisplay.C:1745
 onlineDisplay.C:1746
 onlineDisplay.C:1747
 onlineDisplay.C:1748
 onlineDisplay.C:1749
 onlineDisplay.C:1750
 onlineDisplay.C:1751
 onlineDisplay.C:1752
 onlineDisplay.C:1753
 onlineDisplay.C:1754
 onlineDisplay.C:1755
 onlineDisplay.C:1756
 onlineDisplay.C:1757
 onlineDisplay.C:1758
 onlineDisplay.C:1759
 onlineDisplay.C:1760
 onlineDisplay.C:1761
 onlineDisplay.C:1762
 onlineDisplay.C:1763
 onlineDisplay.C:1764
 onlineDisplay.C:1765
 onlineDisplay.C:1766
 onlineDisplay.C:1767
 onlineDisplay.C:1768
 onlineDisplay.C:1769
 onlineDisplay.C:1770
 onlineDisplay.C:1771
 onlineDisplay.C:1772
 onlineDisplay.C:1773
 onlineDisplay.C:1774
 onlineDisplay.C:1775
 onlineDisplay.C:1776
 onlineDisplay.C:1777
 onlineDisplay.C:1778
 onlineDisplay.C:1779
 onlineDisplay.C:1780
 onlineDisplay.C:1781
 onlineDisplay.C:1782
 onlineDisplay.C:1783
 onlineDisplay.C:1784
 onlineDisplay.C:1785
 onlineDisplay.C:1786
 onlineDisplay.C:1787
 onlineDisplay.C:1788
 onlineDisplay.C:1789
 onlineDisplay.C:1790
 onlineDisplay.C:1791
 onlineDisplay.C:1792
 onlineDisplay.C:1793
 onlineDisplay.C:1794
 onlineDisplay.C:1795
 onlineDisplay.C:1796
 onlineDisplay.C:1797
 onlineDisplay.C:1798
 onlineDisplay.C:1799
 onlineDisplay.C:1800
 onlineDisplay.C:1801
 onlineDisplay.C:1802
 onlineDisplay.C:1803
 onlineDisplay.C:1804
 onlineDisplay.C:1805
 onlineDisplay.C:1806
 onlineDisplay.C:1807
 onlineDisplay.C:1808
 onlineDisplay.C:1809
 onlineDisplay.C:1810
 onlineDisplay.C:1811
 onlineDisplay.C:1812
 onlineDisplay.C:1813
 onlineDisplay.C:1814
 onlineDisplay.C:1815
 onlineDisplay.C:1816
 onlineDisplay.C:1817
 onlineDisplay.C:1818
 onlineDisplay.C:1819
 onlineDisplay.C:1820
 onlineDisplay.C:1821
 onlineDisplay.C:1822
 onlineDisplay.C:1823
 onlineDisplay.C:1824
 onlineDisplay.C:1825
 onlineDisplay.C:1826
 onlineDisplay.C:1827
 onlineDisplay.C:1828
 onlineDisplay.C:1829
 onlineDisplay.C:1830
 onlineDisplay.C:1831
 onlineDisplay.C:1832
 onlineDisplay.C:1833
 onlineDisplay.C:1834
 onlineDisplay.C:1835
 onlineDisplay.C:1836
 onlineDisplay.C:1837
 onlineDisplay.C:1838
 onlineDisplay.C:1839
 onlineDisplay.C:1840
 onlineDisplay.C:1841
 onlineDisplay.C:1842
 onlineDisplay.C:1843
 onlineDisplay.C:1844
 onlineDisplay.C:1845
 onlineDisplay.C:1846
 onlineDisplay.C:1847
 onlineDisplay.C:1848
 onlineDisplay.C:1849
 onlineDisplay.C:1850
 onlineDisplay.C:1851
 onlineDisplay.C:1852
 onlineDisplay.C:1853
 onlineDisplay.C:1854
 onlineDisplay.C:1855
 onlineDisplay.C:1856
 onlineDisplay.C:1857
 onlineDisplay.C:1858
 onlineDisplay.C:1859
 onlineDisplay.C:1860
 onlineDisplay.C:1861
 onlineDisplay.C:1862
 onlineDisplay.C:1863
 onlineDisplay.C:1864
 onlineDisplay.C:1865
 onlineDisplay.C:1866
 onlineDisplay.C:1867
 onlineDisplay.C:1868
 onlineDisplay.C:1869
 onlineDisplay.C:1870
 onlineDisplay.C:1871
 onlineDisplay.C:1872
 onlineDisplay.C:1873
 onlineDisplay.C:1874
 onlineDisplay.C:1875
 onlineDisplay.C:1876
 onlineDisplay.C:1877
 onlineDisplay.C:1878
 onlineDisplay.C:1879
 onlineDisplay.C:1880
 onlineDisplay.C:1881
 onlineDisplay.C:1882
 onlineDisplay.C:1883
 onlineDisplay.C:1884
 onlineDisplay.C:1885
 onlineDisplay.C:1886
 onlineDisplay.C:1887
 onlineDisplay.C:1888
 onlineDisplay.C:1889
 onlineDisplay.C:1890
 onlineDisplay.C:1891
 onlineDisplay.C:1892
 onlineDisplay.C:1893
 onlineDisplay.C:1894
 onlineDisplay.C:1895
 onlineDisplay.C:1896
 onlineDisplay.C:1897
 onlineDisplay.C:1898
 onlineDisplay.C:1899
 onlineDisplay.C:1900
 onlineDisplay.C:1901
 onlineDisplay.C:1902
 onlineDisplay.C:1903
 onlineDisplay.C:1904
 onlineDisplay.C:1905
 onlineDisplay.C:1906
 onlineDisplay.C:1907
 onlineDisplay.C:1908
 onlineDisplay.C:1909
 onlineDisplay.C:1910
 onlineDisplay.C:1911
 onlineDisplay.C:1912
 onlineDisplay.C:1913
 onlineDisplay.C:1914
 onlineDisplay.C:1915
 onlineDisplay.C:1916
 onlineDisplay.C:1917
 onlineDisplay.C:1918
 onlineDisplay.C:1919
 onlineDisplay.C:1920
 onlineDisplay.C:1921
 onlineDisplay.C:1922
 onlineDisplay.C:1923
 onlineDisplay.C:1924
 onlineDisplay.C:1925
 onlineDisplay.C:1926
 onlineDisplay.C:1927
 onlineDisplay.C:1928
 onlineDisplay.C:1929
 onlineDisplay.C:1930
 onlineDisplay.C:1931
 onlineDisplay.C:1932
 onlineDisplay.C:1933
 onlineDisplay.C:1934
 onlineDisplay.C:1935
 onlineDisplay.C:1936
 onlineDisplay.C:1937
 onlineDisplay.C:1938
 onlineDisplay.C:1939
 onlineDisplay.C:1940
 onlineDisplay.C:1941
 onlineDisplay.C:1942
 onlineDisplay.C:1943
 onlineDisplay.C:1944
 onlineDisplay.C:1945
 onlineDisplay.C:1946
 onlineDisplay.C:1947
 onlineDisplay.C:1948
 onlineDisplay.C:1949
 onlineDisplay.C:1950
 onlineDisplay.C:1951
 onlineDisplay.C:1952
 onlineDisplay.C:1953
 onlineDisplay.C:1954
 onlineDisplay.C:1955
 onlineDisplay.C:1956
 onlineDisplay.C:1957
 onlineDisplay.C:1958
 onlineDisplay.C:1959
 onlineDisplay.C:1960
 onlineDisplay.C:1961
 onlineDisplay.C:1962
 onlineDisplay.C:1963
 onlineDisplay.C:1964
 onlineDisplay.C:1965
 onlineDisplay.C:1966
 onlineDisplay.C:1967
 onlineDisplay.C:1968
 onlineDisplay.C:1969
 onlineDisplay.C:1970
 onlineDisplay.C:1971
 onlineDisplay.C:1972
 onlineDisplay.C:1973
 onlineDisplay.C:1974
 onlineDisplay.C:1975
 onlineDisplay.C:1976
 onlineDisplay.C:1977
 onlineDisplay.C:1978
 onlineDisplay.C:1979
 onlineDisplay.C:1980
 onlineDisplay.C:1981
 onlineDisplay.C:1982
 onlineDisplay.C:1983
 onlineDisplay.C:1984
 onlineDisplay.C:1985
 onlineDisplay.C:1986
 onlineDisplay.C:1987
 onlineDisplay.C:1988
 onlineDisplay.C:1989
 onlineDisplay.C:1990
 onlineDisplay.C:1991
 onlineDisplay.C:1992
 onlineDisplay.C:1993
 onlineDisplay.C:1994
 onlineDisplay.C:1995
 onlineDisplay.C:1996
 onlineDisplay.C:1997
 onlineDisplay.C:1998
 onlineDisplay.C:1999
 onlineDisplay.C:2000
 onlineDisplay.C:2001
 onlineDisplay.C:2002
 onlineDisplay.C:2003
 onlineDisplay.C:2004
 onlineDisplay.C:2005
 onlineDisplay.C:2006
 onlineDisplay.C:2007
 onlineDisplay.C:2008
 onlineDisplay.C:2009
 onlineDisplay.C:2010
 onlineDisplay.C:2011
 onlineDisplay.C:2012
 onlineDisplay.C:2013
 onlineDisplay.C:2014
 onlineDisplay.C:2015
 onlineDisplay.C:2016
 onlineDisplay.C:2017
 onlineDisplay.C:2018
 onlineDisplay.C:2019
 onlineDisplay.C:2020
 onlineDisplay.C:2021
 onlineDisplay.C:2022
 onlineDisplay.C:2023
 onlineDisplay.C:2024
 onlineDisplay.C:2025
 onlineDisplay.C:2026
 onlineDisplay.C:2027
 onlineDisplay.C:2028
 onlineDisplay.C:2029
 onlineDisplay.C:2030
 onlineDisplay.C:2031
 onlineDisplay.C:2032
 onlineDisplay.C:2033
 onlineDisplay.C:2034
 onlineDisplay.C:2035
 onlineDisplay.C:2036
 onlineDisplay.C:2037
 onlineDisplay.C:2038
 onlineDisplay.C:2039
 onlineDisplay.C:2040
 onlineDisplay.C:2041
 onlineDisplay.C:2042
 onlineDisplay.C:2043
 onlineDisplay.C:2044
 onlineDisplay.C:2045
 onlineDisplay.C:2046
 onlineDisplay.C:2047
 onlineDisplay.C:2048
 onlineDisplay.C:2049
 onlineDisplay.C:2050
 onlineDisplay.C:2051
 onlineDisplay.C:2052
 onlineDisplay.C:2053
 onlineDisplay.C:2054
 onlineDisplay.C:2055
 onlineDisplay.C:2056
 onlineDisplay.C:2057
 onlineDisplay.C:2058
 onlineDisplay.C:2059
 onlineDisplay.C:2060
 onlineDisplay.C:2061
 onlineDisplay.C:2062
 onlineDisplay.C:2063
 onlineDisplay.C:2064
 onlineDisplay.C:2065
 onlineDisplay.C:2066
 onlineDisplay.C:2067
 onlineDisplay.C:2068
 onlineDisplay.C:2069
 onlineDisplay.C:2070
 onlineDisplay.C:2071
 onlineDisplay.C:2072
 onlineDisplay.C:2073
 onlineDisplay.C:2074
 onlineDisplay.C:2075
 onlineDisplay.C:2076
 onlineDisplay.C:2077
 onlineDisplay.C:2078
 onlineDisplay.C:2079
 onlineDisplay.C:2080
 onlineDisplay.C:2081
 onlineDisplay.C:2082
 onlineDisplay.C:2083
 onlineDisplay.C:2084
 onlineDisplay.C:2085
 onlineDisplay.C:2086
 onlineDisplay.C:2087
 onlineDisplay.C:2088
 onlineDisplay.C:2089
 onlineDisplay.C:2090
 onlineDisplay.C:2091
 onlineDisplay.C:2092
 onlineDisplay.C:2093
 onlineDisplay.C:2094
 onlineDisplay.C:2095
 onlineDisplay.C:2096
 onlineDisplay.C:2097
 onlineDisplay.C:2098
 onlineDisplay.C:2099
 onlineDisplay.C:2100
 onlineDisplay.C:2101
 onlineDisplay.C:2102
 onlineDisplay.C:2103
 onlineDisplay.C:2104
 onlineDisplay.C:2105
 onlineDisplay.C:2106
 onlineDisplay.C:2107
 onlineDisplay.C:2108
 onlineDisplay.C:2109
 onlineDisplay.C:2110
 onlineDisplay.C:2111
 onlineDisplay.C:2112
 onlineDisplay.C:2113
 onlineDisplay.C:2114
 onlineDisplay.C:2115
 onlineDisplay.C:2116
 onlineDisplay.C:2117
 onlineDisplay.C:2118
 onlineDisplay.C:2119
 onlineDisplay.C:2120
 onlineDisplay.C:2121
 onlineDisplay.C:2122
 onlineDisplay.C:2123
 onlineDisplay.C:2124
 onlineDisplay.C:2125
 onlineDisplay.C:2126
 onlineDisplay.C:2127
 onlineDisplay.C:2128
 onlineDisplay.C:2129
 onlineDisplay.C:2130
 onlineDisplay.C:2131
 onlineDisplay.C:2132
 onlineDisplay.C:2133
 onlineDisplay.C:2134
 onlineDisplay.C:2135
 onlineDisplay.C:2136
 onlineDisplay.C:2137
 onlineDisplay.C:2138
 onlineDisplay.C:2139
 onlineDisplay.C:2140
 onlineDisplay.C:2141
 onlineDisplay.C:2142
 onlineDisplay.C:2143
 onlineDisplay.C:2144
 onlineDisplay.C:2145
 onlineDisplay.C:2146
 onlineDisplay.C:2147
 onlineDisplay.C:2148
 onlineDisplay.C:2149
 onlineDisplay.C:2150
 onlineDisplay.C:2151
 onlineDisplay.C:2152
 onlineDisplay.C:2153
 onlineDisplay.C:2154
 onlineDisplay.C:2155
 onlineDisplay.C:2156
 onlineDisplay.C:2157
 onlineDisplay.C:2158
 onlineDisplay.C:2159
 onlineDisplay.C:2160
 onlineDisplay.C:2161
 onlineDisplay.C:2162
 onlineDisplay.C:2163
 onlineDisplay.C:2164
 onlineDisplay.C:2165
 onlineDisplay.C:2166
 onlineDisplay.C:2167
 onlineDisplay.C:2168
 onlineDisplay.C:2169
 onlineDisplay.C:2170
 onlineDisplay.C:2171
 onlineDisplay.C:2172
 onlineDisplay.C:2173
 onlineDisplay.C:2174
 onlineDisplay.C:2175