]>
Commit | Line | Data |
---|---|---|
b594a020 | 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 | ||
b594a020 | 10 | #include "AliEveV0.h" |
11 | ||
12 | #include <TEveTrack.h> | |
13 | #include <TEveTrackPropagator.h> | |
14 | #include <TEveManager.h> | |
15 | ||
16 | #include <TPolyLine3D.h> | |
17 | #include <TPolyMarker3D.h> | |
18 | #include <TColor.h> | |
19 | ||
20 | #include <vector> | |
21 | ||
22 | ||
23 | /*********************************************************************** | |
24 | * | |
25 | * AliEveV0 class | |
26 | * | |
27 | ************************************************************************/ | |
28 | ||
29 | ClassImp(AliEveV0) | |
30 | ||
e6e8b28b | 31 | //______________________________________________________________________________ |
b594a020 | 32 | AliEveV0::AliEveV0() : |
33 | TEvePointSet(), | |
34 | ||
35 | fRecBirthV(), | |
36 | fRecDecayV(), | |
37 | fRecDecayP(), | |
38 | fNegTrack(0), | |
39 | fPosTrack(0), | |
40 | fRnrStyle(0), | |
e6e8b28b | 41 | fPointingLine(0), |
b594a020 | 42 | fESDIndex(-1), |
ca8a6926 | 43 | fOnFlyStatus(kFALSE), |
b594a020 | 44 | fDaughterDCA(999), |
45 | fChi2V0(-1) | |
ca8a6926 | 46 | { |
47 | // Default constructor. | |
b594a020 | 48 | |
ca8a6926 | 49 | // Override from TEveElement. |
50 | fPickable = kTRUE; | |
e6e8b28b | 51 | fMainColorPtr = &fMarkerColor; |
ca8a6926 | 52 | } |
b594a020 | 53 | |
e6e8b28b | 54 | //______________________________________________________________________________ |
b594a020 | 55 | AliEveV0::AliEveV0(TEveRecTrack* tNeg, TEveRecTrack* tPos, |
56 | TEveRecV0* v0, TEveTrackPropagator* rs) : | |
57 | TEvePointSet(), | |
58 | ||
59 | fRecBirthV(v0->fV0Birth), | |
60 | fRecDecayV(v0->fVCa), | |
61 | fRecDecayP(v0->fPNeg + v0->fPPos), | |
62 | ||
63 | fNegTrack(new TEveTrack(tNeg, rs)), | |
64 | fPosTrack(new TEveTrack(tPos, rs)), | |
65 | ||
66 | fRnrStyle(rs), | |
e6e8b28b | 67 | fPointingLine(new TEveLine("Pointing line")), |
b594a020 | 68 | fESDIndex(-1), |
ca8a6926 | 69 | fOnFlyStatus(kFALSE), |
b594a020 | 70 | fDaughterDCA(999), |
71 | fChi2V0(-1) | |
72 | { | |
e6e8b28b | 73 | // Constructor with full V0 specification. |
74 | ||
ca8a6926 | 75 | // Override from TEveElement. |
76 | fPickable = kTRUE; | |
e6e8b28b | 77 | fMainColorPtr = &fMarkerColor; |
78 | ||
79 | fMarkerStyle = 2; | |
80 | fMarkerColor = kSpring + 6; | |
81 | fMarkerSize = 1; | |
82 | ||
83 | fPointingLine->SetLineColor(fMarkerColor); | |
84 | fPointingLine->SetLineWidth(2); | |
85 | fPointingLine->IncDenyDestroy(); | |
86 | AddElement(fPointingLine); | |
ca8a6926 | 87 | |
b594a020 | 88 | fPosTrack->SetLineColor(2); // red |
e6e8b28b | 89 | fPosTrack->SetStdTitle(); |
b594a020 | 90 | fNegTrack->SetLineColor(7); // light blue |
e6e8b28b | 91 | fNegTrack->SetStdTitle(); |
b594a020 | 92 | |
e6e8b28b | 93 | fNegTrack->IncDenyDestroy(); |
b594a020 | 94 | AddElement(fNegTrack); |
e6e8b28b | 95 | fPosTrack->IncDenyDestroy(); |
b594a020 | 96 | AddElement(fPosTrack); |
97 | } | |
98 | ||
e6e8b28b | 99 | //______________________________________________________________________________ |
b594a020 | 100 | AliEveV0::~AliEveV0() |
b594a020 | 101 | { |
e6e8b28b | 102 | // Destructor. Dereferences pos/neg tracks and pointing-line objects. |
b594a020 | 103 | |
e6e8b28b | 104 | fNegTrack->DecDenyDestroy(); |
105 | fPosTrack->DecDenyDestroy(); | |
106 | fPointingLine->DecDenyDestroy(); | |
b594a020 | 107 | } |
108 | ||
b594a020 | 109 | //______________________________________________________________________________ |
110 | void AliEveV0::MakeV0() | |
111 | { | |
e6e8b28b | 112 | // Set all dependant components for drawing. |
113 | ||
b594a020 | 114 | SetPoint(0, fRecDecayV.fX, fRecDecayV.fY, fRecDecayV.fZ); |
115 | ||
116 | fNegTrack->MakeTrack(); | |
117 | fPosTrack->MakeTrack(); | |
e6e8b28b | 118 | |
119 | fPointingLine->SetPoint(0, fRecBirthV.fX, fRecBirthV.fY, fRecBirthV.fZ); | |
120 | fPointingLine->SetPoint(1, fRecDecayV.fX, fRecDecayV.fY, fRecDecayV.fZ); | |
b594a020 | 121 | } |
122 | ||
123 | ||
124 | /*********************************************************************** | |
125 | * | |
126 | * AliEveV0List class | |
127 | * | |
128 | ************************************************************************/ | |
129 | ||
130 | ClassImp(AliEveV0List) | |
131 | ||
132 | //______________________________________________________________________________ | |
133 | AliEveV0List::AliEveV0List() : | |
134 | TEveElementList(), | |
135 | fTitle(), | |
136 | fRnrStyle(0), | |
137 | fRnrDaughters(kTRUE), | |
138 | fRnrV0vtx(kTRUE), | |
139 | fRnrV0path(kTRUE), | |
140 | fNegColor(0), | |
ca8a6926 | 141 | fPosColor(0), |
142 | fMinRCut(0), | |
e1bb28b4 | 143 | fMaxRCut(250), |
144 | fMinDaughterDCA(0), | |
145 | fMaxDaughterDCA(1), | |
146 | fMinPt(0), | |
147 | fMaxPt(20) | |
b594a020 | 148 | { |
e6e8b28b | 149 | // Default constructor. |
150 | ||
b594a020 | 151 | fChildClass = AliEveV0::Class(); // override member from base TEveElementList |
152 | } | |
153 | ||
154 | //______________________________________________________________________________ | |
155 | AliEveV0List::AliEveV0List(TEveTrackPropagator* rs) : | |
156 | TEveElementList(), | |
157 | fTitle(), | |
158 | fRnrStyle(rs), | |
159 | fRnrDaughters(kTRUE), | |
160 | fRnrV0vtx(kTRUE), | |
161 | fRnrV0path(kTRUE), | |
162 | fNegColor(0), | |
ca8a6926 | 163 | fPosColor(0), |
164 | fMinRCut(0), | |
e1bb28b4 | 165 | fMaxRCut(250), |
166 | fMinDaughterDCA(0), | |
167 | fMaxDaughterDCA(1), | |
168 | fMinPt(0), | |
169 | fMaxPt(20) | |
b594a020 | 170 | { |
e6e8b28b | 171 | // Constructor with given track-propagator.. |
172 | ||
b594a020 | 173 | fChildClass = AliEveV0::Class(); // override member from base TEveElementList |
174 | ||
175 | Init(); | |
176 | } | |
177 | ||
178 | //______________________________________________________________________________ | |
179 | AliEveV0List::AliEveV0List(const Text_t* name, TEveTrackPropagator* rs) : | |
180 | TEveElementList(), | |
181 | fTitle(), | |
182 | fRnrStyle(rs), | |
183 | fRnrDaughters(kTRUE), | |
184 | fRnrV0vtx(kTRUE), | |
185 | fRnrV0path(kTRUE), | |
186 | fNegColor(0), | |
ca8a6926 | 187 | fPosColor(0), |
188 | fMinRCut(0), | |
e1bb28b4 | 189 | fMaxRCut(100), |
190 | fMinDaughterDCA(0), | |
191 | fMaxDaughterDCA(1), | |
192 | fMinPt(0), | |
193 | fMaxPt(20) | |
b594a020 | 194 | { |
e6e8b28b | 195 | // Standard constructor. |
196 | ||
b594a020 | 197 | fChildClass = AliEveV0::Class(); // override member from base TEveElementList |
198 | ||
199 | Init(); | |
200 | SetName(name); | |
201 | } | |
202 | ||
203 | //______________________________________________________________________________ | |
204 | void AliEveV0List::Init() | |
205 | { | |
e6e8b28b | 206 | // Initialize members needed for drawing operations. |
b594a020 | 207 | |
e6e8b28b | 208 | if (fRnrStyle== 0) fRnrStyle = new TEveTrackPropagator; |
b594a020 | 209 | } |
210 | ||
ca8a6926 | 211 | /******************************************************************************/ |
b594a020 | 212 | |
e6e8b28b | 213 | //______________________________________________________________________________ |
b594a020 | 214 | void AliEveV0List::MakeV0s() |
215 | { | |
e6e8b28b | 216 | // Call MakeV0() for all elements. |
217 | ||
b594a020 | 218 | for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) { |
219 | ((AliEveV0*)(*i))->MakeV0(); | |
220 | } | |
221 | gEve->Redraw3D(); | |
222 | } | |
223 | ||
ca8a6926 | 224 | /******************************************************************************/ |
225 | ||
e6e8b28b | 226 | //______________________________________________________________________________ |
ca8a6926 | 227 | void AliEveV0List::FilterByRadius(Float_t minR, Float_t maxR) |
228 | { | |
e6e8b28b | 229 | // Select visibility of elements based on their axial radius. |
230 | ||
ca8a6926 | 231 | fMinRCut = minR; |
232 | fMaxRCut = maxR; | |
233 | ||
234 | for(List_i i = fChildren.begin(); i != fChildren.end(); ++i) | |
235 | { | |
236 | AliEveV0* v0 = (AliEveV0*) *i; | |
237 | Float_t rad = v0->GetRadius(); | |
238 | Bool_t show = rad >= fMinRCut && rad <= fMaxRCut; | |
239 | v0->SetRnrState(show); | |
240 | } | |
241 | ElementChanged(); | |
242 | gEve->Redraw3D(); | |
243 | } | |
e1bb28b4 | 244 | |
245 | /******************************************************************************/ | |
246 | ||
247 | //______________________________________________________________________________ | |
248 | void AliEveV0List::FilterByDaughterDCA(Float_t minDaughterDCA, Float_t maxDaughterDCA) | |
249 | { | |
250 | // Select visibility of elements based on the DCA between daughters. | |
251 | ||
252 | fMinDaughterDCA = minDaughterDCA; | |
253 | fMaxDaughterDCA = maxDaughterDCA; | |
254 | ||
255 | for(List_i i = fChildren.begin(); i != fChildren.end(); ++i) | |
256 | { | |
257 | AliEveV0* v0 = (AliEveV0*) *i; | |
258 | Float_t dca = v0->GetDaughterDCA(); | |
259 | Bool_t show = dca >= fMinDaughterDCA && dca <= fMaxDaughterDCA; | |
260 | v0->SetRnrState(show); | |
261 | } | |
262 | ElementChanged(); | |
263 | gEve->Redraw3D(); | |
264 | } | |
265 | ||
266 | /******************************************************************************/ | |
267 | ||
268 | //______________________________________________________________________________ | |
269 | void AliEveV0List::FilterByPt(Float_t minPt, Float_t maxPt) | |
270 | { | |
271 | // Select visibility of elements based on the V0 pt. | |
272 | ||
273 | fMinPt = minPt; | |
274 | fMaxPt = maxPt; | |
275 | ||
276 | for(List_i i = fChildren.begin(); i != fChildren.end(); ++i) | |
277 | { | |
278 | AliEveV0* v0 = (AliEveV0*) *i; | |
279 | Float_t pt = v0->GetPt(); | |
280 | Bool_t show = pt >= fMinPt && pt <= fMaxPt; | |
281 | v0->SetRnrState(show); | |
282 | } | |
283 | ElementChanged(); | |
284 | gEve->Redraw3D(); | |
285 | } |