ROOT logo
#include "AliAODTrdTrack.h"

AliAODTrdTrack::AliAODTrdTrack() :
  AliVTrdTrack(),
  fGlobalStack(-1),
  fPID(0),
  fLayerMask(0),
  fA(0),
  fFlagsTiming(0),
  fTracklets(),
  fTrackMatch(0x0),
  fLabel(-1)
{
  // default constructor

  fTracklets.SetClass("AliAODTrdTracklet", 6);
}

AliAODTrdTrack::AliAODTrdTrack(const AliVTrdTrack &rhs) :
  AliVTrdTrack(rhs),
  fGlobalStack(5*rhs.GetSector() + rhs.GetStack()),
  fPID(rhs.GetPID()),
  fLayerMask(rhs.GetLayerMask()),
  fA(rhs.GetA()),
  fFlagsTiming(rhs.GetFlagsTiming()),
  fTracklets(),
  fTrackMatch(rhs.GetTrackMatch()),
  fLabel(rhs.GetLabel())
{
  // constructor from abstract base class

  fTracklets.SetClass("AliAODTrdTracklet", 6);

  // copy the contributing tracklets
  for (Int_t iTracklet = 0; iTracklet < 6; ++iTracklet) {
    const AliVTrdTracklet *trkl = rhs.GetTracklet(iTracklet);
    if (trkl)
      new (fTracklets[iTracklet]) AliAODTrdTracklet(*trkl);
    else
      new (fTracklets[iTracklet]) AliAODTrdTracklet();
  }
}

AliAODTrdTrack::AliAODTrdTrack(const AliAODTrdTrack& rhs) :
  AliVTrdTrack(rhs),
  fGlobalStack(rhs.fGlobalStack),
  fPID(rhs.fPID),
  fLayerMask(rhs.fLayerMask),
  fA(rhs.fA),
  fFlagsTiming(rhs.fFlagsTiming),
  fTracklets(),
  fTrackMatch(rhs.fTrackMatch),
  fLabel(rhs.fLabel)
{
  // copy constructor

  fTracklets.SetClass("AliAODTrdTracklet", 6);

  // copy the contributing tracklets
  for (Int_t iTracklet = 0; iTracklet < 6; ++iTracklet) {
    const AliVTrdTracklet *trkl = rhs.GetTracklet(iTracklet);
    if (trkl)
      new (fTracklets[iTracklet]) AliAODTrdTracklet(*trkl);
    else
      new (fTracklets[iTracklet]) AliAODTrdTracklet();
  }
}

AliAODTrdTrack& AliAODTrdTrack::operator=(const AliAODTrdTrack& rhs)
{
  // assignment operator

  if (&rhs != this)
    AliVTrdTrack::operator=(rhs);

  fGlobalStack = rhs.fGlobalStack;
  fPID         = rhs.fPID;
  fLayerMask   = rhs.fLayerMask;
  fA           = rhs.fA;
  fFlagsTiming = rhs.fFlagsTiming;
  fTrackMatch  = rhs.fTrackMatch;
  fLabel       = rhs.fLabel;

  // assign the contributing tracklets
  for (Int_t iTracklet = 0; iTracklet < 6; ++iTracklet) {
    const AliVTrdTracklet *trkl = rhs.GetTracklet(iTracklet);
    if (trkl)
      new (fTracklets[iTracklet]) AliAODTrdTracklet(*trkl);
    else
      new (fTracklets[iTracklet]) AliAODTrdTracklet();
  }

  return *this;
}

void AliAODTrdTrack::Copy(TObject &rhs) const
{
  // copy

  AliVTrdTrack::Copy(rhs);
}

