Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-18 10:10:39

0001 // @(#)root/eve7:$Id$
0002 // Author: Matevz Tadel 2010
0003 
0004 /*************************************************************************
0005  * Copyright (C) 1995-2019, Rene Brun and Fons Rademakers.               *
0006  * All rights reserved.                                                  *
0007  *                                                                       *
0008  * For the licensing terms see $ROOTSYS/LICENSE.                         *
0009  * For the list of contributors see $ROOTSYS/README/CREDITS.             *
0010  *************************************************************************/
0011 
0012 #ifndef ROOT7_REvePathMark
0013 #define ROOT7_REvePathMark
0014 
0015 #include <ROOT/REveVector.hxx>
0016 
0017 namespace ROOT {
0018 namespace Experimental {
0019 
0020 //==============================================================================
0021 // REvePathMark
0022 //==============================================================================
0023 
0024 template <typename TT>
0025 class REvePathMarkT {
0026 public:
0027    enum EType_e { kReference, kDaughter, kDecay, kCluster2D, kLineSegment };
0028 
0029    EType_e fType;      // Mark-type.
0030    REveVectorT<TT> fV; // Vertex.
0031    REveVectorT<TT> fP; // Momentum.
0032    REveVectorT<TT> fE; // Extra, meaning depends on fType.
0033    TT fTime;           // Time.
0034 
0035    REvePathMarkT(EType_e type = kReference) : fType(type), fV(), fP(), fE(), fTime(0) {}
0036 
0037    REvePathMarkT(EType_e type, const REveVectorT<TT> &v, TT time = 0) : fType(type), fV(v), fP(), fE(), fTime(time) {}
0038 
0039    REvePathMarkT(EType_e type, const REveVectorT<TT> &v, const REveVectorT<TT> &p, TT time = 0)
0040       : fType(type), fV(v), fP(p), fE(), fTime(time)
0041    {
0042    }
0043 
0044    REvePathMarkT(EType_e type, const REveVectorT<TT> &v, const REveVectorT<TT> &p, const REveVectorT<TT> &e,
0045                  TT time = 0)
0046       : fType(type), fV(v), fP(p), fE(e), fTime(time)
0047    {
0048    }
0049 
0050    template <typename OO>
0051    REvePathMarkT(const REvePathMarkT<OO> &pm)
0052       : fType((EType_e)pm.fType), fV(pm.fV), fP(pm.fP), fE(pm.fE), fTime(pm.fTime)
0053    {
0054    }
0055 
0056    const char *TypeName();
0057 };
0058 
0059 typedef REvePathMarkT<Float_t> REvePathMark;
0060 typedef REvePathMarkT<Float_t> REvePathMarkF;
0061 typedef REvePathMarkT<Double_t> REvePathMarkD;
0062 
0063 } // namespace Experimental
0064 } // namespace ROOT
0065 
0066 #endif