0b285d96c3198b1be8cdee0d13eded43f9b606e6
[u/mrichter/AliRoot.git] / EVE / alice-macros / trd_tracks.C
1 #ifndef __CINT__
2 #include <TGLViewer.h>
3 #include <TEveManager.h>
4 #include <EveBase/AliEveEventManager.h>
5 #include "TRD/AliTRDarrayADC.h"
6 #include <EveDet/AliEveTRDTrackList.h>
7
8 #include "AliESDEvent.h"
9 #include "AliESDfriend.h"
10 #include "TRD/AliTRDReconstructor.h"
11 #include "TRD/AliTRDtrackV1.h"
12 #endif
13
14 void trd_tracks(TEveElement *cont = 0)
15 {
16   // Link data containers
17   AliESDEvent* esd(AliEveEventManager::AssertESD());
18   AliESDfriend *esdFriend(AliEveEventManager::AssertESDfriend());
19   if(!esd || !esdFriend){
20     Warning("trd_tracks", "Full ESD data missing.");
21     return;
22   }
23
24   AliEveEventManager::AssertGeometry();
25
26   AliTRDrecoParam *trdRecoParam = AliTRDrecoParam::GetLowFluxParam();
27   trdRecoParam->SetPIDNeuralNetwork();
28   AliTRDReconstructor *reco = new AliTRDReconstructor();
29   reco->SetRecoParam(trdRecoParam);
30
31   AliEveTRDTrackList *tracks = new AliEveTRDTrackList("TRD Tracks");
32   for (Int_t n=0; n<esd->GetNumberOfTracks(); n++){
33     AliESDtrack* esdTrack(esd->GetTrack(n));
34     if(!esdTrack) continue;
35     AliESDfriendTrack *friendTrack(esdTrack->GetFriendTrack());
36     if(!friendTrack) continue;
37     Info("trd_tracks", Form("Track[%3d] esd[%p] friend[%p]", n, (void*)esdTrack, (void*)friendTrack));
38
39     TObject *cal(NULL);
40     Int_t ical(0);
41     while((cal = friendTrack->GetCalibObject(ical++))){
42       //Info("trd_tracks", Form("  Obj[%d] %s", ical-1, cal->IsA()->GetName()));
43       if(strcmp(cal->IsA()->GetName(), "AliTRDtrackV1") != 0) continue;
44       AliTRDtrackV1 *trackObj = dynamic_cast<AliTRDtrackV1 *>(cal);
45       trackObj->SetReconstructor(reco);
46       AliEveTRDTrack *trackEve = new AliEveTRDTrack(new AliTRDtrackV1(*trackObj));
47       tracks->AddElement(trackEve);
48       trackEve->SetESDstatus(esdTrack->GetStatus());
49       trackEve->SetName(Form("[%4d] %s", n, trackEve->GetName()));
50     }
51   }
52
53   delete reco;
54
55   tracks->SetTitle(Form("Tracks %d", tracks->NumChildren()));
56   tracks->StampObjProps();
57   gEve->AddElement(tracks, cont);
58
59   gEve->Redraw3D();
60
61   //  TGLViewer *v = gEve->GetDefaultGLViewer();
62   //  v->SetCurrentCamera(TGLViewer::kCameraOrthoXOY);
63   //  ((TGLOrthoCamera&)v->CurrentCamera()).SetEnableRotate(kTRUE);
64   //  v->UpdateScene();
65
66   return;
67 }