ROOT logo
#ifndef HBASETRACK_H
#define HBASETRACK_H

#include "TObject.h"
#include "hsymmat.h"

class HBaseTrack:public TObject
{
  protected:
   Float_t z;            // From HMdcSeg               (in Lab.?)
   Float_t r;            // From HMdcSeg
   Float_t theta;        // From HMdcSeg
   Float_t phi;          // From HMdcSeg
   Short_t tofHitInd;    // Index of HTofHit
   Short_t tofClustInd;  // Index of HTofCluster
   Short_t showerHitInd; // Index of HShowerHit or HEmcCluster
   Short_t rpcClustInd;  // Index of HRpcCluster
   Float_t p;            // Momentum of particle
   Float_t beta;         // speed of paricle
   Float_t mass2;        // mass squared
   Float_t tof;          // time of flight
   Char_t polarity;      // polarity (+1 or -1)
   Char_t sector;        // Sector number
   HSymMat6 cov;         // covariance matrix of size 6
   Float_t metaEloss;    // corrected energy loss in TOF or TOFINO
   Float_t tarDist;
   Double_t tofdist;     // Track length from Target-to-META detector
   Float_t qIOMatch;     //Matching quality if inner and outer segments
 public:
  HBaseTrack();
  HBaseTrack(HBaseTrack &);
  virtual ~HBaseTrack(){;};
  void     setIOMatching  (Float_t _qIOMatch)           { qIOMatch = _qIOMatch;}
  void     setZ           (Float_t Z,Float_t err)       { z = Z; cov.setErr(0,err);}
  void     setR           (Float_t R,Float_t err)       { r = R; cov.setErr(1,err);}
  void     setP           (Float_t P,Float_t err)       { p = P; cov.setErr(2,err);}
  void     setTheta       (Float_t THETA, Float_t err)  { theta = THETA; cov.setErr(3,err);}
  void     setPhi         (Float_t PHI,Float_t err)     { phi   = PHI;   cov.setErr(4,err);}
  void     setTofHitInd   (Short_t tof)                 { tofHitInd    = tof;}
  void     setTofClustInd (Short_t tof)                 { tofClustInd  = tof;}
  void     setShowerHitInd(Short_t shower)              { showerHitInd = shower;}
  void     setEmcClustInd (Short_t emc)                 { showerHitInd = emc;}
  void     setRpcClustInd (Short_t rpc)                 { rpcClustInd  = rpc;}
  void     setMass2       (Float_t MASS2,Float_t err)   { mass2 = MASS2; cov.setErr(5,err);}
  void     setTof         (Float_t TOF)                 { tof = TOF;}
  void     setPolarity    (Char_t POLARYTY)             { polarity = POLARYTY;}
  void     setSector      (Char_t SECTOR)               { sector = SECTOR;}
  void     setBeta        (Float_t BETA)                { beta = BETA;}
  void     setMetaEloss   (Float_t e)                   { metaEloss = e;}
  void     setTarDist     (Float_t _tarDist)            { tarDist = _tarDist;}
  void     setTofDist     (Double_t d)                  { tofdist = d; }
  Float_t  getIOMatch     (void) const                  { return qIOMatch; }
  Float_t  getIOMatching  (void) const                  { return qIOMatch; }
  Float_t  getZ           (void) const                  { return z;}
  Float_t  getErrZ        (void)                        { return cov.getErr(0);}
  Float_t  getR           (void) const                  { return r;}
  Float_t  getErrR        (void)                        { return cov.getErr(1);}
  Float_t  getTheta       (void) const                  { return theta;}
  Float_t  getErrTheta    (void)                        { return cov.getErr(3);}
  Float_t  getPhi         (void) const                  { return phi;}
  Float_t  getErrPhi      (void)                        { return cov.getErr(4);}
  Bool_t   isOverlap      (void) const                  { return ((showerHitInd>-1 || rpcClustInd>-1) && (tofHitInd>-1 || tofClustInd>-1) ) ? kTRUE:kFALSE; }
  Int_t    getSystem      (void) const                  { return ( tofHitInd>-1 || tofClustInd>-1 ) ? 1 : ((showerHitInd>-1 || rpcClustInd>-1) ? 0:-1); } //???
  Short_t  getShowerHitInd(void) const                  { return showerHitInd;}
  Short_t  getEmcClustInd (void) const                  { return showerHitInd;}
  Short_t  getTofHitInd   (void) const                  { return tofHitInd;}
  Short_t  getTofClustInd (void) const                  { return tofClustInd;}
  Short_t  getRpcClustInd (void) const                  { return rpcClustInd;}
  Float_t  getP           (void) const                  { return p;}
  Float_t  getErrP        (void)                        { return cov.getErr(2);}
  Float_t  getMass2       (void)                        { return mass2;}
  Float_t  getErrMass2    (void)                        { return cov.getErr(5);}
  Float_t  getTof         (void) const                  { return tof;}
  Char_t   getPolarity    (void) const                  { return polarity;}
  Char_t   getSector      (void) const                  { return sector;}
  Float_t  getBeta        (void) const                  { return beta;}
  Float_t  getMetaEloss   (void) const                  { return metaEloss;}
  HSymMat &getCovariance  (void)                        { return cov; }
  Float_t  getTarDist     (void) const                  { return tarDist;}
  Double_t getTofDist     (void)                        { return tofdist; }
   
