// @(#)root/eve:$Id$
// Author: Matevz Tadel 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.             *
 *************************************************************************/

#ifndef ROOT_TEveVector
#define ROOT_TEveVector

#include "TMath.h"

class TVector3;


//==============================================================================
// TEveVectorT
//==============================================================================

template <typename TT>
class TEveVectorT
{
public:
   TT fX, fY, fZ; // Components of the vector.

   TEveVectorT() : fX(0), fY(0), fZ(0) {}
   template <typename OO>
   TEveVectorT(const TEveVectorT<OO>& v) : fX(v.fX), fY(v.fY), fZ(v.fZ) {}
   TEveVectorT(const Float_t*  v) : fX(v[0]), fY(v[1]), fZ(v[2]) {}
   TEveVectorT(const Double_t* v) : fX(v[0]), fY(v[1]), fZ(v[2]) {}
   TEveVectorT(TT x, TT y, TT  z) : fX(x), fY(y), fZ(z) {}

   void Dump() const;

   operator const TT*() const { return &fX; }
   operator       TT*()       { return &fX; }

   TT  operator [] (Int_t idx) const { return (&fX)[idx]; }
   TT& operator [] (Int_t idx)       { return (&fX)[idx]; }

   const TT* Arr() const { return &fX; }
   TT* Arr()             { return &fX; }

   TEveVectorT& operator*=(TT s)                 { fX *= s;    fY *= s;    fZ *= s;    return *this; }
   TEveVectorT& operator+=(const TEveVectorT& v) { fX += v.fX; fY += v.fY; fZ += v.fZ; return *this; }
   TEveVectorT& operator-=(const TEveVectorT& v) { fX -= v.fX; fY -= v.fY; fZ -= v.fZ; return *this; }

   void Set(const Float_t*  v) { fX = v[0]; fY = v[1]; fZ = v[2]; }
   void Set(const Double_t* v) { fX = v[0]; fY = v[1]; fZ = v[2]; }
   void Set(TT x, TT  y, TT z) { fX = x; fY = y; fZ = z; }
   void Set(const TVector3& v);

   template <typename OO>
   void Set(const TEveVectorT<OO>& v) { fX = v.fX;  fY = v.fY;  fZ = v.fZ; }

   void NegateXYZ() { fX = - fX; fY = -fY; fZ = -fZ; }
   TT   Normalize(TT length=1);

   TT   Phi()      const;
   TT   Theta()    const;
   TT   CosTheta() const;
   TT   Eta()      const;

   TT   Mag2()  const { return fX*fX + fY*fY + fZ*fZ; }
   TT   Mag()   const { return TMath::Sqrt(Mag2());   }

   TT   Perp2() const { return fX*fX + fY*fY;        }
   TT   Perp()  const { return TMath::Sqrt(Perp2()); }
   TT   R()     const { return Perp();               }

   TT   Distance(const TEveVectorT& v) const;
   TT   SquareDistance(const TEveVectorT& v) const;

   TT   Dot(const TEveVectorT& a) const;

   TEveVectorT  Cross(const TEveVectorT& a) const;

   TEveVectorT& Sub(const TEveVectorT& a, const TEveVectorT& b);
   TEveVectorT& Mult(const TEveVectorT& a, TT af);

   TEveVectorT  Orthogonal() const;
   void         OrthoNormBase(TEveVectorT& a, TEveVectorT& b) const;

   Bool_t       IsZero() const { return fX == 0 && fY == 0 && fZ == 0; }

   ClassDefNV(TEveVectorT, 2); // A three-vector template without TObject inheritance and virtual functions.
};

typedef TEveVectorT<Float_t>  TEveVector;
typedef TEveVectorT<Float_t>  TEveVectorF;
typedef TEveVectorT<Double_t> TEveVectorD;

//______________________________________________________________________________
template<typename TT>
inline TT TEveVectorT<TT>::Phi() const
{
   return fX == 0 && fY == 0 ? 0 : TMath::ATan2(fY, fX);
}

