ROOT logo
// @(#)root/eve:$Id: TEveTrackPropagator.cxx 41909 2011-11-11 14:46:39Z pcanal $
// 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 "TEveTrackPropagator.h"
#include "TEveTrack.h"
#include "TEveTrans.h"

#include "TMath.h"

#include <cassert>

namespace
{
   const Double_t kBMin     = 1e-6;
   const Double_t kPtMinSqr = 1e-20;
   const Double_t kAMin     = 1e-10;
   const Double_t kStepEps  = 1e-3;
}

//______________________________________________________________________________
TEveTrackPropagator::Helix_t::Helix_t() :
   fCharge(0),
   fMaxAng(45), fMaxStep(20.f), fDelta(0.1),
   fPhi(0), fValid(kFALSE),
   fLam(-1), fR(-1), fPhiStep(-1), fSin(-1), fCos(-1),
   fRKStep(20.0),
   fPtMag(-1), fPlMag(-1), fLStep(-1)
{
   // Default constructor.
}

//______________________________________________________________________________
void TEveTrackPropagator::Helix_t::UpdateCommon(const TEveVectorD& p, const TEveVectorD& b)
{
   // Common update code for helix and RK propagation.

   fB = b;

   // base vectors
   fE1 = b;
   fE1.Normalize();
   fPlMag = p.Dot(fE1);
   fPl    = fE1*fPlMag;

   fPt    = p - fPl;
   fPtMag = fPt.Mag();
   fE2    = fPt;
   fE2.Normalize();
}

//______________________________________________________________________________
void TEveTrackPropagator::Helix_t::UpdateHelix(const TEveVectorD& p, const TEveVectorD& b,
                                               Bool_t full_update, Bool_t enforce_max_step)
{
   // Update helix parameters.

   UpdateCommon(p, b);

   // helix parameters
   TMath::Cross(fE1.Arr(), fE2.Arr(), fE3.Arr());
   if (fCharge < 0) fE3.NegateXYZ();

   if (full_update)
   {
      using namespace TMath;
      Double_t a = fgkB2C * b.Mag() * Abs(fCharge);
      if (a > kAMin && fPtMag*fPtMag > kPtMinSqr)
      {
         fValid = kTRUE;

         fR   = Abs(fPtMag / a);
         fLam = fPlMag / fPtMag;

         // get phi step, compare fMaxAng with fDelta
         fPhiStep = fMaxAng * DegToRad();
         if (fR > fDelta)
         {
            Double_t ang  = 2.0 * ACos(1.0f - fDelta/fR);
            if (ang < fPhiStep)
               fPhiStep = ang;
         }

         // check max step size
         Double_t curr_step = fR * fPhiStep * Sqrt(1.0f + fLam*fLam);
         if (curr_step > fMaxStep || enforce_max_step)
            fPhiStep *= fMaxStep / curr_step;

         fLStep = fR * fPhiStep * fLam;
         fSin   = Sin(fPhiStep);
         fCos   = Cos(fPhiStep);
      }
      else
      {
         fValid = kFALSE;
      }
   }
}

//______________________________________________________________________________
void TEveTrackPropagator::Helix_t::UpdateRK(const TEveVectorD& p, const TEveVectorD& b)
{
   // Update helix for stepper RungeKutta.

   UpdateCommon(p, b);

   if (fCharge)
   {
      fValid = kTRUE;

      // cached values for propagator
      fB = b;
      fPlMag = p.Dot(fB);
   }
   else
   {
      fValid = kFALSE;
   }
}

//______________________________________________________________________________
void TEveTrackPropagator::Helix_t::Step(const TEveVector4D& v, const TEveVectorD& p,
                                        TEveVector4D& vOut, TEveVectorD& pOut)
{
   // Step helix for given momentum p from vertex v.

   vOut = v;

   if (fValid)
   {
      TEveVectorD d = fE2*(fR*fSin) + fE3*(fR*(1-fCos)) + fE1*fLStep;
      vOut    += d;
      vOut.fT += TMath::Abs(fLStep);

      pOut = fPl + fE2*(fPtMag*fCos) + fE3*(fPtMag*fSin);

      fPhi += fPhiStep;
   }
   else
   {
      // case: pT < kPtMinSqr or B < kBMin
      // might happen if field directon changes pT ~ 0 or B becomes zero
      vOut    += p * (fMaxStep / p.Mag());
      vOut.fT += fMaxStep;
      pOut  = p;
   }
}


//==============================================================================
// TEveTrackPropagator
//==============================================================================

//______________________________________________________________________________
//
// Holding structure for a number of track rendering parameters.
// Calculates path taking into account the parameters.
//
// This is decoupled from TEveTrack/TEveTrackList to allow sharing of the
// Propagator among several instances. Back references are kept so the
// tracks can be recreated when the parameters change.
//
// TEveTrackList has Get/Set methods for RnrStlye. TEveTrackEditor and
// TEveTrackListEditor provide editor access.
//
// Specify whether 2D projected tracks get broken into several
// segments when the projected space consists of separate domains
// (like Rho-Z). This is true by default.

