ROOT logo
#if !defined(__CINT__) || defined(__MAKECINT__)
#include <TGLViewer.h>
#include <TEveManager.h>

#include <AliESDEvent.h>
#include <AliESDfriend.h>
#include <AliTRDarrayADC.h>
#include <AliTRDReconstructor.h>
#include <AliTRDtrackV1.h>
#include <AliEveEventManager.h>
#include <AliEveTRDTrackList.h>
#endif

void trd_tracks(TEveElement *cont = 0)
{
  // Link data containers
  AliESDEvent* esd(AliEveEventManager::AssertESD());
  AliESDfriend *esdFriend(AliEveEventManager::AssertESDfriend());
  if(!esd || !esdFriend){
    Warning("trd_tracks", "Full ESD data missing.");
    return;
  }

/*  AliEveEventManager::AssertGeometry();
  AliRunLoader *rl = AliEveEventManager::AssertRunLoader();
*/
  AliTRDrecoParam *trdRecoParam = AliTRDrecoParam::GetLowFluxParam();
  trdRecoParam->SetPIDNeuralNetwork();
  AliTRDReconstructor *reco = new AliTRDReconstructor();
  reco->SetRecoParam(trdRecoParam);

  AliEveTRDTrackList *tracks = new AliEveTRDTrackList("TRD Tracks");
  for (Int_t n=0; n<esd->GetNumberOfTracks(); n++){
    AliESDtrack* esdTrack(esd->GetTrack(n));
    if(!esdTrack) continue;
    AliESDfriendTrack *friendTrack = new AliESDfriendTrack(*(esdTrack->GetFriendTrack()));
    if(!friendTrack) continue;
    //Info("trd_tracks", Form("Track[%3d] esd[%p] friend[%p]", n, (void*)esdTrack, (void*)friendTrack));

    TObject *cal(NULL);
    Int_t ical(0);
    while((cal = friendTrack->GetCalibObject(ical++))){
      //Info("trd_tracks", Form("  Obj[%d] %s", ical-1, cal->IsA()->GetName()));
      if(strcmp(cal->IsA()->GetName(), "AliTRDtrackV1") != 0) continue;
      AliTRDtrackV1 *trackObj = dynamic_cast<AliTRDtrackV1 *>(cal);
      trackObj->SetReconstructor(reco);
      AliEveTRDTrack *trackEve = new AliEveTRDTrack(new AliTRDtrackV1(*trackObj));
      tracks->AddElement(trackEve);
      trackEve->SetESDstatus(esdTrack->GetStatus());
      trackEve->SetName(Form("[%4d] %s", n, trackEve->GetName()));
    }
  }

  delete reco;

  tracks->SetTitle(Form("Tracks %d", tracks->NumChildren()));
  tracks->StampObjProps();
  gEve->AddElement(tracks, cont);

  gEve->Redraw3D();

  //  TGLViewer *v = gEve->GetDefaultGLViewer();
  //  v->SetCurrentCamera(TGLViewer::kCameraOrthoXOY);
  //  ((TGLOrthoCamera&)v->CurrentCamera()).SetEnableRotate(kTRUE);
  //  v->UpdateScene();

  return;
}
 trd_tracks.C:1
 trd_tracks.C:2
 trd_tracks.C:3
 trd_tracks.C:4
 trd_tracks.C:5
 trd_tracks.C:6
 trd_tracks.C:7
 trd_tracks.C:8
 trd_tracks.C:9
 trd_tracks.C:10
 trd_tracks.C:11
 trd_tracks.C:12
 trd_tracks.C:13
 trd_tracks.C:14
 trd_tracks.C:15
 trd_tracks.C:16
 trd_tracks.C:17
 trd_tracks.C:18
 trd_tracks.C:19
 trd_tracks.C:20
 trd_tracks.C:21
 trd_tracks.C:22
 trd_tracks.C:23
 trd_tracks.C:24
 trd_tracks.C:25
 trd_tracks.C:26
 trd_tracks.C:27
 trd_tracks.C:28
 trd_tracks.C:29
 trd_tracks.C:30
 trd_tracks.C:31
 trd_tracks.C:32
 trd_tracks.C:33
 trd_tracks.C:34
 trd_tracks.C:35
 trd_tracks.C:36
 trd_tracks.C:37
 trd_tracks.C:38
 trd_tracks.C:39
 trd_tracks.C:40
 trd_tracks.C:41
 trd_tracks.C:42
 trd_tracks.C:43
 trd_tracks.C:44
 trd_tracks.C:45
 trd_tracks.C:46
 trd_tracks.C:47
 trd_tracks.C:48
 trd_tracks.C:49
 trd_tracks.C:50
 trd_tracks.C:51
 trd_tracks.C:52
 trd_tracks.C:53
 trd_tracks.C:54
 trd_tracks.C:55
 trd_tracks.C:56
 trd_tracks.C:57
 trd_tracks.C:58
 trd_tracks.C:59
 trd_tracks.C:60
 trd_tracks.C:61
 trd_tracks.C:62
 trd_tracks.C:63
 trd_tracks.C:64
 trd_tracks.C:65
 trd_tracks.C:66
 trd_tracks.C:67
 trd_tracks.C:68
 trd_tracks.C:69