ROOT logo
//
// Track class with minimal number of information 
// (targets at selection of primary tracks).
//
// Author: C.Loizides

#include "AliPicoTrack.h"
#include "AliExternalTrackParam.h"
#include "AliVCluster.h"

//_________________________________________________________________________________________________
AliPicoTrack::AliPicoTrack() :
  AliVTrack(),
  fPt(0), fEta(0), fPhi(0), fM(0.13957), fQ(0), fLabel(-1), fTrackType(0), 
  fEtaEmc(0), fPhiEmc(0), fPtEmc(0), fEmcal(0), fFlag(0), fGeneratorIndex(-1), fClusId(-1), fOrig(0)
{
  // Default constructor.
}

//_________________________________________________________________________________________________
AliPicoTrack::AliPicoTrack(Double_t pt, Double_t eta, Double_t phi, Byte_t q, Int_t lab, Byte_t type,
                           Double_t etaemc, Double_t phiemc, Double_t ptemc, Bool_t ise, Double_t mass) :
  AliVTrack(),
  fPt(pt), fEta(eta), fPhi(phi), fM(mass), fQ(q), fLabel(lab), fTrackType(type), 
  fEtaEmc(etaemc), fPhiEmc(phiemc), fPtEmc(ptemc), fEmcal(ise), fFlag(0), fGeneratorIndex(-1), fClusId(-1), fOrig(0)
{
  // Constructor.
}
  
//_________________________________________________________________________________________________
AliPicoTrack::AliPicoTrack(const AliPicoTrack &pc) :
  AliVTrack(pc),
  fPt(pc.fPt), fEta(pc.fEta), fPhi(pc.fPhi), fM(pc.fM),
  fQ(pc.fQ), fLabel(pc.fLabel), fTrackType(pc.fTrackType),  
  fEtaEmc(pc.fEtaEmc), fPhiEmc(pc.fPhiEmc), fPtEmc(pc.fPtEmc), fEmcal(pc.fEmcal), fFlag(pc.fFlag), fGeneratorIndex(pc.fGeneratorIndex),
  fClusId(pc.fClusId), fOrig(pc.fOrig)
{
  // Constructor.
}

//_________________________________________________________________________________________________
AliPicoTrack &AliPicoTrack::operator=(const AliPicoTrack &pc)
{
  // Assignment operator.

  if (this!=&pc) {
    AliVTrack::operator=(pc);
    fPt     = pc.fPt;
    fEta    = pc.fEta;
    fPhi    = pc.fPhi;
    fM      = pc.fM;
    fQ      = pc.fQ;
    fLabel  = pc.fLabel;
    fTrackType = pc.fTrackType;
    fEtaEmc = pc.fEtaEmc;
    fPhiEmc = pc.fPhiEmc;
    fPtEmc  = pc.fPtEmc;
    fEmcal  = pc.fEmcal;
    fFlag  = pc.fFlag;
    fGeneratorIndex  = pc.fGeneratorIndex;
    fClusId = pc.fClusId;
    fOrig = pc.fOrig;
  }

  return *this;
}

//_________________________________________________________________________________________________
Int_t AliPicoTrack::Compare(const TObject* obj) const
{
  // Compare this class with an other instance of this class used in a 
  // TCollection::Sort()/TClonesArray::Sort() which is descending.
  // Returns 0 when equal, 1 when this is smaller and -1 when bigger.

  const AliPicoTrack *t = dynamic_cast<const AliPicoTrack*>(obj);
  if (!t) 
    return -1;
  if (t->Pt()>Pt())
    return 1;
  if (t->Pt()<Pt())
    return -1;
  return 0;
}

//_________________________________________________________________________________________________
void AliPicoTrack::GetEtaPhiDiff(const AliVTrack *t, const AliVCluster *v, Double_t &phidiff, Double_t &etadiff)
{
  // Calculate phi and eta difference between track and cluster.
 
  phidiff = 999;
  etadiff = 999;

  if (!t||!v)
    return;

  if (!t->IsEMCAL())
    return;

  Double_t veta = t->GetTrackEtaOnEMCal();
  Double_t vphi = t->GetTrackPhiOnEMCal();

  Float_t pos[3] = {0};
  v->GetPosition(pos);  
  TVector3 cpos(pos); 
  Double_t ceta     = cpos.Eta();
  Double_t cphi     = cpos.Phi();
  etadiff=veta-ceta;
  phidiff=TVector2::Phi_mpi_pi(vphi-cphi);
}

//_________________________________________________________________________________________________
Byte_t AliPicoTrack::GetTrackType(const AliVTrack *t)
{
  // Get track type encoded from bits 20 and 21.

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