ClassImp(TEveTrackPropagator);

Double_t             TEveTrackPropagator::fgDefMagField = 0.5;
const Double_t       TEveTrackPropagator::fgkB2C        = 0.299792458e-2;
TEveTrackPropagator  TEveTrackPropagator::fgDefault;

Double_t             TEveTrackPropagator::fgEditorMaxR  = 2000;
Double_t             TEveTrackPropagator::fgEditorMaxZ  = 4000;

//______________________________________________________________________________
TEveTrackPropagator::TEveTrackPropagator(const char* n, const char* t,
                                         TEveMagField *field, Bool_t own_field) :
   TEveElementList(n, t),
   TEveRefBackPtr(),

   fStepper(kHelix),
   fMagFieldObj(field),
   fOwnMagFiledObj(own_field),

   fMaxR    (350),   fMaxZ    (450),
   fNMax    (4096),  fMaxOrbs (0.5),

   fEditPathMarks (kTRUE),
   fFitDaughters  (kTRUE),   fFitReferences (kTRUE),
   fFitDecay      (kTRUE),   fFitCluster2Ds (kTRUE),
   fRnrDaughters  (kFALSE),  fRnrReferences (kFALSE),
   fRnrDecay      (kFALSE),  fRnrCluster2Ds (kFALSE),
   fRnrFV         (kFALSE),
   fPMAtt(), fFVAtt(),

   fProjTrackBreaking(kPTB_Break), fRnrPTBMarkers(kFALSE), fPTBAtt(),

   fV()
{
   // Default constructor.

   fPMAtt.SetMarkerColor(kYellow);
   fPMAtt.SetMarkerStyle(2);
   fPMAtt.SetMarkerSize(2);

   fFVAtt.SetMarkerColor(kRed);
   fFVAtt.SetMarkerStyle(4);
   fFVAtt.SetMarkerSize(1.5);

   fPTBAtt.SetMarkerColor(kBlue);
   fPTBAtt.SetMarkerStyle(4);
   fPTBAtt.SetMarkerSize(0.8);

   if (fMagFieldObj == 0) {
      fMagFieldObj = new TEveMagFieldConst(0., 0., fgDefMagField);
      fOwnMagFiledObj = kTRUE;
   }
}

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

   if (fOwnMagFiledObj)
   {
      delete fMagFieldObj;
   }
}

//______________________________________________________________________________
void TEveTrackPropagator::OnZeroRefCount()
{
   // Virtual from TEveRefBackPtr - track reference count has reached zero.

   CheckReferenceCount("TEveTrackPropagator::OnZeroRefCount ");
}

//______________________________________________________________________________
void TEveTrackPropagator::CheckReferenceCount(const TEveException& eh)
{
   // Check reference count - virtual from TEveElement.
   // Must also take into account references from TEveRefBackPtr.

   if (fRefCount <= 0)
   {
      TEveElementList::CheckReferenceCount(eh);
   }
}

//______________________________________________________________________________
void TEveTrackPropagator::ElementChanged(Bool_t update_scenes, Bool_t redraw)
{
   // Element-change notification.
   // Stamp all tracks as requiring display-list regeneration.
   // Virtual from TEveElement.

   TEveTrack* track;
   RefMap_i i = fBackRefs.begin();
   while (i != fBackRefs.end())
   {
      track = dynamic_cast<TEveTrack*>(i->first);
      track->StampObjProps();
      ++i;
   }
   TEveElementList::ElementChanged(update_scenes, redraw);
}

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

//______________________________________________________________________________
void TEveTrackPropagator::InitTrack(const TEveVectorD &v, Int_t charge)
{
   // Initialize internal data-members for given particle parameters.

   fV = v;
   fPoints.push_back(fV);

   // init helix
   fH.fPhi    = 0;
   fH.fCharge = charge;
}

//______________________________________________________________________________
void TEveTrackPropagator::InitTrack(const TEveVectorF& v, Int_t charge)
{
   // TEveVectorF wrapper.

   TEveVectorD vd(v);
   InitTrack(vd, charge);
}

//______________________________________________________________________________
void TEveTrackPropagator::ResetTrack()
{
   // Reset cache holding particle trajectory.

   fPoints.clear();

   // reset helix
   fH.fPhi = 0;
}

//______________________________________________________________________________
Bool_t TEveTrackPropagator::GoToVertex(TEveVectorD& v, TEveVectorD& p)
{
   // Propagate particle with momentum p to vertex v.

   Update(fV, p, kTRUE);

   if ((v-fV).Mag() < kStepEps)
   {
      fPoints.push_back(v);
      return kTRUE;
   }

   return fH.fValid ? LoopToVertex(v, p) : LineToVertex(v);
}

//______________________________________________________________________________
Bool_t TEveTrackPropagator::GoToVertex(TEveVectorF& v, TEveVectorF& p)
{
   // TEveVectorF wrapper.

   TEveVectorD vd(v), pd(p);
   Bool_t result = GoToVertex(vd, pd);
   v = vd; p = pd;
   return result;
}

