// @(#)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 "TError.h"

#include "TEveProjections.h"
#include "TEveTrans.h"
#include "TEveUtil.h"

#include <limits>

//==============================================================================
//==============================================================================
// TEveProjection
//==============================================================================

//______________________________________________________________________________
//
// Base-class for non-linear projections.
//
// Enables to define an external center of distortion and a scale to
// fixate a bounding box of a projected point.

ClassImp(TEveProjection);

Float_t TEveProjection::fgEps    = 0.005f;
Float_t TEveProjection::fgEpsSqr = 0.000025f;

//______________________________________________________________________________
TEveProjection::TEveProjection() :
   fType          (kPT_Unknown),
   fGeoMode       (kGM_Unknown),
   fName          (0),
   fCenter        (),
   fDisplaceOrigin (kFALSE),
   fUsePreScale   (kFALSE),
   fDistortion    (0.0f),
   fFixR          (300), fFixZ          (400),
   fPastFixRFac   (0),   fPastFixZFac   (0),
   fScaleR        (1),   fScaleZ        (1),
   fPastFixRScale (1),   fPastFixZScale (1),
   fMaxTrackStep  (5)
{
   // Constructor.
}

//______________________________________________________________________________
void TEveProjection::ProjectPointfv(Float_t* v, Float_t d)
{
   // Project float array.

   ProjectPoint(v[0], v[1], v[2], d);
}

//______________________________________________________________________________
void TEveProjection::ProjectPointdv(Double_t* v, Float_t d)
{
   // Project double array.
   // This is a bit piggish as we convert the doubles to floats and back.

   Float_t x = v[0], y = v[1], z = v[2];
   ProjectPoint(x, y, z, d);
   v[0] = x; v[1] = y; v[2] = z;
}

//______________________________________________________________________________
void TEveProjection::ProjectVector(TEveVector& v, Float_t d)
{
   // Project TEveVector.

   ProjectPoint(v.fX, v.fY, v.fZ, d);
}

//______________________________________________________________________________
void TEveProjection::ProjectPointfv(const TEveTrans* t, const Float_t* p, Float_t* v, Float_t d)
{
   // Project float array, converting it to global coordinate system first if
   // transformation matrix is set.

   v[0] = p[0]; v[1] = p[1]; v[2] = p[2];
   if (t)
   {
      t->MultiplyIP(v);
   }
   ProjectPoint(v[0], v[1], v[2], d);
}

//______________________________________________________________________________
void TEveProjection::ProjectPointdv(const TEveTrans* t, const Double_t* p, Double_t* v, Float_t d)
{
   // Project double array, converting it to global coordinate system first if
   // transformation matrix is set.
   // This is a bit piggish as we convert the doubles to floats and back.

   Float_t x, y, z;
   if (t)
   {
      t->Multiply(p, v);
      x = v[0]; y = v[1]; z = v[2];
   }
   else
   {
      x = p[0]; y = p[1]; z = p[2];
   }
   ProjectPoint(x, y, z, d);
   v[0] = x; v[1] = y; v[2] = z;
}

//______________________________________________________________________________
void TEveProjection::ProjectVector(const TEveTrans* t, TEveVector& v, Float_t d)
{
   // Project TEveVector, converting it to global coordinate system first if
   // transformation matrix is set.

   if (t)
   {
      t->MultiplyIP(v);
   }
   ProjectPoint(v.fX, v.fY, v.fZ, d);
}

//______________________________________________________________________________
void TEveProjection::PreScaleVariable(Int_t dim, Float_t& v)
{
   // Pre-scale single variable with pre-scale entry dim.

   if (!fPreScales[dim].empty())
   {
      Bool_t invp = kFALSE;
      if (v < 0) {
         v    = -v;
         invp = kTRUE;
      }
      vPreScale_i i = fPreScales[dim].begin();
      while (v > i->fMax)
         ++i;
      v = i->fOffset + (v - i->fMin)*i->fScale;
      if (invp)
         v = -v;
   }
}

//______________________________________________________________________________
void TEveProjection::PreScalePoint(Float_t& x, Float_t& y)
{
   // Pre-scale point (x, y) in projected coordinates for 2D projections:
   //   RhoZ ~ (rho, z)
   //   RPhi ~ (r, phi), scaling phi doesn't make much sense.

   PreScaleVariable(0, x);
   PreScaleVariable(1, y);
}

//______________________________________________________________________________
void TEveProjection::PreScalePoint(Float_t& x, Float_t& y, Float_t& z)
{
   // Pre-scale point (x, y, z) in projected coordinates for 3D projection.

   PreScaleVariable(0, x);
   PreScaleVariable(1, y);
   PreScaleVariable(2, z);
}

//______________________________________________________________________________
void TEveProjection::AddPreScaleEntry(Int_t coord, Float_t value, Float_t scale)
{
   // Add new scaling range for given coordinate.
   // Arguments:
   //  coord    0 ~ x, 1 ~ y, 2 ~ z
   //  value    value of input coordinate from which to apply this scale;
   //  scale    the scale to apply from value onwards.
   //
   // NOTE: If pre-scaling is combined with center-displaced then
   // the scale of the central region should be 1. This limitation
   // can be removed but will cost CPU.

   static const TEveException eh("TEveProjection::AddPreScaleEntry ");

   if (coord < 0 || coord > 2)
      throw (eh + "coordinate out of range.");

   const Float_t infty  = std::numeric_limits<Float_t>::infinity();

   vPreScale_t& vec = fPreScales[coord];

   if (vec.empty())
   {
      if (value == 0)
      {
         vec.push_back(PreScaleEntry_t(0, infty, 0, scale));
      }
      else
      {
         vec.push_back(PreScaleEntry_t(0, value, 0, 1));
         vec.push_back(PreScaleEntry_t(value, infty, value, scale));
      }
   }
   else
   {
      PreScaleEntry_t& prev = vec.back();
      if (value <= prev.fMin)
         throw (eh + "minimum value not larger than previous one.");

      prev.fMax = value;
      Float_t offset =  prev.fOffset + (prev.fMax - prev.fMin)*prev.fScale;
      vec.push_back(PreScaleEntry_t(value, infty, offset, scale));
   }
}

