2 // Main authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007
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 **************************************************************************/
12 #include <TEveTrack.h>
13 #include <TEveTrackPropagator.h>
14 #include <TEveManager.h>
16 #include <TPolyLine3D.h>
17 #include <TPolyMarker3D.h>
23 /***********************************************************************
27 ************************************************************************/
31 //______________________________________________________________________________
32 AliEveV0::AliEveV0() :
47 // Default constructor.
49 // Override from TEveElement.
51 fMainColorPtr = &fMarkerColor;
54 //______________________________________________________________________________
55 AliEveV0::AliEveV0(TEveRecTrack* tNeg, TEveRecTrack* tPos,
56 TEveRecV0* v0, TEveTrackPropagator* rs) :
59 fRecBirthV(v0->fV0Birth),
61 fRecDecayP(v0->fPNeg + v0->fPPos),
63 fNegTrack(new TEveTrack(tNeg, rs)),
64 fPosTrack(new TEveTrack(tPos, rs)),
67 fPointingLine(new TEveLine("Pointing line")),
73 // Constructor with full V0 specification.
75 // Override from TEveElement.
77 fMainColorPtr = &fMarkerColor;
80 fMarkerColor = kSpring + 6;
83 fPointingLine->SetLineColor(fMarkerColor);
84 fPointingLine->SetLineWidth(2);
85 fPointingLine->IncDenyDestroy();
86 AddElement(fPointingLine);
88 fPosTrack->SetLineColor(2); // red
89 fPosTrack->SetStdTitle();
90 fNegTrack->SetLineColor(7); // light blue
91 fNegTrack->SetStdTitle();
93 fNegTrack->IncDenyDestroy();
94 AddElement(fNegTrack);
95 fPosTrack->IncDenyDestroy();
96 AddElement(fPosTrack);
99 //______________________________________________________________________________
100 AliEveV0::~AliEveV0()
102 // Destructor. Dereferences pos/neg tracks and pointing-line objects.
104 fNegTrack->DecDenyDestroy();
105 fPosTrack->DecDenyDestroy();
106 fPointingLine->DecDenyDestroy();
109 //______________________________________________________________________________
110 void AliEveV0::MakeV0()
112 // Set all dependant components for drawing.
114 SetPoint(0, fRecDecayV.fX, fRecDecayV.fY, fRecDecayV.fZ);
116 fNegTrack->MakeTrack();
117 fPosTrack->MakeTrack();
119 fPointingLine->SetPoint(0, fRecBirthV.fX, fRecBirthV.fY, fRecBirthV.fZ);
120 fPointingLine->SetPoint(1, fRecDecayV.fX, fRecDecayV.fY, fRecDecayV.fZ);
124 /***********************************************************************
128 ************************************************************************/
130 ClassImp(AliEveV0List)
132 //______________________________________________________________________________
133 AliEveV0List::AliEveV0List() :
137 fRnrDaughters(kTRUE),
149 // Default constructor.
151 fChildClass = AliEveV0::Class(); // override member from base TEveElementList
154 //______________________________________________________________________________
155 AliEveV0List::AliEveV0List(TEveTrackPropagator* rs) :
159 fRnrDaughters(kTRUE),
171 // Constructor with given track-propagator..
173 fChildClass = AliEveV0::Class(); // override member from base TEveElementList
178 //______________________________________________________________________________
179 AliEveV0List::AliEveV0List(const Text_t* name, TEveTrackPropagator* rs) :
183 fRnrDaughters(kTRUE),
195 // Standard constructor.
197 fChildClass = AliEveV0::Class(); // override member from base TEveElementList
203 //______________________________________________________________________________
204 void AliEveV0List::Init()
206 // Initialize members needed for drawing operations.
208 if (fRnrStyle== 0) fRnrStyle = new TEveTrackPropagator;
211 /******************************************************************************/
213 //______________________________________________________________________________
214 void AliEveV0List::MakeV0s()
216 // Call MakeV0() for all elements.
218 for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
219 ((AliEveV0*)(*i))->MakeV0();
224 /******************************************************************************/
226 //______________________________________________________________________________
227 void AliEveV0List::FilterByRadius(Float_t minR, Float_t maxR)
229 // Select visibility of elements based on their axial radius.
234 for(List_i i = fChildren.begin(); i != fChildren.end(); ++i)
236 AliEveV0* v0 = (AliEveV0*) *i;
237 Float_t rad = v0->GetRadius();
238 Bool_t show = rad >= fMinRCut && rad <= fMaxRCut;
239 v0->SetRnrState(show);
245 /******************************************************************************/
247 //______________________________________________________________________________
248 void AliEveV0List::FilterByDaughterDCA(Float_t minDaughterDCA, Float_t maxDaughterDCA)
250 // Select visibility of elements based on the DCA between daughters.
252 fMinDaughterDCA = minDaughterDCA;
253 fMaxDaughterDCA = maxDaughterDCA;
255 for(List_i i = fChildren.begin(); i != fChildren.end(); ++i)
257 AliEveV0* v0 = (AliEveV0*) *i;
258 Float_t dca = v0->GetDaughterDCA();
259 Bool_t show = dca >= fMinDaughterDCA && dca <= fMaxDaughterDCA;
260 v0->SetRnrState(show);
266 /******************************************************************************/
268 //______________________________________________________________________________
269 void AliEveV0List::FilterByPt(Float_t minPt, Float_t maxPt)
271 // Select visibility of elements based on the V0 pt.
276 for(List_i i = fChildren.begin(); i != fChildren.end(); ++i)
278 AliEveV0* v0 = (AliEveV0*) *i;
279 Float_t pt = v0->GetPt();
280 Bool_t show = pt >= fMinPt && pt <= fMaxPt;
281 v0->SetRnrState(show);