]> git.uio.no Git - u/mrichter/AliRoot.git/blob - EVE/EveBase/AliEveV0.cxx
Do not assign kink status until its meaning is clear. Fixes a gcc-4.3 warning.
[u/mrichter/AliRoot.git] / EVE / EveBase / AliEveV0.cxx
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
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
31 //______________________________________________________________________________
32 AliEveV0::AliEveV0() :
33   TEvePointSet(),
34
35   fRecBirthV(),
36   fRecDecayV(),
37   fRecDecayP(),
38   fNegTrack(0),
39   fPosTrack(0),
40   fRnrStyle(0),
41   fPointingLine(0),
42   fESDIndex(-1),
43   fOnFlyStatus(kFALSE),
44   fDaughterDCA(999),
45   fChi2V0(-1)
46 {
47   // Default constructor.
48
49   // Override from TEveElement.
50   fPickable = kTRUE;
51   fMainColorPtr = &fMarkerColor;
52 }
53
54 //______________________________________________________________________________
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),
67   fPointingLine(new TEveLine("Pointing line")),
68   fESDIndex(-1),
69   fOnFlyStatus(kFALSE),
70   fDaughterDCA(999),
71   fChi2V0(-1)
72 {
73   // Constructor with full V0 specification.
74
75   // Override from TEveElement.
76   fPickable = kTRUE;
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);
87
88   fPosTrack->SetLineColor(2);  // red
89   fPosTrack->SetStdTitle();
90   fNegTrack->SetLineColor(7);  // light blue
91   fNegTrack->SetStdTitle();
92
93   fNegTrack->IncDenyDestroy();
94   AddElement(fNegTrack);
95   fPosTrack->IncDenyDestroy();
96   AddElement(fPosTrack);
97 }
98
99 //______________________________________________________________________________
100 AliEveV0::~AliEveV0()
101 {
102   // Destructor. Dereferences pos/neg tracks and pointing-line objects.
103
104   fNegTrack->DecDenyDestroy();
105   fPosTrack->DecDenyDestroy();
106   fPointingLine->DecDenyDestroy();
107 }
108
109 //______________________________________________________________________________
110 void AliEveV0::MakeV0()
111 {
112   // Set all dependant components for drawing.
113
114   SetPoint(0, fRecDecayV.fX, fRecDecayV.fY, fRecDecayV.fZ);
115
116   fNegTrack->MakeTrack();
117   fPosTrack->MakeTrack();
118
119   fPointingLine->SetPoint(0, fRecBirthV.fX, fRecBirthV.fY, fRecBirthV.fZ);
120   fPointingLine->SetPoint(1, fRecDecayV.fX, fRecDecayV.fY, fRecDecayV.fZ);
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),
141   fPosColor(0),
142   fMinRCut(0),
143   fMaxRCut(250),
144   fMinDaughterDCA(0),
145   fMaxDaughterDCA(1),
146   fMinPt(0),
147   fMaxPt(20)
148 {
149   // Default constructor.
150
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),
163   fPosColor(0),
164   fMinRCut(0),
165   fMaxRCut(250),
166   fMinDaughterDCA(0),
167   fMaxDaughterDCA(1),
168   fMinPt(0),
169   fMaxPt(20)
170 {
171   // Constructor with given track-propagator..
172
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),
187   fPosColor(0),
188   fMinRCut(0),
189   fMaxRCut(100),
190   fMinDaughterDCA(0),
191   fMaxDaughterDCA(1),
192   fMinPt(0),
193   fMaxPt(20)
194 {
195   // Standard constructor.
196
197   fChildClass = AliEveV0::Class(); // override member from base TEveElementList
198
199   Init();
200   SetName(name);
201 }
202
203 //______________________________________________________________________________
204 void AliEveV0List::Init()
205 {
206   // Initialize members needed for drawing operations.
207
208   if (fRnrStyle== 0) fRnrStyle = new TEveTrackPropagator;
209 }
210
211 /******************************************************************************/
212
213 //______________________________________________________________________________
214 void AliEveV0List::MakeV0s()
215 {
216   // Call MakeV0() for all elements.
217
218   for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
219     ((AliEveV0*)(*i))->MakeV0();
220   }
221   gEve->Redraw3D();
222 }
223
224 /******************************************************************************/
225
226 //______________________________________________________________________________
227 void AliEveV0List::FilterByRadius(Float_t minR, Float_t maxR)
228 {
229   // Select visibility of elements based on their axial radius.
230
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 }
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 }