ROOT logo
// @(#)root/eve:$Id$
// Authors: Matevz Tadel & Alja Mrak-Tadel: 2006, 2007

/*************************************************************************
 * Copyright (C) 1995-2007, Rene Brun and Fons Rademakers.               *
 * All rights reserved.                                                  *
 *                                                                       *
 * For the licensing terms see $ROOTSYS/LICENSE.                         *
 * For the list of contributors see $ROOTSYS/README/CREDITS.             *
 *************************************************************************/

#include "TEveTrack.h"
#include "TEveTrackPropagator.h"
#include "TEvePointSet.h"

#include "TPolyLine3D.h"
#include "TMarker.h"
#include "TPolyMarker3D.h"
#include "TColor.h"
#include "TParticlePDG.h"

// Updates
#include "TEveManager.h"
#include "TEveBrowser.h"
#include "TEveTrackProjected.h"

#include "Riostream.h"

#include <vector>
#include <algorithm>
#include <functional>

//==============================================================================
//==============================================================================
// TEveTrack
//==============================================================================

//______________________________________________________________________________
//
// Visual representation of a track.
//
// If member fDpDs is set, the momentum is reduced on all path-marks that do
// not fix the momentum according to the distance travelled from the previous
// pathmark.

ClassImp(TEveTrack);

//______________________________________________________________________________
TEveTrack::TEveTrack() :
   TEveLine(),

   fV(),
   fP(),
   fPEnd(),
   fBeta(0),
   fDpDs(0),
   fPdg(0),
   fCharge(0),
   fLabel(kMinInt),
   fIndex(kMinInt),
   fStatus(0),
   fLockPoints(kFALSE),
   fPathMarks(),
   fLastPMIdx(0),
   fPropagator(0)
{
   // Default constructor.
}

//______________________________________________________________________________
TEveTrack::TEveTrack(TParticle* t, Int_t label, TEveTrackPropagator* prop):
   TEveLine(),

   fV(t->Vx(), t->Vy(), t->Vz()),
   fP(t->Px(), t->Py(), t->Pz()),
   fPEnd(),
   fBeta(t->P()/t->Energy()),
   fDpDs(0),
   fPdg(0),
   fCharge(0),
   fLabel(label),
   fIndex(kMinInt),
   fStatus(t->GetStatusCode()),
   fLockPoints(kFALSE),
   fPathMarks(),
   fLastPMIdx(0),
   fPropagator(0)
{
   // Constructor from TParticle.

   SetPropagator(prop);
   fMainColorPtr = &fLineColor;

   TParticlePDG* pdgp = t->GetPDG();
   if (pdgp) {
      fPdg    = pdgp->PdgCode();
      fCharge = (Int_t) TMath::Nint(pdgp->Charge()/3);
   }

   SetName(t->GetName());
}

//______________________________________________________________________________
TEveTrack::TEveTrack(TEveMCTrack* t, TEveTrackPropagator* prop):
   TEveLine(),

   fV(t->Vx(), t->Vy(), t->Vz()),
   fP(t->Px(), t->Py(), t->Pz()),
   fPEnd(),
   fBeta(t->P()/t->Energy()),
   fDpDs(0),
   fPdg(0),
   fCharge(0),
   fLabel(t->fLabel),
   fIndex(t->fIndex),
   fStatus(t->GetStatusCode()),
   fLockPoints(kFALSE),
   fPathMarks(),
   fLastPMIdx(0),
   fPropagator(0)
{
   // Constructor from TEveUtil Monte Carlo track.

   SetPropagator(prop);
   fMainColorPtr = &fLineColor;

   TParticlePDG* pdgp = t->GetPDG();
   if (pdgp) {
      fCharge = (Int_t) TMath::Nint(pdgp->Charge()/3);
   }

   SetName(t->GetName());
}

//______________________________________________________________________________
TEveTrack::TEveTrack(TEveRecTrackD* t, TEveTrackPropagator* prop) :
   TEveLine(),

   fV(t->fV),
   fP(t->fP),
   fPEnd(),
   fBeta(t->fBeta),
   fDpDs(0),
   fPdg(0),
   fCharge(t->fSign),
   fLabel(t->fLabel),
   fIndex(t->fIndex),
   fStatus(t->fStatus),
   fLockPoints(kFALSE),
   fPathMarks(),
   fLastPMIdx(0),
   fPropagator(0)
{
   // Constructor from TEveRecTrack<double> reconstructed track.

   SetPropagator(prop);
   fMainColorPtr = &fLineColor;

   SetName(t->GetName());
}

//______________________________________________________________________________
TEveTrack::TEveTrack(TEveRecTrack* t, TEveTrackPropagator* prop) :
   TEveLine(),

   fV(t->fV),
   fP(t->fP),
   fPEnd(),
   fBeta(t->fBeta),
   fDpDs(0),
   fPdg(0),
   fCharge(t->fSign),
   fLabel(t->fLabel),
   fIndex(t->fIndex),
   fStatus(t->fStatus),
   fLockPoints(kFALSE),
   fPathMarks(),
   fLastPMIdx(0),
   fPropagator(0)
{
   // Constructor from TEveRecTrack<float> reconstructed track.
   // It is recomended to use constructor with  TEveRecTrack<double> since
   // TEveTrackPropagator operates with double type.

   SetPropagator(prop);
   fMainColorPtr = &fLineColor;

   SetName(t->GetName());
}

//______________________________________________________________________________
TEveTrack::TEveTrack(const TEveTrack& t) :
   TEveLine(),
   fV(t.fV),
   fP(t.fP),
   fPEnd(),
   fBeta(t.fBeta),
   fDpDs(t.fDpDs),
   fPdg(t.fPdg),
   fCharge(t.fCharge),
   fLabel(t.fLabel),
   fIndex(t.fIndex),
   fStatus(t.fStatus),
   fLockPoints(t.fLockPoints),
   fPathMarks(),
   fLastPMIdx(t.fLastPMIdx),
   fPropagator(0)
{
   // Copy constructor. Track paremeters are copied but the
   // extrapolation is not perfermed so you should still call
   // MakeTrack() to do that.
   // If points of 't' are locked, they are cloned.

   if (fLockPoints)
      ClonePoints(t);

   SetPathMarks(t);
   SetPropagator (t.fPropagator);

   CopyVizParams(&t);
}

//______________________________________________________________________________
TEveTrack::~TEveTrack()
{
   // Destructor.

   SetPropagator(0);
}


//______________________________________________________________________________
const TGPicture* TEveTrack::GetListTreeIcon(Bool_t)
{
   // Returns list-tree icon for TEveTrack.

   return fgListTreeIcons[4];
}

//______________________________________________________________________________
void TEveTrack::ComputeBBox()
{
   // Compute the bounding box of the track.

   if (Size() > 0 || ! fPathMarks.empty())
   {
      BBoxInit();
      Int_t    n = Size();
      Float_t* p = TPolyMarker3D::fP;
      for (Int_t i = 0; i < n; ++i, p += 3)
      {
         BBoxCheckPoint(p);
      }
      for (vPathMark_ci i = fPathMarks.begin(); i != fPathMarks.end(); ++i)
      {
         BBoxCheckPoint(i->fV.fX, i->fV.fY,i->fV.fZ);
      }
   }
   else
   {
      BBoxZero();
   }
}

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

//______________________________________________________________________________
void TEveTrack::SetStdTitle()
{
   // Set standard track title based on most data-member values.

   TString idx(fIndex == kMinInt ? "<undef>" : Form("%d", fIndex));
   TString lbl(fLabel == kMinInt ? "<undef>" : Form("%d", fLabel));
   SetTitle(Form("Index=%s, Label=%s\nChg=%d, Pdg=%d\n"
                 "pT=%.3f, pZ=%.3f\nV=(%.3f, %.3f, %.3f)",
                 idx.Data(), lbl.Data(), fCharge, fPdg,
                 fP.Perp(), fP.fZ, fV.fX, fV.fY, fV.fZ));
}

//______________________________________________________________________________
void TEveTrack::SetTrackParams(const TEveTrack& t)
{
   // Copy track parameters from t. Track-propagator is set, too.
   // PathMarks are cleared - you can copy them via SetPathMarks(t).
   // If track 't' is locked, you should probably clone its points
   // over - use TEvePointSet::ClonePoints(t);

   fV          = t.fV;
   fP          = t.fP;
   fBeta       = t.fBeta;
   fPdg        = t.fPdg;
   fCharge     = t.fCharge;
   fLabel      = t.fLabel;
   fIndex      = t.fIndex;

   fPathMarks.clear();
   SetPropagator(t.fPropagator);
}

//______________________________________________________________________________
void TEveTrack::SetPathMarks(const TEveTrack& t)
{
   // Copy path-marks from t.

   std::copy(t.RefPathMarks().begin(), t.RefPathMarks().end(),
             std::back_insert_iterator<vPathMark_t>(fPathMarks));
}

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

//______________________________________________________________________________
void TEveTrack::SetPropagator(TEveTrackPropagator* prop)
{
   // Set track's render style.
   // Reference counts of old and new propagator are updated.

   if (fPropagator == prop) return;
   if (fPropagator) fPropagator->DecRefCount(this);
   fPropagator = prop;
   if (fPropagator) fPropagator->IncRefCount(this);
}

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

//______________________________________________________________________________
void TEveTrack::SetAttLineAttMarker(TEveTrackList* tl)
{
   // Set line and marker attributes from TEveTrackList.

   SetRnrLine(tl->GetRnrLine());
   SetLineColor(tl->GetLineColor());
   SetLineStyle(tl->GetLineStyle());
   SetLineWidth(tl->GetLineWidth());

   SetRnrPoints(tl->GetRnrPoints());
   SetMarkerColor(tl->GetMarkerColor());
   SetMarkerStyle(tl->GetMarkerStyle());
   SetMarkerSize(tl->GetMarkerSize());
}

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

