]> git.uio.no Git - u/mrichter/AliRoot.git/blame - EVE/alice-macros/esd_tracks.C
Add missing file to last entry.
[u/mrichter/AliRoot.git] / EVE / alice-macros / esd_tracks.C
CommitLineData
5a5a1232 1// $Id$
2
86f12f78 3Reve::Track* esd_make_track(Reve::TrackRnrStyle* rnrStyle,
4 AliESDtrack* at,
5 AliExternalTrackParam* tp=0)
6{
7 Double_t pbuf[3], vbuf[3];
8 Reve::RecTrack rt;
9
10 if(tp == 0) tp = at;
11
12 rt.label = at->GetLabel();
13 rt.status = (Int_t) at->GetStatus();
14 rt.sign = tp->GetSign();
15 tp->GetXYZ(vbuf);
16 rt.V.Set(vbuf);
17 tp->GetPxPyPz(pbuf);
18 rt.P.Set(pbuf);
19 Double_t ep = at->GetP(), mc = at->GetMass();
20 rt.beta = ep/TMath::Sqrt(ep*ep + mc*mc);
21
22 Reve::Track* track = new Reve::Track(&rt, rnrStyle);
23 track->SetName(Form("ESDTrack %d", rt.label));
24 track->SetTitle(Form("pT=%.3f, pZ=%.3f; V=(%.3f, %.3f, %.3f)",
25 rt.sign*TMath::Hypot(rt.P.x, rt.P.y), rt.P.z,
26 rt.V.x, rt.V.y, rt.V.z));
27 return track;
28}
29
30Bool_t gkFixFailedITSExtr = kTRUE;
31
5a5a1232 32Reve::TrackList* esd_tracks(Double_t min_pt=0.1, Double_t max_pt=100)
33{
34 AliESD* esd = Alieve::Event::AssertESD();
86f12f78 35 AliPID pid;
5a5a1232 36
37 Double_t minptsq = min_pt*min_pt;
38 Double_t maxptsq = max_pt*max_pt;
39 Double_t ptsq;
40
41 TGListTree* l_tree = gReve->GetListTree();
42 TGListTreeItem* parent = gReve->GetEventTreeItem();
43
44 Reve::TrackList* cont = new Reve::TrackList("ESD Tracks");
45 cont->SetMainColor(Color_t(6));
86f12f78 46 Reve::TrackRnrStyle* rnrStyle = cont->GetRnrStyle();
47 rnrStyle->SetMagField( esd->GetMagneticField() );
5a5a1232 48
49 TGListTreeItem *holder = gReve->AddRenderElement(cont);
50
86f12f78 51 Int_t count = 0;
52 Double_t pbuf[3];
5a5a1232 53 for (Int_t n=0; n<esd->GetNumberOfTracks(); n++) {
86f12f78 54 AliESDtrack* at = esd->GetTrack(n);
5a5a1232 55
56 // Here would be sweet to have TObjectFormula.
57 at->GetPxPyPz(pbuf);
58 ptsq = pbuf[0]*pbuf[0] + pbuf[1]*pbuf[1];
59 if(ptsq < minptsq || ptsq > maxptsq)
60 continue;
61
62 ++count;
63
86f12f78 64 // If ITS refit failed, take track parameters at inner TPC radius.
65 AliExternalTrackParam* tp = at;
66 if (gkFixFailedITSExtr && !at->IsOn(AliESDtrack::kITSrefit)) {
67 tp = at->GetInnerParam();
68 }
5a5a1232 69
86f12f78 70 Reve::Track* track = esd_make_track(rnrStyle, at, tp);
71 cont->AddElement(track);
5a5a1232 72 gReve->AddRenderElement(holder, track);
73 }
74
75 const Text_t* tooltip = Form("pT ~ (%.2lf, %.2lf), N=%d", min_pt, max_pt, count);
76 cont->SetTitle(tooltip); // Not broadcasted automatically ...
77 holder->SetTipText(tooltip);
78
79 cont->MakeTracks();
80 cont->MakeMarkers();
81 gReve->DrawRenderElement(cont);
82
83 return cont;
84}
85
86f12f78 86Reve::TrackList* esd_tracks_from_array(TCollection* col, AliESD* esd=0)
5a5a1232 87{
88 // Retrieves AliESDTrack's from collection.
89 // See example usage with AliAnalysisTrackCuts in the next function.
90
86f12f78 91 if(esd == 0) esd = Alieve::Event::AssertESD();
92 AliPID pid;
93
5a5a1232 94 TGListTree* l_tree = gReve->GetListTree();
95 TGListTreeItem* parent = gReve->GetEventTreeItem();
96
97 Reve::TrackList* cont = new Reve::TrackList("ESD Tracks");
98 cont->SetMainColor(Color_t(6));
86f12f78 99 Reve::TrackRnrStyle* rnrStyle = cont->GetRnrStyle();
100 rnrStyle->SetMagField( esd->GetMagneticField() );
5a5a1232 101
102 TGListTreeItem *holder = gReve->AddRenderElement(cont);
103
5a5a1232 104 Int_t count = 0;
105 TIter next(col);
106 TObject *obj;
5a5a1232 107 while((obj = next()) != 0) {
108 if(obj->IsA()->InheritsFrom("AliESDtrack") == kFALSE) {
109 Warning("Object '%s', '%s' is not an AliESDtrack.",
110 obj->GetName(), obj->GetTitle());
111 continue;
112 }
113
114 ++count;
86f12f78 115 AliESDtrack* at = (AliESDtrack*) obj;
5a5a1232 116
86f12f78 117 Reve::Track* track = esd_make_track(rnrStyle, at);
118 cont->AddElement(track);
5a5a1232 119 gReve->AddRenderElement(holder, track);
120 }
121
122 const Text_t* tooltip = Form("N=%d", count);
123 cont->SetTitle(tooltip); // Not broadcasted automatically ...
124 holder->SetTipText(tooltip);
125
126 cont->MakeTracks();
127 cont->MakeMarkers();
128 gReve->DrawRenderElement(cont);
129
130 return cont;
131}
132
133void esd_tracks_alianalcuts_demo()
134{
135 AliESD* esd = Alieve::Event::AssertESD();
86f12f78 136 gSystem->Load("libANALYSIS");
5a5a1232 137
138 AliAnalysisTrackCuts atc;
139 atc.SetPtRange(0.1, 5);
140 atc.SetRapRange(-1, 1);
141
86f12f78 142 esd_tracks_from_array(atc.GetAcceptedParticles(esd), esd);
5a5a1232 143}