//______________________________________________________________________________
void TEveTrackPropagator::GoToBounds(TEveVectorD& p)
{
   // Propagate particle to bounds.
   // Return TRUE if hit bounds.

   Update(fV, p, kTRUE);

   fH.fValid ? LoopToBounds(p): LineToBounds(p);
}

//______________________________________________________________________________
void TEveTrackPropagator::GoToBounds(TEveVectorF& p)
{
   // TEveVectorF wrapper.

   TEveVectorD pd(p);
   GoToBounds(pd);
   p = pd;
}

//______________________________________________________________________________
void TEveTrackPropagator::Update(const TEveVector4D& v, const TEveVectorD& p,
                                 Bool_t full_update, Bool_t enforce_max_step)
{
   // Update helix / B-field projection state.

   if (fStepper == kHelix)
   {
      fH.UpdateHelix(p, fMagFieldObj->GetFieldD(v), !fMagFieldObj->IsConst() || full_update, enforce_max_step);
   }
   else
   {
      fH.UpdateRK(p, fMagFieldObj->GetFieldD(v));

      if (full_update)
      {
         using namespace TMath;

         Float_t a = fgkB2C * fMagFieldObj->GetMaxFieldMagD() * Abs(fH.fCharge);
	 if (a > kAMin)
	 {
            fH.fR = p.Mag() / a;

            // get phi step, compare fDelta with MaxAng
            fH.fPhiStep = fH.fMaxAng * DegToRad();
            if (fH.fR > fH.fDelta )
            {
               Double_t ang  = 2.0 * ACos(1.0f - fH.fDelta/fH.fR);
               if (ang < fH.fPhiStep)
                  fH.fPhiStep = ang;
            }

            // check against maximum step-size
            fH.fRKStep = fH.fR * fH.fPhiStep * Sqrt(1 + fH.fLam*fH.fLam);
            if (fH.fRKStep > fH.fMaxStep || enforce_max_step)
            {
               fH.fPhiStep *= fH.fMaxStep / fH.fRKStep;
               fH.fRKStep   = fH.fMaxStep;
            }
	 }
	 else
	 {
            fH.fRKStep = fH.fMaxStep; 
	 }
      }
   }
}

//______________________________________________________________________________
void TEveTrackPropagator::Step(const TEveVector4D &v, const TEveVectorD &p, TEveVector4D &vOut, TEveVectorD &pOut)
{
   // Wrapper to step helix.

   if (fStepper == kHelix)
   {
      fH.Step(v, p, vOut, pOut);
   }
   else
   {
      Double_t vecRKIn[7];
      vecRKIn[0] = v.fX;
      vecRKIn[1] = v.fY;
      vecRKIn[2] = v.fZ;
      Double_t pm = p.Mag();
      Double_t nm = 1.0 / pm;
      vecRKIn[3] = p.fX*nm;
      vecRKIn[4] = p.fY*nm;
      vecRKIn[5] = p.fZ*nm;
      vecRKIn[6] = p.Mag();

      Double_t vecRKOut[7];
      StepRungeKutta(fH.fRKStep, vecRKIn, vecRKOut);

      vOut.fX = vecRKOut[0];
      vOut.fY = vecRKOut[1];
      vOut.fZ = vecRKOut[2];
      vOut.fT = v.fT + fH.fRKStep;
      pm = vecRKOut[6];
      pOut.fX = vecRKOut[3]*pm;
      pOut.fY = vecRKOut[4]*pm;
      pOut.fZ = vecRKOut[5]*pm;
   }
}

//______________________________________________________________________________
void TEveTrackPropagator::LoopToBounds(TEveVectorD& p)
{
   // Propagate charged particle with momentum p to bounds.
   // It is expected that Update() with full-update was called before.

   const Double_t maxRsq = fMaxR*fMaxR;

   TEveVector4D currV(fV);
   TEveVector4D forwV(fV);
   TEveVectorD  forwP (p);

   Int_t np = fPoints.size();
   Double_t maxPhi = fMaxOrbs*TMath::TwoPi();

   while (fH.fPhi < maxPhi && np<fNMax)
   {
      Step(currV, p, forwV, forwP);

      // cross R
      if (forwV.Perp2() > maxRsq)
      {
         Float_t t = (fMaxR - currV.R()) / (forwV.R() - currV.R());
         if (t < 0 || t > 1)
         {
            Warning("HelixToBounds", "In MaxR crossing expected t>=0 && t<=1: t=%f, r1=%f, r2=%f, MaxR=%f.",
                    t, currV.R(), forwV.R(), fMaxR);
            return;
         }
         TEveVectorD d(forwV);
         d -= currV;
         d *= t;
         d += currV;
         fPoints.push_back(d);
         return;
      }

      // cross Z
      else if (TMath::Abs(forwV.fZ) > fMaxZ)
      {
         Double_t t = (fMaxZ - TMath::Abs(currV.fZ)) / TMath::Abs((forwV.fZ - currV.fZ));
         if (t < 0 || t > 1)
         {
            Warning("HelixToBounds", "In MaxZ crossing expected t>=0 && t<=1: t=%f, z1=%f, z2=%f, MaxZ=%f.",
                    t, currV.fZ, forwV.fZ, fMaxZ);
            return;
         }
         TEveVectorD d(forwV -currV);
         d *= t;
         d += currV;
         fPoints.push_back(d);
         return;
      }

      currV = forwV;
      p     = forwP;
      Update(currV, p);

      fPoints.push_back(currV);
      ++np;
   }
}

