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 **************************************************************************/
10 /***********************************************************************
11 * This code defines the reconstructed v0 visualized with EVE
13 * Ludovic Gaudichet (gaudichet@to.infn.it)
14 ************************************************************************/
18 #include <TEveTrack.h>
19 #include <TEveTrackPropagator.h>
20 #include <TEveManager.h>
22 #include <TPolyLine3D.h>
23 #include <TPolyMarker3D.h>
29 /***********************************************************************
33 ************************************************************************/
37 AliEveV0::AliEveV0() :
52 // Default constructor.
54 // Override from TEveElement.
58 AliEveV0::AliEveV0(TEveRecTrack* tNeg, TEveRecTrack* tPos,
59 TEveRecV0* v0, TEveTrackPropagator* rs) :
62 fRecBirthV(v0->fV0Birth),
64 fRecDecayP(v0->fPNeg + v0->fPPos),
66 fNegTrack(new TEveTrack(tNeg, rs)),
67 fPosTrack(new TEveTrack(tPos, rs)),
76 // Override from TEveElement.
79 fPolyLineV0.SetLineColor(fMarkerColor);
81 fPosTrack->SetLineColor(2); // red
82 fNegTrack->SetLineColor(7); // light blue
84 fMainColorPtr = &fMarkerColor;
89 AddElement(fNegTrack);
90 AddElement(fPosTrack);
97 void AliEveV0::Reset(TPolyLine3D* polyLine)
99 //polyLine->SetPolyLine(n_points);
100 polyLine->SetPolyLine(0);
103 //______________________________________________________________________________
104 void AliEveV0::MakeV0path()
106 fPolyLineV0.SetPoint(0, fRecBirthV.fX, fRecBirthV.fY, fRecBirthV.fZ);
107 fPolyLineV0.SetPoint(1, fRecDecayV.fX, fRecDecayV.fY, fRecDecayV.fZ);
111 //______________________________________________________________________________
112 void AliEveV0::MakeV0()
114 SetPoint(0, fRecDecayV.fX, fRecDecayV.fY, fRecDecayV.fZ);
116 fNegTrack->MakeTrack();
117 fPosTrack->MakeTrack();
122 /***********************************************************************
126 ************************************************************************/
128 ClassImp(AliEveV0List)
130 //______________________________________________________________________________
131 AliEveV0List::AliEveV0List() :
135 fRnrDaughters(kTRUE),
143 fChildClass = AliEveV0::Class(); // override member from base TEveElementList
146 //______________________________________________________________________________
147 AliEveV0List::AliEveV0List(TEveTrackPropagator* rs) :
151 fRnrDaughters(kTRUE),
159 fChildClass = AliEveV0::Class(); // override member from base TEveElementList
164 //______________________________________________________________________________
165 AliEveV0List::AliEveV0List(const Text_t* name, TEveTrackPropagator* rs) :
169 fRnrDaughters(kTRUE),
177 fChildClass = AliEveV0::Class(); // override member from base TEveElementList
183 //______________________________________________________________________________
184 void AliEveV0List::Init()
186 if (fRnrStyle== 0) fRnrStyle = new TEveTrackPropagator;
190 //______________________________________________________________________________
191 AliEveV0List::~AliEveV0List()
196 //______________________________________________________________________________
197 void AliEveV0List::Paint(Option_t* option)
202 for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
203 if((*i)->GetRnrSelf()) {
204 ((AliEveV0*)(*i))->Paint(option);
210 for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
211 if((*i)->GetRnrSelf()) {
212 ((AliEveV0*)(*i))->PaintDaughters(option);
218 for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
219 if((*i)->GetRnrSelf()) {
220 ((AliEveV0*)(*i))->PaintPath(option);
228 //______________________________________________________________________________
230 void AliEveV0List::SetRnrV0vtx(Bool_t rnr)
236 void AliEveV0List::SetRnrV0path(Bool_t rnr)
242 void AliEveV0List::SetRnrDaughters(Bool_t rnr)
248 /******************************************************************************/
250 void AliEveV0List::MakeV0s()
252 for(List_i i=fChildren.begin(); i!=fChildren.end(); ++i) {
253 ((AliEveV0*)(*i))->MakeV0();
259 void AliEveV0List::MakeMarkers()
264 /******************************************************************************/
266 void AliEveV0List::FilterByRadius(Float_t minR, Float_t maxR)
271 for(List_i i = fChildren.begin(); i != fChildren.end(); ++i)
273 AliEveV0* v0 = (AliEveV0*) *i;
274 Float_t rad = v0->GetRadius();
275 Bool_t show = rad >= fMinRCut && rad <= fMaxRCut;
276 v0->SetRnrState(show);