//______________________________________________________________________________
void TEveTrack::MakeTrack(Bool_t recurse)
{
   // Calculate track representation based on track data and current
   // settings of the propagator.
   // If recurse is true, descend into children.

   if (!fLockPoints)
   {
      Reset(0);
      fLastPMIdx = 0;

      TEveTrackPropagator& rTP((fPropagator != 0) ? *fPropagator : TEveTrackPropagator::fgDefault);

      const Double_t maxRsq = rTP.GetMaxR() * rTP.GetMaxR();
      const Double_t maxZ   = rTP.GetMaxZ();

      if ( ! TEveTrackPropagator::IsOutsideBounds(fV, maxRsq, maxZ))
      {
         TEveVectorD currP = fP;
         Bool_t decay = kFALSE;
         rTP.InitTrack(fV, fCharge);
         for (vPathMark_i pm = fPathMarks.begin(); pm != fPathMarks.end(); ++pm, ++fLastPMIdx)
         {
            Int_t start_point = rTP.GetCurrentPoint();

            if (rTP.GetFitReferences() && pm->fType == TEvePathMarkD::kReference)
            {
               if (TEveTrackPropagator::IsOutsideBounds(pm->fV, maxRsq, maxZ))
                  break;
               if (rTP.GoToVertex(pm->fV, currP))
               {
                  currP.fX = pm->fP.fX; currP.fY = pm->fP.fY; currP.fZ = pm->fP.fZ;
               }
               else
               {
                  break;
               }
            }
            else if (rTP.GetFitDaughters() && pm->fType == TEvePathMarkD::kDaughter)
            {
               if (TEveTrackPropagator::IsOutsideBounds(pm->fV, maxRsq, maxZ))
                  break;
               if (rTP.GoToVertex(pm->fV, currP))
               {
                  currP.fX -= pm->fP.fX; currP.fY -= pm->fP.fY; currP.fZ -= pm->fP.fZ;
                  if (fDpDs != 0)
                  {
                     Double_t dp = fDpDs * rTP.GetTrackLength(start_point);
                     Double_t p  = currP.Mag();
                     if (p > dp)   currP *= 1.0 - dp / p;
                  }
               }
               else
               {
                  break;
               }
            }
            else if (rTP.GetFitDecay() && pm->fType == TEvePathMarkD::kDecay)
            {
               if (TEveTrackPropagator::IsOutsideBounds(pm->fV, maxRsq, maxZ))
                  break;
               rTP.GoToVertex(pm->fV, currP);
               decay = kTRUE;
               ++fLastPMIdx;
               break;
            }
            else if (rTP.GetFitCluster2Ds() && pm->fType == TEvePathMarkD::kCluster2D)
            {
               TEveVectorD itsect;
               if (rTP.IntersectPlane(currP, pm->fV, pm->fP, itsect))
               {
                  TEveVectorD delta   = itsect - pm->fV;
                  TEveVectorD vtopass = pm->fV + pm->fE*(pm->fE.Dot(delta));
                  if (TEveTrackPropagator::IsOutsideBounds(vtopass, maxRsq, maxZ))
                     break;
                  if ( ! rTP.GoToVertex(vtopass, currP))
                     break;

                  if (fDpDs != 0)
                  {
                     Double_t dp = fDpDs * rTP.GetTrackLength(start_point);
                     Double_t p  = currP.Mag();
                     if (p > dp)   currP *= 1.0 - dp / p;
                  }
               }
               else
               {
                  Warning("TEveTrack::MakeTrack", "Failed to intersect plane for Cluster2D. Ignoring path-mark.");
               }
            }
            else if (rTP.GetFitLineSegments() && pm->fType == TEvePathMarkD::kLineSegment)
            {
               if (TEveTrackPropagator::IsOutsideBounds(pm->fV, maxRsq, maxZ))
                  break;

               if (rTP.GoToLineSegment(pm->fV, pm->fE, currP))
               {
                  if (fDpDs != 0)
                  {
                     Double_t dp = fDpDs * rTP.GetTrackLength(start_point);
                     Double_t p  = currP.Mag();
                     if (p > dp)   currP *= 1.0 - dp / p;
                  }
               }
               else
               {
                  break;
               }
            }
            else
            {
               if (TEveTrackPropagator::IsOutsideBounds(pm->fV, maxRsq, maxZ))
                  break;
            }
         } // loop path-marks

         if (!decay)
         {
            // printf("%s loop to bounds  \n",fName.Data() );
            rTP.GoToBounds(currP);
         }
         fPEnd = currP;
         //  make_polyline:
         rTP.FillPointSet(this);
         rTP.ResetTrack();
      }
   }

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

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

//______________________________________________________________________________
void TEveTrack::CopyVizParams(const TEveElement* el)
{
   // Copy visualization parameters from element el.

   // No local parameters.

   // const TEveTrack* t = dynamic_cast<const TEveTrack*>(el);
   // if (t)
   // {}

   TEveLine::CopyVizParams(el);
}

//______________________________________________________________________________
void TEveTrack::WriteVizParams(ostream& out, const TString& var)
{
   // Write visualization parameters.

   TEveLine::WriteVizParams(out, var);

   // TString t = "   " + var + "->";
}

//______________________________________________________________________________
TClass* TEveTrack::ProjectedClass(const TEveProjection*) const
{
   // Virtual from TEveProjectable, return TEveTrackProjected class.

   return TEveTrackProjected::Class();
}

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

namespace
{
   struct Cmp_pathmark_t
   {
      bool operator()(TEvePathMarkD const & a, TEvePathMarkD const & b)
      { return a.fTime < b.fTime; }
   };
}

//______________________________________________________________________________
void TEveTrack::SortPathMarksByTime()
{
   // Sort registered pat-marks by time.

   std::sort(fPathMarks.begin(), fPathMarks.end(), Cmp_pathmark_t());
}

//______________________________________________________________________________
void TEveTrack::PrintPathMarks()
{
   // Print registered path-marks.

   static const TEveException eh("TEveTrack::PrintPathMarks ");

   printf("TEveTrack '%s', number of path marks %d, label %d\n",
          GetName(), (Int_t)fPathMarks.size(), fLabel);

   for (vPathMark_i pm = fPathMarks.begin(); pm != fPathMarks.end(); ++pm)
   {
      printf("  %-9s  p: %8f %8f %8f Vertex: %8e %8e %8e %g Extra:%8f %8f %8f\n",
             pm->TypeName(),
             pm->fP.fX,  pm->fP.fY, pm->fP.fZ,
             pm->fV.fX,  pm->fV.fY, pm->fV.fZ,
             pm->fE.fX,  pm->fE.fY, pm->fE.fZ,
             pm->fTime);
   }
}

//------------------------------------------------------------------------------

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

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

//------------------------------------------------------------------------------

//______________________________________________________________________________
Bool_t TEveTrack::ShouldBreakTrack() const
{
   // Should this track be broken in projections.

   Error("ShouldBreakTrack", "Deprecated -- use TEveTrackPropagator functions.");
   TEveTrackPropagator& rTP((fPropagator != 0) ? *fPropagator : TEveTrackPropagator::fgDefault);
   return rTP.GetProjTrackBreaking() == TEveTrackPropagator::kPTB_Break;
}

//______________________________________________________________________________
UChar_t TEveTrack::GetBreakProjectedTracks() const
{
   // Deprected -- use TEveTrackPropagator functions.
   Error("GetBreakProjectedTracks", "Deprecated -- use TEveTrackPropagator functions.");
   return 0;
}

//______________________________________________________________________________
void TEveTrack::SetBreakProjectedTracks(UChar_t)
{
   // Deprected -- use TEveTrackPropagator functions.

   Error("SetBreakProjectedTracks", "Deprecated -- use TEveTrackPropagator functions.");
}

//______________________________________________________________________________
Bool_t TEveTrack::GetDefaultBreakProjectedTracks()
{
   // Deprected -- use TEveTrackPropagator functions.
   // Return true if tracks get broken into several segments when the
   // projected space consists of separate domains (like Rho-Z).
   // Static function.

   ::Error("TEveTrack::GetDefaultBreakProjectedTracks", "Deprected -- use TEveTrackPropagator functions.");
   return kTRUE;
}

//______________________________________________________________________________
void TEveTrack::SetDefaultBreakProjectedTracks(Bool_t)
{
   // Deprected -- use TEveTrackPropagator functions.

   ::Error("TEveTrack::SetDefaultBreakProjectedTracks", "Deprected -- use TEveTrackPropagator functions.");
}


//==============================================================================
//==============================================================================
// TEveTrackList
//==============================================================================

//______________________________________________________________________________
//
// A list of tracks supporting change of common attributes and
// selection based on track parameters.

ClassImp(TEveTrackList);

//______________________________________________________________________________
TEveTrackList::TEveTrackList(TEveTrackPropagator* prop) :
   TEveElementList(),
   TAttMarker(1, 20, 1),
   TAttLine(1,1,1),

   fPropagator(0),
   fRecurse(kTRUE),
   fRnrLine(kTRUE),
   fRnrPoints(kFALSE),

   fMinPt (0), fMaxPt (0), fLimPt (0),
   fMinP  (0), fMaxP  (0), fLimP  (0)
{
   // Constructor. If track-propagator argument is 0, a new default
   // one is created.

   fChildClass = TEveTrack::Class(); // override member from base TEveElementList

   fMainColorPtr = &fLineColor;

   if (prop == 0) prop = new TEveTrackPropagator;
   SetPropagator(prop);
}

//______________________________________________________________________________
TEveTrackList::TEveTrackList(const char* name, TEveTrackPropagator* prop) :
   TEveElementList(name),
   TAttMarker(1, 20, 1),
   TAttLine(1,1,1),

   fPropagator(0),
   fRecurse(kTRUE),
   fRnrLine(kTRUE),
   fRnrPoints(kFALSE),

   fMinPt (0), fMaxPt (0), fLimPt (0),
   fMinP  (0), fMaxP  (0), fLimP  (0)
{
   // Constructor. If track-propagator argument is 0, a new default
   // one is created.

   fChildClass = TEveTrack::Class(); // override member from base TEveElementList

   fMainColorPtr = &fLineColor;

   if (prop == 0) prop = new TEveTrackPropagator;
   SetPropagator(prop);
}

//______________________________________________________________________________
TEveTrackList::~TEveTrackList()
{
   // Destructor.

   SetPropagator(0);
}

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

//______________________________________________________________________________
void TEveTrackList::SetPropagator(TEveTrackPropagator* prop)
{
   // Set default propagator for tracks.
   // This is not enforced onto the tracks themselves but this is the
   // propagator that is shown in the TEveTrackListEditor.

   if (fPropagator == prop) return;
   if (fPropagator) fPropagator->DecRefCount();
   fPropagator = prop;
   if (fPropagator) fPropagator->IncRefCount();
}

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

//______________________________________________________________________________
void TEveTrackList::MakeTracks(Bool_t recurse)
{
   // Regenerate the visual representations of tracks.
   // The momentum limits are rescanned during the same traversal.

   fLimPt = fLimP = 0;

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

         fLimPt = TMath::Max(fLimPt, track->fP.Perp());
         fLimP  = TMath::Max(fLimP,  track->fP.Mag());
      }
      if (recurse)
         FindMomentumLimits(*i, recurse);
   }

   fLimPt = RoundMomentumLimit(fLimPt);
   fLimP  = RoundMomentumLimit(fLimP);

   SanitizeMinMaxCuts();
}

