FairRoot/PandaRoot
PndMdtTrk.h
Go to the documentation of this file.
1 #ifndef PNDMDTTRK_HH
2 #define PNDMDTTRK_HH
3 
4 #include "FairHit.h"
5 #include "FairMultiLinkedData_Interface.h"
6 #include "PndTrackCand.h"
7 #include "PndDetectorList.h"
8 #include "TVector3.h"
9 
10 #include <iostream>
11 
12 using std::cout;
13 using std::endl;
14 
15 class PndMdtTrk : public FairMultiLinkedData_Interface {
16 
17  public:
18 
19  PndMdtTrk();
20 
21  virtual ~PndMdtTrk();
22 
24  virtual void Print(const Option_t* opt = 0) const {std::cout<< " opt = " << opt << std::endl; return;}
25 
26 
30  void Clear();
31 
33  void GetHitList(Int_t *hit) { for (Int_t ii=0; ii<25; ii++) hit[ii] = fHitList[ii]; };
34  void GetHitMult(Int_t *hit) { for (Int_t ii=0; ii<25; ii++) hit[ii] = fHitMult[ii]; };
35  void GetHitDist(Float_t *hit) { for (Int_t ii=0; ii<25; ii++) hit[ii] = fHitDist[ii]; };
36  void GetHitDeltaAngle(Float_t *hit) { for (Int_t ii=0; ii<25; ii++) hit[ii] = fHitDeltaAngle[ii]; };
37  Int_t GetHitIndex(Int_t lay) const { return fHitList[lay]; };
38  Int_t GetHitMult (Int_t lay) const { return fHitMult[lay]; };
39  Float_t GetHitDist (Int_t lay) const { return fHitDist[lay]; };
40  Float_t GetHitDeltaAngle(Int_t lay) const { return fHitDeltaAngle[lay]; };
41  Float_t GetLayerDist (Int_t lay) const { return fLayDist[lay]; };
42  Float_t GetIronDist () const { return fIronDist; };
43  Int_t GetHitCount() const { return fHitCount; };
44  Int_t GetLayerCount() const { return fLayerCount; };
45  Int_t GetMaxLayer() const { return fMaxLayer; };
46  Int_t GetHitBit() const { return fHitBit; };
47  Int_t GetHitBit(Int_t lay) const { return (fHitBit & (1 << lay)); };
48  Int_t GetModule() const { return fModule;};
49  Float_t GetChi2() const { return fChi2;};
50 
51  PndTrackCand* AddTrackCand(const PndTrackCand* inTrackCand = new PndTrackCand());
52 
54  void SetHitIndex (Int_t lay, Int_t trackId);
55  void SetHitMult (Int_t lay, Int_t mult);
56  void SetHitDist (Int_t lay, Float_t dist);
57  void SetHitDeltaAngle(Int_t lay, Float_t angle);
58  void SetLayerDist(Int_t lay, Float_t dist);
59  void SetBit (Int_t lay) { fHitBit = fHitBit | (1 << lay); };
60 
61  void SetIronDist(Float_t dist) { fIronDist = dist; };
62  void SetHitCount(Int_t hit) { fHitCount = hit; };
63  void SetLayerCount(Int_t lay) { fLayerCount = lay; };
64  void SetMaxLayer(Int_t lay) { fMaxLayer = lay; };
65  void SetHitBit (Int_t bit) { fHitBit = bit; };
66  void SetModule (Int_t mod) { fModule = mod; };
67  void SetChi2 (Float_t chi2) { fChi2 = chi2; };
68 
69 
70  private:
71 
72  Int_t fHitList[25]; // List of indexes of MdtHit
73  Int_t fHitMult[25]; // Number of MdtHits inside the correlation
74  Float_t fHitDist[25]; // Distance of the closest point to the previous layer hit
75  Float_t fHitDeltaAngle[25];
76  Float_t fLayDist[25]; // Distance of the actual layer from the previous one
77  Float_t fIronDist; // Amount of crossed iron [cm]
78  Int_t fHitCount; // Number of hits inside correlation
79  Int_t fLayerCount; // Number of fired layers
80  Int_t fMaxLayer; // Lat layer fired
81  Int_t fHitBit; // Layer Bit
82  Int_t fModule; // Module number of the first hit
83  Float_t fChi2; // global chi2 of the MDT correlation
84 
86 };
87 
88 inline void PndMdtTrk::SetHitIndex(Int_t lay, Int_t trackId)
89 {
90  if (lay>25)
91  {
92  cout << " -E- PndMdtTrk::SetHitIndex: Layer > 25 !!!!!" << endl;
93  }
94  else
95  {
96  fHitList[lay] = trackId;
97  SetBit(lay);
98  AddLink(FairLink("MdtHit", trackId)); // 21.09.10 Stefano: fix for link
99  }
100 }
101 
102 inline void PndMdtTrk::SetHitMult(Int_t lay, Int_t mult)
103 {
104  if (lay>25)
105  {
106  cout << " -E- PndMdtTrk::SetHitMult: Layer > 25 !!!!!" << endl;
107  }
108  else
109  {
110  fHitMult[lay] = mult;
111  }
112 }
113 
114 inline void PndMdtTrk::SetHitDist(Int_t lay, Float_t dist)
115 {
116  if (lay>25)
117  {
118  cout << " -E- PndMdtTrk::SetHitDist: Layer > 25 !!!!!" << endl;
119  }
120  else
121  {
122  fHitDist[lay] = dist;
123  }
124 }
125 
126 inline void PndMdtTrk::SetHitDeltaAngle(Int_t lay, Float_t dist)
127 {
128  if (lay>25)
129  {
130  cout << " -E- PndMdtTrk::SetHitDeltaAngle: Layer > 25 !!!!!" << endl;
131  }
132  else
133  {
134  fHitDeltaAngle[lay] = dist;
135  }
136 }
137 
138 inline void PndMdtTrk::SetLayerDist(Int_t lay, Float_t dist)
139 {
140  if (lay>25)
141  {
142  cout << " -E- PndMdtTrk::SetLayerDist: Layer > 25 !!!!!" << endl;
143  }
144  else
145  {
146  fLayDist[lay] = dist;
147  }
148 }
149 
150 #endif
void SetHitDist(Int_t lay, Float_t dist)
Definition: PndMdtTrk.h:114
Float_t GetIronDist() const
Definition: PndMdtTrk.h:42
Int_t GetMaxLayer() const
Definition: PndMdtTrk.h:45
Int_t fModule
Definition: PndMdtTrk.h:82
Int_t GetHitMult(Int_t lay) const
Definition: PndMdtTrk.h:38
void SetChi2(Float_t chi2)
Definition: PndMdtTrk.h:67
void GetHitMult(Int_t *hit)
Definition: PndMdtTrk.h:34
Int_t GetHitCount() const
Definition: PndMdtTrk.h:43
Float_t GetChi2() const
Definition: PndMdtTrk.h:49
Int_t GetHitBit() const
Definition: PndMdtTrk.h:46
void GetHitList(Int_t *hit)
Definition: PndMdtTrk.h:33
Float_t GetHitDist(Int_t lay) const
Definition: PndMdtTrk.h:39
void SetLayerDist(Int_t lay, Float_t dist)
Definition: PndMdtTrk.h:138
void SetHitDeltaAngle(Int_t lay, Float_t angle)
Definition: PndMdtTrk.h:126
virtual void Print(const Option_t *opt=0) const
Definition: PndMdtTrk.h:24
Float_t fIronDist
Definition: PndMdtTrk.h:77
void SetMaxLayer(Int_t lay)
Definition: PndMdtTrk.h:64
PndTrackCand * AddTrackCand(const PndTrackCand *inTrackCand=new PndTrackCand())
Definition: PndMdtTrk.cxx:27
Int_t GetModule() const
Definition: PndMdtTrk.h:48
virtual ~PndMdtTrk()
Definition: PndMdtTrk.cxx:23
void SetHitIndex(Int_t lay, Int_t trackId)
Definition: PndMdtTrk.h:88
Int_t fHitList[25]
Definition: PndMdtTrk.h:67
Int_t fLayerCount
Definition: PndMdtTrk.h:79
void GetHitDeltaAngle(Float_t *hit)
Definition: PndMdtTrk.h:36
Float_t fChi2
Definition: PndMdtTrk.h:83
Float_t fLayDist[25]
Definition: PndMdtTrk.h:76
Float_t GetHitDeltaAngle(Int_t lay) const
Definition: PndMdtTrk.h:40
Float_t fHitDist[25]
Definition: PndMdtTrk.h:74
void GetHitDist(Float_t *hit)
Definition: PndMdtTrk.h:35
void SetIronDist(Float_t dist)
Definition: PndMdtTrk.h:61
Int_t fHitCount
Definition: PndMdtTrk.h:78
void SetModule(Int_t mod)
Definition: PndMdtTrk.h:66
Int_t GetLayerCount() const
Definition: PndMdtTrk.h:44
Int_t GetHitBit(Int_t lay) const
Definition: PndMdtTrk.h:47
Float_t GetLayerDist(Int_t lay) const
Definition: PndMdtTrk.h:41
void SetHitCount(Int_t hit)
Definition: PndMdtTrk.h:62
Int_t GetHitIndex(Int_t lay) const
Definition: PndMdtTrk.h:37
Int_t fHitMult[25]
Definition: PndMdtTrk.h:73
void SetHitBit(Int_t bit)
Definition: PndMdtTrk.h:65
PndSdsMCPoint * hit
Definition: anasim.C:70
Double_t angle
Float_t fHitDeltaAngle[25]
Definition: PndMdtTrk.h:75
void SetBit(Int_t lay)
Definition: PndMdtTrk.h:59
Int_t fMaxLayer
Definition: PndMdtTrk.h:80
Int_t fHitBit
Definition: PndMdtTrk.h:81
void SetHitMult(Int_t lay, Int_t mult)
Definition: PndMdtTrk.h:102
Double_t mult
void SetLayerCount(Int_t lay)
Definition: PndMdtTrk.h:63
void Clear()
Definition: PndMdtTrk.cxx:39
ClassDef(PndMdtTrk, 1)