//______________________________________________________________________________
void TEveProjection::ChangePreScaleEntry(Int_t   coord, Int_t entry,
                                         Float_t new_scale)
{
   // Change scale for given entry and coordinate.
   //
   // NOTE: If the first entry you created used other value than 0,
   // one entry (covering range from 0 to this value) was created
   // automatically.

   static const TEveException eh("TEveProjection::ChangePreScaleEntry ");

   if (coord < 0 || coord > 2)
      throw (eh + "coordinate out of range.");

   vPreScale_t& vec = fPreScales[coord];
   Int_t        vs  = vec.size();
   if (entry < 0 || entry >= vs)
      throw (eh + "entry out of range.");

   vec[entry].fScale = new_scale;
   Int_t i0 = entry, i1 = entry + 1;
   while (i1 < vs)
   {
      PreScaleEntry_t e0 = vec[i0];
      vec[i1].fOffset = e0.fOffset + (e0.fMax - e0.fMin)*e0.fScale;
      i0 = i1++;
   }
}

//______________________________________________________________________________
void TEveProjection::ClearPreScales()
{
   // Clear all pre-scaling information.

   fPreScales[0].clear();
   fPreScales[1].clear();
   fPreScales[2].clear();
}

//______________________________________________________________________________
void TEveProjection::SetDistortion(Float_t d)
{
   // Set distortion.

   fDistortion    = d;
   fScaleR        = 1.0f + fFixR*fDistortion;
   fScaleZ        = 1.0f + fFixZ*fDistortion;
   fPastFixRScale = TMath::Power(10.0f, fPastFixRFac) / fScaleR;
   fPastFixZScale = TMath::Power(10.0f, fPastFixZFac) / fScaleZ;
}

//______________________________________________________________________________
void TEveProjection::SetFixR(Float_t r)
{
   // Set fixed radius.

   fFixR          = r;
   fScaleR        = 1 + fFixR*fDistortion;
   fPastFixRScale = TMath::Power(10.0f, fPastFixRFac) / fScaleR;
}

//______________________________________________________________________________
void TEveProjection::SetFixZ(Float_t z)
{
   // Set fixed radius.

   fFixZ          = z;
   fScaleZ        = 1 + fFixZ*fDistortion;
   fPastFixZScale = TMath::Power(10.0f, fPastFixZFac) / fScaleZ;
}

//______________________________________________________________________________
void TEveProjection::SetPastFixRFac(Float_t x)
{
   // Set 2's-exponent for relative scaling beyond FixR.

   fPastFixRFac   = x;
   fPastFixRScale = TMath::Power(10.0f, fPastFixRFac) / fScaleR;
}

//______________________________________________________________________________
Float_t* TEveProjection::GetProjectedCenter()
{
   // Get projected center.

   static TEveVector zero;

   if (fDisplaceOrigin)
      return zero.Arr();
   else
      return fCenter.Arr();
}

//______________________________________________________________________________
void  TEveProjection::SetDisplaceOrigin(Bool_t x)
{
   // Set flag to displace for center.
   // This options is useful if want to have projected center
   // at (0, 0) position in projected coordinates and want to dismiss
   // gap around projected center in RhoZ projection.

   fDisplaceOrigin = x;
   // update projected center
   SetCenter(fCenter);
}

//______________________________________________________________________________
void TEveProjection::SetPastFixZFac(Float_t x)
{
   // Set 2's-exponent for relative scaling beyond FixZ.

   fPastFixZFac   = x;
   fPastFixZScale = TMath::Power(10.0f, fPastFixZFac) / fScaleZ;
}

//______________________________________________________________________________
void TEveProjection::BisectBreakPoint(TEveVector& vL, TEveVector& vR, Float_t /*eps_sqr*/)
{
   // Find break-point on both sides of the discontinuity.
   // They still need to be projected after the call.
   // This is an obsolete version of the method that required manual
   // specification of precision -- this lead to (infrequent) infinite loops.

   static Bool_t warnedp = kFALSE;

   if (!warnedp)
   {
      Warning("BisectBreakPoint", "call with eps_sqr argument is obsolete - please use the new signature.");
      warnedp = kTRUE;
   }

   BisectBreakPoint(vL, vR, kFALSE);
}

//______________________________________________________________________________
void TEveProjection::BisectBreakPoint(TEveVector& vL, TEveVector& vR,
                                      Bool_t project_result, Float_t depth)
{
   // Find break-point on both sides of the discontinuity.
   // If project_result is true, the resulting break points will be projected
   // with given depth value.

   TEveVector vM, vLP, vMP;
   Int_t n_loops = TMath::CeilNint(TMath::Log2(1e12 * (vL-vR).Mag2() / (0.5f*(vL+vR)).Mag2()) / 2);
   while (--n_loops >= 0)
   {
      vM.Mult(vL + vR, 0.5f);
      vLP.Set(vL); ProjectPoint(vLP.fX, vLP.fY, vLP.fZ, 0);
      vMP.Set(vM); ProjectPoint(vMP.fX, vMP.fY, vMP.fZ, 0);

      if (IsOnSubSpaceBoundrary(vMP))
      {
         vL.Set(vM);
         vR.Set(vM);
         break;
      }

      if (AcceptSegment(vLP, vMP, 0.0f))
      {
         vL.Set(vM);
      }
      else
      {
         vR.Set(vM);
      }
   }

   if (project_result)
   {
      ProjectVector(vL, depth);
      ProjectVector(vR, depth);
   }
}

//______________________________________________________________________________
Float_t TEveProjection::GetLimit(Int_t, Bool_t)
{
   // Method previously used by  TEveProjectionAxesGL. Now obsolete.

  ::Warning("TEveProjection::GetLimits", "method is obsolete");

   return 0;
}

//______________________________________________________________________________
void TEveProjection::SetDirectionalVector(Int_t screenAxis, TEveVector& vec)
{
   // Get vector for axis in a projected space.

   for (Int_t i=0; i<3; i++)
   {
      vec[i] = (i==screenAxis) ? 1.0f : 0.0f;
   }
}

//______________________________________________________________________________
TEveVector TEveProjection::GetOrthogonalCenter(int i, TEveVector& centerOO)
{
   // Get center ortogonal to given axis index.

   TEveVector dirVec;
   SetDirectionalVector(i, dirVec);

   TEveVector dirCenter;
   dirCenter.Mult(dirVec, fCenter.Dot(dirVec));
   centerOO = fCenter - dirCenter;


   return  centerOO;
}