//______________________________________________________________________________
Bool_t TEveTrackPropagator::LoopToVertex(TEveVectorD& v, TEveVectorD& p)
{
   // Propagate charged particle with momentum p to vertex v.
   // It is expected that Update() with full-update was called before.

   const Double_t maxRsq = fMaxR * fMaxR;

   TEveVector4D currV(fV);
   TEveVector4D forwV(fV);
   TEveVectorD  forwP(p);

   Int_t first_point = fPoints.size();
   Int_t np          = first_point;

   Double_t prod0=0, prod1;

   do
   {
      Step(currV, p, forwV, forwP);
      Update(forwV, forwP);

      if (PointOverVertex(v, forwV, &prod1))
      {
         break;
      }

      if (IsOutsideBounds(forwV, maxRsq, fMaxZ))
      {
         fV = currV;
         return kFALSE;
      }

      fPoints.push_back(forwV);
      currV = forwV;
      p     = forwP;
      prod0 = prod1;
      ++np;
   } while (np < fNMax);

   // make the remaining fractional step
   if (np > first_point)
   {
      if ((v - currV).Mag() > kStepEps)
      {
         Double_t step_frac = prod0 / (prod0 - prod1);
         if (step_frac > 0)
         {
            // Step for fraction of previous step size.
            // We pass 'enforce_max_step' flag to Update().
            Float_t orig_max_step = fH.fMaxStep;
            fH.fMaxStep = step_frac * (forwV - currV).Mag();
            Update(currV, p, kTRUE, kTRUE);
            Step(currV, p, forwV, forwP);
            p     = forwP;
            currV = forwV;
            fPoints.push_back(currV);
            ++np;
            fH.fMaxStep = orig_max_step;
         }

         // Distribute offset to desired crossing point over all segment.

         TEveVectorD off(v - currV);
         off *= 1.0f / currV.fT;

         // Calculate the required momentum rotation.
         // lpd - last-points-delta
         TEveVectorD lpd0(fPoints[np-1]);
         lpd0 -= fPoints[np-2];
         lpd0.Normalize();

         for (Int_t i = first_point; i < np; ++i)
         {
            fPoints[i] += off * fPoints[i].fT;
         }

         TEveVectorD lpd1(fPoints[np-1]);
         lpd1 -= fPoints[np-2];
         lpd1.Normalize();

         TEveTrans tt;
         tt.SetupFromToVec(lpd0, lpd1);

         // TEveVectorD pb4(p);
         // printf("Rotating momentum: p0 = "); p.Dump();
         tt.RotateIP(p);
         // printf("                   p1 = "); p.Dump();
         // printf("  n1=%f, n2=%f, dp = %f deg\n", pb4.Mag(), p.Mag(),
         //        TMath::RadToDeg()*TMath::ACos(p.Dot(pb4)/(pb4.Mag()*p.Mag())));

         fV = v;
         return kTRUE;
      }
   }

   fPoints.push_back(v);
   fV = v;
   return kTRUE;
}

//______________________________________________________________________________
Bool_t TEveTrackPropagator::LineToVertex(TEveVectorD& v)
{
   // Propagate neutral particle to vertex v.

   TEveVector4D currV = v;

   currV.fX = v.fX;
   currV.fY = v.fY;
   currV.fZ = v.fZ;
   fPoints.push_back(currV);

   fV = v;
   return kTRUE;
}

//______________________________________________________________________________
void TEveTrackPropagator::LineToBounds(TEveVectorD& p)
{
   // Propagatate neutral particle with momentum p to bounds.

   Double_t tZ = 0, tR = 0, tB = 0;

   // time where particle intersect +/- fMaxZ
   if (p.fZ > 0)
      tZ = (fMaxZ - fV.fZ) / p.fZ;
   else if (p.fZ < 0)
      tZ = - (fMaxZ + fV.fZ) / p.fZ;

   // time where particle intersects cylinder
   Double_t a = p.fX*p.fX + p.fY*p.fY;
   Double_t b = 2.0 * (fV.fX*p.fX + fV.fY*p.fY);
   Double_t c = fV.fX*fV.fX + fV.fY*fV.fY - fMaxR*fMaxR;
   Double_t d = b*b - 4.0*a*c;
   if (d >= 0) {
      Double_t sqrtD = TMath::Sqrt(d);
      tR = (-b - sqrtD) / (2.0 * a);
      if (tR < 0) {
         tR = (-b + sqrtD) / (2.0 * a);
      }
      tB = tR < tZ ? tR : tZ; // compare the two times
   } else {
      tB = tZ;
   }
   TEveVectorD nv(fV.fX + p.fX*tB, fV.fY + p.fY*tB, fV.fZ + p.fZ*tB);
   LineToVertex(nv);
}

