]> git.uio.no Git - u/mrichter/AliRoot.git/blame - EVE/EveBase/AliEveV0.cxx
AliEveEventManager
[u/mrichter/AliRoot.git] / EVE / EveBase / AliEveV0.cxx
CommitLineData
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
29ClassImp(AliEveV0)
30
e6e8b28b 31//______________________________________________________________________________
b594a020 32AliEveV0::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 55AliEveV0::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 100AliEveV0::~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//______________________________________________________________________________
110void 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
130ClassImp(AliEveV0List)
131
132//______________________________________________________________________________
133AliEveV0List::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//______________________________________________________________________________
155AliEveV0List::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//______________________________________________________________________________
179AliEveV0List::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//______________________________________________________________________________
204void 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 214void 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 227void 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//______________________________________________________________________________
248void 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//______________________________________________________________________________
269void 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}