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