]>
Commit | Line | Data |
---|---|---|
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 | ||
22 | ClassImp(AliEveTrack) | |
23 | ||
24 | //______________________________________________________________________________ | |
25 | AliEveTrack::AliEveTrack() : | |
26 | TEveTrack() | |
27 | { | |
28 | // Constructor. | |
29 | } | |
30 | ||
31 | //______________________________________________________________________________ | |
50ac85c6 | 32 | AliEveTrack::AliEveTrack(TParticle* t, Int_t label, TEveTrackPropagator* prop) : |
33 | TEveTrack(t, label, prop) | |
34 | { | |
35 | // Constructor. | |
36 | } | |
37 | ||
38 | //______________________________________________________________________________ | |
39 | AliEveTrack::AliEveTrack(TEveMCTrack* t, TEveTrackPropagator* prop) : | |
40 | TEveTrack(t, prop) | |
41 | { | |
42 | // Constructor. | |
43 | } | |
44 | ||
45 | //______________________________________________________________________________ | |
46 | AliEveTrack::AliEveTrack(TEveRecTrack* t, TEveTrackPropagator* prop) : | |
47 | TEveTrack(t, prop) | |
0e33c639 | 48 | { |
49 | // Constructor. | |
50 | } | |
51 | ||
52 | //______________________________________________________________________________ | |
50ac85c6 | 53 | AliEveTrack::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 | 75 | AliEveTrack::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 | //______________________________________________________________________________ | |
97 | AliEveTrack::AliEveTrack(const AliEveTrack& t) : | |
98 | TEveTrack(t) | |
99 | { | |
100 | // Copy constructor. | |
101 | } | |
102 | ||
103 | //______________________________________________________________________________ | |
104 | AliEveTrack::~AliEveTrack() | |
105 | { | |
106 | // Destructor. | |
107 | } | |
108 | ||
3013fa45 | 109 | //______________________________________________________________________________ |
110 | void 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 | //______________________________________________________________________________ | |
123 | void 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 | 134 | void 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 | //______________________________________________________________________________ | |
145 | void 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 | //______________________________________________________________________________ | |
163 | void 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 | //______________________________________________________________________________ | |
188 | void 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 | //______________________________________________________________________________ | |
218 | void 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 | //______________________________________________________________________________ | |
241 | void 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 | //______________________________________________________________________________ | |
251 | void AliEveTrack::SecSelectedTrack(AliEveTrack* track) | |
252 | { | |
253 | // Emits "SecSelectedTrack(AliEveTrack*)" signal. | |
254 | ||
255 | Emit("SecSelectedTrack(AliEveTrack*)", (Long_t)track); | |
256 | } | |
bccc8088 | 257 | |
258 | //______________________________________________________________________________ | |
259 | AliESDtrack* AliEveTrack::GetESDTrack() const | |
260 | { | |
261 | // Return source object dyn-casted to AliESDtrack. | |
262 | ||
263 | return dynamic_cast<AliESDtrack*>(GetSourceObject()); | |
264 | } | |
265 | ||
266 | //______________________________________________________________________________ | |
267 | AliAODTrack* AliEveTrack::GetAODTrack() const | |
268 | { | |
269 | // Return source object dyn-casted to AliAODTrack. | |
270 | ||
271 | return dynamic_cast<AliAODTrack*>(GetSourceObject()); | |
272 | } |