  ClassDef(HBaseTrack,2)
};
#endif
 hbasetrack.h:1
 hbasetrack.h:2
 hbasetrack.h:3
 hbasetrack.h:4
 hbasetrack.h:5
 hbasetrack.h:6
 hbasetrack.h:7
 hbasetrack.h:8
 hbasetrack.h:9
 hbasetrack.h:10
 hbasetrack.h:11
 hbasetrack.h:12
 hbasetrack.h:13
 hbasetrack.h:14
 hbasetrack.h:15
 hbasetrack.h:16
 hbasetrack.h:17
 hbasetrack.h:18
 hbasetrack.h:19
 hbasetrack.h:20
 hbasetrack.h:21
 hbasetrack.h:22
 hbasetrack.h:23
 hbasetrack.h:24
 hbasetrack.h:25
 hbasetrack.h:26
 hbasetrack.h:27
 hbasetrack.h:28
 hbasetrack.h:29
 hbasetrack.h:30
 hbasetrack.h:31
 hbasetrack.h:32
 hbasetrack.h:33
 hbasetrack.h:34
 hbasetrack.h:35
 hbasetrack.h:36
 hbasetrack.h:37
 hbasetrack.h:38
 hbasetrack.h:39
 hbasetrack.h:40
 hbasetrack.h:41
 hbasetrack.h:42
 hbasetrack.h:43
 hbasetrack.h:44
 hbasetrack.h:45
 hbasetrack.h:46
 hbasetrack.h:47
 hbasetrack.h:48
 hbasetrack.h:49
 hbasetrack.h:50
 hbasetrack.h:51
 hbasetrack.h:52
 hbasetrack.h:53
 hbasetrack.h:54
 hbasetrack.h:55
 hbasetrack.h:56
 hbasetrack.h:57
 hbasetrack.h:58
 hbasetrack.h:59
 hbasetrack.h:60
 hbasetrack.h:61
 hbasetrack.h:62
 hbasetrack.h:63
 hbasetrack.h:64
 hbasetrack.h:65
 hbasetrack.h:66
 hbasetrack.h:67
 hbasetrack.h:68
 hbasetrack.h:69
 hbasetrack.h:70
 hbasetrack.h:71
 hbasetrack.h:72
 hbasetrack.h:73
 hbasetrack.h:74
 hbasetrack.h:75
 hbasetrack.h:76
 hbasetrack.h:77
 hbasetrack.h:78
 hbasetrack.h:79
 hbasetrack.h:80
 hbasetrack.h:81
 hbasetrack.h:82
 hbasetrack.h:83
 hbasetrack.h:84