#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