2 // Author: Matevz Tadel 2009
4 /**************************************************************************
5 * Copyright(c) 1998-2009, ALICE Experiment at CERN, all rights reserved. *
6 * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for *
7 * full copyright notice. *
8 **************************************************************************/
10 #include "AliEveTracklet.h"
12 #include <AliVVertex.h>
13 #include <TEveTrackPropagator.h>
15 //______________________________________________________________________________
16 // AliEveTracklet is a representation of SPD tracklet.
17 // It inherits from AliEveTrack to allow for common functionality
18 // regarding track counting.
20 // TEveTrack::fV - stores primary vertex.
21 // TEveTrack::fP - stores vector in direction of the tracklet with
22 // transverse component equal to 1.
24 ClassImp(AliEveTracklet)
26 Float_t AliEveTracklet::fgDefaultRadius = 10;
28 //______________________________________________________________________________
29 Float_t AliEveTracklet::GetDefaultRadius()
31 // Static - return defualt extrapolation radius.
33 return fgDefaultRadius;
36 //______________________________________________________________________________
37 void AliEveTracklet::SetDefaultRadius(Float_t r)
39 // Static - set defualt extrapolation radius.
44 //==============================================================================
46 //______________________________________________________________________________
47 AliEveTracklet::AliEveTracklet(Int_t index, const AliVVertex* pv, Float_t theta, Float_t phi,
48 TEveTrackPropagator* prop) :
54 fV.Set(pv->GetX(), pv->GetY(), pv->GetZ());
55 fP.Set(TMath::Cos(phi), TMath::Sin(phi), 1.0/TMath::Tan(theta));
57 if (prop) SetPropagator(prop);
60 //==============================================================================
62 //______________________________________________________________________________
63 void AliEveTracklet::MakeTrack(Bool_t recurse)
65 // Make track -- just make a line to radius specified in propagator
66 // or use the default if it is not set.
68 Float_t r = fPropagator ? fPropagator->GetMaxR() : fgDefaultRadius;
70 SetPoint(0, fV.fX, fV.fY, fV.fZ);
71 SetPoint(1, fV.fX + r*fP.fX, fV.fY + r*fP.fY, fV.fZ + r*fP.fZ);
75 for (List_i i=fChildren.begin(); i!=fChildren.end(); ++i)
77 TEveTrack* t = dynamic_cast<TEveTrack*>(*i);
78 if (t) t->MakeTrack(recurse);
83 //______________________________________________________________________________
84 void AliEveTracklet::SecSelected(TEveTrack* track)
86 // Emits "SecSelected(TEveTrack*)" signal.
87 // Called from TEveTrackGL on secondary-selection.
89 Emit("SecSelected(TEveTrack*)", (Long_t)track);
90 SecSelectedTracklet((AliEveTracklet*) track);
93 //______________________________________________________________________________
94 void AliEveTracklet::SecSelectedTracklet(AliEveTracklet* track)
96 // Emits "SecSelectedTracklet(AliEveTracklet*)" signal.
98 Emit("SecSelectedTracklet(AliEveTracklet*)", (Long_t)track);