--- /dev/null
+#ifdef __CINT__
+class TEvePointSet;
+class TEveElement;
+#else
+#include <TEveManager.h>
+#include <TEvePointSet.h>
+#include <EveBase/AliEveEventManager.h>
+
+#include "AliRunLoader.h"
+#include "AliCluster.h"
+#include "AliTRDcluster.h"
+#endif
+
+TEveElementList* trd_detectors(TEveElement *cont = 0)
+{
+ // Link data containers
+ AliEveEventManager::AssertGeometry();
+ AliRunLoader *rl = AliEveEventManager::AssertRunLoader();
+
+ // define EVE containers
+ Int_t nclusters = 0;
+ TEveElementList *clusters = new TEveElementList("TRD clusters");
+ TEvePointSet *clustersDet = 0x0;
+
+
+// AliTRDgeometry geo;
+// AliEveTRDChamber *chm = 0x0;
+
+ // Fill EVE containers
+ TObjArray *TRDcluster = 0x0;
+ rl->LoadRecPoints("TRD");
+ TTree *recPoints = rl->GetTreeR("TRD", kFALSE);
+ recPoints->SetBranchAddress("TRDcluster", &TRDcluster);
+
+ Int_t nentr=(Int_t)recPoints->GetEntries();
+ for (Int_t i=0; i<nentr; i++) {
+ if (!recPoints->GetEvent(i)) continue;
+
+
+ Int_t det = -1;
+ Int_t ncl=TRDcluster->GetEntriesFast();
+ nclusters+=ncl;
+ while (ncl--) {
+ AliTRDcluster *c = (AliTRDcluster*)TRDcluster->UncheckedAt(ncl);
+ Float_t g[3]; //global coordinates
+ c->GetGlobalXYZ(g);
+ if(det<0){
+ det = c->GetDetector();
+ clustersDet= new TEvePointSet(Form("detector %d", det));
+ clustersDet->SetOwnIds(kTRUE);
+ clustersDet->SetMarkerStyle(2);
+ clustersDet->SetMarkerSize(0.2);
+ clustersDet->SetMarkerColor(kBlue);
+
+/* chm = new AliEveTRDChamber(det);
+ chm->SetGeometry(&geo);
+ chm->LoadClusters(TRDcluster);
+ break;*/
+ }
+ Int_t id = clustersDet->SetNextPoint(g[0], g[1], g[2]);
+ clustersDet->SetPointId(id, new AliTRDcluster(*c));
+ }
+ clustersDet->SetTitle(Form("Clusters %d", clustersDet->Size()));
+ clusters->AddElement(clustersDet);
+
+ //clusters->AddElement(chm);
+
+ TRDcluster->Clear();
+ }
+ clusters->SetTitle(Form("Clusters %d", nclusters));
+
+ gEve->AddElement(clusters, cont);
+ gEve->Redraw3D();
+
+ return clusters;
+}
-// $Id: esd_tracks.C 24485 2008-03-13 15:27:38Z mtadel $
-// Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
-
-/**************************************************************************
- * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. *
- * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for *
- * full copyright notice. *
- **************************************************************************/
-
-TEvePointSet* trd_friend_tracks(TEveElement *cont = 0)
+TEveElementList* trd_friend_tracks(TEveElement *cont = 0)
{
- if(!AliEveEventManager::AssertESDfriend())
- {
- printf("AliESDfriend not found\n");
- return 0;
+
+ // Link data containers
+ AliESDfriend *eventESDfriend = 0x0;
+ if(!(eventESDfriend = AliEveEventManager::AssertESDfriend())){
+ Warning("trd_friend_tracks", "AliESDfriend not found");
+ return 0x0;
}
+
AliESDEvent* esd = AliEveEventManager::AssertESD();
- AliESDfriend *eventESDfriend = AliEveEventManager::AssertESDfriend();
+
AliEveEventManager::AssertGeometry();
- printf("eventESDfriend = %p\n", eventESDfriend);
- // esd->SetESDfriend(eventESDfriend);
- // if(!eventESDfriend) return 0;
- Int_t nTracks = esd->GetNumberOfTracks();
- printf("Number of tracks: %d\n", nTracks);
- Int_t kMaxClusters = nTracks * 6 * 40 * 3;
- printf("kMaxClusters = %d\n", kMaxClusters);
- TEvePointSet *friendClusters = new TEvePointSet(kMaxClusters);
+ // TRD related objects
+ AliTRDgeometry geo;
- Int_t kTotalClusters = 0;
- for (Int_t n=0; n< nTracks; n++)
- {
- printf("Taking track %d\n", n);
- AliESDtrack* at = esd->GetTrack(n);
+ Int_t nTracks = esd->GetNumberOfTracks();
+ TEveElementList *tracks = new TEveElementList("TRD Tracks");
+ TEveElementList *track = 0x0;
+ TEveLine *tracklet = 0x0;
+ TEvePointSet *clusters = 0x0;
+ for (Int_t n=0; n<nTracks; n++){
+ AliESDtrack* esdTrack = esd->GetTrack(n);
AliESDfriendTrack *friendTrack = eventESDfriend->GetTrack(n);
-
+
TObject *cal = 0x0;
Int_t ical = 0;
- while (cal = friendTrack->GetCalibObject(ical++))
- {
- if (strcmp(cal->IsA()->GetName(), "AliTRDtrackV1") != 0) continue;
- printf("Got the track\n");
- AliTRDtrackV1 *trdTrack = dynamic_cast<AliTRDtrackV1 *>(cal);
- printf("trdTrack = %p\n", trdTrack);
+ while(cal = friendTrack->GetCalibObject(ical++)){
+ if(strcmp(cal->IsA()->GetName(), "AliTRDtrackV1") != 0) continue;
+ AliTRDtrackV1 *trackObj = dynamic_cast<AliTRDtrackV1 *>(cal);
+
+ // define track
+ Int_t ncl = 0;
+ track = new TEveElementList();
+ track->SetName(Form("Track%d", esdTrack->GetLabel()));
+// track->SetLineColor(kWhite);
+// track->SetOwnIds(kTRUE);
+
+ for(Int_t iseed = 0; iseed < 6; iseed++){
+ AliTRDseedV1 *trackletObj = trackObj->GetTracklet(iseed);
+ if(!trackletObj->IsOK()) continue;
+
+ // define clusters
+ clusters = new TEvePointSet();
+ clusters->SetOwnIds(kTRUE);
+ clusters->SetMarkerStyle(4);
+ clusters->SetMarkerSize(0.5);
+ clusters->SetMarkerColor(kGreen);
+ clusters->SetName("Clusters");
- for (Int_t iseed = 0; iseed < 6; iseed++)
- {
- printf("processing tracklet %d\n", iseed);
- AliTRDseedV1 *tracklet = trdTrack->GetTracklet(iseed);
- if (!tracklet->IsOK()) continue;
- for (Int_t itb = 0; itb < 30; itb++)
- {
- if (!tracklet->IsUsable(itb)) continue;
- AliTRDcluster *cl = tracklet->GetClusters(itb);
- if (!cl) continue;
- printf("cluster position: x = %f, y = %f, z = %f\n", cl->GetX(), cl->GetY(), cl->GetZ());
+ AliTRDcluster *cl = 0x0; Int_t sec, det = -1;
+ for(Int_t itb = 0; itb < 30; itb++){
+ if(!trackletObj->IsUsable(itb)) continue;
+ if(!(cl = trackletObj->GetClusters(itb))) continue;
+
+ if(det<0){
+ det = cl->GetDetector();
+ sec = geo.GetSector(det);
+ }
Float_t globalCoords[3]; //global coordinates
cl->GetGlobalXYZ(globalCoords);
- friendClusters->SetPoint(kTotalClusters, globalCoords[0], globalCoords[1], globalCoords[2]);
- AliCluster *atp = new AliCluster(*cl);
- friendClusters->SetPointId(atp);
- kTotalClusters++;
+ Int_t id = clusters->SetNextPoint( globalCoords[0], globalCoords[1], globalCoords[2]);
+ clusters->SetPointId(id, new AliTRDcluster(*cl));
}
- }
- }
- }
+ ncl += clusters->Size();
+ clusters->SetTitle(Form("Clusters %d", clusters->Size()));
- printf("kTotalClusters = %d\n", kTotalClusters);
+ // define tracklet
+ tracklet = new TEveLine(Form("Tracklet%d", iseed));
+ tracklet->SetTitle(Form("P = %7.3f [GeV/c]", trackletObj->GetMomentum())); tracklet->SetLineColor(kYellow);
+ tracklet->SetOwnIds(kTRUE);
+ Double_t alpha = AliTRDgeometry::GetAlpha() * (sec<9 ? sec + .5 : sec - 17.5);
+ Double_t x0 = trackletObj->GetX0(),
+ y0f = trackletObj->GetYfit(0),
+ ysf = trackletObj->GetYfit(1),
+ z0r = trackletObj->GetZref(0),
+ zsr = trackletObj->GetZref(1);
+ Double_t xg = x0 * TMath::Cos(alpha) - y0f * TMath::Sin(alpha);
+ Double_t yg = x0 * TMath::Sin(alpha) + y0f * TMath::Cos(alpha);
+ tracklet->SetPoint(0, xg, yg, z0r);
+ tracklet->SetPointId(0, new AliTRDseedV1(*trackletObj));
+ Double_t x1 = x0-3.5,
+ y1f = y0f - ysf*3.5,
+ z1r = z0r - zsr*3.5;
+ xg = x1 * TMath::Cos(alpha) - y1f * TMath::Sin(alpha);
+ yg = x1 * TMath::Sin(alpha) + y1f * TMath::Cos(alpha);
+ tracklet->SetPoint(1, xg, yg, z1r);
- if (friendClusters->Size() == 0 && gEve->GetKeepEmptyCont() == kFALSE)
- {
- Warning("trd_clusters", "No TRD clusters");
- delete friendClusters;
- return 0;
- }
- friendClusters->SetMarkerStyle(2);
- friendClusters->SetMarkerSize(0.2);
- friendClusters->SetMarkerColor(4);
-
- char form[1000];
- sprintf(form,"TRD Clusters");
- friendClusters->SetName(form);
+ tracklet->AddElement(clusters);
+ track->AddElement(tracklet);
+ }
+ track->SetTitle(Form("Clusters %d", ncl)); tracks->AddElement(track);
+ }
+ }
+
+ tracks->SetTitle(Form("Tracks %d", tracks->GetNChildren()));
+ gEve->AddElement(tracks, cont);
- char tip[1000];
- sprintf(tip,"N=%d", friendClusters->Size());
- friendClusters->SetTitle(tip);
- gEve->AddElement(friendClusters, cont);
gEve->Redraw3D();
- return friendClusters;
+
+ return tracks;
}