//______________________________________________________________________________
void TEveTrackList::FindMomentumLimits(Bool_t recurse)
{
   // Loop over children and find highest pT and p of contained TEveTracks.
   // These are stored in members fLimPt and fLimP.

   fLimPt = fLimP = 0;

   if (HasChildren())
   {
      for (List_i i=BeginChildren(); i!=EndChildren(); ++i)
      {
         TEveTrack* track = dynamic_cast<TEveTrack*>(*i);
         if (track)
         {
            fLimPt = TMath::Max(fLimPt, track->fP.Perp());
            fLimP  = TMath::Max(fLimP,  track->fP.Mag());
         }
         if (recurse)
            FindMomentumLimits(*i, recurse);
      }

      fLimPt = RoundMomentumLimit(fLimPt);
      fLimP  = RoundMomentumLimit(fLimP);
   }

   SanitizeMinMaxCuts();
}

//______________________________________________________________________________
void TEveTrackList::FindMomentumLimits(TEveElement* el, Bool_t recurse)
{
   // Loop over track elements of argument el and find highest pT and p.
   // These are stored in members fLimPt and fLimP.

   for (List_i i=el->BeginChildren(); i!=el->EndChildren(); ++i)
   {
      TEveTrack* track = dynamic_cast<TEveTrack*>(*i);
      if (track)
      {
         fLimPt = TMath::Max(fLimPt, track->fP.Perp());
         fLimP  = TMath::Max(fLimP,  track->fP.Mag());
      }
      if (recurse)
         FindMomentumLimits(*i, recurse);
   }
}

//______________________________________________________________________________
Double_t TEveTrackList::RoundMomentumLimit(Double_t x)
{
   // Round the momentum limit up to a nice value.

   using namespace TMath;

   if (x < 1e-3) return 1e-3;

   Double_t fac = Power(10, 1 - Floor(Log10(x)));
   return Ceil(fac*x) / fac;
}

//______________________________________________________________________________
void TEveTrackList::SanitizeMinMaxCuts()
{
   // Set Min/Max cuts so that they are within detected limits.

   using namespace TMath;

   fMinPt = Min(fMinPt, fLimPt);
   fMaxPt = fMaxPt == 0 ? fLimPt : Min(fMaxPt, fLimPt);
   fMinP  = Min(fMinP,  fLimP);
   fMaxP  = fMaxP  == 0 ? fLimP  : Min(fMaxP,  fLimP);
}

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

//______________________________________________________________________________
void TEveTrackList::SetRnrLine(Bool_t rnr)
{
   // Set rendering of track as line for the list and the elements.

   for (List_i i=BeginChildren(); i!=EndChildren(); ++i)
   {
      TEveTrack* track = (TEveTrack*)(*i);
      if (track->GetRnrLine() == fRnrLine)
         track->SetRnrLine(rnr);
      if (fRecurse)
         SetRnrLine(rnr, *i);
   }
   fRnrLine = rnr;
}

//______________________________________________________________________________
void TEveTrackList::SetRnrLine(Bool_t rnr, TEveElement* el)
{
   // Set rendering of track as line for children of el.

   TEveTrack* track;
   for (List_i i=el->BeginChildren(); i!=el->EndChildren(); ++i)
   {
      track = dynamic_cast<TEveTrack*>(*i);
      if (track && (track->GetRnrLine() == fRnrLine))
         track->SetRnrLine(rnr);
      if (fRecurse)
         SetRnrLine(rnr, *i);
   }
}

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

//______________________________________________________________________________
void TEveTrackList::SetRnrPoints(Bool_t rnr)
{
   // Set rendering of track as points for the list and the elements.

   for (List_i i=BeginChildren(); i!=EndChildren(); ++i)
   {
      TEveTrack* track = (TEveTrack*)(*i);
      if (track->GetRnrPoints() == fRnrPoints)
         track->SetRnrPoints(rnr);
      if (fRecurse)
         SetRnrPoints(rnr, *i);
   }
   fRnrPoints = rnr;
}

//______________________________________________________________________________
void TEveTrackList::SetRnrPoints(Bool_t rnr, TEveElement* el)
{
   // Set rendering of track as points for children of el.

   TEveTrack* track;
   for (List_i i=el->BeginChildren(); i!=el->EndChildren(); ++i)
   {
      track = dynamic_cast<TEveTrack*>(*i);
      if (track)
         if (track->GetRnrPoints() == fRnrPoints)
            track->SetRnrPoints(rnr);
      if (fRecurse)
         SetRnrPoints(rnr, *i);
   }
}

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

//______________________________________________________________________________
void TEveTrackList::SetMainColor(Color_t col)
{
   // Set main (line) color for the list and the elements.

   for (List_i i=BeginChildren(); i!=EndChildren(); ++i)
   {
      TEveTrack* track = (TEveTrack*)(*i);
      if (track->GetLineColor() == fLineColor)
         track->SetLineColor(col);
      if (fRecurse)
         SetLineColor(col, *i);
   }
   TEveElement::SetMainColor(col);
}

//______________________________________________________________________________
void TEveTrackList::SetLineColor(Color_t col, TEveElement* el)
{
   // Set line color for children of el.

   TEveTrack* track;
   for (List_i i=el->BeginChildren(); i!=el->EndChildren(); ++i)
   {
      track = dynamic_cast<TEveTrack*>(*i);
      if (track && track->GetLineColor() == fLineColor)
         track->SetLineColor(col);
      if (fRecurse)
         SetLineColor(col, *i);
   }
}

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

//______________________________________________________________________________
void TEveTrackList::SetLineWidth(Width_t width)
{
   // Set line width for the list and the elements.

   for (List_i i=BeginChildren(); i!=EndChildren(); ++i)
   {
      TEveTrack* track = (TEveTrack*)(*i);
      if (track->GetLineWidth() == fLineWidth)
         track->SetLineWidth(width);
      if (fRecurse)
         SetLineWidth(width, *i);
   }
   fLineWidth = width;
}

//______________________________________________________________________________
void TEveTrackList::SetLineWidth(Width_t width, TEveElement* el)
{
   // Set line width for children of el.

   TEveTrack* track;
   for (List_i i=el->BeginChildren(); i!=el->EndChildren(); ++i)
   {
      track = dynamic_cast<TEveTrack*>(*i);
      if (track && track->GetLineWidth() == fLineWidth)
         track->SetLineWidth(width);
      if (fRecurse)
         SetLineWidth(width, *i);
   }
}

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

//______________________________________________________________________________
void TEveTrackList::SetLineStyle(Style_t style)
{
   // Set line style for the list and the elements.

   for (List_i i=BeginChildren(); i!=EndChildren(); ++i)
   {
      TEveTrack* track = (TEveTrack*)(*i);
      if (track->GetLineStyle() == fLineStyle)
         track->SetLineStyle(style);
      if (fRecurse)
         SetLineStyle(style, *i);
   }
   fLineStyle = style;
}

//______________________________________________________________________________
void TEveTrackList::SetLineStyle(Style_t style, TEveElement* el)
{
   // Set line style for children of el.

   TEveTrack* track;
   for (List_i i=el->BeginChildren(); i!=el->EndChildren(); ++i)
   {
      track = dynamic_cast<TEveTrack*>(*i);
      if (track && track->GetLineStyle() == fLineStyle)
         track->SetLineStyle(style);
      if (fRecurse)
         SetLineStyle(style, *i);
   }
}

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

//______________________________________________________________________________
void TEveTrackList::SetMarkerStyle(Style_t style)
{
   // Set marker style for the list and the elements.

   for (List_i i=BeginChildren(); i!=EndChildren(); ++i)
   {
      TEveTrack* track = (TEveTrack*)(*i);
      if (track->GetMarkerStyle() == fMarkerStyle)
         track->SetMarkerStyle(style);
      if (fRecurse)
         SetMarkerStyle(style, *i);
   }
   fMarkerStyle = style;
}

//______________________________________________________________________________
void TEveTrackList::SetMarkerStyle(Style_t style, TEveElement* el)
{
   // Set marker style for children of el.

   TEveTrack* track;
   for (List_i i=el->BeginChildren(); i!=el->EndChildren(); ++i)
   {
      track = dynamic_cast<TEveTrack*>(*i);
      if (track && track->GetMarkerStyle() == fMarkerStyle)
         track->SetMarkerStyle(style);
      if (fRecurse)
         SetMarkerStyle(style, *i);
   }
}

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

//______________________________________________________________________________
void TEveTrackList::SetMarkerColor(Color_t col)
{
   // Set marker color for the list and the elements.

   for (List_i i=BeginChildren(); i!=EndChildren(); ++i)
   {
      TEveTrack* track = (TEveTrack*)(*i);
      if (track->GetMarkerColor() == fMarkerColor)
         track->SetMarkerColor(col);
      if (fRecurse)
         SetMarkerColor(col, *i);
   }
   fMarkerColor = col;
}

//______________________________________________________________________________
void TEveTrackList::SetMarkerColor(Color_t col, TEveElement* el)
{
   // Set marker color for children of el.

   TEveTrack* track;
   for (List_i i=el->BeginChildren(); i!=el->EndChildren(); ++i)
   {
      track = dynamic_cast<TEveTrack*>(*i);
      if (track && track->GetMarkerColor() == fMarkerColor)
         track->SetMarkerColor(col);
      if (fRecurse)
         SetMarkerColor(col, *i);
   }
}

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

//______________________________________________________________________________
void TEveTrackList::SetMarkerSize(Size_t size)
{
   // Set marker size for the list and the elements.

   for (List_i i=BeginChildren(); i!=EndChildren(); ++i)
   {
      TEveTrack* track = (TEveTrack*)(*i);
      if (track->GetMarkerSize() == fMarkerSize)
         track->SetMarkerSize(size);
      if (fRecurse)
         SetMarkerSize(size, *i);
   }
   fMarkerSize = size;
}

