PandaRoot
PndTrack.h
Go to the documentation of this file.
1 //****************************************************************************
2 //* This file is part of PandaRoot. *
3 //* *
4 //* PandaRoot is distributed under the terms of the *
5 //* GNU General Public License (GPL) version 3, *
6 //* copied verbatim in the file "LICENSE". *
7 //* *
8 //* Copyright (C) 2006 - 2024 FAIR GmbH and copyright holders of PandaRoot *
9 //* The copyright holders are listed in the file "COPYRIGHTHOLDERS". *
10 //* The authors are listed in the file "AUTHORS". *
11 //****************************************************************************
12 
13 /*
14  * PndTrack.h
15  *
16  * Created on: 05.03.2009
17  * Author: everybody
18  */
19 
20 #ifndef PNDTRACK_H_
21 #define PNDTRACK_H_
22 
23 #include "TObject.h"
24 #include "PndTrackCand.h"
25 #include "FairTrackParP.h"
26 #include "PndDetectorList.h"
27 #include "FairTimeStamp.h"
28 #include "TRef.h"
29 
30 #ifndef __CINT__
31 #include <boost/serialization/access.hpp>
32 #include <boost/serialization/base_object.hpp>
33 #endif //__CINT__
34 
35 class PndTrack : public FairTimeStamp {
36  public:
37  PndTrack();
38  PndTrack(const FairTrackParP &first, const FairTrackParP &last, const PndTrackCand &cand, Int_t flag = 0, Double_t chi2 = -1., Int_t ndf = 0, Int_t pid = 0, Int_t id = -1,
39  Int_t type = -1);
40 
41  void Print();
42 
43  Int_t GetPidHypo() const { return fPidHypo; }
44  Int_t GetFlag() const { return fFlag; } // Quality flag
45  Double_t GetChi2() const { return fChi2; }
46  Int_t GetNDF() const { return fNDF; }
47  Int_t GetRefIndex() const { return fRefIndex; }
48  void SetPidHypo(Int_t i) { fPidHypo = i; }
49  void SetFlag(Int_t i) { fFlag = i; }
50  void SetChi2(Double_t d) { fChi2 = d; }
51  void SetNDF(Int_t i) { fNDF = i; }
52  void SetRefIndex(TString branch, Int_t i)
53  {
54  fRefIndex = i;
55  SetLink(FairLink(branch, i));
56  }
57  void SetRefIndex(Int_t i) { fRefIndex = i; }
58  void SetTrackCand(const PndTrackCand &cand) { fTrackCand = cand; };
59  void SetTrackCandRef(PndTrackCand *candPointer) { fRefToPndTrackCand = candPointer; }
60  PndTrackCand *GetPndTrackCandViaRef() { return (PndTrackCand *)fRefToPndTrackCand.GetObject(); }
61 
62  PndTrackCand GetTrackCand() { return fTrackCand; }
63  PndTrackCand *GetTrackCandPtr() { return &fTrackCand; }
64  FairTrackParP GetParamFirst() { return fTrackParamFirst; }
65  FairTrackParP GetParamLast() { return fTrackParamLast; }
66 
67  enum class TrackType :int {kUndefined, kBarrel, kForward, kBoth};
68  void SetTrackType(enum TrackType type) { fTrackType = type; }
69  enum TrackType GetTrackType() { return fTrackType; };
70 
71  virtual bool equal(FairTimeStamp *data) const
72  {
73  if (data)
74  return false; // dummy
75  return false;
76  }
77 
78  virtual bool operator<(const PndTrack &myTrack) const
79  {
80  PndTrackCand myCand = ((PndTrack)myTrack).GetTrackCand();
81  if (fTimeStamp < myCand.GetTimeStamp())
82  return true;
83  else if (fTimeStamp > myCand.GetTimeStamp())
84  return false;
85  return false;
86  }
87 
88  virtual bool operator>(const PndTrack &myTrack) const
89  {
90  PndTrackCand myCand = ((PndTrack)myTrack).GetTrackCand();
91  if (fTimeStamp > myCand.GetTimeStamp())
92  return true;
93  else if (fTimeStamp < myCand.GetTimeStamp())
94  return false;
95  return false;
96  }
97 
98  virtual bool operator==(const PndTrack &myTrack) const
99  {
100  if (fFlag == myTrack.fFlag)
101  return false; // dummy
102  return false;
103  }
104 
105 #ifndef __CINT__ // for BOOST serialization
106  template <class Archive>
107  void serialize(Archive &ar, const unsigned int version)
108  {
109  ar &boost::serialization::base_object<FairTimeStamp>(*this);
110  // ar & fTrackParamFirst;
111  // ar & fTrackParamLast;
112  ar &fTrackCand;
113  ar &fPidHypo;
114  ar &fFlag;
115  ar &fChi2;
116  ar &fNDF;
117  ar &fRefIndex;
118  }
119 #endif // for BOOST serialization
120 
121  private:
122  FairTrackParP fTrackParamFirst;
123  FairTrackParP fTrackParamLast;
124 
125  PndTrackCand fTrackCand;
126  TRef fRefToPndTrackCand;
127 
128  Int_t fPidHypo;
129  Int_t fFlag;
130  Double_t fChi2;
131  Int_t fNDF;
132  Int_t fRefIndex;
133 
134  TrackType fTrackType;
135 
136  public:
137  ClassDef(PndTrack, 2)
138 };
139 
140 #endif /* PNDTRACK_H_ */
void SetTrackType(enum TrackType type)
Definition: PndTrack.h:68
void SetRefIndex(TString branch, Int_t i)
Definition: PndTrack.h:52
void SetChi2(Double_t d)
Definition: PndTrack.h:50
PndTrackCand * GetPndTrackCandViaRef()
Definition: PndTrack.h:60
void SetTrackCandRef(PndTrackCand *candPointer)
Definition: PndTrack.h:59
virtual bool equal(FairTimeStamp *data) const
Definition: PndTrack.h:71
virtual bool operator<(const PndTrack &myTrack) const
Definition: PndTrack.h:78
unsigned int i
Definition: P4_F32vec4.h:33
Int_t GetRefIndex() const
Definition: PndTrack.h:47
Int_t GetNDF() const
Definition: PndTrack.h:46
void SetPidHypo(Int_t i)
Definition: PndTrack.h:48
PndTrackCand GetTrackCand()
Definition: PndTrack.h:62
FairTrackParP GetParamLast()
Definition: PndTrack.h:65
enum TrackType GetTrackType()
Definition: PndTrack.h:69
Double_t GetChi2() const
Definition: PndTrack.h:45
void SetRefIndex(Int_t i)
Definition: PndTrack.h:57
void SetFlag(Int_t i)
Definition: PndTrack.h:49
void serialize(Archive &ar, const unsigned int version)
Definition: PndTrack.h:107
void SetNDF(Int_t i)
Definition: PndTrack.h:51
virtual bool operator>(const PndTrack &myTrack) const
Definition: PndTrack.h:88
void Print()
PndTrackCand * GetTrackCandPtr()
Definition: PndTrack.h:63
void SetTrackCand(const PndTrackCand &cand)
Definition: PndTrack.h:58
virtual bool operator==(const PndTrack &myTrack) const
Definition: PndTrack.h:98
FairTrackParP GetParamFirst()
Definition: PndTrack.h:64
Int_t GetPidHypo() const
Definition: PndTrack.h:43
Int_t GetFlag() const
Definition: PndTrack.h:44