ROOT logo
// $Id$
//**************************************************************************
//* This file is property of and copyright by the ALICE HLT Project        * 
//* ALICE Experiment at CERN, All rights reserved.                         *
//*                                                                        *
//* Primary Authors: Matthias Richter <Matthias.Richter@ift.uib.no>        *
//*                  for The ALICE HLT Project.                            *
//*                                                                        *
//* Permission to use, copy, modify and distribute this software and its   *
//* documentation strictly for non-commercial purposes is hereby granted   *
//* without fee, provided that the above copyright notice appears in all   *
//* copies and that both the copyright notice and this permission notice   *
//* appear in the supporting documentation. The authors make no claims     *
//* about the suitability of this software for any purpose. It is          *
//* provided "as is" without express or implied warranty.                  *
//**************************************************************************
#if !defined(__CINT__) || defined(__MAKECINT__)
#include <TObject.h>
#include <TClass.h>
#include <TFile.h>
#include <TTree.h>
#include <TEveManager.h>
#include <TEveTrack.h>
#include <TEveUtil.h>

#include <AliESDEvent.h>
#include <AliEveEventManager.h>

#include <EVE/alice-macros/esd_tracks.C>
#endif

/**
 * Display ESD Tracks from the HLTesdTree in AliEVE.
 *
 * Usage:
 * <pre>
 *   alieve $ALICE_ROOT/EVE/alice-macros/event_next.C \
 *          $ALICE_ROOT/EVE/macros/alieve_init.C \
 *          $ALICE_ROOT/EVE/alice-macros/geom_simple.C \
 *          $ALICE_ROOT/EVE/alice-macros/esd_hlt_tracks.C
 * </pre>
 * Display is changed to next event by executing event_next()
 * from the root prompt.
 * <pre>
 *   event_next(); esd_tracks(); esd_hlt_tracks();
 * </pre>
 *
 * @ingroup alihlt_tpc
 * @author Matthias.Richter@ift.uib.no
 * @date   2008-11-22
 */
