]>
Commit | Line | Data |
---|---|---|
3a20f984 | 1 | // $Id$ |
2 | // Author: Matevz Tadel 2009 | |
3 | ||
4 | /************************************************************************** | |
5 | * Copyright(c) 1998-2009, 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 "AliEveTracklet.h" | |
11 | ||
12 | #include <AliVVertex.h> | |
13 | #include <TEveTrackPropagator.h> | |
14 | ||
15 | //______________________________________________________________________________ | |
16 | // AliEveTracklet is a representation of SPD tracklet. | |
17 | // It inherits from AliEveTrack to allow for common functionality | |
18 | // regarding track counting. | |
19 | // | |
20 | // TEveTrack::fV - stores primary vertex. | |
21 | // TEveTrack::fP - stores vector in direction of the tracklet with | |
22 | // transverse component equal to 1. | |
23 | ||
24 | ClassImp(AliEveTracklet) | |
25 | ||
26 | Float_t AliEveTracklet::fgDefaultRadius = 10; | |
27 | ||
28 | //______________________________________________________________________________ | |
29 | Float_t AliEveTracklet::GetDefaultRadius() | |
30 | { | |
31 | // Static - return defualt extrapolation radius. | |
32 | ||
33 | return fgDefaultRadius; | |
34 | } | |
35 | ||
36 | //______________________________________________________________________________ | |
37 | void AliEveTracklet::SetDefaultRadius(Float_t r) | |
38 | { | |
39 | // Static - set defualt extrapolation radius. | |
40 | ||
41 | fgDefaultRadius = r; | |
42 | } | |
43 | ||
44 | //============================================================================== | |
45 | ||
46 | //______________________________________________________________________________ | |
47 | AliEveTracklet::AliEveTracklet(const AliVVertex* pv, Float_t theta, Float_t phi, | |
48 | TEveTrackPropagator* prop) : | |
49 | AliEveTrack() | |
50 | { | |
51 | // Constructor. | |
52 | ||
53 | using namespace TMath; | |
54 | ||
55 | fV.Set(pv->GetX(), pv->GetY(), pv->GetZ()); | |
56 | fP.Set(Cos(phi), Sin(phi), 1.0/Tan(theta)); | |
57 | ||
58 | if (prop) SetPropagator(prop); | |
59 | } | |
60 | ||
61 | //============================================================================== | |
62 | ||
63 | //______________________________________________________________________________ | |
64 | void AliEveTracklet::MakeTrack(Bool_t recurse) | |
65 | { | |
66 | // Make track -- just make a line to radius specified in propagator | |
67 | // or use the default if it is not set. | |
68 | ||
69 | Float_t r = fPropagator ? fPropagator->GetMaxR() : fgDefaultRadius; | |
70 | Reset(2); | |
71 | SetPoint(0, fV.fX, fV.fY, fV.fZ); | |
72 | SetPoint(1, fV.fX + r*fP.fX, fV.fY + r*fP.fY, fV.fZ + r*fP.fZ); | |
73 | ||
74 | if (recurse) | |
75 | { | |
76 | for (List_i i=fChildren.begin(); i!=fChildren.end(); ++i) | |
77 | { | |
78 | TEveTrack* t = dynamic_cast<TEveTrack*>(*i); | |
79 | if (t) t->MakeTrack(recurse); | |
80 | } | |
81 | } | |
82 | } | |
83 | ||
84 | //______________________________________________________________________________ | |
85 | void AliEveTracklet::SecSelected(TEveTrack* track) | |
86 | { | |
87 | // Emits "SecSelected(TEveTrack*)" signal. | |
88 | // Called from TEveTrackGL on secondary-selection. | |
89 | ||
90 | Emit("SecSelected(TEveTrack*)", (Long_t)track); | |
91 | SecSelectedTracklet((AliEveTracklet*) track); | |
92 | } | |
93 | ||
94 | //______________________________________________________________________________ | |
95 | void AliEveTracklet::SecSelectedTracklet(AliEveTracklet* track) | |
96 | { | |
97 | // Emits "SecSelectedTracklet(AliEveTracklet*)" signal. | |
98 | ||
99 | Emit("SecSelectedTracklet(AliEveTracklet*)", (Long_t)track); | |
100 | } |