ROOT logo
// $Id$
// Author: Matevz Tadel 2009

/**************************************************************************
 * Copyright(c) 1998-2009, ALICE Experiment at CERN, all rights reserved. *
 * See http://aliceinfo.cern.ch/Offline/AliRoot/License.html for          *
 * full copyright notice.                                                 *
 **************************************************************************/

#include "AliEveTracklet.h"

#include <AliVVertex.h>
#include <TEveTrackPropagator.h>

//______________________________________________________________________________
// AliEveTracklet is a representation of SPD tracklet.
// It inherits from AliEveTrack to allow for common functionality
// regarding track counting.
//
// TEveTrack::fV - stores primary vertex.
// TEveTrack::fP - stores vector in direction of the tracklet with
//                 transverse component equal to 1.

ClassImp(AliEveTracklet)

Float_t AliEveTracklet::fgDefaultRadius = 10;

//______________________________________________________________________________
Float_t AliEveTracklet::GetDefaultRadius()
{
  // Static - return defualt extrapolation radius.

  return fgDefaultRadius;
}

//______________________________________________________________________________
void AliEveTracklet::SetDefaultRadius(Float_t r)
{
  // Static - set defualt extrapolation radius.

  fgDefaultRadius = r;
}

//==============================================================================

//______________________________________________________________________________
AliEveTracklet::AliEveTracklet(Int_t index, const AliVVertex* pv, Float_t theta, Float_t phi,
                               TEveTrackPropagator* prop) :
  AliEveTrack()
{
  // Constructor.

  fIndex = index;
  fV.Set(pv->GetX(), pv->GetY(), pv->GetZ());
  fP.Set(TMath::Cos(phi), TMath::Sin(phi), 1.0/TMath::Tan(theta));

  if (prop) SetPropagator(prop);
}

//==============================================================================

//______________________________________________________________________________
void AliEveTracklet::MakeTrack(Bool_t recurse)
{
  // Make track -- just make a line to radius specified in propagator
  // or use the default if it is not set.

  Float_t r = fPropagator ? fPropagator->GetMaxR() : fgDefaultRadius;
  Reset(2);
  SetPoint(0, fV.fX, fV.fY, fV.fZ);
  SetPoint(1, fV.fX + r*fP.fX, fV.fY + r*fP.fY, fV.fZ + r*fP.fZ);

  if (recurse)
  {
    for (List_i i=fChildren.begin(); i!=fChildren.end(); ++i)
    {
      TEveTrack* t = dynamic_cast<TEveTrack*>(*i);
      if (t) t->MakeTrack(recurse);
    }
  }
}

//______________________________________________________________________________
void AliEveTracklet::SecSelected(TEveTrack* track)
{
  // Emits "SecSelected(TEveTrack*)" signal.
  // Called from TEveTrackGL on secondary-selection.

  Emit("SecSelected(TEveTrack*)", (Long_t)track);
  SecSelectedTracklet((AliEveTracklet*) track);
}

//______________________________________________________________________________
void AliEveTracklet::SecSelectedTracklet(AliEveTracklet* track)
{
  // Emits "SecSelectedTracklet(AliEveTracklet*)" signal.

  Emit("SecSelectedTracklet(AliEveTracklet*)", (Long_t)track);
}
 AliEveTracklet.cxx:1
 AliEveTracklet.cxx:2
 AliEveTracklet.cxx:3
 AliEveTracklet.cxx:4
 AliEveTracklet.cxx:5
 AliEveTracklet.cxx:6
 AliEveTracklet.cxx:7
 AliEveTracklet.cxx:8
 AliEveTracklet.cxx:9
 AliEveTracklet.cxx:10
 AliEveTracklet.cxx:11
 AliEveTracklet.cxx:12
 AliEveTracklet.cxx:13
 AliEveTracklet.cxx:14
 AliEveTracklet.cxx:15
 AliEveTracklet.cxx:16
 AliEveTracklet.cxx:17
 AliEveTracklet.cxx:18
 AliEveTracklet.cxx:19
 AliEveTracklet.cxx:20
 AliEveTracklet.cxx:21
 AliEveTracklet.cxx:22
 AliEveTracklet.cxx:23
 AliEveTracklet.cxx:24
 AliEveTracklet.cxx:25
 AliEveTracklet.cxx:26
 AliEveTracklet.cxx:27
 AliEveTracklet.cxx:28
 AliEveTracklet.cxx:29
 AliEveTracklet.cxx:30
 AliEveTracklet.cxx:31
 AliEveTracklet.cxx:32
 AliEveTracklet.cxx:33
 AliEveTracklet.cxx:34
 AliEveTracklet.cxx:35
 AliEveTracklet.cxx:36
 AliEveTracklet.cxx:37
 AliEveTracklet.cxx:38
 AliEveTracklet.cxx:39
 AliEveTracklet.cxx:40
 AliEveTracklet.cxx:41
 AliEveTracklet.cxx:42
 AliEveTracklet.cxx:43
 AliEveTracklet.cxx:44
 AliEveTracklet.cxx:45
 AliEveTracklet.cxx:46
 AliEveTracklet.cxx:47
 AliEveTracklet.cxx:48
 AliEveTracklet.cxx:49
 AliEveTracklet.cxx:50
 AliEveTracklet.cxx:51
 AliEveTracklet.cxx:52
 AliEveTracklet.cxx:53
 AliEveTracklet.cxx:54
 AliEveTracklet.cxx:55
 AliEveTracklet.cxx:56
 AliEveTracklet.cxx:57
 AliEveTracklet.cxx:58
 AliEveTracklet.cxx:59
 AliEveTracklet.cxx:60
 AliEveTracklet.cxx:61
 AliEveTracklet.cxx:62
 AliEveTracklet.cxx:63
 AliEveTracklet.cxx:64
 AliEveTracklet.cxx:65
 AliEveTracklet.cxx:66
 AliEveTracklet.cxx:67
 AliEveTracklet.cxx:68
 AliEveTracklet.cxx:69
 AliEveTracklet.cxx:70
 AliEveTracklet.cxx:71
 AliEveTracklet.cxx:72
 AliEveTracklet.cxx:73
 AliEveTracklet.cxx:74
 AliEveTracklet.cxx:75
 AliEveTracklet.cxx:76
 AliEveTracklet.cxx:77
 AliEveTracklet.cxx:78
 AliEveTracklet.cxx:79
 AliEveTracklet.cxx:80
 AliEveTracklet.cxx:81
 AliEveTracklet.cxx:82
 AliEveTracklet.cxx:83
 AliEveTracklet.cxx:84
 AliEveTracklet.cxx:85
 AliEveTracklet.cxx:86
 AliEveTracklet.cxx:87
 AliEveTracklet.cxx:88
 AliEveTracklet.cxx:89
 AliEveTracklet.cxx:90
 AliEveTracklet.cxx:91
 AliEveTracklet.cxx:92
 AliEveTracklet.cxx:93
 AliEveTracklet.cxx:94
 AliEveTracklet.cxx:95
 AliEveTracklet.cxx:96
 AliEveTracklet.cxx:97
 AliEveTracklet.cxx:98
 AliEveTracklet.cxx:99