]> git.uio.no Git - u/mrichter/AliRoot.git/blame - EVE/EveBase/AliEveTrack.cxx
Moving the classes that belong to the following libraries: STEERBase, ESD, CDB, AOD...
[u/mrichter/AliRoot.git] / EVE / EveBase / AliEveTrack.cxx
CommitLineData
0e33c639 1// $Id$
2// Author: Matevz Tadel 2009
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#include "AliEveTrack.h"
11
50ac85c6 12#include "AliESDtrack.h"
13#include "AliAODTrack.h"
14
0e33c639 15#include <TROOT.h>
35949df0 16#include <TMath.h>
0e33c639 17
18//______________________________________________________________________________
19// Full description of AliEveTrack
20//
21
22ClassImp(AliEveTrack)
23
24//______________________________________________________________________________
25AliEveTrack::AliEveTrack() :
26 TEveTrack()
27{
28 // Constructor.
29}
30
31//______________________________________________________________________________
50ac85c6 32AliEveTrack::AliEveTrack(TParticle* t, Int_t label, TEveTrackPropagator* prop) :
33 TEveTrack(t, label, prop)
34{
35 // Constructor.
36}
37
38//______________________________________________________________________________
39AliEveTrack::AliEveTrack(TEveMCTrack* t, TEveTrackPropagator* prop) :
40 TEveTrack(t, prop)
41{
42 // Constructor.
43}
44
45//______________________________________________________________________________
46AliEveTrack::AliEveTrack(TEveRecTrack* t, TEveTrackPropagator* prop) :
47 TEveTrack(t, prop)
0e33c639 48{
49 // Constructor.
50}
51
52//______________________________________________________________________________
50ac85c6 53AliEveTrack::AliEveTrack(AliESDtrack* t, TEveTrackPropagator* prop) :
54 TEveTrack()
0e33c639 55{
56 // Constructor.
50ac85c6 57
58 Double_t buf[3];
59 t->GetXYZ(buf); fV.Set(buf);
60 t->GetPxPyPz(buf); fP.Set(buf);
61
62 Double_t ep = t->GetP(), mc = t->GetMass();
63 fBeta = ep/TMath::Sqrt(ep*ep + mc*mc);
64 // fPdg = 0; // ??? Use PID ?
35949df0 65 fCharge = TMath::Nint(t->GetSign());
50ac85c6 66
67 fLabel = t->GetLabel();
68 fIndex = t->GetID();
69 // fStatus = (Int_t) t->GetStatus(); // RRRR Uncomment for root-5.26.
70
71 SetPropagator(prop);
0e33c639 72}
73
74//______________________________________________________________________________
50ac85c6 75AliEveTrack::AliEveTrack(AliAODTrack* t, TEveTrackPropagator* prop) :
76 TEveTrack()
0e33c639 77{
78 // Constructor.
50ac85c6 79
80 Double_t buf[3];
81
82 t->GetXYZ(buf); fV.Set(buf);
83 t->PxPyPz(buf); fP.Set(buf);
84
85 // fBeta = 0; // Unknown, no mass function
86 // fPdg = 0; // ??? Use PID ?
87 fCharge= t->Charge();
88
89 fLabel = t->GetLabel();
90 fIndex = t->GetID();
91 // fStatus = (Int_t) t->GetStatus(); // RRRR Uncomment for root-5.26.
92
93 SetPropagator(prop);
0e33c639 94}
95
96//______________________________________________________________________________
97AliEveTrack::AliEveTrack(const AliEveTrack& t) :
98 TEveTrack(t)
99{
100 // Copy constructor.
101}
102
103//______________________________________________________________________________
104AliEveTrack::~AliEveTrack()
105{
106 // Destructor.
107}
108
3013fa45 109//______________________________________________________________________________
110void AliEveTrack::SetStartParams(const AliExternalTrackParam* tp)
111{
112 // Set the initial vertex / momentum of eve track from 'tp'.
113
114 Double_t buf[3];
115
116 tp->GetXYZ(buf); fV.Set(buf);
117 tp->PxPyPz(buf); fP.Set(buf);
118}
119
0e33c639 120/******************************************************************************/
121
122//______________________________________________________________________________
123void AliEveTrack::ImportHits()
124{
125 // Import hits with same label as the track.
126 // Uses macro "hits_from_label.C".
127
128 TEveUtil::LoadMacro("hits_from_label.C");
129 gROOT->ProcessLine(Form("hits_from_label(%d, (TEveElement*)%p);",
130 fLabel, this));
131}
132
133//______________________________________________________________________________
4267948f 134void AliEveTrack::ImportClustersFromLabel()
0e33c639 135{
136 // Import clusters with same label as the track.
137 // Uses macro "clusters_from_label.C".
138
139 TEveUtil::LoadMacro("clusters_from_label.C");
140 gROOT->ProcessLine(Form("clusters_from_label(%d, (TEveElement*)%p);",
141 fLabel, this));
142}
143
144//______________________________________________________________________________
145void AliEveTrack::ImportClustersFromIndex()
146{
147 // Import clusters marked with same reconstructed track index as the track.
148 // Uses macro "clusters_from_index.C".
149
150 static const TEveException kEH("AliEveTrack::ImportClustersFromIndex ");
151
152 if (fIndex == kMinInt)
1349dd2e 153 throw kEH + "index not set.";
0e33c639 154
155 TEveUtil::LoadMacro("clusters_from_index.C");
156 gROOT->ProcessLine(Form("clusters_from_index(%d, (TEveElement*)%p);",
157 fIndex, this));
158}
159
160/******************************************************************************/
161
162//______________________________________________________________________________
163void AliEveTrack::ImportKine()
164{
165 // Import kinematics of the track's label recursively.
166 // Uses macro "kine_tracks.C".
167
168 static const TEveException kEH("AliEveTrack::ImportKine ");
169
170 if (fLabel == kMinInt)
1349dd2e 171 throw kEH + "label not set.";
0e33c639 172
173 Int_t label;
174 if (fLabel < 0) {
175 Warning(kEH, "label negative, taking absolute value.");
176 label = -fLabel;
177 } else {
178 label = fLabel;
179 }
180
181 TEveUtil::LoadMacro("kine_tracks.C");
182 gROOT->ProcessLine(Form("kine_track(%d, kTRUE, kTRUE, kTRUE, kTRUE, (TEveElement*)%p);",
183 label, this));
184
185}
186
187//______________________________________________________________________________
188void AliEveTrack::ImportKineWithArgs(Bool_t importMother, Bool_t importDaugters,
189 Bool_t colorPdg, Bool_t recurse)
190{
191 // Import kinematics of the track's label. Arguments steer the
192 // import process:
193 // importMother import particle with track's label
194 // importDaugters import direct daughters of label
195 // colorPdg color kinematics by PDG code
196 // recurse recursive import of daughters' daughters
197 // Uses macro "kine_tracks.C".
198
199 static const TEveException kEH("AliEveTrack::ImportKineWithArgs ");
200
201 if (fLabel == kMinInt)
1349dd2e 202 throw kEH + "label not set.";
0e33c639 203
204 Int_t label;
205 if (fLabel < 0) {
206 Warning(kEH, "label negative, taking absolute value.");
207 label = -fLabel;
208 } else {
209 label = fLabel;
210 }
211
212 TEveUtil::LoadMacro("kine_tracks.C");
213 gROOT->ProcessLine(Form("kine_track(%d, %d, %d, %d, %d, (TEveElement*)%p);",
214 label, importMother, importDaugters, colorPdg, recurse, this));
215}
216
217//______________________________________________________________________________
218void AliEveTrack::PrintKineStack()
219{
220 // Print kinematics pertaining to track's label.
221 // Uses macro "print_kine_from_label.C".
222
223 static const TEveException kEH("AliEveTrack::PrintKineStack ");
224
225 if (fLabel == kMinInt)
1349dd2e 226 throw kEH + "label not set.";
0e33c639 227
228 Int_t label;
229 if (fLabel < 0) {
230 Warning(kEH, "label negative, taking absolute value.");
231 label = -fLabel;
232 } else {
233 label = fLabel;
234 }
235
236 TEveUtil::LoadMacro("print_kine_from_label.C");
237 gROOT->ProcessLine(Form("print_kine_from_label(%d);", label));
238}
3a20f984 239
240//______________________________________________________________________________
241void AliEveTrack::SecSelected(TEveTrack* track)
242{
243 // Emits "SecSelected(TEveTrack*)" signal.
244 // Called from TEveTrackGL on secondary-selection.
245
246 Emit("SecSelected(TEveTrack*)", (Long_t)track);
247 SecSelectedTrack((AliEveTrack*) track);
248}
249
250//______________________________________________________________________________
251void AliEveTrack::SecSelectedTrack(AliEveTrack* track)
252{
253 // Emits "SecSelectedTrack(AliEveTrack*)" signal.
254
255 Emit("SecSelectedTrack(AliEveTrack*)", (Long_t)track);
256}
bccc8088 257
258//______________________________________________________________________________
259AliESDtrack* AliEveTrack::GetESDTrack() const
260{
261 // Return source object dyn-casted to AliESDtrack.
262
263 return dynamic_cast<AliESDtrack*>(GetSourceObject());
264}
265
266//______________________________________________________________________________
267AliAODTrack* AliEveTrack::GetAODTrack() const
268{
269 // Return source object dyn-casted to AliAODTrack.
270
271 return dynamic_cast<AliAODTrack*>(GetSourceObject());
272}