//______________________________________________________________________________
template<typename TT>
inline TT TEveVectorT<TT>::Theta() const
{
   return fX == 0 && fY == 0 && fZ == 0 ? 0 : TMath::ATan2(Perp(), fZ);
}

//______________________________________________________________________________
template<typename TT>
inline TT TEveVectorT<TT>::CosTheta() const
{
   Float_t ptot = Mag(); return ptot == 0 ? 1 : fZ/ptot;
}

//______________________________________________________________________________
template<typename TT>
inline TT TEveVectorT<TT>::Distance(const TEveVectorT& b) const
{
   return TMath::Sqrt((fX - b.fX)*(fX - b.fX) +
                      (fY - b.fY)*(fY - b.fY) +
                      (fZ - b.fZ)*(fZ - b.fZ));
}

//______________________________________________________________________________
template<typename TT>
inline TT TEveVectorT<TT>::SquareDistance(const TEveVectorT& b) const
{
   return ((fX - b.fX) * (fX - b.fX) +
           (fY - b.fY) * (fY - b.fY) +
           (fZ - b.fZ) * (fZ - b.fZ));
}

//______________________________________________________________________________
template<typename TT>
inline TT TEveVectorT<TT>::Dot(const TEveVectorT& a) const
{
   return a.fX*fX + a.fY*fY + a.fZ*fZ;
}

//______________________________________________________________________________
template<typename TT>
inline TEveVectorT<TT> TEveVectorT<TT>::Cross(const TEveVectorT<TT>& a) const
{
   TEveVectorT<TT> r;
   r.fX = fY * a.fZ - fZ * a.fY;
   r.fY = fZ * a.fX - fX * a.fZ;
   r.fZ = fX * a.fY - fY * a.fX;
   return r;
}

//______________________________________________________________________________
template<typename TT>
inline TEveVectorT<TT>& TEveVectorT<TT>::Sub(const TEveVectorT<TT>& a, const TEveVectorT<TT>& b)
{
   fX = a.fX - b.fX;
   fY = a.fY - b.fY;
   fZ = a.fZ - b.fZ;
   return *this;
}

//______________________________________________________________________________
template<typename TT>
inline TEveVectorT<TT>& TEveVectorT<TT>::Mult(const TEveVectorT<TT>& a, TT af)
{
   fX = a.fX * af;
   fY = a.fY * af;
   fZ = a.fZ * af;
   return *this;
}

//______________________________________________________________________________
template<typename TT>
inline TEveVectorT<TT> operator+(const TEveVectorT<TT>& a, const TEveVectorT<TT>& b)
{
   TEveVectorT<TT> r(a);
   return r += b;
}

//______________________________________________________________________________
template<typename TT>
inline TEveVectorT<TT> operator-(const TEveVectorT<TT>& a, const TEveVectorT<TT>& b)
{
   TEveVectorT<TT> r(a);
   return r -= b;
}

//______________________________________________________________________________
template<typename TT>
inline TEveVectorT<TT> operator*(const TEveVectorT<TT>& a, TT b)
{
   TEveVectorT<TT> r(a);
   return r *= b;
}

//______________________________________________________________________________
template<typename TT>
inline TEveVectorT<TT> operator*(TT b, const TEveVectorT<TT>& a)
{
   TEveVectorT<TT> r(a);
   return r *= b;
}


//==============================================================================
// TEveVector4T
//==============================================================================

template <typename TT>
class TEveVector4T : public TEveVectorT<TT>
{
   typedef TEveVectorT<TT> TP;

public:
   TT fT;

