]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG/EMCAL/AliPicoTrack.cxx
Changes from Salvatore
[u/mrichter/AliRoot.git] / PWG / EMCAL / AliPicoTrack.cxx
1 // $Id$
2 //
3 // Track class with minimal number of information 
4 // (targets at selection of primary tracks).
5 //
6 // Author: C.Loizides
7
8 #include "AliPicoTrack.h"
9 #include "AliExternalTrackParam.h"
10 #include "AliVCluster.h"
11
12 //_________________________________________________________________________________________________
13 AliPicoTrack::AliPicoTrack() :
14   AliVTrack(),
15   fPt(0), fEta(0), fPhi(0), fQ(0), fLabel(-1), fTrackType(0), fEtaEmc(0), fPhiEmc(0), fEmcal(0), fClusId(-1)
16 {
17   // Default constructor.
18 }
19
20 //_________________________________________________________________________________________________
21 AliPicoTrack::AliPicoTrack(Double_t pt, Double_t eta, Double_t phi, Byte_t q, Int_t lab, Byte_t type,
22                            Double_t etaemc, Double_t phiemc, Bool_t ise) :
23   AliVTrack(),
24   fPt(pt), fEta(eta), fPhi(phi), fQ(q), fLabel(lab), fTrackType(type), 
25   fEtaEmc(etaemc), fPhiEmc(phiemc), fEmcal(ise), fClusId(-1)
26 {
27   // Constructor.
28 }
29   
30 //_________________________________________________________________________________________________
31 AliPicoTrack::AliPicoTrack(const AliPicoTrack &pc) :
32   AliVTrack(pc),
33   fPt(pc.fPt), fEta(pc.fEta), fPhi(pc.fPhi), 
34   fQ(pc.fQ), fLabel(pc.fLabel), fTrackType(pc.fTrackType),  
35   fEtaEmc(pc.fEtaEmc), fPhiEmc(pc.fPhiEmc), fEmcal(pc.fEmcal),
36   fClusId(pc.fClusId)
37 {
38   // Constructor.
39 }
40
41 //_________________________________________________________________________________________________
42 AliPicoTrack &AliPicoTrack::operator=(const AliPicoTrack &pc)
43 {
44   // Assignment operator.
45
46   if (this!=&pc) {
47     AliVTrack::operator=(pc);
48     fPt     = pc.fPt;
49     fEta    = pc.fEta;
50     fPhi    = pc.fPhi;
51     fQ      = pc.fQ;
52     fLabel  = pc.fLabel;
53     fTrackType = pc.fTrackType;
54     fEtaEmc = pc.fEtaEmc;
55     fPhiEmc = pc.fPhiEmc;
56     fEmcal  = pc.fEmcal;
57     fClusId = pc.fClusId;
58   }
59
60   return *this;
61 }
62
63 //_________________________________________________________________________________________________
64 Int_t AliPicoTrack::Compare(const TObject* obj) const
65 {
66   // Compare this class with an other instance of this class used in a 
67   // TCollection::Sort()/TClonesArray::Sort() which is descending.
68   // Returns 0 when equal, 1 when this is smaller and -1 when bigger.
69
70   const AliPicoTrack *t = dynamic_cast<const AliPicoTrack*>(obj);
71   if (!t) 
72     return -1;
73   if (t->Pt()>Pt())
74     return 1;
75   if (t->Pt()<Pt())
76     return -1;
77   return 0;
78 }
79
80 //_________________________________________________________________________________________________
81 void AliPicoTrack::GetEtaPhiDiff(AliVTrack *t, AliVCluster *v, Double_t &phidiff, Double_t &etadiff)
82 {
83   // Calculate phi and eta difference between track and cluster.
84  
85   phidiff = 999;
86   etadiff = 999;
87
88   if (!t||!v)
89     return;
90
91   if (!t->IsEMCAL())
92     return;
93
94   Double_t veta = t->GetTrackEtaOnEMCal();
95   Double_t vphi = t->GetTrackPhiOnEMCal();
96
97   Float_t pos[3] = {0};
98   v->GetPosition(pos);  
99   TVector3 cpos(pos); 
100   Double_t ceta     = cpos.Eta();
101   Double_t cphi     = cpos.Phi();
102   etadiff=veta-ceta;
103   phidiff=TVector2::Phi_mpi_pi(vphi-cphi);
104 }