AliRoot Core  3dc7879 (3dc7879)
AliAODTrdTrack.cxx
Go to the documentation of this file.
1 #include "AliAODTrdTrack.h"
3  AliVTrdTrack(),
4  fGlobalStack(-1),
5  fPID(0),
6  fLayerMask(0),
7  fA(0),
8  fFlagsTiming(0),
9  fTracklets(),
10  fTrackMatch(0x0),
11  fLabel(-1)
12 {
14 
15  fTracklets.SetClass("AliAODTrdTracklet", 6);
16 }
17 
19  AliVTrdTrack(rhs),
20  fGlobalStack(5*rhs.GetSector() + rhs.GetStack()),
21  fPID(rhs.GetPID()),
22  fLayerMask(rhs.GetLayerMask()),
23  fA(rhs.GetA()),
25  fTracklets(),
27  fLabel(rhs.GetLabel())
28 {
30 
31  fTracklets.SetClass("AliAODTrdTracklet", 6);
32 
33  // copy the contributing tracklets
34  for (Int_t iTracklet = 0; iTracklet < 6; ++iTracklet) {
35  const AliVTrdTracklet *trkl = rhs.GetTracklet(iTracklet);
36  if (trkl)
37  new (fTracklets[iTracklet]) AliAODTrdTracklet(*trkl);
38  else
39  new (fTracklets[iTracklet]) AliAODTrdTracklet();
40  }
41 }
42 
44  AliVTrdTrack(rhs),
46  fPID(rhs.fPID),
48  fA(rhs.fA),
50  fTracklets(),
52  fLabel(rhs.fLabel)
53 {
55 
56  fTracklets.SetClass("AliAODTrdTracklet", 6);
57 
58  // copy the contributing tracklets
59  for (Int_t iTracklet = 0; iTracklet < 6; ++iTracklet) {
60  const AliVTrdTracklet *trkl = rhs.GetTracklet(iTracklet);
61  if (trkl)
62  new (fTracklets[iTracklet]) AliAODTrdTracklet(*trkl);
63  else
64  new (fTracklets[iTracklet]) AliAODTrdTracklet();
65  }
66 }
67 
69 {
71 
72  if (&rhs != this)
74 
76  fPID = rhs.fPID;
77  fLayerMask = rhs.fLayerMask;
78  fA = rhs.fA;
81  fLabel = rhs.fLabel;
82 
83  // assign the contributing tracklets
84  for (Int_t iTracklet = 0; iTracklet < 6; ++iTracklet) {
85  const AliVTrdTracklet *trkl = rhs.GetTracklet(iTracklet);
86  if (trkl)
87  new (fTracklets[iTracklet]) AliAODTrdTracklet(*trkl);
88  else
89  new (fTracklets[iTracklet]) AliAODTrdTracklet();
90  }
91 
92  return *this;
93 }
94 
95 void AliAODTrdTrack::Copy(TObject &rhs) const
96 {
98 
99  AliVTrdTrack::Copy(rhs);
100 }
101 
103 {
105 
106  const Int_t maskIdLut[64] = {
107  -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0,
108  -1, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, 2, -1, 3, 4, 5,
109  -1, -1, -1, -1, -1, -1, -1, 6, -1, -1, -1, 7, -1, 8, 9, 10,
110  -1, -1, -1, 11, -1, 12, 13, 14, -1, 15, 16, 17, 18, 19, 20, 21
111  };
112 
113  const Int_t c1Lut[32] = {
114  -2371, -2474, -2474, -2474, -2563, -2448, -2578, -2578,
115  -2578, -2670, -2557, -2578, -2578, -2670, -2557, -2578,
116  -2670, -2557, -2763, -2557, -2644, -2523, -1, -1,
117  -1, -1, -1, -1, -1, -1, -1, -1
118  };
119 
120  if (this->GetA() != 0) {
121  Int_t layerMaskId = maskIdLut[this->GetLayerMask()];
122  Int_t c1 = c1Lut[layerMaskId];
123  Int_t c1Ext = c1 << 8;
124  Int_t ptRawStage4 = c1Ext / ((this->GetA() >> 2) != 0 ? (this->GetA() >> 2) : 1 );
125  Int_t ptRawComb4 = ptRawStage4;
126  Int_t ptExtComb4 = (ptRawComb4 > 0) ? ptRawComb4 + 33 : ptRawComb4 - 30;
127 
128  return -ptExtComb4/2;
129  }
130  else
131  return 0;
132 }
virtual void Copy(TObject &obj) const
Int_t fA
transverse offset from nominal primary vertex
TRef fTrackMatch
reference to matched global track
virtual Int_t GetSector() const
Int_t fLabel
Track label.
virtual Int_t GetA() const
virtual Int_t GetStack() const
AliVTrdTrack & operator=(const AliVTrdTrack &track)
virtual Int_t GetLabel() const
virtual AliVTrack * GetTrackMatch() const
UChar_t fLayerMask
mask of contributing tracklets
AliAODTrdTrack & operator=(const AliAODTrdTrack &track)
UChar_t fPID
electron PID for this track
UChar_t fFlagsTiming
timing flags
Char_t fGlobalStack
stack (0-89) in which the track was found
virtual Int_t GetLayerMask() const
virtual UChar_t GetFlagsTiming() const
virtual void Copy(TObject &obj) const
virtual AliVTrdTracklet * GetTracklet(Int_t idx) const =0
TClonesArray fTracklets
array of contributing tracklets
format for the TRD tracks calculated in the
virtual Int_t GetPID() const
virtual AliAODTrdTracklet * GetTracklet(Int_t idx) const
virtual Int_t GetPt() const