//______________________________________________________________________________
Float_t TEveProjection::GetValForScreenPos(Int_t axisIdx, Float_t sv)
{
   // Inverse projection.

   static const TEveException eH("TEveProjection::GetValForScreenPos ");

   static const int kMaxSteps = 5000;
   static const int kMaxVal = 10;

   Float_t xL, xM, xR;
   TEveVector vec;

   TEveVector dirVec;
   SetDirectionalVector(axisIdx, dirVec);

   TEveVector zero;
   if (fDisplaceOrigin) zero = fCenter;

   TEveVector zeroProjected = zero;
   ProjectVector(zeroProjected, 0.f);

   // search from -/+ infinity according to sign of screen value
   if (sv > zeroProjected[axisIdx])
   {
      xL = 0;
      xR = kMaxVal;

      int cnt = 0;
      while (cnt < kMaxSteps)
      {
         vec.Mult(dirVec, xR);
         if (fDisplaceOrigin) vec += fCenter;

         ProjectVector(vec, 0);
         if (vec[axisIdx] >= sv) break;
         xL = xR; xR *= 2;

         if (++cnt >= kMaxSteps)
            throw eH + Form("positive projected %f, value %f,xL, xR ( %f, %f)\n", vec[axisIdx], sv, xL, xR);
      }
   }
   else if (sv < zeroProjected[axisIdx])
   {
      xR = 0;
      xL = -kMaxVal;

      int cnt = 0;
      while (cnt < kMaxSteps)
      {
         vec.Mult(dirVec, xL);
         if (fDisplaceOrigin) vec += fCenter;

         ProjectVector(vec, 0);
         if (vec[axisIdx] <= sv) break;
         xR = xL; xL *= 2;
         if (++cnt >= kMaxSteps)
            throw eH + Form("negative projected %f, value %f,xL, xR ( %f, %f)\n", vec[axisIdx], sv, xL, xR);
      }
   }
   else
   {
      return 0.0f;
   }

   //  printf("search for value %f in rng[%f, %f] \n", sv, xL, xR);
   int cnt = 0;
   do
   {
      //printf("search value with bisection xL=%f, xR=%f; vec[axisIdx]=%f, sv=%f\n", xL, xR, vec[axisIdx], sv);
      xM = 0.5f * (xL + xR);
      vec.Mult(dirVec, xM);
      if (fDisplaceOrigin) vec += fCenter;
      ProjectVector(vec, 0);
      if (vec[axisIdx] > sv)
         xR = xM;
      else
         xL = xM;
      if (++cnt >= kMaxSteps)
         throw eH + Form("can't converge %f %f, l/r %f/%f, idx=%d\n", vec[axisIdx], sv, xL, xR, axisIdx);

   } while (TMath::Abs(vec[axisIdx] - sv) >= fgEps);


   return xM;
}

//______________________________________________________________________________
Float_t TEveProjection::GetScreenVal(Int_t i, Float_t x, TEveVector& dirVec, TEveVector& /*oCenter*/)
{
   // Project point on given axis and return projected value.

   TEveVector pos = dirVec*x;

   if (fDisplaceOrigin)
      pos += fCenter;

   ProjectVector(pos , 0.f);

   return pos[i];
}

//______________________________________________________________________________
Float_t TEveProjection::GetScreenVal(Int_t i, Float_t x)
{
   // Project point on given axis and return projected value.

   TEveVector dirVec;
   SetDirectionalVector(i, dirVec);
   TEveVector oCenter;
   // GetOrthogonalCenter(i, oCenter);
   return GetScreenVal(i, x, dirVec, oCenter);
}


//==============================================================================
//==============================================================================
// TEveRhoZProjection
//==============================================================================

//______________________________________________________________________________
//
// Transformation from 3D to 2D. X axis represent Z coordinate. Y axis have value of
// radius with a sign of Y coordinate.

ClassImp(TEveRhoZProjection);

//______________________________________________________________________________
TEveRhoZProjection::TEveRhoZProjection() :
   TEveProjection()
{
   // Constructor.

   fType = kPT_RhoZ;
   fName = "RhoZ";
}

//______________________________________________________________________________
void TEveRhoZProjection::ProjectPoint(Float_t& x, Float_t& y, Float_t& z,
                                      Float_t  d, EPProc_e proc)
{
   // Project point.

   using namespace TMath;

   if (fDisplaceOrigin) {
      x -= fCenter.fX;
      y -= fCenter.fY;
      z -= fCenter.fZ;
   }
   if (proc == kPP_Plane || proc == kPP_Full)
   {
      // project
      y = Sign((Float_t)Sqrt(x*x+y*y), y);
      x = z;
   }
   if (proc == kPP_Distort || proc == kPP_Full)
   {
      if (fUsePreScale)
         PreScalePoint(y, x);


      // distort

      if (!fDisplaceOrigin) {
         x -= fProjectedCenter.fX;
         y -= fProjectedCenter.fY;
      }

      if (x > fFixZ)
         x =  fFixZ + fPastFixZScale*(x - fFixZ);
      else if (x < -fFixZ)
         x = -fFixZ + fPastFixZScale*(x + fFixZ);
      else
         x =  x * fScaleZ / (1.0f + Abs(x)*fDistortion);

      if (y > fFixR)
         y =  fFixR + fPastFixRScale*(y - fFixR);
      else if (y < -fFixR)
         y = -fFixR + fPastFixRScale*(y + fFixR);
      else
         y =  y * fScaleR / (1.0f + Abs(y)*fDistortion);

      if (!fDisplaceOrigin) {
         x += fProjectedCenter.fX;
         y += fProjectedCenter.fY;
      }
   }
   z = d;
}


//______________________________________________________________________________
void TEveRhoZProjection::SetCenter(TEveVector& v)
{
   // Set center of distortion (virtual method).

   fCenter = v;

   if (fDisplaceOrigin)
   {
      fProjectedCenter.Set(0.f, 0.f, 0.f);
   }
   else
   {
      Float_t r = TMath::Sqrt(v.fX*v.fX + v.fY*v.fY);
      fProjectedCenter.fX = fCenter.fZ;
      fProjectedCenter.fY = TMath::Sign(r, fCenter.fY);
      fProjectedCenter.fZ = 0;
   }
}

//______________________________________________________________________________
void TEveRhoZProjection::SetDirectionalVector(Int_t screenAxis, TEveVector& vec)
{
   // Get direction in the unprojected space for axis index in the
   // projected space.
   // This is virtual method from base-class TEveProjection.

   if (screenAxis == 0)
      vec.Set(0.0f, 0.0f, 1.0f);
   else if (screenAxis == 1)
      vec.Set(0.0f, 1.0f, 0.0f);

}
//______________________________________________________________________________
Bool_t TEveRhoZProjection::AcceptSegment(TEveVector& v1, TEveVector& v2,
                                         Float_t tolerance) const
{
   // Check if segment of two projected points is valid.
   //
   // Move slightly one of the points if by shifting it by no more than
   // tolearance the segment can become acceptable.

   Float_t a = fProjectedCenter.fY;
   Bool_t val = kTRUE;
   if ((v1.fY <  a && v2.fY > a) || (v1.fY > a && v2.fY < a))
   {
      val = kFALSE;
      if (tolerance > 0)
      {
         Float_t a1 = TMath::Abs(v1.fY - a), a2 = TMath::Abs(v2.fY - a);
         if (a1 < a2)
         {
            if (a1 < tolerance) { v1.fY = a; val = kTRUE; }
         }
         else
         {
            if (a2 < tolerance) { v2.fY = a; val = kTRUE; }
         }
      }
   }
   return val;
}

