1 #include "AliAODTrdTrack.h"
3 AliAODTrdTrack::AliAODTrdTrack() :
14 // default constructor
16 fTracklets.SetClass("AliAODTrdTracklet", 6);
19 AliAODTrdTrack::AliAODTrdTrack(const AliVTrdTrack &rhs) :
21 fGlobalStack(5*rhs.GetSector() + rhs.GetStack()),
23 fLayerMask(rhs.GetLayerMask()),
25 fFlagsTiming(rhs.GetFlagsTiming()),
27 fTrackMatch(rhs.GetTrackMatch()),
28 fLabel(rhs.GetLabel())
30 // constructor from abstract base class
32 fTracklets.SetClass("AliAODTrdTracklet", 6);
34 // copy the contributing tracklets
35 for (Int_t iTracklet = 0; iTracklet < 6; ++iTracklet) {
36 const AliVTrdTracklet *trkl = rhs.GetTracklet(iTracklet);
38 new (fTracklets[iTracklet]) AliAODTrdTracklet(*trkl);
40 new (fTracklets[iTracklet]) AliAODTrdTracklet();
44 AliAODTrdTrack::AliAODTrdTrack(const AliAODTrdTrack& rhs) :
46 fGlobalStack(rhs.fGlobalStack),
48 fLayerMask(rhs.fLayerMask),
50 fFlagsTiming(rhs.fFlagsTiming),
52 fTrackMatch(rhs.fTrackMatch),
57 fTracklets.SetClass("AliAODTrdTracklet", 6);
59 // copy the contributing tracklets
60 for (Int_t iTracklet = 0; iTracklet < 6; ++iTracklet) {
61 const AliVTrdTracklet *trkl = rhs.GetTracklet(iTracklet);
63 new (fTracklets[iTracklet]) AliAODTrdTracklet(*trkl);
65 new (fTracklets[iTracklet]) AliAODTrdTracklet();
69 AliAODTrdTrack& AliAODTrdTrack::operator=(const AliAODTrdTrack& rhs)
71 // assignment operator
74 AliVTrdTrack::operator=(rhs);
76 fGlobalStack = rhs.fGlobalStack;
78 fLayerMask = rhs.fLayerMask;
80 fFlagsTiming = rhs.fFlagsTiming;
81 fTrackMatch = rhs.fTrackMatch;
84 // assign the contributing tracklets
85 for (Int_t iTracklet = 0; iTracklet < 6; ++iTracklet) {
86 const AliVTrdTracklet *trkl = rhs.GetTracklet(iTracklet);
88 new (fTracklets[iTracklet]) AliAODTrdTracklet(*trkl);
90 new (fTracklets[iTracklet]) AliAODTrdTracklet();
96 void AliAODTrdTrack::Copy(TObject &rhs) const
100 AliVTrdTrack::Copy(rhs);
103 Int_t AliAODTrdTrack::GetPt() const
105 // calculate pt from a as done in hardware
107 const Int_t maskIdLut[64] = {
108 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0,
109 -1, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, 2, -1, 3, 4, 5,
110 -1, -1, -1, -1, -1, -1, -1, 6, -1, -1, -1, 7, -1, 8, 9, 10,
111 -1, -1, -1, 11, -1, 12, 13, 14, -1, 15, 16, 17, 18, 19, 20, 21
114 const Int_t c1Lut[32] = {
115 -2371, -2474, -2474, -2474, -2563, -2448, -2578, -2578,
116 -2578, -2670, -2557, -2578, -2578, -2670, -2557, -2578,
117 -2670, -2557, -2763, -2557, -2644, -2523, -1, -1,
118 -1, -1, -1, -1, -1, -1, -1, -1
121 if (this->GetA() != 0) {
122 Int_t layerMaskId = maskIdLut[this->GetLayerMask()];
123 Int_t c1 = c1Lut[layerMaskId];
124 Int_t c1Ext = c1 << 8;
125 Int_t ptRawStage4 = c1Ext / ((this->GetA() >> 2) != 0 ? (this->GetA() >> 2) : 1 );
126 Int_t ptRawComb4 = ptRawStage4;
127 Int_t ptExtComb4 = (ptRawComb4 > 0) ? ptRawComb4 + 33 : ptRawComb4 - 30;
129 return -ptExtComb4/2;