//______________________________________________________________________________
void TEveTrackList::SetMarkerSize(Size_t size, TEveElement* el)
{
   // Set marker size for children of el.

   TEveTrack* track;
   for (List_i i=el->BeginChildren(); i!=el->EndChildren(); ++i)
   {
      track = dynamic_cast<TEveTrack*>(*i);
      if (track && track->GetMarkerSize() == fMarkerSize)
         track->SetMarkerSize(size);
      if (fRecurse)
         SetMarkerSize(size, *i);
   }
}

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

//______________________________________________________________________________
void TEveTrackList::SelectByPt(Double_t min_pt, Double_t max_pt)
{
   // Select visibility of tracks by transverse momentum.
   // If data-member fRecurse is set, the selection is applied
   // recursively to all children.

   fMinPt = min_pt;
   fMaxPt = max_pt;

   const Double_t minptsq = min_pt*min_pt;
   const Double_t maxptsq = max_pt*max_pt;

   for (List_i i=BeginChildren(); i!=EndChildren(); ++i)
   {
      const Double_t ptsq = ((TEveTrack*)(*i))->fP.Perp2();
      Bool_t on = ptsq >= minptsq && ptsq <= maxptsq;
      (*i)->SetRnrState(on);
      if (on && fRecurse)
         SelectByPt(min_pt, max_pt, *i);
   }
}

//______________________________________________________________________________
void TEveTrackList::SelectByPt(Double_t min_pt, Double_t max_pt, TEveElement* el)
{
   // Select visibility of el's children tracks by transverse momentum.

   const Double_t minptsq = min_pt*min_pt;
   const Double_t maxptsq = max_pt*max_pt;

   for (List_i i=el->BeginChildren(); i!=el->EndChildren(); ++i)
   {
      TEveTrack* track = dynamic_cast<TEveTrack*>(*i);
      if (track)
      {
         const Double_t ptsq = track->fP.Perp2();
         Bool_t on = ptsq >= minptsq && ptsq <= maxptsq;
         track->SetRnrState(on);
         if (on && fRecurse)
            SelectByPt(min_pt, max_pt, *i);
      }
   }
}

//_________ ___________________________________________________________________
void TEveTrackList::SelectByP(Double_t min_p, Double_t max_p)
{
   // Select visibility of tracks by momentum.
   // If data-member fRecurse is set, the selection is applied
   // recursively to all children.

   fMinP = min_p;
   fMaxP = max_p;

   const Double_t minpsq = min_p*min_p;
   const Double_t maxpsq = max_p*max_p;

   for (List_i i=BeginChildren(); i!=EndChildren(); ++i)
   {
      const Double_t psq  = ((TEveTrack*)(*i))->fP.Mag2();
      Bool_t on = psq >= minpsq && psq <= maxpsq;
      (*i)->SetRnrState(psq >= minpsq && psq <= maxpsq);
      if (on && fRecurse)
         SelectByP(min_p, max_p, *i);
   }
}

//______________________________________________________________________________
void TEveTrackList::SelectByP(Double_t min_p, Double_t max_p, TEveElement* el)
{
   // Select visibility of el's children tracks by momentum.

   const Double_t minpsq = min_p*min_p;
   const Double_t maxpsq = max_p*max_p;

   for (List_i i=el->BeginChildren(); i!=el->EndChildren(); ++i)
   {
      TEveTrack* track = dynamic_cast<TEveTrack*>(*i);
      if (track)
      {
         const Double_t psq  = ((TEveTrack*)(*i))->fP.Mag2();
         Bool_t on = psq >= minpsq && psq <= maxpsq;
         track->SetRnrState(on);
         if (on && fRecurse)
            SelectByP(min_p, max_p, *i);
      }
   }
}

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

//______________________________________________________________________________
TEveTrack* TEveTrackList::FindTrackByLabel(Int_t label)
{
   // Find track by label, select it and display it in the editor.

   for (List_i i=fChildren.begin(); i!=fChildren.end(); ++i)
   {
      if (((TEveTrack*)(*i))->GetLabel() == label)
      {
         TGListTree     *lt   = gEve->GetLTEFrame()->GetListTree();
         TGListTreeItem *mlti = lt->GetSelected();
         if (mlti->GetUserData() != this)
            mlti = FindListTreeItem(lt);
         TGListTreeItem *tlti = (*i)->FindListTreeItem(lt, mlti);
         lt->HighlightItem(tlti);
         lt->SetSelected(tlti);
         gEve->EditElement(*i);
         return (TEveTrack*) *i;
      }
   }
   return 0;
}

//______________________________________________________________________________
TEveTrack* TEveTrackList::FindTrackByIndex(Int_t index)
{
   // Find track by index, select it and display it in the editor.

   for (List_i i=fChildren.begin(); i!=fChildren.end(); ++i)
   {
      if (((TEveTrack*)(*i))->GetIndex() == index)
      {
         TGListTree     *lt   = gEve->GetLTEFrame()->GetListTree();
         TGListTreeItem *mlti = lt->GetSelected();
         if (mlti->GetUserData() != this)
            mlti = FindListTreeItem(lt);
         TGListTreeItem *tlti = (*i)->FindListTreeItem(lt, mlti);
         lt->HighlightItem(tlti);
         lt->SetSelected(tlti);
         gEve->EditElement(*i);
         return (TEveTrack*) *i;
      }
   }
   return 0;
}

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

//______________________________________________________________________________
void TEveTrackList::CopyVizParams(const TEveElement* el)
{
   // Copy visualization parameters from element el.

   const TEveTrackList* m = dynamic_cast<const TEveTrackList*>(el);
   if (m)
   {
      TAttMarker::operator=(*m);
      TAttLine::operator=(*m);
      fRecurse = m->fRecurse;
      fRnrLine = m->fRnrLine;
      fRnrPoints = m->fRnrPoints;
      fMinPt   = m->fMinPt;
      fMaxPt   = m->fMaxPt;
      fLimPt   = m->fLimPt;
      fMinP    = m->fMinP;
      fMaxP    = m->fMaxP;
      fLimP    = m->fLimP;
   }

   TEveElement::CopyVizParams(el);
}

//______________________________________________________________________________
void TEveTrackList::WriteVizParams(ostream& out, const TString& var)
{
   // Write visualization parameters.

   TEveElement::WriteVizParams(out, var);

   TString t = "   " + var + "->";
   TAttMarker::SaveMarkerAttributes(out, var);
   TAttLine  ::SaveLineAttributes  (out, var);
   out << t << "SetRecurse("   << ToString(fRecurse)   << ");\n";
   out << t << "SetRnrLine("   << ToString(fRnrLine)   << ");\n";
   out << t << "SetRnrPoints(" << ToString(fRnrPoints) << ");\n";
   // These setters are not available -- need proper AND/OR mode.
   // out << t << "SetMinPt(" << fMinPt << ");\n";
   // out << t << "SetMaxPt(" << fMaxPt << ");\n";
   // out << t << "SetLimPt(" << fLimPt << ");\n";
   // out << t << "SetMinP("  << fMinP  << ");\n";
   // out << t << "SetMaxP("  << fMaxP  << ");\n";
   // out << t << "SetLimP("  << fLimP  << ");\n";
}