//______________________________________________________________________________
Int_t TEveRhoZProjection::SubSpaceId(const TEveVector& v) const
{
   // Return sub-space id for the point.
   // 0 - upper half-space
   // 1 - lowwer half-space

   return v.fY > fProjectedCenter.fY ? 0 : 1;
}

//______________________________________________________________________________
Bool_t TEveRhoZProjection::IsOnSubSpaceBoundrary(const TEveVector& v) const
{
   // Checks if point is on sub-space boundrary.

   return v.fY == fProjectedCenter.fY;
}

//==============================================================================
//==============================================================================
// TEveRPhiProjection
//==============================================================================

//______________________________________________________________________________
//
// XY projection with distortion around given center.

ClassImp(TEveRPhiProjection);

//______________________________________________________________________________
TEveRPhiProjection::TEveRPhiProjection() :
   TEveProjection()
{
   // Constructor.

   fType    = kPT_RPhi;
   fGeoMode = kGM_Polygons;
   fName    = "RhoPhi";
}

//______________________________________________________________________________
void TEveRPhiProjection::ProjectPoint(Float_t& x, Float_t& y, Float_t& z,
                                      Float_t d, EPProc_e proc)
{
   // Project point.

   using namespace TMath;

   if (fDisplaceOrigin)
   {
      x  -= fCenter.fX;
      y  -= fCenter.fY;
      z  -= fCenter.fZ;
   }

   if (proc != kPP_Plane)
   {
      Float_t r, phi;
      if (fUsePreScale)
      {
         r   = Sqrt(x*x + y*y);
         phi = (x == 0.0f && y == 0.0f) ? 0.0f : ATan2(y, x);
         PreScalePoint(r, phi);
         x = r*Cos(phi);
         y = r*Sin(phi);
      }

      if (!fDisplaceOrigin)
      {
         x  -= fCenter.fX;
         y  -= fCenter.fY;
      }

      r   = Sqrt(x*x + y*y);
      phi = (x == 0.0f && y == 0.0f) ? 0.0f : ATan2(y, x);

      if (r > fFixR)
         r =  fFixR + fPastFixRScale*(r - fFixR);
      else if (r < -fFixR)
         r = -fFixR + fPastFixRScale*(r + fFixR);
      else
         r =  r * fScaleR / (1.0f + r*fDistortion);

      x = r*Cos(phi);
      y = r*Sin(phi);

      if (!fDisplaceOrigin)
      {
         x += fCenter.fX;
         y += fCenter.fY;
      }
   }
   z = d;
}


//==============================================================================
//==============================================================================
// TEve3DProjection
//==============================================================================

//______________________________________________________________________________
//
// 3D scaling projection. One has to use pre-scaling to make any ise of this.

ClassImp(TEve3DProjection);

//______________________________________________________________________________
TEve3DProjection::TEve3DProjection() :
   TEveProjection()
{
   // Constructor.

   fType    = kPT_3D;
   fGeoMode = kGM_Unknown;
   fName    = "3D";
}