   TEveVector4T() : TP(),  fT(0) {}
   template <typename OO>
   TEveVector4T(const TEveVectorT<OO>& v) : TP(v.fX, v.fY, v.fZ), fT(0) {}
   template <typename OO>
   TEveVector4T(const TEveVectorT<OO>& v, Float_t t) : TP(v.fX, v.fY, v.fZ), fT(t) {}
   template <typename OO>
   TEveVector4T(const TEveVector4T<OO>& v) : TP(v.fX, v.fY, v.fZ), fT(v.fT) {}
   TEveVector4T(const Float_t*  v) : TP(v), fT(v[3]) {}
   TEveVector4T(const Double_t* v) : TP(v), fT(v[3]) {}
   TEveVector4T(TT x, TT y, TT z, TT t=0) : TP(x, y, z), fT(t) {}

   void Dump() const;

   TEveVector4T& operator*=(TT s)                  { TP::operator*=(s); fT *= s;    return *this; }
   TEveVector4T& operator+=(const TEveVector4T& v) { TP::operator+=(v); fT += v.fT; return *this; }
   TEveVector4T& operator-=(const TEveVector4T& v) { TP::operator-=(v); fT -= v.fT; return *this; }

   using TP::operator+=;
   using TP::operator-=;

   ClassDefNV(TEveVector4T, 1); // A four-vector template without TObject inheritance and virtual functions.
};

typedef TEveVector4T<Float_t>  TEveVector4;
typedef TEveVector4T<Float_t>  TEveVector4F;
typedef TEveVector4T<Double_t> TEveVector4D;

//______________________________________________________________________________
template<typename TT>
inline TEveVector4T<TT> operator+(const TEveVector4T<TT>& a, const TEveVector4T<TT>& b)
{
   return TEveVector4T<TT>(a.fX + b.fX, a.fY + b.fY, a.fZ + b.fZ, a.fT + b.fT);
}

//______________________________________________________________________________
template<typename TT>
inline TEveVector4T<TT> operator-(const TEveVector4T<TT>& a, const TEveVector4T<TT>& b)
{
   return TEveVector4T<TT>(a.fX - b.fX, a.fY - b.fY, a.fZ - b.fZ, a.fT - b.fT);
}

//______________________________________________________________________________
template<typename TT>
inline TEveVector4T<TT> operator*(const TEveVector4T<TT>& a, TT b)
{
   return TEveVector4T<TT>(a.fX*b, a.fY*b, a.fZ*b, a.fT*b);
}

//______________________________________________________________________________
template<typename TT>
inline TEveVector4T<TT> operator*(TT b, const TEveVector4T<TT>& a)
{
   return TEveVector4T<TT>(a.fX*b, a.fY*b, a.fZ*b, a.fT*b);
}


//==============================================================================
// TEveVector2T
//==============================================================================

template <typename TT>
class TEveVector2T
{
public:
   TT fX, fY; // Components of the point.

   TEveVector2T() : fX(0), fY(0) {}
   template <typename OO>
   TEveVector2T(const TEveVector2T<OO>& v) : fX(v.fX), fY(v.fY) {}
   TEveVector2T(const Float_t* v)  : fX(v[0]), fY(v[1]) {}
   TEveVector2T(const Double_t* v) : fX(v[0]), fY(v[1]) {}
   TEveVector2T(TT x, TT y) : fX(x), fY(y)    {}

   void Dump() const;

   operator const TT*() const { return &fX; }
   operator       TT*()       { return &fX; }

   TEveVector2T& operator*=(TT s)                  { fX *= s;    fY *= s;    return *this; }
   TEveVector2T& operator+=(const TEveVector2T& v) { fX += v.fX; fY += v.fY; return *this; }
   TEveVector2T& operator-=(const TEveVector2T& v) { fX -= v.fX; fY -= v.fY; return *this; }

   TT& operator[](Int_t idx)       { return (&fX)[idx]; }
   TT  operator[](Int_t idx) const { return (&fX)[idx]; }

   const TT* Arr() const { return &fX; }
   TT* Arr()             { return &fX; }

   void Set(const Float_t*  v) { fX = v[0]; fY = v[1]; }
   void Set(const Double_t* v) { fX = v[0]; fY = v[1]; }
   void Set(TT x, TT y) { fX = x; fY = y; }

