Logo ROOT   6.30.04
Reference Guide
 All Namespaces Files Pages
REvePathMark.hxx
Go to the documentation of this file.
1 // @(#)root/eve7:$Id$
2 // Author: Matevz Tadel 2010
3 
4 /*************************************************************************
5  * Copyright (C) 1995-2019, Rene Brun and Fons Rademakers. *
6  * All rights reserved. *
7  * *
8  * For the licensing terms see $ROOTSYS/LICENSE. *
9  * For the list of contributors see $ROOTSYS/README/CREDITS. *
10  *************************************************************************/
11 
12 #ifndef ROOT7_REvePathMark
13 #define ROOT7_REvePathMark
14 
15 #include <ROOT/REveVector.hxx>
16 
17 namespace ROOT {
18 namespace Experimental {
19 
20 //==============================================================================
21 // REvePathMark
22 //==============================================================================
23 
24 template <typename TT>
25 class REvePathMarkT {
26 public:
27  enum EType_e { kReference, kDaughter, kDecay, kCluster2D, kLineSegment };
28 
29  EType_e fType; // Mark-type.
30  REveVectorT<TT> fV; // Vertex.
31  REveVectorT<TT> fP; // Momentum.
32  REveVectorT<TT> fE; // Extra, meaning depends on fType.
33  TT fTime; // Time.
34 
35  REvePathMarkT(EType_e type = kReference) : fType(type), fV(), fP(), fE(), fTime(0) {}
36 
37  REvePathMarkT(EType_e type, const REveVectorT<TT> &v, TT time = 0) : fType(type), fV(v), fP(), fE(), fTime(time) {}
38 
39  REvePathMarkT(EType_e type, const REveVectorT<TT> &v, const REveVectorT<TT> &p, TT time = 0)
40  : fType(type), fV(v), fP(p), fE(), fTime(time)
41  {
42  }
43 
44  REvePathMarkT(EType_e type, const REveVectorT<TT> &v, const REveVectorT<TT> &p, const REveVectorT<TT> &e,
45  TT time = 0)
46  : fType(type), fV(v), fP(p), fE(e), fTime(time)
47  {
48  }
49 
50  template <typename OO>
51  REvePathMarkT(const REvePathMarkT<OO> &pm)
52  : fType((EType_e)pm.fType), fV(pm.fV), fP(pm.fP), fE(pm.fE), fTime(pm.fTime)
53  {
54  }
55 
56  const char *TypeName();
57 };
58 
59 typedef REvePathMarkT<Float_t> REvePathMark;
60 typedef REvePathMarkT<Float_t> REvePathMarkF;
61 typedef REvePathMarkT<Double_t> REvePathMarkD;
62 
63 } // namespace Experimental
64 } // namespace ROOT
65 
66 #endif