//______________________________________________________________________________
void TEve3DProjection::ProjectPoint(Float_t& x, Float_t& y, Float_t& z,
                                    Float_t /*d*/, EPProc_e proc)
{
   // Project point.

   using namespace TMath;

   if (proc != kPP_Plane)
   {
      if (fUsePreScale)
      {
         PreScalePoint(x, y, z);
      }

      x -= fCenter.fX;
      y -= fCenter.fY;
      z -= fCenter.fZ;
   }
}
 TEveProjections.cxx:1
 TEveProjections.cxx:2
 TEveProjections.cxx:3
 TEveProjections.cxx:4
 TEveProjections.cxx:5
 TEveProjections.cxx:6
 TEveProjections.cxx:7
 TEveProjections.cxx:8
 TEveProjections.cxx:9
 TEveProjections.cxx:10
 TEveProjections.cxx:11
 TEveProjections.cxx:12
 TEveProjections.cxx:13
 TEveProjections.cxx:14
 TEveProjections.cxx:15
 TEveProjections.cxx:16
 TEveProjections.cxx:17
 TEveProjections.cxx:18
 TEveProjections.cxx:19
 TEveProjections.cxx:20
 TEveProjections.cxx:21
 TEveProjections.cxx:22
 TEveProjections.cxx:23
 TEveProjections.cxx:24
 TEveProjections.cxx:25
 TEveProjections.cxx:26
 TEveProjections.cxx:27
 TEveProjections.cxx:28
 TEveProjections.cxx:29
 TEveProjections.cxx:30
 TEveProjections.cxx:31
 TEveProjections.cxx:32
 TEveProjections.cxx:33
 TEveProjections.cxx:34
 TEveProjections.cxx:35
 TEveProjections.cxx:36
 TEveProjections.cxx:37
 TEveProjections.cxx:38
 TEveProjections.cxx:39
 TEveProjections.cxx:40
 TEveProjections.cxx:41
 TEveProjections.cxx:42
 TEveProjections.cxx:43
 TEveProjections.cxx:44
 TEveProjections.cxx:45
 TEveProjections.cxx:46
 TEveProjections.cxx:47
 TEveProjections.cxx:48
 TEveProjections.cxx:49
 TEveProjections.cxx:50
 TEveProjections.cxx:51
 TEveProjections.cxx:52
 TEveProjections.cxx:53
 TEveProjections.cxx:54
 TEveProjections.cxx:55
 TEveProjections.cxx:56
 TEveProjections.cxx:57
 TEveProjections.cxx:58
 TEveProjections.cxx:59
 TEveProjections.cxx:60
 TEveProjections.cxx:61
 TEveProjections.cxx:62
 TEveProjections.cxx:63
 TEveProjections.cxx:64
 TEveProjections.cxx:65
 TEveProjections.cxx:66
 TEveProjections.cxx:67
 TEveProjections.cxx:68
 TEveProjections.cxx:69
 TEveProjections.cxx:70
 TEveProjections.cxx:71
 TEveProjections.cxx:72
 TEveProjections.cxx:73
 TEveProjections.cxx:74
 TEveProjections.cxx:75
 TEveProjections.cxx:76
 TEveProjections.cxx:77
 TEveProjections.cxx:78
 TEveProjections.cxx:79
 TEveProjections.cxx:80
 TEveProjections.cxx:81
 TEveProjections.cxx:82
 TEveProjections.cxx:83
 TEveProjections.cxx:84
 TEveProjections.cxx:85
 TEveProjections.cxx:86
 TEveProjections.cxx:87
 TEveProjections.cxx:88
 TEveProjections.cxx:89
 TEveProjections.cxx:90
 TEveProjections.cxx:91
 TEveProjections.cxx:92
 TEveProjections.cxx:93
 TEveProjections.cxx:94
 TEveProjections.cxx:95
 TEveProjections.cxx:96
 TEveProjections.cxx:97
 TEveProjections.cxx:98
 TEveProjections.cxx:99
 TEveProjections.cxx:100
 TEveProjections.cxx:101
 TEveProjections.cxx:102
 TEveProjections.cxx:103
 TEveProjections.cxx:104
 TEveProjections.cxx:105
 TEveProjections.cxx:106
 TEveProjections.cxx:107
 TEveProjections.cxx:108
 TEveProjections.cxx:109
 TEveProjections.cxx:110
 TEveProjections.cxx:111
 TEveProjections.cxx:112
 TEveProjections.cxx:113
 TEveProjections.cxx:114
 TEveProjections.cxx:115
 TEveProjections.cxx:116
 TEveProjections.cxx:117
 TEveProjections.cxx:118
 TEveProjections.cxx:119
 TEveProjections.cxx:120
 TEveProjections.cxx:121
 TEveProjections.cxx:122
 TEveProjections.cxx:123
 TEveProjections.cxx:124
 TEveProjections.cxx:125
 TEveProjections.cxx:126
 TEveProjections.cxx:127
 TEveProjections.cxx:128
 TEveProjections.cxx:129
 TEveProjections.cxx:130
 TEveProjections.cxx:131
 TEveProjections.cxx:132
 TEveProjections.cxx:133
 TEveProjections.cxx:134
 TEveProjections.cxx:135
 TEveProjections.cxx:136
 TEveProjections.cxx:137
 TEveProjections.cxx:138
 TEveProjections.cxx:139
 TEveProjections.cxx:140
 TEveProjections.cxx:141
 TEveProjections.cxx:142
 TEveProjections.cxx:143
 TEveProjections.cxx:144
 TEveProjections.cxx:145
 TEveProjections.cxx:146
 TEveProjections.cxx:147
 TEveProjections.cxx:148
 TEveProjections.cxx:149
 TEveProjections.cxx:150
 TEveProjections.cxx:151
 TEveProjections.cxx:152
 TEveProjections.cxx:153
 TEveProjections.cxx:154
 TEveProjections.cxx:155
 TEveProjections.cxx:156
 TEveProjections.cxx:157
 TEveProjections.cxx:158
 TEveProjections.cxx:159
 TEveProjections.cxx:160
 TEveProjections.cxx:161
 TEveProjections.cxx:162
 TEveProjections.cxx:163
 TEveProjections.cxx:164
 TEveProjections.cxx:165
 TEveProjections.cxx:166
 TEveProjections.cxx:167
 TEveProjections.cxx:168
 TEveProjections.cxx:169
 TEveProjections.cxx:170
 TEveProjections.cxx:171
 TEveProjections.cxx:172
 TEveProjections.cxx:173
 TEveProjections.cxx:174
 TEveProjections.cxx:175
 TEveProjections.cxx:176
 TEveProjections.cxx:177
 TEveProjections.cxx:178
 TEveProjections.cxx:179
 TEveProjections.cxx:180
 TEveProjections.cxx:181
 TEveProjections.cxx:182
 TEveProjections.cxx:183
 TEveProjections.cxx:184
 TEveProjections.cxx:185
 TEveProjections.cxx:186
 TEveProjections.cxx:187
 TEveProjections.cxx:188
 TEveProjections.cxx:189
 TEveProjections.cxx:190
 TEveProjections.cxx:191
 TEveProjections.cxx:192
 TEveProjections.cxx:193
 TEveProjections.cxx:194
 TEveProjections.cxx:195
 TEveProjections.cxx:196
 TEveProjections.cxx:197
 TEveProjections.cxx:198
 TEveProjections.cxx:199
 TEveProjections.cxx:200
 TEveProjections.cxx:201
 TEveProjections.cxx:202
 TEveProjections.cxx:203
 TEveProjections.cxx:204
 TEveProjections.cxx:205
 TEveProjections.cxx:206
 TEveProjections.cxx:207
 TEveProjections.cxx:208
 TEveProjections.cxx:209
 TEveProjections.cxx:210
 TEveProjections.cxx:211
 TEveProjections.cxx:212
 TEveProjections.cxx:213
 TEveProjections.cxx:214
 TEveProjections.cxx:215
 TEveProjections.cxx:216
 TEveProjections.cxx:217
 TEveProjections.cxx:218
 TEveProjections.cxx:219
 TEveProjections.cxx:220
 TEveProjections.cxx:221
 TEveProjections.cxx:222
 TEveProjections.cxx:223
 TEveProjections.cxx:224
 TEveProjections.cxx:225
 TEveProjections.cxx:226
 TEveProjections.cxx:227
 TEveProjections.cxx:228
 TEveProjections.cxx:229
 TEveProjections.cxx:230
 TEveProjections.cxx:231
 TEveProjections.cxx:232
 TEveProjections.cxx:233
 TEveProjections.cxx:234
 TEveProjections.cxx:235
 TEveProjections.cxx:236
 TEveProjections.cxx:237
 TEveProjections.cxx:238
 TEveProjections.cxx:239
 TEveProjections.cxx:240
 TEveProjections.cxx:241
 TEveProjections.cxx:242
 TEveProjections.cxx:243
 TEveProjections.cxx:244
 TEveProjections.cxx:245
 TEveProjections.cxx:246
 TEveProjections.cxx:247
 TEveProjections.cxx:248
 TEveProjections.cxx:249
 TEveProjections.cxx:250
 TEveProjections.cxx:251
 TEveProjections.cxx:252
 TEveProjections.cxx:253
 TEveProjections.cxx:254
 TEveProjections.cxx:255
 TEveProjections.cxx:256
 TEveProjections.cxx:257
 TEveProjections.cxx:258
 TEveProjections.cxx:259
 TEveProjections.cxx:260
 TEveProjections.cxx:261
 TEveProjections.cxx:262
 TEveProjections.cxx:263
 TEveProjections.cxx:264
 TEveProjections.cxx:265
 TEveProjections.cxx:266
 TEveProjections.cxx:267
 TEveProjections.cxx:268
 TEveProjections.cxx:269
 TEveProjections.cxx:270
 TEveProjections.cxx:271
 TEveProjections.cxx:272
 TEveProjections.cxx:273
 TEveProjections.cxx:274
 TEveProjections.cxx:275
 TEveProjections.cxx:276
 TEveProjections.cxx:277
 TEveProjections.cxx:278
 TEveProjections.cxx:279
 TEveProjections.cxx:280
 TEveProjections.cxx:281
 TEveProjections.cxx:282
 TEveProjections.cxx:283
 TEveProjections.cxx:284
 TEveProjections.cxx:285
 TEveProjections.cxx:286
 TEveProjections.cxx:287
 TEveProjections.cxx:288
 TEveProjections.cxx:289
 TEveProjections.cxx:290
 TEveProjections.cxx:291
 TEveProjections.cxx:292
 TEveProjections.cxx:293
 TEveProjections.cxx:294
 TEveProjections.cxx:295
 TEveProjections.cxx:296
 TEveProjections.cxx:297
 TEveProjections.cxx:298
 TEveProjections.cxx:299
 TEveProjections.cxx:300
 TEveProjections.cxx:301
 TEveProjections.cxx:302
 TEveProjections.cxx:303
 TEveProjections.cxx:304
 TEveProjections.cxx:305
 TEveProjections.cxx:306
 TEveProjections.cxx:307
 TEveProjections.cxx:308
 TEveProjections.cxx:309
 TEveProjections.cxx:310
 TEveProjections.cxx:311
 TEveProjections.cxx:312
 TEveProjections.cxx:313
 TEveProjections.cxx:314
 TEveProjections.cxx:315
 TEveProjections.cxx:316
 TEveProjections.cxx:317
 TEveProjections.cxx:318
 TEveProjections.cxx:319
 TEveProjections.cxx:320
 TEveProjections.cxx:321
 TEveProjections.cxx:322
 TEveProjections.cxx:323
 TEveProjections.cxx:324
 TEveProjections.cxx:325
 TEveProjections.cxx:326
 TEveProjections.cxx:327
 TEveProjections.cxx:328
 TEveProjections.cxx:329
 TEveProjections.cxx:330
 TEveProjections.cxx:331
 TEveProjections.cxx:332
 TEveProjections.cxx:333
 TEveProjections.cxx:334
 TEveProjections.cxx:335
 TEveProjections.cxx:336
 TEveProjections.cxx:337
 TEveProjections.cxx:338
 TEveProjections.cxx:339
 TEveProjections.cxx:340
 TEveProjections.cxx:341
 TEveProjections.cxx:342
 TEveProjections.cxx:343
 TEveProjections.cxx:344
 TEveProjections.cxx:345
 TEveProjections.cxx:346
 TEveProjections.cxx:347
 TEveProjections.cxx:348
 TEveProjections.cxx:349
 TEveProjections.cxx:350
 TEveProjections.cxx:351
 TEveProjections.cxx:352
 TEveProjections.cxx:353
 TEveProjections.cxx:354
 TEveProjections.cxx:355
 TEveProjections.cxx:356
 TEveProjections.cxx:357
 TEveProjections.cxx:358
 TEveProjections.cxx:359
 TEveProjections.cxx:360
 TEveProjections.cxx:361
 TEveProjections.cxx:362
 TEveProjections.cxx:363
 TEveProjections.cxx:364
 TEveProjections.cxx:365
 TEveProjections.cxx:366
 TEveProjections.cxx:367
 TEveProjections.cxx:368
 TEveProjections.cxx:369
 TEveProjections.cxx:370
 TEveProjections.cxx:371
 TEveProjections.cxx:372
 TEveProjections.cxx:373
 TEveProjections.cxx:374
 TEveProjections.cxx:375
 TEveProjections.cxx:376
 TEveProjections.cxx:377
 TEveProjections.cxx:378
 TEveProjections.cxx:379
 TEveProjections.cxx:380
 TEveProjections.cxx:381
 TEveProjections.cxx:382
 TEveProjections.cxx:383
 TEveProjections.cxx:384
 TEveProjections.cxx:385
 TEveProjections.cxx:386
 TEveProjections.cxx:387
 TEveProjections.cxx:388
 TEveProjections.cxx:389
 TEveProjections.cxx:390
 TEveProjections.cxx:391
 TEveProjections.cxx:392
 TEveProjections.cxx:393
 TEveProjections.cxx:394
 TEveProjections.cxx:395
 TEveProjections.cxx:396
 TEveProjections.cxx:397
 TEveProjections.cxx:398
 TEveProjections.cxx:399
 TEveProjections.cxx:400
 TEveProjections.cxx:401
 TEveProjections.cxx:402
 TEveProjections.cxx:403
 TEveProjections.cxx:404
 TEveProjections.cxx:405
 TEveProjections.cxx:406
 TEveProjections.cxx:407
 TEveProjections.cxx:408
 TEveProjections.cxx:409
 TEveProjections.cxx:410
 TEveProjections.cxx:411
 TEveProjections.cxx:412
 TEveProjections.cxx:413
 TEveProjections.cxx:414
 TEveProjections.cxx:415
 TEveProjections.cxx:416
 TEveProjections.cxx:417
 TEveProjections.cxx:418
 TEveProjections.cxx:419
 TEveProjections.cxx:420
 TEveProjections.cxx:421
 TEveProjections.cxx:422
 TEveProjections.cxx:423
 TEveProjections.cxx:424
 TEveProjections.cxx:425
 TEveProjections.cxx:426
 TEveProjections.cxx:427
 TEveProjections.cxx:428
 TEveProjections.cxx:429
 TEveProjections.cxx:430
 TEveProjections.cxx:431
 TEveProjections.cxx:432
 TEveProjections.cxx:433
 TEveProjections.cxx:434
 TEveProjections.cxx:435
 TEveProjections.cxx:436
 TEveProjections.cxx:437
 TEveProjections.cxx:438
 TEveProjections.cxx:439
 TEveProjections.cxx:440
 TEveProjections.cxx:441
 TEveProjections.cxx:442
 TEveProjections.cxx:443
 TEveProjections.cxx:444
 TEveProjections.cxx:445
 TEveProjections.cxx:446
 TEveProjections.cxx:447
 TEveProjections.cxx:448
 TEveProjections.cxx:449
 TEveProjections.cxx:450
 TEveProjections.cxx:451
 TEveProjections.cxx:452
 TEveProjections.cxx:453
 TEveProjections.cxx:454
 TEveProjections.cxx:455
 TEveProjections.cxx:456
 TEveProjections.cxx:457
 TEveProjections.cxx:458
 TEveProjections.cxx:459
 TEveProjections.cxx:460
 TEveProjections.cxx:461
 TEveProjections.cxx:462
 TEveProjections.cxx:463
 TEveProjections.cxx:464
 TEveProjections.cxx:465
 TEveProjections.cxx:466
 TEveProjections.cxx:467
 TEveProjections.cxx:468
 TEveProjections.cxx:469
 TEveProjections.cxx:470
 TEveProjections.cxx:471
 TEveProjections.cxx:472
 TEveProjections.cxx:473
 TEveProjections.cxx:474
 TEveProjections.cxx:475
 TEveProjections.cxx:476
 TEveProjections.cxx:477
 TEveProjections.cxx:478
 TEveProjections.cxx:479
 TEveProjections.cxx:480
 TEveProjections.cxx:481
 TEveProjections.cxx:482
 TEveProjections.cxx:483
 TEveProjections.cxx:484
 TEveProjections.cxx:485
 TEveProjections.cxx:486
 TEveProjections.cxx:487
 TEveProjections.cxx:488
 TEveProjections.cxx:489
 TEveProjections.cxx:490
 TEveProjections.cxx:491
 TEveProjections.cxx:492
 TEveProjections.cxx:493
 TEveProjections.cxx:494
 TEveProjections.cxx:495
 TEveProjections.cxx:496
 TEveProjections.cxx:497
 TEveProjections.cxx:498
 TEveProjections.cxx:499
 TEveProjections.cxx:500
 TEveProjections.cxx:501
 TEveProjections.cxx:502
 TEveProjections.cxx:503
 TEveProjections.cxx:504
 TEveProjections.cxx:505
 TEveProjections.cxx:506
 TEveProjections.cxx:507
 TEveProjections.cxx:508
 TEveProjections.cxx:509
 TEveProjections.cxx:510
 TEveProjections.cxx:511
 TEveProjections.cxx:512
 TEveProjections.cxx:513
 TEveProjections.cxx:514
 TEveProjections.cxx:515
 TEveProjections.cxx:516
 TEveProjections.cxx:517
 TEveProjections.cxx:518
 TEveProjections.cxx:519
 TEveProjections.cxx:520
 TEveProjections.cxx:521
 TEveProjections.cxx:522
 TEveProjections.cxx:523
 TEveProjections.cxx:524
 TEveProjections.cxx:525
 TEveProjections.cxx:526
 TEveProjections.cxx:527
 TEveProjections.cxx:528
 TEveProjections.cxx:529
 TEveProjections.cxx:530
 TEveProjections.cxx:531
 TEveProjections.cxx:532
 TEveProjections.cxx:533
 TEveProjections.cxx:534
 TEveProjections.cxx:535
 TEveProjections.cxx:536
 TEveProjections.cxx:537
 TEveProjections.cxx:538
 TEveProjections.cxx:539
 TEveProjections.cxx:540
 TEveProjections.cxx:541
 TEveProjections.cxx:542
 TEveProjections.cxx:543
 TEveProjections.cxx:544
 TEveProjections.cxx:545
 TEveProjections.cxx:546
 TEveProjections.cxx:547
 TEveProjections.cxx:548
 TEveProjections.cxx:549
 TEveProjections.cxx:550
 TEveProjections.cxx:551
 TEveProjections.cxx:552
 TEveProjections.cxx:553
 TEveProjections.cxx:554
 TEveProjections.cxx:555
 TEveProjections.cxx:556
 TEveProjections.cxx:557
 TEveProjections.cxx:558
 TEveProjections.cxx:559
 TEveProjections.cxx:560
 TEveProjections.cxx:561
 TEveProjections.cxx:562
 TEveProjections.cxx:563
 TEveProjections.cxx:564
 TEveProjections.cxx:565
 TEveProjections.cxx:566
 TEveProjections.cxx:567
 TEveProjections.cxx:568
 TEveProjections.cxx:569
 TEveProjections.cxx:570
 TEveProjections.cxx:571
 TEveProjections.cxx:572
 TEveProjections.cxx:573
 TEveProjections.cxx:574
 TEveProjections.cxx:575
 TEveProjections.cxx:576
 TEveProjections.cxx:577
 TEveProjections.cxx:578
 TEveProjections.cxx:579
 TEveProjections.cxx:580
 TEveProjections.cxx:581
 TEveProjections.cxx:582
 TEveProjections.cxx:583
 TEveProjections.cxx:584
 TEveProjections.cxx:585
 TEveProjections.cxx:586
 TEveProjections.cxx:587
 TEveProjections.cxx:588
 TEveProjections.cxx:589
 TEveProjections.cxx:590
 TEveProjections.cxx:591
 TEveProjections.cxx:592
 TEveProjections.cxx:593
 TEveProjections.cxx:594
 TEveProjections.cxx:595
 TEveProjections.cxx:596
 TEveProjections.cxx:597
 TEveProjections.cxx:598
 TEveProjections.cxx:599
 TEveProjections.cxx:600
 TEveProjections.cxx:601
 TEveProjections.cxx:602
 TEveProjections.cxx:603
 TEveProjections.cxx:604
 TEveProjections.cxx:605
 TEveProjections.cxx:606
 TEveProjections.cxx:607
 TEveProjections.cxx:608
 TEveProjections.cxx:609
 TEveProjections.cxx:610
 TEveProjections.cxx:611
 TEveProjections.cxx:612
 TEveProjections.cxx:613
 TEveProjections.cxx:614
 TEveProjections.cxx:615
 TEveProjections.cxx:616
 TEveProjections.cxx:617
 TEveProjections.cxx:618
 TEveProjections.cxx:619
 TEveProjections.cxx:620
 TEveProjections.cxx:621
 TEveProjections.cxx:622
 TEveProjections.cxx:623
 TEveProjections.cxx:624
 TEveProjections.cxx:625
 TEveProjections.cxx:626
 TEveProjections.cxx:627
 TEveProjections.cxx:628
 TEveProjections.cxx:629
 TEveProjections.cxx:630
 TEveProjections.cxx:631
 TEveProjections.cxx:632
 TEveProjections.cxx:633
 TEveProjections.cxx:634
 TEveProjections.cxx:635
 TEveProjections.cxx:636
 TEveProjections.cxx:637
 TEveProjections.cxx:638
 TEveProjections.cxx:639
 TEveProjections.cxx:640
 TEveProjections.cxx:641
 TEveProjections.cxx:642
 TEveProjections.cxx:643
 TEveProjections.cxx:644
 TEveProjections.cxx:645
 TEveProjections.cxx:646
 TEveProjections.cxx:647
 TEveProjections.cxx:648
 TEveProjections.cxx:649
 TEveProjections.cxx:650
 TEveProjections.cxx:651
 TEveProjections.cxx:652
 TEveProjections.cxx:653
 TEveProjections.cxx:654
 TEveProjections.cxx:655
 TEveProjections.cxx:656
 TEveProjections.cxx:657
 TEveProjections.cxx:658
 TEveProjections.cxx:659
 TEveProjections.cxx:660
 TEveProjections.cxx:661
 TEveProjections.cxx:662
 TEveProjections.cxx:663
 TEveProjections.cxx:664
 TEveProjections.cxx:665
 TEveProjections.cxx:666
 TEveProjections.cxx:667
 TEveProjections.cxx:668
 TEveProjections.cxx:669
 TEveProjections.cxx:670
 TEveProjections.cxx:671
 TEveProjections.cxx:672
 TEveProjections.cxx:673
 TEveProjections.cxx:674
 TEveProjections.cxx:675
 TEveProjections.cxx:676
 TEveProjections.cxx:677
 TEveProjections.cxx:678
 TEveProjections.cxx:679
 TEveProjections.cxx:680
 TEveProjections.cxx:681
 TEveProjections.cxx:682
 TEveProjections.cxx:683
 TEveProjections.cxx:684
 TEveProjections.cxx:685
 TEveProjections.cxx:686
 TEveProjections.cxx:687
 TEveProjections.cxx:688
 TEveProjections.cxx:689
 TEveProjections.cxx:690
 TEveProjections.cxx:691
 TEveProjections.cxx:692
 TEveProjections.cxx:693
 TEveProjections.cxx:694
 TEveProjections.cxx:695
 TEveProjections.cxx:696
 TEveProjections.cxx:697
 TEveProjections.cxx:698
 TEveProjections.cxx:699
 TEveProjections.cxx:700
 TEveProjections.cxx:701
 TEveProjections.cxx:702
 TEveProjections.cxx:703
 TEveProjections.cxx:704
 TEveProjections.cxx:705
 TEveProjections.cxx:706
 TEveProjections.cxx:707
 TEveProjections.cxx:708
 TEveProjections.cxx:709
 TEveProjections.cxx:710
 TEveProjections.cxx:711
 TEveProjections.cxx:712
 TEveProjections.cxx:713
 TEveProjections.cxx:714
 TEveProjections.cxx:715
 TEveProjections.cxx:716
 TEveProjections.cxx:717
 TEveProjections.cxx:718
 TEveProjections.cxx:719
 TEveProjections.cxx:720
 TEveProjections.cxx:721
 TEveProjections.cxx:722
 TEveProjections.cxx:723
 TEveProjections.cxx:724
 TEveProjections.cxx:725
 TEveProjections.cxx:726
 TEveProjections.cxx:727
 TEveProjections.cxx:728
 TEveProjections.cxx:729
 TEveProjections.cxx:730
 TEveProjections.cxx:731
 TEveProjections.cxx:732
 TEveProjections.cxx:733
 TEveProjections.cxx:734
 TEveProjections.cxx:735
 TEveProjections.cxx:736
 TEveProjections.cxx:737
 TEveProjections.cxx:738
 TEveProjections.cxx:739
 TEveProjections.cxx:740
 TEveProjections.cxx:741
 TEveProjections.cxx:742
 TEveProjections.cxx:743
 TEveProjections.cxx:744
 TEveProjections.cxx:745
 TEveProjections.cxx:746
 TEveProjections.cxx:747
 TEveProjections.cxx:748
 TEveProjections.cxx:749
 TEveProjections.cxx:750
 TEveProjections.cxx:751
 TEveProjections.cxx:752
 TEveProjections.cxx:753
 TEveProjections.cxx:754
 TEveProjections.cxx:755
 TEveProjections.cxx:756
 TEveProjections.cxx:757
 TEveProjections.cxx:758
 TEveProjections.cxx:759
 TEveProjections.cxx:760
 TEveProjections.cxx:761
 TEveProjections.cxx:762
 TEveProjections.cxx:763
 TEveProjections.cxx:764
 TEveProjections.cxx:765
 TEveProjections.cxx:766
 TEveProjections.cxx:767
 TEveProjections.cxx:768
 TEveProjections.cxx:769
 TEveProjections.cxx:770
 TEveProjections.cxx:771
 TEveProjections.cxx:772
 TEveProjections.cxx:773
 TEveProjections.cxx:774
 TEveProjections.cxx:775
 TEveProjections.cxx:776
 TEveProjections.cxx:777
 TEveProjections.cxx:778
 TEveProjections.cxx:779
 TEveProjections.cxx:780
 TEveProjections.cxx:781
 TEveProjections.cxx:782
 TEveProjections.cxx:783
 TEveProjections.cxx:784
 TEveProjections.cxx:785
 TEveProjections.cxx:786
 TEveProjections.cxx:787
 TEveProjections.cxx:788
 TEveProjections.cxx:789
 TEveProjections.cxx:790
 TEveProjections.cxx:791
 TEveProjections.cxx:792
 TEveProjections.cxx:793
 TEveProjections.cxx:794
 TEveProjections.cxx:795
 TEveProjections.cxx:796
 TEveProjections.cxx:797
 TEveProjections.cxx:798
 TEveProjections.cxx:799
 TEveProjections.cxx:800
 TEveProjections.cxx:801
 TEveProjections.cxx:802
 TEveProjections.cxx:803
 TEveProjections.cxx:804
 TEveProjections.cxx:805
 TEveProjections.cxx:806
 TEveProjections.cxx:807
 TEveProjections.cxx:808
 TEveProjections.cxx:809
 TEveProjections.cxx:810
 TEveProjections.cxx:811
 TEveProjections.cxx:812
 TEveProjections.cxx:813
 TEveProjections.cxx:814
 TEveProjections.cxx:815
 TEveProjections.cxx:816
 TEveProjections.cxx:817
 TEveProjections.cxx:818
 TEveProjections.cxx:819
 TEveProjections.cxx:820
 TEveProjections.cxx:821
 TEveProjections.cxx:822