   template <typename OO>
   void Set(const TEveVector2T<OO>& v) { fX = v.fX; fY = v.fY; }

   void NegateXY() { fX = - fX; fY = -fY; }
   void Normalize(TT length=1);

   TT Phi()  const;

   TT Mag2() const { return fX*fX + fY*fY;}
   TT Mag()  const { return TMath::Sqrt(Mag2());}

   TT Distance(const TEveVector2T& v) const;
   TT SquareDistance(const TEveVector2T& v) const;

   TT Dot(const TEveVector2T& a) const;
   TT Cross(const TEveVector2T& a) const;

   TEveVector2T& Sub(const TEveVector2T& p, const TEveVector2T& q);

   TEveVector2T& Mult(const TEveVector2T& a, TT af);

   ClassDefNV(TEveVector2T, 1); // // A two-vector template without TObject inheritance and virtual functions.
};

typedef TEveVector2T<Float_t>  TEveVector2;
typedef TEveVector2T<Float_t>  TEveVector2F;
typedef TEveVector2T<Double_t> TEveVector2D;

//______________________________________________________________________________
template<typename TT>
inline TT TEveVector2T<TT>::Phi() const
{
   return fX == 0.0 && fY == 0.0 ? 0.0 : TMath::ATan2(fY, fX);
}

//______________________________________________________________________________
template<typename TT>
inline TT TEveVector2T<TT>::Distance( const TEveVector2T<TT>& b) const
{
   return TMath::Sqrt((fX - b.fX)*(fX - b.fX) +
                      (fY - b.fY)*(fY - b.fY));
}

//______________________________________________________________________________
template<typename TT>
inline TT TEveVector2T<TT>::SquareDistance(const TEveVector2T<TT>& b) const
{
   return ((fX - b.fX) * (fX - b.fX) +
           (fY - b.fY) * (fY - b.fY));
}

//______________________________________________________________________________
template<typename TT>
inline TT TEveVector2T<TT>::Dot(const TEveVector2T<TT>& a) const
{
   return a.fX*fX + a.fY*fY;
}

//______________________________________________________________________________
template<typename TT>
inline TT TEveVector2T<TT>::Cross(const TEveVector2T<TT>& a) const
{
   return fX * a.fY - fY * a.fX;
}

//______________________________________________________________________________
template<typename TT>
inline TEveVector2T<TT>& TEveVector2T<TT>::Sub(const TEveVector2T<TT>& p, const TEveVector2T<TT>& q)
{
   fX = p.fX - q.fX;
   fY = p.fY - q.fY;
   return *this;
}

//______________________________________________________________________________
template<typename TT>
inline TEveVector2T<TT>& TEveVector2T<TT>::Mult(const TEveVector2T<TT>& a, TT af)
{
   fX = a.fX * af;
   fY = a.fY * af;
   return *this;
}

//______________________________________________________________________________
template<typename TT>
inline TEveVector2T<TT> operator+(const TEveVector2T<TT>& a, const TEveVector2T<TT>& b)
{
   TEveVector2T<TT> r(a);
   return r += b;
}

//______________________________________________________________________________
template<typename TT>
inline TEveVector2T<TT> operator-(const TEveVector2T<TT>& a, const TEveVector2T<TT>& b)
{
   TEveVector2T<TT> r(a);
   return r -= b;
}

//______________________________________________________________________________
template<typename TT>
inline TEveVector2T<TT> operator*(const TEveVector2T<TT>& a, TT b)
{
   TEveVector2T<TT> r(a);
   return r *= b;
}

//______________________________________________________________________________
template<typename TT>
inline TEveVector2T<TT> operator*(TT b, const TEveVector2T<TT>& a)
{
   TEveVector2T<TT> r(a);
   return r *= b;
}

