461e02b10b14c47d26e024b6e946f3f50879f290
[u/mrichter/AliRoot.git] / EVE / alice-macros / esd_spd_tracklets.C
1 // $Id$
2 // Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
3
4 /**************************************************************************
5  * Copyright(c) 1998-2008, ALICE Experiment at CERN, all rights reserved. *
6  * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for          *
7  * full copyright notice.                                                 *
8  **************************************************************************/
9
10 // Lines commented with //x should be reactivated when we
11 // move to a newer ROOT (after 5.25.2).
12 // Corresponding lines that are now replacing them should be removed.
13 //
14 // The problem was the TEveTrackProjected did not support projection
15 // of tracks with locked points -- and we do that for tracklets.
16 //
17 // Maybe it would be even better to have AliEveTracklet : public TEveLine
18 // and support both in AliEveTrackCounter.
19 // Or have trackelt counter -- as not all histograms collected for tracks
20 // are relevant for tracklets.
21
22 TEveElementList* esd_spd_tracklets(Float_t radius=8, Width_t line_width=3)
23 //x TEveTrackList* esd_spd_tracklets(Float_t rad=8)
24 {
25   // radius - cylindrical radius to which the tracklets should be extrapolated
26
27   AliESDEvent     *esd = AliEveEventManager::AssertESD();
28   AliESDVertex    *pv  = esd->GetPrimaryVertexSPD();
29   AliMultiplicity *mul = esd->GetMultiplicity();
30
31   Double_t pvx[3], pve[3];
32   pv->GetXYZ(pvx);
33   pv->GetSigmaXYZ(pve);
34
35   TEveCompound *cont = new TEveCompound("SPD Tracklets");
36   cont->OpenCompound();
37   //x TEveTrackList *cont = new TEveTrackList("SPD Tracklets");
38   cont->SetTitle(Form("N=%d", mul->GetNumberOfTracklets()));
39   cont->SetMainColor(7);
40   //x cont->SetLineWidth(line_width);
41
42   gEve->AddElement(cont);
43
44   for (Int_t i=0; i<mul->GetNumberOfTracklets(); ++i)
45   {
46     using namespace TMath;
47     Float_t theta = mul->GetTheta(i);
48     Float_t phi   = mul->GetPhi(i);
49     Float_t dr[3];
50     dr[0] = radius*Cos(phi);
51     dr[1] = radius*Sin(phi);
52     dr[2] = radius/Tan(theta);
53
54     TEveLine* track = new TEveLine;
55     track->SetMainColor(7);
56     track->SetLineWidth(line_width);
57     //x AliEveTrack* track = new AliEveTrack;
58     //x track->SetPropagator(cont->GetPropagator());
59     //x track->SetAttLineAttMarker(cont);
60     track->SetElementName(Form("Tracklet %d", i));
61     track->SetElementTitle(Form("id=%d: theta=%.3f, phi=%.3f", i, theta, phi));
62
63     track->SetPoint(0, pvx[0], pvx[1], pvx[2]);
64     track->SetPoint(1,pvx[0]+dr[0], pvx[1]+dr[1], pvx[2]+dr[2]);
65
66     //x track->SetLockPoints(kTRUE);
67
68     cont->AddElement(track);
69   }
70
71   gEve->Redraw3D();
72
73   return cont;
74 }