//______________________________________________________________________________
Bool_t TEveTrackPropagator::HelixIntersectPlane(const TEveVectorD& p,
                                                const TEveVectorD& point,
                                                const TEveVectorD& normal,
                                                TEveVectorD& itsect)
{
   // Intersect helix with a plane. Current position and argument p define
   // the helix.

   TEveVectorD pos(fV);
   TEveVectorD mom(p);
   if (fMagFieldObj->IsConst())
      fH.UpdateHelix(mom, fMagFieldObj->GetFieldD(pos), kFALSE, kFALSE);

   TEveVectorD n(normal);
   TEveVectorD delta = pos - point;
   Double_t d = delta.Dot(n);
   if (d > 0) {
      n.NegateXYZ(); // Turn normal around so that we approach from negative side of the plane
      d = -d;
   }

   TEveVector4D forwV;
   TEveVectorD  forwP;
   TEveVector4D pos4(pos);
   while (kTRUE)
   {
      Update(pos4, mom);
      Step(pos4, mom, forwV , forwP);
      Double_t new_d = (forwV - point).Dot(n);
      if (new_d < d)
      {
         // We are going further away ... fail intersect.
         Warning("HelixIntersectPlane", "going away from the plane.");
         return kFALSE;
      }
      if (new_d > 0)
      {
         delta = forwV - pos;
         itsect = pos + delta * (d / (d - new_d));
         return kTRUE;
      }
      pos4 = forwV;
      mom  = forwP;
   }
}

//______________________________________________________________________________
Bool_t TEveTrackPropagator::LineIntersectPlane(const TEveVectorD& p,
                                               const TEveVectorD& point,
                                               const TEveVectorD& normal,
                                                     TEveVectorD& itsect)
{
   // Intersect line with a plane. Current position and argument p define
   // the line.

   TEveVectorD pos(fV.fX, fV.fY, fV.fZ);
   TEveVectorD delta = pos - point;

   Double_t d = delta.Dot(normal);
   if (d == 0) {
      itsect = pos;
      return kTRUE;
   }

   Double_t t = (p.Dot(normal)) / d;
   if (t < 0) {
      return kFALSE;
   } else {
      itsect = pos + p*t;
      return kTRUE;
   }
}

//______________________________________________________________________________
Bool_t TEveTrackPropagator::IntersectPlane(const TEveVectorD& p,
                                           const TEveVectorD& point,
                                           const TEveVectorD& normal,
                                                 TEveVectorD& itsect)
{
   // Find intersection of currently propagated track with a plane.
   // Current track position is used as starting point.
   //
   // Args:
   //  p        - track momentum to use for extrapolation
   //  point    - a point on a plane
   //  normal   - normal of the plane
   //  itsect   - output, point of intersection
   // Returns:
   //  kFALSE if intersection can not be found, kTRUE otherwise.

   if (fH.fCharge && fMagFieldObj && p.Perp2() > kPtMinSqr)
      return HelixIntersectPlane(p, point, normal, itsect);
   else
      return LineIntersectPlane(p, point, normal, itsect);
}

//______________________________________________________________________________
void TEveTrackPropagator::FillPointSet(TEvePointSet* ps) const
{
   // Reset ps and populate it with points in propagation cache.

   Int_t size = TMath::Min(fNMax, (Int_t)fPoints.size());
   ps->Reset(size);
   for (Int_t i = 0; i < size; ++i)
   {
      const TEveVector4D& v = fPoints[i];
      ps->SetNextPoint(v.fX, v.fY, v.fZ);
   }
}

/******************************************************************************/

//______________________________________________________________________________
void TEveTrackPropagator::RebuildTracks()
{
   // Rebuild all tracks using this render-style.

   TEveTrack* track;
   RefMap_i i = fBackRefs.begin();
   while (i != fBackRefs.end())
   {
      track = dynamic_cast<TEveTrack*>(i->first);
      track->MakeTrack();
      track->StampObjProps();
      ++i;
   }
}

//______________________________________________________________________________
void TEveTrackPropagator::SetMagField(Double_t bX, Double_t bY, Double_t bZ)
{
   // Set constant magnetic field and rebuild tracks.

   SetMagFieldObj(new TEveMagFieldConst(bX, bY, bZ));
}

//______________________________________________________________________________
void TEveTrackPropagator::SetMagFieldObj(TEveMagField* field, Bool_t own_field)
{
   // Set constant magnetic field and rebuild tracks.

   if (fMagFieldObj && fOwnMagFiledObj) delete fMagFieldObj;

   fMagFieldObj    = field;
   fOwnMagFiledObj = own_field;

   RebuildTracks();
}

