#ifndef ROOT_TEvePathMark
#define ROOT_TEvePathMark
#include <TEveVector.h>
template <typename TT>
class TEvePathMarkT
{
public:
   enum EType_e { kReference, kDaughter, kDecay, kCluster2D, kLineSegment };
   EType_e         fType; 
   TEveVectorT<TT> fV;    
   TEveVectorT<TT> fP;    
   TEveVectorT<TT> fE;    
   TT              fTime; 
   TEvePathMarkT(EType_e type=kReference) :
      fType(type), fV(), fP(), fE(), fTime(0) {}
   TEvePathMarkT(EType_e type, const TEveVectorT<TT>& v, TT time=0) :
      fType(type), fV(v), fP(), fE(), fTime(time) {}
   TEvePathMarkT(EType_e type, const TEveVectorT<TT>& v, const TEveVectorT<TT>& p, TT time=0) :
      fType(type), fV(v), fP(p), fE(), fTime(time) {}
   TEvePathMarkT(EType_e type, const TEveVectorT<TT>& v, const TEveVectorT<TT>& p, const TEveVectorT<TT>& e, TT time=0) :
      fType(type), fV(v), fP(p), fE(e), fTime(time) {}
   template <typename OO>
   TEvePathMarkT(const TEvePathMarkT<OO>& pm) :
      fType((EType_e)pm.fType), fV(pm.fV), fP(pm.fP), fE(pm.fE), fTime(pm.fTime) {}
   const char* TypeName();
   ClassDefNV(TEvePathMarkT, 1); 
};
typedef TEvePathMarkT<Float_t>  TEvePathMark;
typedef TEvePathMarkT<Float_t>  TEvePathMarkF;
typedef TEvePathMarkT<Double_t> TEvePathMarkD;
#endif