Int_t AliAODTrdTrack::GetPt() const
{
  // calculate pt from a as done in hardware

  const Int_t maskIdLut[64] = {
    -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1,  0,
    -1, -1, -1, -1, -1, -1, -1,  1, -1, -1, -1,  2, -1,  3,  4,  5,
    -1, -1, -1, -1, -1, -1, -1,  6, -1, -1, -1,  7, -1,  8,  9, 10,
    -1, -1, -1, 11, -1, 12, 13, 14, -1, 15, 16, 17, 18, 19, 20, 21
  };

  const Int_t c1Lut[32] = {
    -2371, -2474, -2474, -2474, -2563, -2448, -2578, -2578,
    -2578, -2670, -2557, -2578, -2578, -2670, -2557, -2578,
    -2670, -2557, -2763, -2557, -2644, -2523,    -1,    -1,
    -1,    -1,    -1,    -1,    -1,    -1,    -1,    -1
  };

  if (this->GetA() != 0) {
    Int_t layerMaskId = maskIdLut[this->GetLayerMask()];
    Int_t c1 = c1Lut[layerMaskId];
    Int_t c1Ext = c1 << 8;
    Int_t ptRawStage4 = c1Ext / ((this->GetA() >> 2) != 0 ? (this->GetA() >> 2) : 1 );
    Int_t ptRawComb4 = ptRawStage4;
    Int_t ptExtComb4 = (ptRawComb4 > 0) ? ptRawComb4 + 33 : ptRawComb4 - 30;

    return -ptExtComb4/2;
  }
  else
    return 0;
}
 AliAODTrdTrack.cxx:1
 AliAODTrdTrack.cxx:2
 AliAODTrdTrack.cxx:3
 AliAODTrdTrack.cxx:4
 AliAODTrdTrack.cxx:5
 AliAODTrdTrack.cxx:6
 AliAODTrdTrack.cxx:7
 AliAODTrdTrack.cxx:8
 AliAODTrdTrack.cxx:9
 AliAODTrdTrack.cxx:10
 AliAODTrdTrack.cxx:11
 AliAODTrdTrack.cxx:12
 AliAODTrdTrack.cxx:13
 AliAODTrdTrack.cxx:14
 AliAODTrdTrack.cxx:15
 AliAODTrdTrack.cxx:16
 AliAODTrdTrack.cxx:17
 AliAODTrdTrack.cxx:18
 AliAODTrdTrack.cxx:19
 AliAODTrdTrack.cxx:20
 AliAODTrdTrack.cxx:21
 AliAODTrdTrack.cxx:22
 AliAODTrdTrack.cxx:23
 AliAODTrdTrack.cxx:24
 AliAODTrdTrack.cxx:25
 AliAODTrdTrack.cxx:26
 AliAODTrdTrack.cxx:27
 AliAODTrdTrack.cxx:28
 AliAODTrdTrack.cxx:29
 AliAODTrdTrack.cxx:30
 AliAODTrdTrack.cxx:31
 AliAODTrdTrack.cxx:32
 AliAODTrdTrack.cxx:33
 AliAODTrdTrack.cxx:34
 AliAODTrdTrack.cxx:35
 AliAODTrdTrack.cxx:36
 AliAODTrdTrack.cxx:37
 AliAODTrdTrack.cxx:38
 AliAODTrdTrack.cxx:39
 AliAODTrdTrack.cxx:40
 AliAODTrdTrack.cxx:41
 AliAODTrdTrack.cxx:42
 AliAODTrdTrack.cxx:43
 AliAODTrdTrack.cxx:44
 AliAODTrdTrack.cxx:45
 AliAODTrdTrack.cxx:46
 AliAODTrdTrack.cxx:47
 AliAODTrdTrack.cxx:48
 AliAODTrdTrack.cxx:49
 AliAODTrdTrack.cxx:50
 AliAODTrdTrack.cxx:51
 AliAODTrdTrack.cxx:52
 AliAODTrdTrack.cxx:53
 AliAODTrdTrack.cxx:54
 AliAODTrdTrack.cxx:55
 AliAODTrdTrack.cxx:56
 AliAODTrdTrack.cxx:57
 AliAODTrdTrack.cxx:58
 AliAODTrdTrack.cxx:59
 AliAODTrdTrack.cxx:60
 AliAODTrdTrack.cxx:61
 AliAODTrdTrack.cxx:62
 AliAODTrdTrack.cxx:63
 AliAODTrdTrack.cxx:64
 AliAODTrdTrack.cxx:65
 AliAODTrdTrack.cxx:66
 AliAODTrdTrack.cxx:67
 AliAODTrdTrack.cxx:68
 AliAODTrdTrack.cxx:69
 AliAODTrdTrack.cxx:70
 AliAODTrdTrack.cxx:71
 AliAODTrdTrack.cxx:72
 AliAODTrdTrack.cxx:73
 AliAODTrdTrack.cxx:74
 AliAODTrdTrack.cxx:75
 AliAODTrdTrack.cxx:76
 AliAODTrdTrack.cxx:77
 AliAODTrdTrack.cxx:78
 AliAODTrdTrack.cxx:79
 AliAODTrdTrack.cxx:80
 AliAODTrdTrack.cxx:81
 AliAODTrdTrack.cxx:82
 AliAODTrdTrack.cxx:83
 AliAODTrdTrack.cxx:84
 AliAODTrdTrack.cxx:85
 AliAODTrdTrack.cxx:86
 AliAODTrdTrack.cxx:87
 AliAODTrdTrack.cxx:88
 AliAODTrdTrack.cxx:89
 AliAODTrdTrack.cxx:90
 AliAODTrdTrack.cxx:91
 AliAODTrdTrack.cxx:92
 AliAODTrdTrack.cxx:93
 AliAODTrdTrack.cxx:94
 AliAODTrdTrack.cxx:95
 AliAODTrdTrack.cxx:96
 AliAODTrdTrack.cxx:97
 AliAODTrdTrack.cxx:98
 AliAODTrdTrack.cxx:99
 AliAODTrdTrack.cxx:100
 AliAODTrdTrack.cxx:101
 AliAODTrdTrack.cxx:102
 AliAODTrdTrack.cxx:103
 AliAODTrdTrack.cxx:104
 AliAODTrdTrack.cxx:105
 AliAODTrdTrack.cxx:106
 AliAODTrdTrack.cxx:107
 AliAODTrdTrack.cxx:108
 AliAODTrdTrack.cxx:109
 AliAODTrdTrack.cxx:110
 AliAODTrdTrack.cxx:111
 AliAODTrdTrack.cxx:112
 AliAODTrdTrack.cxx:113
 AliAODTrdTrack.cxx:114
 AliAODTrdTrack.cxx:115
 AliAODTrdTrack.cxx:116
 AliAODTrdTrack.cxx:117
 AliAODTrdTrack.cxx:118
 AliAODTrdTrack.cxx:119
 AliAODTrdTrack.cxx:120
 AliAODTrdTrack.cxx:121
 AliAODTrdTrack.cxx:122
 AliAODTrdTrack.cxx:123
 AliAODTrdTrack.cxx:124
 AliAODTrdTrack.cxx:125
 AliAODTrdTrack.cxx:126
 AliAODTrdTrack.cxx:127
 AliAODTrdTrack.cxx:128
 AliAODTrdTrack.cxx:129
 AliAODTrdTrack.cxx:130
 AliAODTrdTrack.cxx:131
 AliAODTrdTrack.cxx:132
 AliAODTrdTrack.cxx:133