//______________________________________________________________________________
void TEveTrackPropagator::PrintMagField(Double_t x, Double_t y, Double_t z) const
{
   if (fMagFieldObj) fMagFieldObj->PrintField(x, y, z);
}

//______________________________________________________________________________
void TEveTrackPropagator::SetMaxR(Double_t x)
{
   // Set maximum radius and rebuild tracks.

   fMaxR = x;
   RebuildTracks();
}

//______________________________________________________________________________
void TEveTrackPropagator::SetMaxZ(Double_t x)
{
   // Set maximum z and rebuild tracks.

   fMaxZ = x;
   RebuildTracks();
}

//______________________________________________________________________________
void TEveTrackPropagator::SetMaxOrbs(Double_t x)
{
   // Set maximum number of orbits and rebuild tracks.

   fMaxOrbs = x;
   RebuildTracks();
}

//______________________________________________________________________________
void TEveTrackPropagator::SetMinAng(Double_t x)
{
   // Set maximum step angle and rebuild tracks.
   // WARNING -- this method / variable was mis-named.

   Warning("SetMinAng", "This method was mis-named, use SetMaxAng() instead!");
   SetMaxAng(x);
}
//______________________________________________________________________________
Double_t TEveTrackPropagator::GetMinAng() const
{
   // Get maximum step angle.
   // WARNING -- this method / variable was mis-named.

   Warning("GetMinAng", "This method was mis-named, use GetMaxAng() instead!");
   return GetMaxAng();
}

//______________________________________________________________________________
void TEveTrackPropagator::SetMaxAng(Double_t x)
{
   // Set maximum step angle and rebuild tracks.

   fH.fMaxAng = x;
   RebuildTracks();
}

//______________________________________________________________________________
void TEveTrackPropagator::SetMaxStep(Double_t x)
{
   // Set maximum step-size and rebuild tracks.

   fH.fMaxStep = x;
   RebuildTracks();
}

//______________________________________________________________________________
void TEveTrackPropagator::SetDelta(Double_t x)
{
   // Set maximum error and rebuild tracks.

   fH.fDelta = x;
   RebuildTracks();
}

//______________________________________________________________________________
void TEveTrackPropagator::SetFitDaughters(Bool_t x)
{
   // Set daughter creation point fitting and rebuild tracks.

   fFitDaughters = x;
   RebuildTracks();
}

//______________________________________________________________________________
void TEveTrackPropagator::SetFitReferences(Bool_t x)
{
   // Set track-reference fitting and rebuild tracks.

   fFitReferences = x;
   RebuildTracks();
}

//______________________________________________________________________________
void TEveTrackPropagator::SetFitDecay(Bool_t x)
{
   // Set decay fitting and rebuild tracks.

   fFitDecay = x;
   RebuildTracks();
}

//______________________________________________________________________________
void TEveTrackPropagator::SetFitCluster2Ds(Bool_t x)
{
   // Set 2D-cluster fitting and rebuild tracks.

   fFitCluster2Ds = x;
   RebuildTracks();
}

//______________________________________________________________________________
void TEveTrackPropagator::SetRnrDecay(Bool_t rnr)
{
   // Set decay rendering and rebuild tracks.

   fRnrDecay = rnr;
   RebuildTracks();
}

//______________________________________________________________________________
void TEveTrackPropagator::SetRnrCluster2Ds(Bool_t rnr)
{
   // Set rendering of 2D-clusters and rebuild tracks.

   fRnrCluster2Ds = rnr;
   RebuildTracks();
}

//______________________________________________________________________________
void TEveTrackPropagator::SetRnrDaughters(Bool_t rnr)
{
   // Set daughter rendering and rebuild tracks.

   fRnrDaughters = rnr;
   RebuildTracks();
}

//______________________________________________________________________________
void TEveTrackPropagator::SetRnrReferences(Bool_t rnr)
{
   // Set track-reference rendering and rebuild tracks.

   fRnrReferences = rnr;
   RebuildTracks();
}

//______________________________________________________________________________
void TEveTrackPropagator::SetRnrFV(Bool_t x)
{
   // Set first-vertex rendering and rebuild tracks.

   fRnrFV = x;
   RebuildTracks();
}

//______________________________________________________________________________
void TEveTrackPropagator::SetProjTrackBreaking(UChar_t x)
{
   // Set projection break-point mode and rebuild tracks.

   fProjTrackBreaking = x;
   RebuildTracks();
}

//______________________________________________________________________________
void TEveTrackPropagator::SetRnrPTBMarkers(Bool_t x)
{
   // Set projection break-point rendering and rebuild tracks.

   fRnrPTBMarkers = x;
   RebuildTracks();
}