TEveTrackList* esd_hlt_tracks()
{
  if (!TClass::GetClass("AliEveEventManager")) {
    Error("hlt_tpc_clusters.C", "EVE library not loaded, please start alieve correctly");
    return NULL;
  }

  AliEveEventManager* eveManager=AliEveEventManager::GetMaster();
  if (!eveManager) {
    Error("esd_hlt_tracks.C", "EVE manager not initialized");
    return NULL;
  }

  TEveUtil::LoadMacro("esd_tracks.C");
   
  int eventId=eveManager->GetEventId();
  TFile* esdFile=eveManager->GetESDFile();
  if (!esdFile) {
    Warning("esd_hlt_tracks.C", "can not get esd file from EVE manager");
    return NULL;
  }

  TObject* pObj=NULL;
  TTree* pHLTTree=NULL;
  esdFile->GetObject("HLTesdTree", pObj);
  if (!pObj || (pHLTTree=dynamic_cast<TTree*>(pObj))==NULL) {
    Info("esd_hlt_tracks.C", "no HLT ESD tree in ESD file");
    return NULL;
  }
  if (pHLTTree->GetEntries()<=eventId) {
    Warning("esd_hlt_tracks.C", "skiping event %d: out of range %lld", eventId, pHLTTree->GetEntries());
    return NULL;
  }

  AliESDEvent* esd=new AliESDEvent;
  esd->ReadFromTree(pHLTTree);
  pHLTTree->GetEntry(eventId);

  TEveTrackList* cont = new TEveTrackList("HLT ESD Tracks");
  cont->SetMainColor(kCyan+3);
  esd_track_propagator_setup(cont->GetPropagator(),
			     0.1*esd->GetMagneticField(), 520);

  eveManager->AddElement(cont);

  Int_t count = 0;
  for (Int_t n = 0; n < esd->GetNumberOfTracks(); ++n)
  {
    ++count;
    TEveTrack* track = esd_make_track(esd->GetTrack(n), cont);

    cont->AddElement(track);
  }
  cont->SetTitle(Form("N=%d", count));
  cont->MakeTracks();

  gEve->Redraw3D();

  return cont;
}
 esd_hlt_tracks.C:1
 esd_hlt_tracks.C:2
 esd_hlt_tracks.C:3
 esd_hlt_tracks.C:4
 esd_hlt_tracks.C:5
 esd_hlt_tracks.C:6
 esd_hlt_tracks.C:7
 esd_hlt_tracks.C:8
 esd_hlt_tracks.C:9
 esd_hlt_tracks.C:10
 esd_hlt_tracks.C:11
 esd_hlt_tracks.C:12
 esd_hlt_tracks.C:13
 esd_hlt_tracks.C:14
 esd_hlt_tracks.C:15
 esd_hlt_tracks.C:16
 esd_hlt_tracks.C:17
 esd_hlt_tracks.C:18
 esd_hlt_tracks.C:19
 esd_hlt_tracks.C:20
 esd_hlt_tracks.C:21
 esd_hlt_tracks.C:22
 esd_hlt_tracks.C:23
 esd_hlt_tracks.C:24
 esd_hlt_tracks.C:25
 esd_hlt_tracks.C:26
 esd_hlt_tracks.C:27
 esd_hlt_tracks.C:28
 esd_hlt_tracks.C:29
 esd_hlt_tracks.C:30
 esd_hlt_tracks.C:31
 esd_hlt_tracks.C:32
 esd_hlt_tracks.C:33
 esd_hlt_tracks.C:34
 esd_hlt_tracks.C:35
 esd_hlt_tracks.C:36
 esd_hlt_tracks.C:37
 esd_hlt_tracks.C:38
 esd_hlt_tracks.C:39
 esd_hlt_tracks.C:40
 esd_hlt_tracks.C:41
 esd_hlt_tracks.C:42
 esd_hlt_tracks.C:43
 esd_hlt_tracks.C:44
 esd_hlt_tracks.C:45
 esd_hlt_tracks.C:46
 esd_hlt_tracks.C:47
 esd_hlt_tracks.C:48
 esd_hlt_tracks.C:49
 esd_hlt_tracks.C:50
 esd_hlt_tracks.C:51
 esd_hlt_tracks.C:52
 esd_hlt_tracks.C:53
 esd_hlt_tracks.C:54
 esd_hlt_tracks.C:55
 esd_hlt_tracks.C:56
 esd_hlt_tracks.C:57
 esd_hlt_tracks.C:58
 esd_hlt_tracks.C:59
 esd_hlt_tracks.C:60
 esd_hlt_tracks.C:61
 esd_hlt_tracks.C:62
 esd_hlt_tracks.C:63
 esd_hlt_tracks.C:64
 esd_hlt_tracks.C:65
 esd_hlt_tracks.C:66
 esd_hlt_tracks.C:67
 esd_hlt_tracks.C:68
 esd_hlt_tracks.C:69
 esd_hlt_tracks.C:70
 esd_hlt_tracks.C:71
 esd_hlt_tracks.C:72
 esd_hlt_tracks.C:73
 esd_hlt_tracks.C:74
 esd_hlt_tracks.C:75
 esd_hlt_tracks.C:76
 esd_hlt_tracks.C:77
 esd_hlt_tracks.C:78
 esd_hlt_tracks.C:79
 esd_hlt_tracks.C:80
 esd_hlt_tracks.C:81
 esd_hlt_tracks.C:82
 esd_hlt_tracks.C:83
 esd_hlt_tracks.C:84
 esd_hlt_tracks.C:85
 esd_hlt_tracks.C:86
 esd_hlt_tracks.C:87
 esd_hlt_tracks.C:88
 esd_hlt_tracks.C:89
 esd_hlt_tracks.C:90
 esd_hlt_tracks.C:91
 esd_hlt_tracks.C:92
 esd_hlt_tracks.C:93
 esd_hlt_tracks.C:94
 esd_hlt_tracks.C:95
 esd_hlt_tracks.C:96
 esd_hlt_tracks.C:97
 esd_hlt_tracks.C:98
 esd_hlt_tracks.C:99
 esd_hlt_tracks.C:100
 esd_hlt_tracks.C:101
 esd_hlt_tracks.C:102
 esd_hlt_tracks.C:103
 esd_hlt_tracks.C:104
 esd_hlt_tracks.C:105
 esd_hlt_tracks.C:106
 esd_hlt_tracks.C:107
 esd_hlt_tracks.C:108
 esd_hlt_tracks.C:109
 esd_hlt_tracks.C:110
 esd_hlt_tracks.C:111
 esd_hlt_tracks.C:112