#endif
 TEveVector.h:1
 TEveVector.h:2
 TEveVector.h:3
 TEveVector.h:4
 TEveVector.h:5
 TEveVector.h:6
 TEveVector.h:7
 TEveVector.h:8
 TEveVector.h:9
 TEveVector.h:10
 TEveVector.h:11
 TEveVector.h:12
 TEveVector.h:13
 TEveVector.h:14
 TEveVector.h:15
 TEveVector.h:16
 TEveVector.h:17
 TEveVector.h:18
 TEveVector.h:19
 TEveVector.h:20
 TEveVector.h:21
 TEveVector.h:22
 TEveVector.h:23
 TEveVector.h:24
 TEveVector.h:25
 TEveVector.h:26
 TEveVector.h:27
 TEveVector.h:28
 TEveVector.h:29
 TEveVector.h:30
 TEveVector.h:31
 TEveVector.h:32
 TEveVector.h:33
 TEveVector.h:34
 TEveVector.h:35
 TEveVector.h:36
 TEveVector.h:37
 TEveVector.h:38
 TEveVector.h:39
 TEveVector.h:40
 TEveVector.h:41
 TEveVector.h:42
 TEveVector.h:43
 TEveVector.h:44
 TEveVector.h:45
 TEveVector.h:46
 TEveVector.h:47
 TEveVector.h:48
 TEveVector.h:49
 TEveVector.h:50
 TEveVector.h:51
 TEveVector.h:52
 TEveVector.h:53
 TEveVector.h:54
 TEveVector.h:55
 TEveVector.h:56
 TEveVector.h:57
 TEveVector.h:58
 TEveVector.h:59
 TEveVector.h:60
 TEveVector.h:61
 TEveVector.h:62
 TEveVector.h:63
 TEveVector.h:64
 TEveVector.h:65
 TEveVector.h:66
 TEveVector.h:67
 TEveVector.h:68
 TEveVector.h:69
 TEveVector.h:70
 TEveVector.h:71
 TEveVector.h:72
 TEveVector.h:73
 TEveVector.h:74
 TEveVector.h:75
 TEveVector.h:76
 TEveVector.h:77
 TEveVector.h:78
 TEveVector.h:79
 TEveVector.h:80
 TEveVector.h:81
 TEveVector.h:82
 TEveVector.h:83
 TEveVector.h:84
 TEveVector.h:85
 TEveVector.h:86
 TEveVector.h:87
 TEveVector.h:88
 TEveVector.h:89
 TEveVector.h:90
 TEveVector.h:91
 TEveVector.h:92
 TEveVector.h:93
 TEveVector.h:94
 TEveVector.h:95
 TEveVector.h:96
 TEveVector.h:97
 TEveVector.h:98
 TEveVector.h:99
 TEveVector.h:100
 TEveVector.h:101
 TEveVector.h:102
 TEveVector.h:103
 TEveVector.h:104
 TEveVector.h:105
 TEveVector.h:106
 TEveVector.h:107
 TEveVector.h:108
 TEveVector.h:109
 TEveVector.h:110
 TEveVector.h:111
 TEveVector.h:112
 TEveVector.h:113
 TEveVector.h:114
 TEveVector.h:115
 TEveVector.h:116
 TEveVector.h:117
 TEveVector.h:118
 TEveVector.h:119
 TEveVector.h:120
 TEveVector.h:121
 TEveVector.h:122
 TEveVector.h:123
 TEveVector.h:124
 TEveVector.h:125
 TEveVector.h:126
 TEveVector.h:127
 TEveVector.h:128
 TEveVector.h:129
 TEveVector.h:130
 TEveVector.h:131
 TEveVector.h:132
 TEveVector.h:133
 TEveVector.h:134
 TEveVector.h:135
 TEveVector.h:136
 TEveVector.h:137
 TEveVector.h:138
 TEveVector.h:139
 TEveVector.h:140
 TEveVector.h:141
 TEveVector.h:142
 TEveVector.h:143
 TEveVector.h:144
 TEveVector.h:145
 TEveVector.h:146
 TEveVector.h:147
 TEveVector.h:148
 TEveVector.h:149
 TEveVector.h:150
 TEveVector.h:151
 TEveVector.h:152
 TEveVector.h:153
 TEveVector.h:154
 TEveVector.h:155
 TEveVector.h:156
 TEveVector.h:157
 TEveVector.h:158
 TEveVector.h:159
 TEveVector.h:160
 TEveVector.h:161
 TEveVector.h:162
 TEveVector.h:163
 TEveVector.h:164
 TEveVector.h:165
 TEveVector.h:166
 TEveVector.h:167
 TEveVector.h:168
 TEveVector.h:169
 TEveVector.h:170
 TEveVector.h:171
 TEveVector.h:172
 TEveVector.h:173
 TEveVector.h:174
 TEveVector.h:175
 TEveVector.h:176
 TEveVector.h:177
 TEveVector.h:178
 TEveVector.h:179
 TEveVector.h:180
 TEveVector.h:181
 TEveVector.h:182
 TEveVector.h:183
 TEveVector.h:184
 TEveVector.h:185
 TEveVector.h:186
 TEveVector.h:187
 TEveVector.h:188
 TEveVector.h:189
 TEveVector.h:190
 TEveVector.h:191
 TEveVector.h:192
 TEveVector.h:193
 TEveVector.h:194
 TEveVector.h:195
 TEveVector.h:196
 TEveVector.h:197
 TEveVector.h:198
 TEveVector.h:199
 TEveVector.h:200
 TEveVector.h:201
 TEveVector.h:202
 TEveVector.h:203
 TEveVector.h:204
 TEveVector.h:205
 TEveVector.h:206
 TEveVector.h:207
 TEveVector.h:208
 TEveVector.h:209
 TEveVector.h:210
 TEveVector.h:211
 TEveVector.h:212
 TEveVector.h:213
 TEveVector.h:214
 TEveVector.h:215
 TEveVector.h:216
 TEveVector.h:217
 TEveVector.h:218
 TEveVector.h:219
 TEveVector.h:220
 TEveVector.h:221
 TEveVector.h:222
 TEveVector.h:223
 TEveVector.h:224
 TEveVector.h:225
 TEveVector.h:226
 TEveVector.h:227
 TEveVector.h:228
 TEveVector.h:229
 TEveVector.h:230
 TEveVector.h:231
 TEveVector.h:232
 TEveVector.h:233
 TEveVector.h:234
 TEveVector.h:235
 TEveVector.h:236
 TEveVector.h:237
 TEveVector.h:238
 TEveVector.h:239
 TEveVector.h:240
 TEveVector.h:241
 TEveVector.h:242
 TEveVector.h:243
 TEveVector.h:244
 TEveVector.h:245
 TEveVector.h:246
 TEveVector.h:247
 TEveVector.h:248
 TEveVector.h:249
 TEveVector.h:250
 TEveVector.h:251
 TEveVector.h:252
 TEveVector.h:253
 TEveVector.h:254
 TEveVector.h:255
 TEveVector.h:256
 TEveVector.h:257
 TEveVector.h:258
 TEveVector.h:259
 TEveVector.h:260
 TEveVector.h:261
 TEveVector.h:262
 TEveVector.h:263
 TEveVector.h:264
 TEveVector.h:265
 TEveVector.h:266
 TEveVector.h:267
 TEveVector.h:268
 TEveVector.h:269
 TEveVector.h:270
 TEveVector.h:271
 TEveVector.h:272
 TEveVector.h:273
 TEveVector.h:274
 TEveVector.h:275
 TEveVector.h:276
 TEveVector.h:277
 TEveVector.h:278
 TEveVector.h:279
 TEveVector.h:280
 TEveVector.h:281
 TEveVector.h:282
 TEveVector.h:283
 TEveVector.h:284
 TEveVector.h:285
 TEveVector.h:286
 TEveVector.h:287
 TEveVector.h:288
 TEveVector.h:289
 TEveVector.h:290
 TEveVector.h:291
 TEveVector.h:292
 TEveVector.h:293
 TEveVector.h:294
 TEveVector.h:295
 TEveVector.h:296
 TEveVector.h:297
 TEveVector.h:298
 TEveVector.h:299
 TEveVector.h:300
 TEveVector.h:301
 TEveVector.h:302
 TEveVector.h:303
 TEveVector.h:304
 TEveVector.h:305
 TEveVector.h:306
 TEveVector.h:307
 TEveVector.h:308
 TEveVector.h:309
 TEveVector.h:310
 TEveVector.h:311
 TEveVector.h:312
 TEveVector.h:313
 TEveVector.h:314
 TEveVector.h:315
 TEveVector.h:316
 TEveVector.h:317
 TEveVector.h:318
 TEveVector.h:319
 TEveVector.h:320
 TEveVector.h:321
 TEveVector.h:322
 TEveVector.h:323
 TEveVector.h:324
 TEveVector.h:325
 TEveVector.h:326
 TEveVector.h:327
 TEveVector.h:328
 TEveVector.h:329
 TEveVector.h:330
 TEveVector.h:331
 TEveVector.h:332
 TEveVector.h:333
 TEveVector.h:334
 TEveVector.h:335
 TEveVector.h:336
 TEveVector.h:337
 TEveVector.h:338
 TEveVector.h:339
 TEveVector.h:340
 TEveVector.h:341
 TEveVector.h:342
 TEveVector.h:343
 TEveVector.h:344
 TEveVector.h:345
 TEveVector.h:346
 TEveVector.h:347
 TEveVector.h:348
 TEveVector.h:349
 TEveVector.h:350
 TEveVector.h:351
 TEveVector.h:352
 TEveVector.h:353
 TEveVector.h:354
 TEveVector.h:355
 TEveVector.h:356
 TEveVector.h:357
 TEveVector.h:358
 TEveVector.h:359
 TEveVector.h:360
 TEveVector.h:361
 TEveVector.h:362
 TEveVector.h:363
 TEveVector.h:364
 TEveVector.h:365
 TEveVector.h:366
 TEveVector.h:367
 TEveVector.h:368
 TEveVector.h:369
 TEveVector.h:370
 TEveVector.h:371
 TEveVector.h:372
 TEveVector.h:373
 TEveVector.h:374
 TEveVector.h:375
 TEveVector.h:376
 TEveVector.h:377
 TEveVector.h:378
 TEveVector.h:379
 TEveVector.h:380
 TEveVector.h:381
 TEveVector.h:382
 TEveVector.h:383
 TEveVector.h:384
 TEveVector.h:385
 TEveVector.h:386
 TEveVector.h:387
 TEveVector.h:388
 TEveVector.h:389
 TEveVector.h:390
 TEveVector.h:391
 TEveVector.h:392
 TEveVector.h:393
 TEveVector.h:394
 TEveVector.h:395
 TEveVector.h:396
 TEveVector.h:397
 TEveVector.h:398
 TEveVector.h:399
 TEveVector.h:400
 TEveVector.h:401
 TEveVector.h:402
 TEveVector.h:403
 TEveVector.h:404
 TEveVector.h:405
 TEveVector.h:406
 TEveVector.h:407
 TEveVector.h:408
 TEveVector.h:409
 TEveVector.h:410
 TEveVector.h:411
 TEveVector.h:412
 TEveVector.h:413
 TEveVector.h:414
 TEveVector.h:415
 TEveVector.h:416
 TEveVector.h:417
 TEveVector.h:418
 TEveVector.h:419
 TEveVector.h:420
 TEveVector.h:421
 TEveVector.h:422
 TEveVector.h:423
 TEveVector.h:424
 TEveVector.h:425
 TEveVector.h:426