//______________________________________________________________________________
void TEveTrackPropagator::StepRungeKutta(Double_t step,
                                         Double_t* vect, Double_t* vout)
{
  // Wrapper to step with method RungeKutta.

  ///	******************************************************************
  ///	*								 *
  ///	*  Runge-Kutta method for tracking a particle through a magnetic *
  ///	*  field. Uses Nystroem algorithm (See Handbook Nat. Bur. of	 *
  ///	*  Standards, procedure 25.5.20)				 *
  ///	*								 *
  ///	*  Input parameters						 *
  ///	*	CHARGE    Particle charge				 *
  ///	*	STEP	  Step size					 *
  ///	*	VECT	  Initial co-ords,direction cosines,momentum	 *
  ///	*  Output parameters						 *
  ///	*	VOUT	  Output co-ords,direction cosines,momentum	 *
  ///	*  User routine called  					 *
  ///	*	CALL GUFLD(X,F) 					 *
  ///	*								 *
  ///	*    ==>Called by : <USER>, GUSWIM				 *
  ///	*	Authors    R.Brun, M.Hansroul  *********		 *
  ///	*		   V.Perevoztchikov (CUT STEP implementation)	 *
  ///	*								 *
  ///	*								 *
  ///	******************************************************************

  Double_t h2, h4, f[4];
  Double_t /* xyzt[3], */ a, b, c, ph,ph2;
  Double_t secxs[4],secys[4],seczs[4],hxp[3];
  Double_t g1, g2, g3, g4, g5, g6, ang2, dxt, dyt, dzt;
  Double_t est, at, bt, ct, cba;
  Double_t f1, f2, f3, f4, rho, tet, hnorm, hp, rho1, sint, cost;

  Double_t x;
  Double_t y;
  Double_t z;

  Double_t xt;
  Double_t yt;
  Double_t zt;

  // const Int_t maxit = 1992;
  const Int_t maxit  = 500;
  const Int_t maxcut = 11;

  const Double_t hmin   = 1e-4; // !!! MT ADD,  should be member
  const Double_t kdlt   = 1e-3; // !!! MT CHANGE from 1e-4, should be member
  const Double_t kdlt32 = kdlt/32.;
  const Double_t kthird = 1./3.;
  const Double_t khalf  = 0.5;
  const Double_t kec    = 2.9979251e-3;

  const Double_t kpisqua = 9.86960440109;
  const Int_t kix  = 0;
  const Int_t kiy  = 1;
  const Int_t kiz  = 2;
  const Int_t kipx = 3;
  const Int_t kipy = 4;
  const Int_t kipz = 5;

  // *.
  // *.    ------------------------------------------------------------------
  // *.
  // *             this constant is for units cm,gev/c and kgauss
  // *
  Int_t iter = 0;
  Int_t ncut = 0;
  for(Int_t j = 0; j < 7; j++)
    vout[j] = vect[j];

  Double_t pinv   = kec * fH.fCharge / vect[6];
  Double_t tl     = 0.;
  Double_t h      = step;
  Double_t rest;

  do {
    rest  = step - tl;
    if (TMath::Abs(h) > TMath::Abs(rest))
       h = rest;

    f[0] = -fH.fB.fX;
    f[1] = -fH.fB.fY;
    f[2] = -fH.fB.fZ;

    // * start of integration
    x      = vout[0];
    y      = vout[1];
    z      = vout[2];
    a      = vout[3];
    b      = vout[4];
    c      = vout[5];

    h2     = khalf * h;
    h4     = khalf * h2;
    ph     = pinv * h;
    ph2    = khalf * ph;
    secxs[0] = (b * f[2] - c * f[1]) * ph2;
    secys[0] = (c * f[0] - a * f[2]) * ph2;
    seczs[0] = (a * f[1] - b * f[0]) * ph2;
    ang2 = (secxs[0]*secxs[0] + secys[0]*secys[0] + seczs[0]*seczs[0]);
    if (ang2 > kpisqua) break;

    dxt    = h2 * a + h4 * secxs[0];
    dyt    = h2 * b + h4 * secys[0];
    dzt    = h2 * c + h4 * seczs[0];
    xt     = x + dxt;
    yt     = y + dyt;
    zt     = z + dzt;

    // * second intermediate point
    est = TMath::Abs(dxt) + TMath::Abs(dyt) + TMath::Abs(dzt);
    if (est > h) {
      if (ncut++ > maxcut) break;
      h *= khalf;
      continue;
    }

    // xyzt[0] = xt;
    // xyzt[1] = yt;
    // xyzt[2] = zt;

    fH.fB = fMagFieldObj->GetFieldD(xt, yt, zt);
    f[0] = -fH.fB.fX;
    f[1] = -fH.fB.fY;
    f[2] = -fH.fB.fZ;

    at     = a + secxs[0];
    bt     = b + secys[0];
    ct     = c + seczs[0];

    secxs[1] = (bt * f[2] - ct * f[1]) * ph2;
    secys[1] = (ct * f[0] - at * f[2]) * ph2;
    seczs[1] = (at * f[1] - bt * f[0]) * ph2;
    at     = a + secxs[1];
    bt     = b + secys[1];
    ct     = c + seczs[1];
    secxs[2] = (bt * f[2] - ct * f[1]) * ph2;
    secys[2] = (ct * f[0] - at * f[2]) * ph2;
    seczs[2] = (at * f[1] - bt * f[0]) * ph2;
    dxt    = h * (a + secxs[2]);
    dyt    = h * (b + secys[2]);
    dzt    = h * (c + seczs[2]);
    xt     = x + dxt;
    yt     = y + dyt;
    zt     = z + dzt;
    at     = a + 2.*secxs[2];
    bt     = b + 2.*secys[2];
    ct     = c + 2.*seczs[2];

    est = TMath::Abs(dxt)+TMath::Abs(dyt)+TMath::Abs(dzt);
    if (est > 2.*TMath::Abs(h)) {
      if (ncut++ > maxcut) break;
      h *= khalf;
      continue;
    }

    // xyzt[0] = xt;
    // xyzt[1] = yt;
    // xyzt[2] = zt;

    fH.fB = fMagFieldObj->GetFieldD(xt, yt, zt);
    f[0] = -fH.fB.fX;
    f[1] = -fH.fB.fY;
    f[2] = -fH.fB.fZ;

    z      = z + (c + (seczs[0] + seczs[1] + seczs[2]) * kthird) * h;
    y      = y + (b + (secys[0] + secys[1] + secys[2]) * kthird) * h;
    x      = x + (a + (secxs[0] + secxs[1] + secxs[2]) * kthird) * h;

    secxs[3] = (bt*f[2] - ct*f[1])* ph2;
    secys[3] = (ct*f[0] - at*f[2])* ph2;
    seczs[3] = (at*f[1] - bt*f[0])* ph2;
    a      = a+(secxs[0]+secxs[3]+2. * (secxs[1]+secxs[2])) * kthird;
    b      = b+(secys[0]+secys[3]+2. * (secys[1]+secys[2])) * kthird;
    c      = c+(seczs[0]+seczs[3]+2. * (seczs[1]+seczs[2])) * kthird;

    est    = TMath::Abs(secxs[0]+secxs[3] - (secxs[1]+secxs[2]))
      + TMath::Abs(secys[0]+secys[3] - (secys[1]+secys[2]))
      + TMath::Abs(seczs[0]+seczs[3] - (seczs[1]+seczs[2]));

    if (est > kdlt && TMath::Abs(h) > hmin) {
      if (ncut++ > maxcut) break;
      h *= khalf;
      continue;
    }

    ncut = 0;
    // * if too many iterations, go to helix
    if (iter++ > maxit) break;

    tl += h;
    if (est < kdlt32)
      h *= 2.;
    cba    = 1./ TMath::Sqrt(a*a + b*b + c*c);
    vout[0] = x;
    vout[1] = y;
    vout[2] = z;
    vout[3] = cba*a;
    vout[4] = cba*b;
    vout[5] = cba*c;
    rest = step - tl;
    if (step < 0.) rest = -rest;
    if (rest < 1.e-5*TMath::Abs(step))
    {
       Float_t dot = (vout[3]*vect[3] + vout[4]*vect[4] + vout[5]*vect[5]);
       fH.fPhi += TMath::ACos(dot);
       return;
    }

  } while(1);

  // angle too big, use helix

  f1  = f[0];
  f2  = f[1];
  f3  = f[2];
  f4  = TMath::Sqrt(f1*f1+f2*f2+f3*f3);
  rho = -f4*pinv;
  tet = rho * step;

  hnorm = 1./f4;
  f1 = f1*hnorm;
  f2 = f2*hnorm;
  f3 = f3*hnorm;

  hxp[0] = f2*vect[kipz] - f3*vect[kipy];
  hxp[1] = f3*vect[kipx] - f1*vect[kipz];
  hxp[2] = f1*vect[kipy] - f2*vect[kipx];

  hp = f1*vect[kipx] + f2*vect[kipy] + f3*vect[kipz];

  rho1 = 1./rho;
  sint = TMath::Sin(tet);
  cost = 2.*TMath::Sin(khalf*tet)*TMath::Sin(khalf*tet);

  g1 = sint*rho1;
  g2 = cost*rho1;
  g3 = (tet-sint) * hp*rho1;
  g4 = -cost;
  g5 = sint;
  g6 = cost * hp;

  vout[kix] = vect[kix] + g1*vect[kipx] + g2*hxp[0] + g3*f1;
  vout[kiy] = vect[kiy] + g1*vect[kipy] + g2*hxp[1] + g3*f2;
  vout[kiz] = vect[kiz] + g1*vect[kipz] + g2*hxp[2] + g3*f3;

  vout[kipx] = vect[kipx] + g4*vect[kipx] + g5*hxp[0] + g6*f1;
  vout[kipy] = vect[kipy] + g4*vect[kipy] + g5*hxp[1] + g6*f2;
  vout[kipz] = vect[kipz] + g4*vect[kipz] + g5*hxp[2] + g6*f3;

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