]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - EVE/hlt-macros/od.C
Merge branch 'multipleThreads' into newdevel
[u/mrichter/AliRoot.git] / EVE / hlt-macros / od.C
index 195ceca1e44fbe5f12e6337aa4d88baf38db672c..b08ca45a23fa1b967313f989e54db670251afc0c 100644 (file)
-//-*- 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 "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 "AliEveHOMERManager.h"
-
-#include "geom_gentle_hlt.C"
-
-#endif
-
-
-
-// -----------------------------------------------------------------
-// --                       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;
-
-
-// -----------------------------------------------------------------
-// --                         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;
-
-
-
-// -- 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 showBarrel, Bool_t showMuon );
-
-void writeToFile();
-
-
-// #################################################################
-// #################################################################
-// #################################################################
-
-// -----------------------------------------------------------------
-void od ( Bool_t showBarrel = kTRUE, Bool_t showMuon = 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;
-
-    // -- Initialize pointsets and add macros
-  // ----------------------------------------
-  //TEveUtil::LoadMacro("hlt_alieve_init.C");
-  //hlt_alieve_init(".", -1);
-
-  // -- Initialize Eve
-  // -------------------
-  initializeEveViewer( showBarrel, showMuon );
-
-  // -- Reset gGeoManager to the original pointer
-  // ----------------------------------------------
-
-  // -- Finalize Eve
-  // -----------------
-  gSystem->ProcessEvents();
-  gEve->Redraw3D(kTRUE);
-
-  // -- Create new hM object
-  // -------------------------
-  gHomerManager = new AliEveHOMERManager();
-  gHomerManager->SetRetryCount(1000,15);
-  gHomerManager->SetEveManager(gEve);
-  gHomerManager->SetGeoManager(gGeoManager);
-  gHomerManager->SetRPhiManager(gRPhiMgr);
-  gHomerManager->SetRPhiEventScene(gRPhiEventScene);
-  gHomerManager->SetRhoZManager(gRhoZMgr);
-  gHomerManager->SetRhoZEventScene(gRhoZEventScene);
-  gHomerManager->SetBarrelFlag(showBarrel);
-  gHomerManager->SetMuonFlag(showMuon);
-
-  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. Giving up. \n");
-    return;
-  } 
-
-
-  if ( showBarrel ) {
-    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;
-  }    
-
-  gGeoManager = fGeoManager;
-  
-
-}
-
-// -------------------------------------------------------------------------
-Int_t initializeEveViewer( Bool_t showBarrel, Bool_t showMuon ) {
-  
-  //=============================================================================
-  // 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 (!showMuon)
-    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);
-  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);
-  //ob2->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);
-
-
-  TGLOverlayButton *ne = new TGLOverlayButton(gEve->GetDefaultGLViewer(),  "Next Event", 110, 0, 210, 20);
-  ne->SetAlphaValues(0.0, 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();
-
-
-
-  gStyle->SetPalette(1, 0);
-
-
-  
-  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();
-}
-
-
-
-// -----------------------------------------------------------------
-
-
-Int_t updateDisplay() {
-
-  Int_t iResult = 0;
-
-  
-    
-  //==============================================================================
-  // -- 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 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 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 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();
-  if(bList){
-    TFile * file = TFile::Open(Form("Event_0x%016X_ITS.root", gHomerManager->GetEventID()), "RECREATE"); 
-    bList->Write("blockList", TObject::kSingleKey);
-    file->Close();
-  }
-  
-  bList = gHomerManager->GetAsyncBlockList();
-  if(bList){
-    TFile * afile = TFile::Open(Form("Event_0x%016X_Async.root", gHomerManager->GetEventID()), "RECREATE"); 
-    bList->Write("blockList", TObject::kSingleKey);
-  }afile->Close();
-    
-}
-
-
-// -----------------------------------------------------------------
-void loopEvent() {
-  eventTimer.SetCommand("nextEvent()");
-  eventTimer.Start(3000);
-}
-
-// -----------------------------------------------------------------
-void stopLoopEvent() {
-  eventTimer.Stop();
-}
-
-
-
-
-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 = createCanvas("TRD", "TRD");
-      gTRDCanvas->Divide(3,2);
-    }
-    iResult = processTRDHistograms( block, gTRDCanvas );     
-  }
-
-  else if(block->GetDataType().CompareTo("CALIBRAH")==0){
-     
-    if(!gTRDCalibCanvas){
-      gTRDCalibCanvas = createCanvas("TRD Calib", "TRD Calib");
-      gTRDCalibCanvas->Divide(2,2);
-    }
-     
-    iResult=processTRDCalibHistograms(block,gTRDCalibCanvas);
-  }
-
-  else if(block->GetDataType().CompareTo("CALIBEOR")==0){
-     
-    if(!gTRDEORCanvas){
-      gTRDEORCanvas = createCanvas("TRD QA", "TRD QA");
-      gTRDEORCanvas->Divide(3,2);       
-    }
-  
-    iResult=processTRDCalibHistograms(block,gTRDEORCanvas);
-  }
-  return iResult;
-}
-
-
-
-        
-
-
-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();    
-  }
-
-} 
+//-*- Mode: C++ -*-\r
+\r
+// ** USED macros :\r
+// ***************************************************\r
+// - hlt_alieve_init.C\r
+// - VizDB_scan.C\r
+// - geom_gentle_hlt.C\r
+// - geom_gentle_muon.C\r
+// ***************************************************\r
+\r
+#if !defined(__CINT__) || defined(__MAKECINT__)\r
+\r
+//****************** ROOT ******************************************\r
+#include "TRandom.h"\r
+#include "TVirtualPad.h"\r
+#include "TGLViewer.h"\r
+#include "TThread.h"\r
+#include "TGFileBrowser.h"\r
+#include "TStyle.h"\r
+#include "TList.h"\r
+#include "TDirectory.h"\r
+#include "TFile.h"\r
+#include "TH2.h"\r
+#include "TCanvas.h"\r
+#include "TColor.h"\r
+#include "TVector3.h"\r
+\r
+//****************** ROOT/EVE **************************************\r
+#include "TEveManager.h"\r
+\r
+#include "AliEveHOMERManager.h"\r
+#include "AliEveHLTEventManager.h"\r
+#include "geom_gentle_hlt.C"\r
+\r
+//***************************************************************\r
+#include "HLT/rec/AliHLTReconstructor.h"\r
+\r
+\r
+\r
+#endif\r
+\r
+\r
+\r
+// -----------------------------------------------------------------\r
+// --                       Geometry / Scenes                     --\r
+// -----------------------------------------------------------------\r
+\r
+TEveGeoShape *gGeomGentle     = 0;\r
+TEveGeoShape *gGeomGentleRPhi = 0;\r
+TEveGeoShape *gGeomGentleRhoZ = 0;\r
+TEveGeoShape *gGeomGentleTRD  = 0;\r
+TEveGeoShape *gGeomGentleMUON = 0;\r
+\r
+TEveScene *gRPhiGeomScene  = 0;\r
+TEveScene *gRhoZGeomScene  = 0;\r
+TEveScene *gRPhiEventScene = 0;\r
+TEveScene *gRhoZEventScene = 0;\r
+\r
+TEveProjectionManager *gRPhiMgr = 0;\r
+TEveProjectionManager *gRhoZMgr = 0;\r
+\r
+TEveViewer *g3DView   = 0;\r
+TEveViewer *gRPhiView = 0;\r
+TEveViewer *gRhoZView = 0;\r
+\r
+// -----------------------------------------------------------------\r
+// --                Geometry / Scenes Parameters                 --\r
+// -----------------------------------------------------------------\r
+\r
+// -- Parameters to show different geometries\r
+Bool_t gShowMUON     = kTRUE;\r
+Bool_t gShowMUONRPhi = kFALSE;\r
+Bool_t gShowMUONRhoZ = kTRUE;\r
+Bool_t gShowTRD      = kFALSE;\r
+\r
+\r
+// -- HOMERManager\r
+AliEveHOMERManager*                       gHomerManager      = 0;\r
+AliEveHLTEventManager*                       geventManager      = 0;\r
+\r
+// -- Geometry Manager \r
+TGeoManager*                              gGeoManager        = 0;\r
+\r
+\r
+//Container for gGeoManager till it is broken\r
+TGeoManager *fGeoManager = 0;\r
+// -----------------------------------------------------------------\r
+// --                          Methods                            --\r
+// -----------------------------------------------------------------\r
+\r
+Int_t initializeEveViewer( Bool_t showBarrel, Bool_t showMuon );\r
+\r
+void writeToFile();\r
+\r
+\r
+// #################################################################\r
+// #################################################################\r
+// #################################################################\r
+\r
+// -----------------------------------------------------------------\r
+void od ( Bool_t showBarrel = kTRUE, Bool_t showMuon = kFALSE ) {\r
+\r
+  // -- Loading Geometry\r
+  // ---------------------\r
+  Int_t run = 67179;\r
+  AliCDBManager::Instance()->SetDefaultStorage("local://$ALICE_ROOT/OCDB");\r
+  AliCDBManager::Instance()->SetRun(run);\r
+  AliGeomManager::LoadGeometry();\r
+  // The default in the simulation is the following line\r
+  // TGeoGlobalMagField::Instance()->SetField(new AliMagF("Maps","Maps", -1., -1, AliMagF::k5kG));\r
+  // However for the current setting of +ve L3 and +ve Dipole magnetic field\r
+  // the following setting creates the field close to real field with currect polarity\r
+  if(showMuon)\r
+    TGeoGlobalMagField::Instance()->SetField(new AliMagF("Maps","Maps", 1., 1, AliMagF::k5kG));\r
+\r
+  // Get the pointer to gGeoManager before it's broken (bug in alieve)\r
+  fGeoManager = gGeoManager;\r
+\r
+    // -- Initialize pointsets and add macros\r
+  // ----------------------------------------\r
+  //TEveUtil::LoadMacro("hlt_alieve_init.C");\r
+  //hlt_alieve_init(".", -1);\r
+\r
+  // -- Initialize Eve\r
+  // -------------------\r
+  cout << "Initializing the EVE viewer"<<endl;\r
+  initializeEveViewer( showBarrel, showMuon, fGeoManager );\r
+\r
+  // -- Reset gGeoManager to the original pointer\r
+  // ----------------------------------------------\r
+\r
+  // -- Finalize Eve\r
+  // -----------------\r
+  gSystem->ProcessEvents();\r
+  gEve->Redraw3D(kTRUE);\r
+\r
+  // -- Create new hM object\r
+  // -------------------------\r
+\r
+  cout << "Creating the Event Manager"<<endl;\r
+  gEventManager = new AliEveHLTEventManagerHomer();\r
+  gEventManager->SetEveManager(gEve);\r
+  gEventManager->SetGeoManager(gGeoManager);\r
+  gEventManager->SetRPhiManager(gRPhiMgr);\r
+  gEventManager->SetRPhiEventScene(gRPhiEventScene);\r
+  gEventManager->SetRPhiViewer(gRPhiView);\r
+  gEventManager->SetRhoZManager(gRhoZMgr);\r
+  gEventManager->SetRhoZEventScene(gRhoZEventScene);\r
+  gEventManager->SetRhoZViewer(gRhoZView);\r
\r
+  //gEventManager->SetBarrelFlag(showBarrel);\r
+  //gEventManager->SetMuonFlag(showMuon);\r
+\r
+  // Int_t iResult = gHomerManager->Initialize();\r
+  // if (iResult) { \r
+  //   printf("Error Initializing AliHLTHOMERManager, quitting");\r
+  //   return; \r
+  // }\r
+  \r
+  // gEventManager->SetHomerManager(gHomerManager);\r
+\r
+  // -- Add hM to EveTree\r
+  // ----------------------\r
+  //gEve->AddToListTree(gHomerManager, kTRUE);\r
+  gEve->AddToListTree(gEventManager, kTRUE);\r
+\r
+  // -- Create SourceList\r
+  // ----------------------\r
+  // iResult = gHomerManager->CreateEveSourcesListLoop();\r
+  // if (iResult) {\r
+  //   printf ("Couldn't find active services. Giving up. \n");\r
+  //   return;\r
+  // } \r
+\r
+\r
+  // if ( showBarrel ) {\r
+  //   gHomerManager->ConnectEVEtoHOMER("TPC" );\r
+  // } else if ( MUONMode ) {\r
+  //   gHomerManager->ConnectEVEtoHOMER("MUON");\r
+  // } else if( TRDMode ) {\r
+  //   gHomerManager->ConnectEVEtoHOMER("TRD");  \r
+  // } else {\r
+  //   cout<<" No detectors selected, nothing will be displayed"<<endl;\r
+  // } \r
+  // THIS LINE DOES NOT WORK. PLEASE USE ANOTHER LINE!\r
+\r
+\r
+  gGeoManager = fGeoManager;\r
+  \r
+\r
+}\r
+\r
+// -------------------------------------------------------------------------\r
+Int_t initializeEveViewer( Bool_t showBarrel, Bool_t showMuon, TGeoManager * manager ) {\r
+  \r
+  //=============================================================================\r
+  // Visualization database\r
+  //============================================================================\r
+\r
+  TEveUtil::AssertMacro("VizDB_scan.C");\r
+  \r
+  //  alieve_vizdb();\r
+  \r
+\r
+\r
+  //==============================================================================\r
+  // -- Geometry, scenes, projections and viewers\r
+  //==============================================================================\r
+\r
+  TEveBrowser         *browser = gEve->GetBrowser();\r
+  browser->ShowCloseTab(kFALSE);\r
+  \r
+  // -- Disable extra geometry\r
+  // ---------------------------\r
+  if (!showMuon)\r
+    gShowMUON = gShowMUONRPhi = gShowMUONRhoZ = kFALSE;\r
+  \r
+  // -- Load Geometry\r
+  // ------------------\r
+  TEveUtil::LoadMacro("geom_gentle_hlt.C");\r
+  gGeomGentle = geom_gentle_hlt();\r
+  gGeomGentleRPhi = geom_gentle_rphi(); gGeomGentleRPhi->IncDenyDestroy();\r
+  gGeomGentleRhoZ = geom_gentle_rhoz(); gGeomGentleRhoZ->IncDenyDestroy();\r
+  gGeomGentleTRD  = geom_gentle_trd();\r
+\r
+  gGeoManager = fGeoManager;\r
+\r
+  gEMCALNode = gGeoManager->GetTopVolume()->FindNode("XEN1_1");\r
+\r
+  TEveGeoTopNode* emcal_re = new TEveGeoTopNode(gGeoManager, gEMCALNode);\r
+  emcal_re->SetVisLevel(1);\r
+  //  emcal_re->FirstChild()->Dump();\r
+\r
+  // for(Int_t i = 4; i < 11; i++) {\r
+  //   emcal_re->FindChild(Form("SMOD_%d", i))->SetRnrState(kFALSE);\r
+  // }\r
+  // emcal_re->FindChild("SM10_1")->SetRnrState(kFALSE);\r
+  // emcal_re->FindChild("SM10_2")->SetRnrState(kFALSE);\r
+\r
+\r
+\r
+  gEve->AddGlobalElement(emcal_re);\r
+  gEve->Redraw3D();\r
+\r
+  if (gShowMUON) \r
+    gGeomGentleMUON = geom->geom_gentle_muon(kFALSE);\r
+  \r
+  // -- Scenes\r
+  // -----------\r
+  gRPhiGeomScene  = gEve->SpawnNewScene("RPhi Geometry",\r
+                    "Scene holding projected geometry for the RPhi view.");\r
+  gRhoZGeomScene  = gEve->SpawnNewScene("RhoZ Geometry",\r
+                   "Scene holding projected geometry for the RhoZ view.");\r
+  gRPhiEventScene = gEve->SpawnNewScene("RPhi Event Data",\r
+                   "Scene holding projected geometry for the RPhi view.");\r
+  gRhoZEventScene = gEve->SpawnNewScene("RhoZ Event Data",\r
+                   "Scene holding projected geometry for the RhoZ view.");\r
+\r
+  // -- Projection managers\r
+  // ------------------------\r
+\r
+  gRPhiMgr = new TEveProjectionManager();\r
+  gRPhiMgr->SetProjection(TEveProjection::kPT_RPhi);\r
+  gEve->AddToListTree(gRPhiMgr, kFALSE);\r
+  {\r
+    TEveProjectionAxes* a = new TEveProjectionAxes(gRPhiMgr);\r
+    a->SetMainColor(kWhite);\r
+    a->SetTitle("R-Phi");\r
+    a->SetTitleSize(0.05);\r
+    a->SetTitleFont(102);\r
+    a->SetLabelSize(0.025);\r
+    a->SetLabelFont(102);\r
+    gRPhiGeomScene->AddElement(a);\r
+  }\r
+  gRPhiMgr->SetCurrentDepth(-10);\r
+  gRPhiMgr->ImportElements(gGeomGentleRPhi, gRPhiGeomScene);\r
+  gRPhiMgr->SetCurrentDepth(0);\r
+  gRPhiMgr->ImportElements(gGeomGentleTRD, gRPhiGeomScene);\r
+  if (gShowMUONRPhi) gRPhiMgr->ImportElements(gGeomGentleMUON, gRPhiGeomScene);\r
+\r
+  gRhoZMgr = new TEveProjectionManager();\r
+  gRhoZMgr->SetProjection(TEveProjection::kPT_RhoZ);\r
+  gEve->AddToListTree(gRhoZMgr, kFALSE);\r
+  {\r
+    TEveProjectionAxes* a = new TEveProjectionAxes(gRhoZMgr);\r
+    a->SetMainColor(kWhite);\r
+    a->SetTitle("Rho-Z");\r
+    a->SetTitleSize(0.05);\r
+    a->SetTitleFont(102);\r
+    a->SetLabelSize(0.025);\r
+    a->SetLabelFont(102);\r
+    gRhoZGeomScene->AddElement(a);\r
+  }\r
+  gRhoZMgr->SetCurrentDepth(-10);\r
+  gRhoZMgr->ImportElements(gGeomGentleRhoZ, gRhoZGeomScene);\r
+  gRhoZMgr->SetCurrentDepth(0);\r
+  gRhoZMgr->ImportElements(gGeomGentleTRD, gRhoZGeomScene);\r
+  \r
+  if (gShowMUONRhoZ) gRhoZMgr->ImportElements(gGeomGentleMUON, gRhoZGeomScene);\r
+\r
+  // -- Viewers\r
+  // ------------\r
+\r
+  TEveWindowSlot *slot = TEveWindow::CreateWindowInTab(browser->GetTabRight());\r
+  TEveWindowPack *pack = slot->MakePack();\r
+  pack->SetElementName("Multi View");\r
+  pack->SetHorizontal();\r
+  pack->SetShowTitleBar(kFALSE);\r
+  pack->NewSlot()->MakeCurrent();\r
+  g3DView = gEve->SpawnNewViewer("3D View", "");\r
+  g3DView->AddScene(gEve->GetGlobalScene());\r
+  g3DView->AddScene(gEve->GetEventScene());\r
+\r
+\r
+  pack = pack->NewSlot()->MakePack();\r
+  pack->SetShowTitleBar(kFALSE);\r
+  pack->NewSlot()->MakeCurrent();\r
+  gRPhiView = gEve->SpawnNewViewer("RPhi View", "");\r
+  gRPhiView->GetGLViewer()->SetCurrentCamera(TGLViewer::kCameraOrthoXOY);\r
+  gRPhiView->AddScene(gRPhiGeomScene);\r
+  gRPhiView->AddScene(gRPhiEventScene);\r
+\r
+  pack->NewSlot()->MakeCurrent();\r
+  gRhoZView = gEve->SpawnNewViewer("RhoZ View", "");\r
+  gRhoZView->GetGLViewer()->SetCurrentCamera(TGLViewer::kCameraOrthoXOY);\r
+  gRhoZView->AddScene(gRhoZGeomScene);\r
+  gRhoZView->AddScene(gRhoZEventScene);\r
+\r
+\r
+   \r
+  //Add HLT Text to windows\r
\r
+  TGLOverlayButton *ob1 = new TGLOverlayButton(g3DView->GetGLViewer(),  "HLT", 0, 20, 110, 60);\r
+  ob1->SetAlphaValues(0.8, 0.8);\r
+  //  cout << "color" << ob1->GetBackColor() << endl;\r
+  //ob1->SetBackColor(8421631);\r
+  //ob1->SetBackColor(10492431);\r
+  TGLOverlayButton *ob2 = new TGLOverlayButton(g3DView->GetGLViewer(),  "ALICE", 0, 0, 110, 20);\r
+  ob2->SetAlphaValues(0.8, 0.8);\r
+  //ob2->SetBackColor(0.2);\r
+  TGLOverlayButton *ob3 = new TGLOverlayButton(gEve->GetDefaultGLViewer(),  "HLT", 0, 20, 110, 60);\r
+  ob3->SetAlphaValues(0.8, 0.8);\r
+  TGLOverlayButton *ob4 = new TGLOverlayButton(gEve->GetDefaultGLViewer(),  "ALICE", 0, 0, 110, 20);\r
+  ob4->SetAlphaValues(0.8, 0.8);\r
+\r
+\r
+  TGLOverlayButton *ne = new TGLOverlayButton(gEve->GetDefaultGLViewer(),  "Next Event", 110, 0, 210, 20);\r
+  ne->SetAlphaValues(0.0, 0.8);\r
+\r
+  // -- List of Viewers\r
+  // --------------------\r
+\r
+  TEveViewerList *viewerlist = new TEveViewerList();\r
+  viewerlist->AddElement(gEve->GetDefaultViewer());\r
+  \r
+  viewerlist->AddElement(g3DView);\r
+  viewerlist->AddElement(gRhoZView);\r
+  viewerlist->AddElement(gRPhiView);\r
+  viewerlist->SwitchColorSet();\r
+\r
+  //==============================================================================\r
+  // -- Macros / QA histograms\r
+  //==============================================================================\r
+\r
+  // -- Registration of per-event macros\r
+  // -------------------------------------\r
+\r
+  AliEveMacroExecutor *exec    = new AliEveMacroExecutor();\r
+\r
+\r
+\r
+  gStyle->SetPalette(1, 0);\r
+  gStyle->SetOptFit(1);\r
+\r
+\r
+  \r
+  return 0;\r
+}\r
+\r
+//****************************************************************************\r
+void writeToFile(){\r
+\r
+  TList * bList = gHomerManager->GetBlockList();\r
+  if(bList){\r
+    TFile * file = TFile::Open(Form("Event_0x%016X_ITS.root", gHomerManager->GetEventID()), "RECREATE"); \r
+    bList->Write("blockList", TObject::kSingleKey);\r
+    file->Close();\r
+  }\r
+  \r
+  bList = gHomerManager->GetAsyncBlockList();\r
+  if(bList){\r
+    TFile * afile = TFile::Open(Form("Event_0x%016X_Async.root", gHomerManager->GetEventID()), "RECREATE"); \r
+    bList->Write("blockList", TObject::kSingleKey);\r
+    afile->Close();\r
+  }\r
+}\r
+\r
+\r
+\r
+        \r