//______________________________________________________________________________
TClass* TEveTrackList::ProjectedClass(const TEveProjection*) const
{
   // Virtual from TEveProjectable, returns TEveTrackListProjected class.

   return TEveTrackListProjected::Class();
}
 TEveTrack.cxx:1
 TEveTrack.cxx:2
 TEveTrack.cxx:3
 TEveTrack.cxx:4
 TEveTrack.cxx:5
 TEveTrack.cxx:6
 TEveTrack.cxx:7
 TEveTrack.cxx:8
 TEveTrack.cxx:9
 TEveTrack.cxx:10
 TEveTrack.cxx:11
 TEveTrack.cxx:12
 TEveTrack.cxx:13
 TEveTrack.cxx:14
 TEveTrack.cxx:15
 TEveTrack.cxx:16
 TEveTrack.cxx:17
 TEveTrack.cxx:18
 TEveTrack.cxx:19
 TEveTrack.cxx:20
 TEveTrack.cxx:21
 TEveTrack.cxx:22
 TEveTrack.cxx:23
 TEveTrack.cxx:24
 TEveTrack.cxx:25
 TEveTrack.cxx:26
 TEveTrack.cxx:27
 TEveTrack.cxx:28
 TEveTrack.cxx:29
 TEveTrack.cxx:30
 TEveTrack.cxx:31
 TEveTrack.cxx:32
 TEveTrack.cxx:33
 TEveTrack.cxx:34
 TEveTrack.cxx:35
 TEveTrack.cxx:36
 TEveTrack.cxx:37
 TEveTrack.cxx:38
 TEveTrack.cxx:39
 TEveTrack.cxx:40
 TEveTrack.cxx:41
 TEveTrack.cxx:42
 TEveTrack.cxx:43
 TEveTrack.cxx:44
 TEveTrack.cxx:45
 TEveTrack.cxx:46
 TEveTrack.cxx:47
 TEveTrack.cxx:48
 TEveTrack.cxx:49
 TEveTrack.cxx:50
 TEveTrack.cxx:51
 TEveTrack.cxx:52
 TEveTrack.cxx:53
 TEveTrack.cxx:54
 TEveTrack.cxx:55
 TEveTrack.cxx:56
 TEveTrack.cxx:57
 TEveTrack.cxx:58
 TEveTrack.cxx:59
 TEveTrack.cxx:60
 TEveTrack.cxx:61
 TEveTrack.cxx:62
 TEveTrack.cxx:63
 TEveTrack.cxx:64
 TEveTrack.cxx:65
 TEveTrack.cxx:66
 TEveTrack.cxx:67
 TEveTrack.cxx:68
 TEveTrack.cxx:69
 TEveTrack.cxx:70
 TEveTrack.cxx:71
 TEveTrack.cxx:72
 TEveTrack.cxx:73
 TEveTrack.cxx:74
 TEveTrack.cxx:75
 TEveTrack.cxx:76
 TEveTrack.cxx:77
 TEveTrack.cxx:78
 TEveTrack.cxx:79
 TEveTrack.cxx:80
 TEveTrack.cxx:81
 TEveTrack.cxx:82
 TEveTrack.cxx:83
 TEveTrack.cxx:84
 TEveTrack.cxx:85
 TEveTrack.cxx:86
 TEveTrack.cxx:87
 TEveTrack.cxx:88
 TEveTrack.cxx:89
 TEveTrack.cxx:90
 TEveTrack.cxx:91
 TEveTrack.cxx:92
 TEveTrack.cxx:93
 TEveTrack.cxx:94
 TEveTrack.cxx:95
 TEveTrack.cxx:96
 TEveTrack.cxx:97
 TEveTrack.cxx:98
 TEveTrack.cxx:99
 TEveTrack.cxx:100
 TEveTrack.cxx:101
 TEveTrack.cxx:102
 TEveTrack.cxx:103
 TEveTrack.cxx:104
 TEveTrack.cxx:105
 TEveTrack.cxx:106
 TEveTrack.cxx:107
 TEveTrack.cxx:108
 TEveTrack.cxx:109
 TEveTrack.cxx:110
 TEveTrack.cxx:111
 TEveTrack.cxx:112
 TEveTrack.cxx:113
 TEveTrack.cxx:114
 TEveTrack.cxx:115
 TEveTrack.cxx:116
 TEveTrack.cxx:117
 TEveTrack.cxx:118
 TEveTrack.cxx:119
 TEveTrack.cxx:120
 TEveTrack.cxx:121
 TEveTrack.cxx:122
 TEveTrack.cxx:123
 TEveTrack.cxx:124
 TEveTrack.cxx:125
 TEveTrack.cxx:126
 TEveTrack.cxx:127
 TEveTrack.cxx:128
 TEveTrack.cxx:129
 TEveTrack.cxx:130
 TEveTrack.cxx:131
 TEveTrack.cxx:132
 TEveTrack.cxx:133
 TEveTrack.cxx:134
 TEveTrack.cxx:135
 TEveTrack.cxx:136
 TEveTrack.cxx:137
 TEveTrack.cxx:138
 TEveTrack.cxx:139
 TEveTrack.cxx:140
 TEveTrack.cxx:141
 TEveTrack.cxx:142
 TEveTrack.cxx:143
 TEveTrack.cxx:144
 TEveTrack.cxx:145
 TEveTrack.cxx:146
 TEveTrack.cxx:147
 TEveTrack.cxx:148
 TEveTrack.cxx:149
 TEveTrack.cxx:150
 TEveTrack.cxx:151
 TEveTrack.cxx:152
 TEveTrack.cxx:153
 TEveTrack.cxx:154
 TEveTrack.cxx:155
 TEveTrack.cxx:156
 TEveTrack.cxx:157
 TEveTrack.cxx:158
 TEveTrack.cxx:159
 TEveTrack.cxx:160
 TEveTrack.cxx:161
 TEveTrack.cxx:162
 TEveTrack.cxx:163
 TEveTrack.cxx:164
 TEveTrack.cxx:165
 TEveTrack.cxx:166
 TEveTrack.cxx:167
 TEveTrack.cxx:168
 TEveTrack.cxx:169
 TEveTrack.cxx:170
 TEveTrack.cxx:171
 TEveTrack.cxx:172
 TEveTrack.cxx:173
 TEveTrack.cxx:174
 TEveTrack.cxx:175
 TEveTrack.cxx:176
 TEveTrack.cxx:177
 TEveTrack.cxx:178
 TEveTrack.cxx:179
 TEveTrack.cxx:180
 TEveTrack.cxx:181
 TEveTrack.cxx:182
 TEveTrack.cxx:183
 TEveTrack.cxx:184
 TEveTrack.cxx:185
 TEveTrack.cxx:186
 TEveTrack.cxx:187
 TEveTrack.cxx:188
 TEveTrack.cxx:189
 TEveTrack.cxx:190
 TEveTrack.cxx:191
 TEveTrack.cxx:192
 TEveTrack.cxx:193
 TEveTrack.cxx:194
 TEveTrack.cxx:195
 TEveTrack.cxx:196
 TEveTrack.cxx:197
 TEveTrack.cxx:198
 TEveTrack.cxx:199
 TEveTrack.cxx:200
 TEveTrack.cxx:201
 TEveTrack.cxx:202
 TEveTrack.cxx:203
 TEveTrack.cxx:204
 TEveTrack.cxx:205
 TEveTrack.cxx:206
 TEveTrack.cxx:207
 TEveTrack.cxx:208
 TEveTrack.cxx:209
 TEveTrack.cxx:210
 TEveTrack.cxx:211
 TEveTrack.cxx:212
 TEveTrack.cxx:213
 TEveTrack.cxx:214
 TEveTrack.cxx:215
 TEveTrack.cxx:216
 TEveTrack.cxx:217
 TEveTrack.cxx:218
 TEveTrack.cxx:219
 TEveTrack.cxx:220
 TEveTrack.cxx:221
 TEveTrack.cxx:222
 TEveTrack.cxx:223
 TEveTrack.cxx:224
 TEveTrack.cxx:225
 TEveTrack.cxx:226
 TEveTrack.cxx:227
 TEveTrack.cxx:228
 TEveTrack.cxx:229
 TEveTrack.cxx:230
 TEveTrack.cxx:231
 TEveTrack.cxx:232
 TEveTrack.cxx:233
 TEveTrack.cxx:234
 TEveTrack.cxx:235
 TEveTrack.cxx:236
 TEveTrack.cxx:237
 TEveTrack.cxx:238
 TEveTrack.cxx:239
 TEveTrack.cxx:240
 TEveTrack.cxx:241
 TEveTrack.cxx:242
 TEveTrack.cxx:243
 TEveTrack.cxx:244
 TEveTrack.cxx:245
 TEveTrack.cxx:246
 TEveTrack.cxx:247
 TEveTrack.cxx:248
 TEveTrack.cxx:249
 TEveTrack.cxx:250
 TEveTrack.cxx:251
 TEveTrack.cxx:252
 TEveTrack.cxx:253
 TEveTrack.cxx:254
 TEveTrack.cxx:255
 TEveTrack.cxx:256
 TEveTrack.cxx:257
 TEveTrack.cxx:258
 TEveTrack.cxx:259
 TEveTrack.cxx:260
 TEveTrack.cxx:261
 TEveTrack.cxx:262
 TEveTrack.cxx:263
 TEveTrack.cxx:264
 TEveTrack.cxx:265
 TEveTrack.cxx:266
 TEveTrack.cxx:267
 TEveTrack.cxx:268
 TEveTrack.cxx:269
 TEveTrack.cxx:270
 TEveTrack.cxx:271
 TEveTrack.cxx:272
 TEveTrack.cxx:273
 TEveTrack.cxx:274
 TEveTrack.cxx:275
 TEveTrack.cxx:276
 TEveTrack.cxx:277
 TEveTrack.cxx:278
 TEveTrack.cxx:279
 TEveTrack.cxx:280
 TEveTrack.cxx:281
 TEveTrack.cxx:282
 TEveTrack.cxx:283
 TEveTrack.cxx:284
 TEveTrack.cxx:285
 TEveTrack.cxx:286
 TEveTrack.cxx:287
 TEveTrack.cxx:288
 TEveTrack.cxx:289
 TEveTrack.cxx:290
 TEveTrack.cxx:291
 TEveTrack.cxx:292
 TEveTrack.cxx:293
 TEveTrack.cxx:294
 TEveTrack.cxx:295
 TEveTrack.cxx:296
 TEveTrack.cxx:297
 TEveTrack.cxx:298
 TEveTrack.cxx:299
 TEveTrack.cxx:300
 TEveTrack.cxx:301
 TEveTrack.cxx:302
 TEveTrack.cxx:303
 TEveTrack.cxx:304
 TEveTrack.cxx:305
 TEveTrack.cxx:306
 TEveTrack.cxx:307
 TEveTrack.cxx:308
 TEveTrack.cxx:309
 TEveTrack.cxx:310
 TEveTrack.cxx:311
 TEveTrack.cxx:312
 TEveTrack.cxx:313
 TEveTrack.cxx:314
 TEveTrack.cxx:315
 TEveTrack.cxx:316
 TEveTrack.cxx:317
 TEveTrack.cxx:318
 TEveTrack.cxx:319
 TEveTrack.cxx:320
 TEveTrack.cxx:321
 TEveTrack.cxx:322
 TEveTrack.cxx:323
 TEveTrack.cxx:324
 TEveTrack.cxx:325
 TEveTrack.cxx:326
 TEveTrack.cxx:327
 TEveTrack.cxx:328
 TEveTrack.cxx:329
 TEveTrack.cxx:330
 TEveTrack.cxx:331
 TEveTrack.cxx:332
 TEveTrack.cxx:333
 TEveTrack.cxx:334
 TEveTrack.cxx:335
 TEveTrack.cxx:336
 TEveTrack.cxx:337
 TEveTrack.cxx:338
 TEveTrack.cxx:339
 TEveTrack.cxx:340
 TEveTrack.cxx:341
 TEveTrack.cxx:342
 TEveTrack.cxx:343
 TEveTrack.cxx:344
 TEveTrack.cxx:345
 TEveTrack.cxx:346
 TEveTrack.cxx:347
 TEveTrack.cxx:348
 TEveTrack.cxx:349
 TEveTrack.cxx:350
 TEveTrack.cxx:351
 TEveTrack.cxx:352
 TEveTrack.cxx:353
 TEveTrack.cxx:354
 TEveTrack.cxx:355
 TEveTrack.cxx:356
 TEveTrack.cxx:357
 TEveTrack.cxx:358
 TEveTrack.cxx:359
 TEveTrack.cxx:360
 TEveTrack.cxx:361
 TEveTrack.cxx:362
 TEveTrack.cxx:363
 TEveTrack.cxx:364
 TEveTrack.cxx:365
 TEveTrack.cxx:366
 TEveTrack.cxx:367
 TEveTrack.cxx:368
 TEveTrack.cxx:369
 TEveTrack.cxx:370
 TEveTrack.cxx:371
 TEveTrack.cxx:372
 TEveTrack.cxx:373
 TEveTrack.cxx:374
 TEveTrack.cxx:375
 TEveTrack.cxx:376
 TEveTrack.cxx:377
 TEveTrack.cxx:378
 TEveTrack.cxx:379
 TEveTrack.cxx:380
 TEveTrack.cxx:381
 TEveTrack.cxx:382
 TEveTrack.cxx:383
 TEveTrack.cxx:384
 TEveTrack.cxx:385
 TEveTrack.cxx:386
 TEveTrack.cxx:387
 TEveTrack.cxx:388
 TEveTrack.cxx:389
 TEveTrack.cxx:390
 TEveTrack.cxx:391
 TEveTrack.cxx:392
 TEveTrack.cxx:393
 TEveTrack.cxx:394
 TEveTrack.cxx:395
 TEveTrack.cxx:396
 TEveTrack.cxx:397
 TEveTrack.cxx:398
 TEveTrack.cxx:399
 TEveTrack.cxx:400
 TEveTrack.cxx:401
 TEveTrack.cxx:402
 TEveTrack.cxx:403
 TEveTrack.cxx:404
 TEveTrack.cxx:405
 TEveTrack.cxx:406
 TEveTrack.cxx:407
 TEveTrack.cxx:408
 TEveTrack.cxx:409
 TEveTrack.cxx:410
 TEveTrack.cxx:411
 TEveTrack.cxx:412
 TEveTrack.cxx:413
 TEveTrack.cxx:414
 TEveTrack.cxx:415
 TEveTrack.cxx:416
 TEveTrack.cxx:417
 TEveTrack.cxx:418
 TEveTrack.cxx:419
 TEveTrack.cxx:420
 TEveTrack.cxx:421
 TEveTrack.cxx:422
 TEveTrack.cxx:423
 TEveTrack.cxx:424
 TEveTrack.cxx:425
 TEveTrack.cxx:426
 TEveTrack.cxx:427
 TEveTrack.cxx:428
 TEveTrack.cxx:429
 TEveTrack.cxx:430
 TEveTrack.cxx:431
 TEveTrack.cxx:432
 TEveTrack.cxx:433
 TEveTrack.cxx:434
 TEveTrack.cxx:435
 TEveTrack.cxx:436
 TEveTrack.cxx:437
 TEveTrack.cxx:438
 TEveTrack.cxx:439
 TEveTrack.cxx:440
 TEveTrack.cxx:441
 TEveTrack.cxx:442
 TEveTrack.cxx:443
 TEveTrack.cxx:444
 TEveTrack.cxx:445
 TEveTrack.cxx:446
 TEveTrack.cxx:447
 TEveTrack.cxx:448
 TEveTrack.cxx:449
 TEveTrack.cxx:450
 TEveTrack.cxx:451
 TEveTrack.cxx:452
 TEveTrack.cxx:453
 TEveTrack.cxx:454
 TEveTrack.cxx:455
 TEveTrack.cxx:456
 TEveTrack.cxx:457
 TEveTrack.cxx:458
 TEveTrack.cxx:459
 TEveTrack.cxx:460
 TEveTrack.cxx:461
 TEveTrack.cxx:462
 TEveTrack.cxx:463
 TEveTrack.cxx:464
 TEveTrack.cxx:465
 TEveTrack.cxx:466
 TEveTrack.cxx:467
 TEveTrack.cxx:468
 TEveTrack.cxx:469
 TEveTrack.cxx:470
 TEveTrack.cxx:471
 TEveTrack.cxx:472
 TEveTrack.cxx:473
 TEveTrack.cxx:474
 TEveTrack.cxx:475
 TEveTrack.cxx:476
 TEveTrack.cxx:477
 TEveTrack.cxx:478
 TEveTrack.cxx:479
 TEveTrack.cxx:480
 TEveTrack.cxx:481
 TEveTrack.cxx:482
 TEveTrack.cxx:483
 TEveTrack.cxx:484
 TEveTrack.cxx:485
 TEveTrack.cxx:486
 TEveTrack.cxx:487
 TEveTrack.cxx:488
 TEveTrack.cxx:489
 TEveTrack.cxx:490
 TEveTrack.cxx:491
 TEveTrack.cxx:492
 TEveTrack.cxx:493
 TEveTrack.cxx:494
 TEveTrack.cxx:495
 TEveTrack.cxx:496
 TEveTrack.cxx:497
 TEveTrack.cxx:498
 TEveTrack.cxx:499
 TEveTrack.cxx:500
 TEveTrack.cxx:501
 TEveTrack.cxx:502
 TEveTrack.cxx:503
 TEveTrack.cxx:504
 TEveTrack.cxx:505
 TEveTrack.cxx:506
 TEveTrack.cxx:507
 TEveTrack.cxx:508
 TEveTrack.cxx:509
 TEveTrack.cxx:510
 TEveTrack.cxx:511
 TEveTrack.cxx:512
 TEveTrack.cxx:513
 TEveTrack.cxx:514
 TEveTrack.cxx:515
 TEveTrack.cxx:516
 TEveTrack.cxx:517
 TEveTrack.cxx:518
 TEveTrack.cxx:519
 TEveTrack.cxx:520
 TEveTrack.cxx:521
 TEveTrack.cxx:522
 TEveTrack.cxx:523
 TEveTrack.cxx:524
 TEveTrack.cxx:525
 TEveTrack.cxx:526
 TEveTrack.cxx:527
 TEveTrack.cxx:528
 TEveTrack.cxx:529
 TEveTrack.cxx:530
 TEveTrack.cxx:531
 TEveTrack.cxx:532
 TEveTrack.cxx:533
 TEveTrack.cxx:534
 TEveTrack.cxx:535
 TEveTrack.cxx:536
 TEveTrack.cxx:537
 TEveTrack.cxx:538
 TEveTrack.cxx:539
 TEveTrack.cxx:540
 TEveTrack.cxx:541
 TEveTrack.cxx:542
 TEveTrack.cxx:543
 TEveTrack.cxx:544
 TEveTrack.cxx:545
 TEveTrack.cxx:546
 TEveTrack.cxx:547
 TEveTrack.cxx:548
 TEveTrack.cxx:549
 TEveTrack.cxx:550
 TEveTrack.cxx:551
 TEveTrack.cxx:552
 TEveTrack.cxx:553
 TEveTrack.cxx:554
 TEveTrack.cxx:555
 TEveTrack.cxx:556
 TEveTrack.cxx:557
 TEveTrack.cxx:558
 TEveTrack.cxx:559
 TEveTrack.cxx:560
 TEveTrack.cxx:561
 TEveTrack.cxx:562
 TEveTrack.cxx:563
 TEveTrack.cxx:564
 TEveTrack.cxx:565
 TEveTrack.cxx:566
 TEveTrack.cxx:567
 TEveTrack.cxx:568
 TEveTrack.cxx:569
 TEveTrack.cxx:570
 TEveTrack.cxx:571
 TEveTrack.cxx:572
 TEveTrack.cxx:573
 TEveTrack.cxx:574
 TEveTrack.cxx:575
 TEveTrack.cxx:576
 TEveTrack.cxx:577
 TEveTrack.cxx:578
 TEveTrack.cxx:579
 TEveTrack.cxx:580
 TEveTrack.cxx:581
 TEveTrack.cxx:582
 TEveTrack.cxx:583
 TEveTrack.cxx:584
 TEveTrack.cxx:585
 TEveTrack.cxx:586
 TEveTrack.cxx:587
 TEveTrack.cxx:588
 TEveTrack.cxx:589
 TEveTrack.cxx:590
 TEveTrack.cxx:591
 TEveTrack.cxx:592
 TEveTrack.cxx:593
 TEveTrack.cxx:594
 TEveTrack.cxx:595
 TEveTrack.cxx:596
 TEveTrack.cxx:597
 TEveTrack.cxx:598
 TEveTrack.cxx:599
 TEveTrack.cxx:600
 TEveTrack.cxx:601
 TEveTrack.cxx:602
 TEveTrack.cxx:603
 TEveTrack.cxx:604
 TEveTrack.cxx:605
 TEveTrack.cxx:606
 TEveTrack.cxx:607
 TEveTrack.cxx:608
 TEveTrack.cxx:609
 TEveTrack.cxx:610
 TEveTrack.cxx:611
 TEveTrack.cxx:612
 TEveTrack.cxx:613
 TEveTrack.cxx:614
 TEveTrack.cxx:615
 TEveTrack.cxx:616
 TEveTrack.cxx:617
 TEveTrack.cxx:618
 TEveTrack.cxx:619
 TEveTrack.cxx:620
 TEveTrack.cxx:621
 TEveTrack.cxx:622
 TEveTrack.cxx:623
 TEveTrack.cxx:624
 TEveTrack.cxx:625
 TEveTrack.cxx:626
 TEveTrack.cxx:627
 TEveTrack.cxx:628
 TEveTrack.cxx:629
 TEveTrack.cxx:630
 TEveTrack.cxx:631
 TEveTrack.cxx:632
 TEveTrack.cxx:633
 TEveTrack.cxx:634
 TEveTrack.cxx:635
 TEveTrack.cxx:636
 TEveTrack.cxx:637
 TEveTrack.cxx:638
 TEveTrack.cxx:639
 TEveTrack.cxx:640
 TEveTrack.cxx:641
 TEveTrack.cxx:642
 TEveTrack.cxx:643
 TEveTrack.cxx:644
 TEveTrack.cxx:645
 TEveTrack.cxx:646
 TEveTrack.cxx:647
 TEveTrack.cxx:648
 TEveTrack.cxx:649
 TEveTrack.cxx:650
 TEveTrack.cxx:651
 TEveTrack.cxx:652
 TEveTrack.cxx:653
 TEveTrack.cxx:654
 TEveTrack.cxx:655
 TEveTrack.cxx:656
 TEveTrack.cxx:657
 TEveTrack.cxx:658
 TEveTrack.cxx:659
 TEveTrack.cxx:660
 TEveTrack.cxx:661
 TEveTrack.cxx:662
 TEveTrack.cxx:663
 TEveTrack.cxx:664
 TEveTrack.cxx:665
 TEveTrack.cxx:666
 TEveTrack.cxx:667
 TEveTrack.cxx:668
 TEveTrack.cxx:669
 TEveTrack.cxx:670
 TEveTrack.cxx:671
 TEveTrack.cxx:672
 TEveTrack.cxx:673
 TEveTrack.cxx:674
 TEveTrack.cxx:675
 TEveTrack.cxx:676
 TEveTrack.cxx:677
 TEveTrack.cxx:678
 TEveTrack.cxx:679
 TEveTrack.cxx:680
 TEveTrack.cxx:681
 TEveTrack.cxx:682
 TEveTrack.cxx:683
 TEveTrack.cxx:684
 TEveTrack.cxx:685
 TEveTrack.cxx:686
 TEveTrack.cxx:687
 TEveTrack.cxx:688
 TEveTrack.cxx:689
 TEveTrack.cxx:690
 TEveTrack.cxx:691
 TEveTrack.cxx:692
 TEveTrack.cxx:693
 TEveTrack.cxx:694
 TEveTrack.cxx:695
 TEveTrack.cxx:696
 TEveTrack.cxx:697
 TEveTrack.cxx:698
 TEveTrack.cxx:699
 TEveTrack.cxx:700
 TEveTrack.cxx:701
 TEveTrack.cxx:702
 TEveTrack.cxx:703
 TEveTrack.cxx:704
 TEveTrack.cxx:705
 TEveTrack.cxx:706
 TEveTrack.cxx:707
 TEveTrack.cxx:708
 TEveTrack.cxx:709
 TEveTrack.cxx:710
 TEveTrack.cxx:711
 TEveTrack.cxx:712
 TEveTrack.cxx:713
 TEveTrack.cxx:714
 TEveTrack.cxx:715
 TEveTrack.cxx:716
 TEveTrack.cxx:717
 TEveTrack.cxx:718
 TEveTrack.cxx:719
 TEveTrack.cxx:720
 TEveTrack.cxx:721
 TEveTrack.cxx:722
 TEveTrack.cxx:723
 TEveTrack.cxx:724
 TEveTrack.cxx:725
 TEveTrack.cxx:726
 TEveTrack.cxx:727
 TEveTrack.cxx:728
 TEveTrack.cxx:729
 TEveTrack.cxx:730
 TEveTrack.cxx:731
 TEveTrack.cxx:732
 TEveTrack.cxx:733
 TEveTrack.cxx:734
 TEveTrack.cxx:735
 TEveTrack.cxx:736
 TEveTrack.cxx:737
 TEveTrack.cxx:738
 TEveTrack.cxx:739
 TEveTrack.cxx:740
 TEveTrack.cxx:741
 TEveTrack.cxx:742
 TEveTrack.cxx:743
 TEveTrack.cxx:744
 TEveTrack.cxx:745
 TEveTrack.cxx:746
 TEveTrack.cxx:747
 TEveTrack.cxx:748
 TEveTrack.cxx:749
 TEveTrack.cxx:750
 TEveTrack.cxx:751
 TEveTrack.cxx:752
 TEveTrack.cxx:753
 TEveTrack.cxx:754
 TEveTrack.cxx:755
 TEveTrack.cxx:756
 TEveTrack.cxx:757
 TEveTrack.cxx:758
 TEveTrack.cxx:759
 TEveTrack.cxx:760
 TEveTrack.cxx:761
 TEveTrack.cxx:762
 TEveTrack.cxx:763
 TEveTrack.cxx:764
 TEveTrack.cxx:765
 TEveTrack.cxx:766
 TEveTrack.cxx:767
 TEveTrack.cxx:768
 TEveTrack.cxx:769
 TEveTrack.cxx:770
 TEveTrack.cxx:771
 TEveTrack.cxx:772
 TEveTrack.cxx:773
 TEveTrack.cxx:774
 TEveTrack.cxx:775
 TEveTrack.cxx:776
 TEveTrack.cxx:777
 TEveTrack.cxx:778
 TEveTrack.cxx:779
 TEveTrack.cxx:780
 TEveTrack.cxx:781
 TEveTrack.cxx:782
 TEveTrack.cxx:783
 TEveTrack.cxx:784
 TEveTrack.cxx:785
 TEveTrack.cxx:786
 TEveTrack.cxx:787
 TEveTrack.cxx:788
 TEveTrack.cxx:789
 TEveTrack.cxx:790
 TEveTrack.cxx:791
 TEveTrack.cxx:792
 TEveTrack.cxx:793
 TEveTrack.cxx:794
 TEveTrack.cxx:795
 TEveTrack.cxx:796
 TEveTrack.cxx:797
 TEveTrack.cxx:798
 TEveTrack.cxx:799
 TEveTrack.cxx:800
 TEveTrack.cxx:801
 TEveTrack.cxx:802
 TEveTrack.cxx:803
 TEveTrack.cxx:804
 TEveTrack.cxx:805
 TEveTrack.cxx:806
 TEveTrack.cxx:807
 TEveTrack.cxx:808
 TEveTrack.cxx:809
 TEveTrack.cxx:810
 TEveTrack.cxx:811
 TEveTrack.cxx:812
 TEveTrack.cxx:813
 TEveTrack.cxx:814
 TEveTrack.cxx:815
 TEveTrack.cxx:816
 TEveTrack.cxx:817
 TEveTrack.cxx:818
 TEveTrack.cxx:819
 TEveTrack.cxx:820
 TEveTrack.cxx:821
 TEveTrack.cxx:822
 TEveTrack.cxx:823
 TEveTrack.cxx:824
 TEveTrack.cxx:825
 TEveTrack.cxx:826
 TEveTrack.cxx:827
 TEveTrack.cxx:828
 TEveTrack.cxx:829
 TEveTrack.cxx:830
 TEveTrack.cxx:831
 TEveTrack.cxx:832
 TEveTrack.cxx:833
 TEveTrack.cxx:834
 TEveTrack.cxx:835
 TEveTrack.cxx:836
 TEveTrack.cxx:837
 TEveTrack.cxx:838
 TEveTrack.cxx:839
 TEveTrack.cxx:840
 TEveTrack.cxx:841
 TEveTrack.cxx:842
 TEveTrack.cxx:843
 TEveTrack.cxx:844
 TEveTrack.cxx:845
 TEveTrack.cxx:846
 TEveTrack.cxx:847
 TEveTrack.cxx:848
 TEveTrack.cxx:849
 TEveTrack.cxx:850
 TEveTrack.cxx:851
 TEveTrack.cxx:852
 TEveTrack.cxx:853
 TEveTrack.cxx:854
 TEveTrack.cxx:855
 TEveTrack.cxx:856
 TEveTrack.cxx:857
 TEveTrack.cxx:858
 TEveTrack.cxx:859
 TEveTrack.cxx:860
 TEveTrack.cxx:861
 TEveTrack.cxx:862
 TEveTrack.cxx:863
 TEveTrack.cxx:864
 TEveTrack.cxx:865
 TEveTrack.cxx:866
 TEveTrack.cxx:867
 TEveTrack.cxx:868
 TEveTrack.cxx:869
 TEveTrack.cxx:870
 TEveTrack.cxx:871
 TEveTrack.cxx:872
 TEveTrack.cxx:873
 TEveTrack.cxx:874
 TEveTrack.cxx:875
 TEveTrack.cxx:876
 TEveTrack.cxx:877
 TEveTrack.cxx:878
 TEveTrack.cxx:879
 TEveTrack.cxx:880
 TEveTrack.cxx:881
 TEveTrack.cxx:882
 TEveTrack.cxx:883
 TEveTrack.cxx:884
 TEveTrack.cxx:885
 TEveTrack.cxx:886
 TEveTrack.cxx:887
 TEveTrack.cxx:888
 TEveTrack.cxx:889
 TEveTrack.cxx:890
 TEveTrack.cxx:891
 TEveTrack.cxx:892
 TEveTrack.cxx:893
 TEveTrack.cxx:894
 TEveTrack.cxx:895
 TEveTrack.cxx:896
 TEveTrack.cxx:897
 TEveTrack.cxx:898
 TEveTrack.cxx:899
 TEveTrack.cxx:900
 TEveTrack.cxx:901
 TEveTrack.cxx:902
 TEveTrack.cxx:903
 TEveTrack.cxx:904
 TEveTrack.cxx:905
 TEveTrack.cxx:906
 TEveTrack.cxx:907
 TEveTrack.cxx:908
 TEveTrack.cxx:909
 TEveTrack.cxx:910
 TEveTrack.cxx:911
 TEveTrack.cxx:912
 TEveTrack.cxx:913
 TEveTrack.cxx:914
 TEveTrack.cxx:915
 TEveTrack.cxx:916
 TEveTrack.cxx:917
 TEveTrack.cxx:918
 TEveTrack.cxx:919
 TEveTrack.cxx:920
 TEveTrack.cxx:921
 TEveTrack.cxx:922
 TEveTrack.cxx:923
 TEveTrack.cxx:924
 TEveTrack.cxx:925
 TEveTrack.cxx:926
 TEveTrack.cxx:927
 TEveTrack.cxx:928
 TEveTrack.cxx:929
 TEveTrack.cxx:930
 TEveTrack.cxx:931
 TEveTrack.cxx:932
 TEveTrack.cxx:933
 TEveTrack.cxx:934
 TEveTrack.cxx:935
 TEveTrack.cxx:936
 TEveTrack.cxx:937
 TEveTrack.cxx:938
 TEveTrack.cxx:939
 TEveTrack.cxx:940
 TEveTrack.cxx:941
 TEveTrack.cxx:942
 TEveTrack.cxx:943
 TEveTrack.cxx:944
 TEveTrack.cxx:945
 TEveTrack.cxx:946
 TEveTrack.cxx:947
 TEveTrack.cxx:948
 TEveTrack.cxx:949
 TEveTrack.cxx:950
 TEveTrack.cxx:951
 TEveTrack.cxx:952
 TEveTrack.cxx:953
 TEveTrack.cxx:954
 TEveTrack.cxx:955
 TEveTrack.cxx:956
 TEveTrack.cxx:957
 TEveTrack.cxx:958
 TEveTrack.cxx:959
 TEveTrack.cxx:960
 TEveTrack.cxx:961
 TEveTrack.cxx:962
 TEveTrack.cxx:963
 TEveTrack.cxx:964
 TEveTrack.cxx:965
 TEveTrack.cxx:966
 TEveTrack.cxx:967
 TEveTrack.cxx:968
 TEveTrack.cxx:969
 TEveTrack.cxx:970
 TEveTrack.cxx:971
 TEveTrack.cxx:972
 TEveTrack.cxx:973
 TEveTrack.cxx:974
 TEveTrack.cxx:975
 TEveTrack.cxx:976
 TEveTrack.cxx:977
 TEveTrack.cxx:978
 TEveTrack.cxx:979
 TEveTrack.cxx:980
 TEveTrack.cxx:981
 TEveTrack.cxx:982
 TEveTrack.cxx:983
 TEveTrack.cxx:984
 TEveTrack.cxx:985
 TEveTrack.cxx:986
 TEveTrack.cxx:987
 TEveTrack.cxx:988
 TEveTrack.cxx:989
 TEveTrack.cxx:990
 TEveTrack.cxx:991
 TEveTrack.cxx:992
 TEveTrack.cxx:993
 TEveTrack.cxx:994
 TEveTrack.cxx:995
 TEveTrack.cxx:996
 TEveTrack.cxx:997
 TEveTrack.cxx:998
 TEveTrack.cxx:999
 TEveTrack.cxx:1000
 TEveTrack.cxx:1001
 TEveTrack.cxx:1002
 TEveTrack.cxx:1003
 TEveTrack.cxx:1004
 TEveTrack.cxx:1005
 TEveTrack.cxx:1006
 TEveTrack.cxx:1007
 TEveTrack.cxx:1008
 TEveTrack.cxx:1009
 TEveTrack.cxx:1010
 TEveTrack.cxx:1011
 TEveTrack.cxx:1012
 TEveTrack.cxx:1013
 TEveTrack.cxx:1014
 TEveTrack.cxx:1015
 TEveTrack.cxx:1016
 TEveTrack.cxx:1017
 TEveTrack.cxx:1018
 TEveTrack.cxx:1019
 TEveTrack.cxx:1020
 TEveTrack.cxx:1021
 TEveTrack.cxx:1022
 TEveTrack.cxx:1023
 TEveTrack.cxx:1024
 TEveTrack.cxx:1025
 TEveTrack.cxx:1026
 TEveTrack.cxx:1027
 TEveTrack.cxx:1028
 TEveTrack.cxx:1029
 TEveTrack.cxx:1030
 TEveTrack.cxx:1031
 TEveTrack.cxx:1032
 TEveTrack.cxx:1033
 TEveTrack.cxx:1034
 TEveTrack.cxx:1035
 TEveTrack.cxx:1036
 TEveTrack.cxx:1037
 TEveTrack.cxx:1038
 TEveTrack.cxx:1039
 TEveTrack.cxx:1040
 TEveTrack.cxx:1041
 TEveTrack.cxx:1042
 TEveTrack.cxx:1043
 TEveTrack.cxx:1044
 TEveTrack.cxx:1045
 TEveTrack.cxx:1046
 TEveTrack.cxx:1047
 TEveTrack.cxx:1048
 TEveTrack.cxx:1049
 TEveTrack.cxx:1050
 TEveTrack.cxx:1051
 TEveTrack.cxx:1052
 TEveTrack.cxx:1053
 TEveTrack.cxx:1054
 TEveTrack.cxx:1055
 TEveTrack.cxx:1056
 TEveTrack.cxx:1057
 TEveTrack.cxx:1058
 TEveTrack.cxx:1059
 TEveTrack.cxx:1060
 TEveTrack.cxx:1061
 TEveTrack.cxx:1062
 TEveTrack.cxx:1063
 TEveTrack.cxx:1064
 TEveTrack.cxx:1065
 TEveTrack.cxx:1066
 TEveTrack.cxx:1067
 TEveTrack.cxx:1068
 TEveTrack.cxx:1069
 TEveTrack.cxx:1070
 TEveTrack.cxx:1071
 TEveTrack.cxx:1072
 TEveTrack.cxx:1073
 TEveTrack.cxx:1074
 TEveTrack.cxx:1075
 TEveTrack.cxx:1076
 TEveTrack.cxx:1077
 TEveTrack.cxx:1078
 TEveTrack.cxx:1079
 TEveTrack.cxx:1080
 TEveTrack.cxx:1081
 TEveTrack.cxx:1082
 TEveTrack.cxx:1083
 TEveTrack.cxx:1084
 TEveTrack.cxx:1085
 TEveTrack.cxx:1086
 TEveTrack.cxx:1087
 TEveTrack.cxx:1088
 TEveTrack.cxx:1089
 TEveTrack.cxx:1090
 TEveTrack.cxx:1091
 TEveTrack.cxx:1092
 TEveTrack.cxx:1093
 TEveTrack.cxx:1094
 TEveTrack.cxx:1095
 TEveTrack.cxx:1096
 TEveTrack.cxx:1097
 TEveTrack.cxx:1098
 TEveTrack.cxx:1099
 TEveTrack.cxx:1100
 TEveTrack.cxx:1101
 TEveTrack.cxx:1102
 TEveTrack.cxx:1103
 TEveTrack.cxx:1104
 TEveTrack.cxx:1105
 TEveTrack.cxx:1106
 TEveTrack.cxx:1107
 TEveTrack.cxx:1108
 TEveTrack.cxx:1109
 TEveTrack.cxx:1110
 TEveTrack.cxx:1111
 TEveTrack.cxx:1112
 TEveTrack.cxx:1113
 TEveTrack.cxx:1114
 TEveTrack.cxx:1115
 TEveTrack.cxx:1116
 TEveTrack.cxx:1117
 TEveTrack.cxx:1118
 TEveTrack.cxx:1119
 TEveTrack.cxx:1120
 TEveTrack.cxx:1121
 TEveTrack.cxx:1122
 TEveTrack.cxx:1123
 TEveTrack.cxx:1124
 TEveTrack.cxx:1125
 TEveTrack.cxx:1126
 TEveTrack.cxx:1127
 TEveTrack.cxx:1128
 TEveTrack.cxx:1129
 TEveTrack.cxx:1130
 TEveTrack.cxx:1131
 TEveTrack.cxx:1132
 TEveTrack.cxx:1133
 TEveTrack.cxx:1134
 TEveTrack.cxx:1135
 TEveTrack.cxx:1136
 TEveTrack.cxx:1137
 TEveTrack.cxx:1138
 TEveTrack.cxx:1139
 TEveTrack.cxx:1140
 TEveTrack.cxx:1141
 TEveTrack.cxx:1142
 TEveTrack.cxx:1143
 TEveTrack.cxx:1144
 TEveTrack.cxx:1145
 TEveTrack.cxx:1146
 TEveTrack.cxx:1147
 TEveTrack.cxx:1148
 TEveTrack.cxx:1149
 TEveTrack.cxx:1150
 TEveTrack.cxx:1151
 TEveTrack.cxx:1152
 TEveTrack.cxx:1153
 TEveTrack.cxx:1154
 TEveTrack.cxx:1155
 TEveTrack.cxx:1156
 TEveTrack.cxx:1157
 TEveTrack.cxx:1158
 TEveTrack.cxx:1159
 TEveTrack.cxx:1160
 TEveTrack.cxx:1161
 TEveTrack.cxx:1162
 TEveTrack.cxx:1163
 TEveTrack.cxx:1164
 TEveTrack.cxx:1165
 TEveTrack.cxx:1166
 TEveTrack.cxx:1167
 TEveTrack.cxx:1168
 TEveTrack.cxx:1169
 TEveTrack.cxx:1170
 TEveTrack.cxx:1171
 TEveTrack.cxx:1172
 TEveTrack.cxx:1173
 TEveTrack.cxx:1174
 TEveTrack.cxx:1175
 TEveTrack.cxx:1176
 TEveTrack.cxx:1177
 TEveTrack.cxx:1178
 TEveTrack.cxx:1179
 TEveTrack.cxx:1180
 TEveTrack.cxx:1181
 TEveTrack.cxx:1182
 TEveTrack.cxx:1183
 TEveTrack.cxx:1184
 TEveTrack.cxx:1185
 TEveTrack.cxx:1186
 TEveTrack.cxx:1187
 TEveTrack.cxx:1188
 TEveTrack.cxx:1189
 TEveTrack.cxx:1190
 TEveTrack.cxx:1191
 TEveTrack.cxx:1192
 TEveTrack.cxx:1193
 TEveTrack.cxx:1194
 TEveTrack.cxx:1195
 TEveTrack.cxx:1196
 TEveTrack.cxx:1197
 TEveTrack.cxx:1198
 TEveTrack.cxx:1199
 TEveTrack.cxx:1200
 TEveTrack.cxx:1201
 TEveTrack.cxx:1202
 TEveTrack.cxx:1203
 TEveTrack.cxx:1204
 TEveTrack.cxx:1205
 TEveTrack.cxx:1206
 TEveTrack.cxx:1207
 TEveTrack.cxx:1208
 TEveTrack.cxx:1209
 TEveTrack.cxx:1210
 TEveTrack.cxx:1211
 TEveTrack.cxx:1212
 TEveTrack.cxx:1213
 TEveTrack.cxx:1214
 TEveTrack.cxx:1215
 TEveTrack.cxx:1216
 TEveTrack.cxx:1217
 TEveTrack.cxx:1218
 TEveTrack.cxx:1219
 TEveTrack.cxx:1220
 TEveTrack.cxx:1221
 TEveTrack.cxx:1222
 TEveTrack.cxx:1223
 TEveTrack.cxx:1224
 TEveTrack.cxx:1225
 TEveTrack.cxx:1226
 TEveTrack.cxx:1227
 TEveTrack.cxx:1228
 TEveTrack.cxx:1229
 TEveTrack.cxx:1230
 TEveTrack.cxx:1231
 TEveTrack.cxx:1232
 TEveTrack.cxx:1233
 TEveTrack.cxx:1234
 TEveTrack.cxx:1235
 TEveTrack.cxx:1236
 TEveTrack.cxx:1237
 TEveTrack.cxx:1238
 TEveTrack.cxx:1239
 TEveTrack.cxx:1240
 TEveTrack.cxx:1241
 TEveTrack.cxx:1242
 TEveTrack.cxx:1243
 TEveTrack.cxx:1244
 TEveTrack.cxx:1245
 TEveTrack.cxx:1246
 TEveTrack.cxx:1247
 TEveTrack.cxx:1248
 TEveTrack.cxx:1249
 TEveTrack.cxx:1250
 TEveTrack.cxx:1251
 TEveTrack.cxx:1252
 TEveTrack.cxx:1253
 TEveTrack.cxx:1254
 TEveTrack.cxx:1255
 TEveTrack.cxx:1256
 TEveTrack.cxx:1257
 TEveTrack.cxx:1258
 TEveTrack.cxx:1259
 TEveTrack.cxx:1260
 TEveTrack.cxx:1261
 TEveTrack.cxx:1262
 TEveTrack.cxx:1263
 TEveTrack.cxx:1264
 TEveTrack.cxx:1265
 TEveTrack.cxx:1266
 TEveTrack.cxx:1267
 TEveTrack.cxx:1268
 TEveTrack.cxx:1269
 TEveTrack.cxx:1270
 TEveTrack.cxx:1271
 TEveTrack.cxx:1272