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 // copy the contributing tracklets
33 for (Int_t iTracklet = 0; iTracklet < 6; ++iTracklet) {
34 const AliVTrdTracklet *trkl = rhs.GetTracklet(iTracklet);
36 new (fTracklets[iTracklet]) AliAODTrdTracklet(*trkl);
40 AliAODTrdTrack::AliAODTrdTrack(const AliAODTrdTrack& rhs) :
42 fGlobalStack(rhs.fGlobalStack),
44 fLayerMask(rhs.fLayerMask),
46 fFlagsTiming(rhs.fFlagsTiming),
48 fTrackMatch(rhs.fTrackMatch),
53 // copy the contributing tracklets
54 for (Int_t iTracklet = 0; iTracklet < 6; ++iTracklet) {
55 const AliVTrdTracklet *trkl = rhs.GetTracklet(iTracklet);
57 new (fTracklets[iTracklet]) AliAODTrdTracklet(*trkl);
61 AliAODTrdTrack& AliAODTrdTrack::operator=(const AliAODTrdTrack& rhs)
63 // assignment operator
66 AliVTrdTrack::operator=(rhs);
68 fGlobalStack = rhs.fGlobalStack;
70 fLayerMask = rhs.fLayerMask;
72 fFlagsTiming = rhs.fFlagsTiming;
73 fTrackMatch = rhs.fTrackMatch;
76 // assign the contributing tracklets
77 for (Int_t iTracklet = 0; iTracklet < 6; ++iTracklet) {
78 const AliVTrdTracklet *trkl = rhs.GetTracklet(iTracklet);
80 new (fTracklets[iTracklet]) AliAODTrdTracklet(*trkl);
86 void AliAODTrdTrack::Copy(TObject &rhs) const
90 AliVTrdTrack::Copy(rhs);
93 Int_t AliAODTrdTrack::GetPt() const
95 // calculate pt from a as done in hardware
97 const Int_t maskIdLut[64] = {
98 -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, 0,
99 -1, -1, -1, -1, -1, -1, -1, 1, -1, -1, -1, 2, -1, 3, 4, 5,
100 -1, -1, -1, -1, -1, -1, -1, 6, -1, -1, -1, 7, -1, 8, 9, 10,
101 -1, -1, -1, 11, -1, 12, 13, 14, -1, 15, 16, 17, 18, 19, 20, 21
104 const Int_t c1Lut[32] = {
105 -2371, -2474, -2474, -2474, -2563, -2448, -2578, -2578,
106 -2578, -2670, -2557, -2578, -2578, -2670, -2557, -2578,
107 -2670, -2557, -2763, -2557, -2644, -2523, -1, -1,
108 -1, -1, -1, -1, -1, -1, -1, -1
111 if (this->GetA() != 0) {
112 Int_t layerMaskId = maskIdLut[this->GetLayerMask()];
113 Int_t c1 = c1Lut[layerMaskId];
114 Int_t c1Ext = c1 << 8;
115 Int_t ptRawStage4 = c1Ext / ((this->GetA() >> 2) != 0 ? (this->GetA() >> 2) : 1 );
116 Int_t ptRawComb4 = ptRawStage4;
117 Int_t ptExtComb4 = (ptRawComb4 > 0) ? ptRawComb4 + 33 : ptRawComb4 - 30;
119 return -ptExtComb4/2;