2011 track cuts
[u/mrichter/AliRoot.git] / PWG / EMCAL / AliPicoTrack.h
1 #ifndef AliPicoTrack_H
2 #define AliPicoTrack_H
3
4 // $Id$
5
6 #include "AliVTrack.h"
7 #include <TMath.h>
8 class AliVCluster;
9
10 class AliPicoTrack: public AliVTrack {
11  public:
12   AliPicoTrack();
13   AliPicoTrack(Double_t pt, Double_t eta, Double_t phi, Byte_t q, Byte_t lab, 
14                Double_t etaemc=0, Double_t phiemc=0, Bool_t ise=0);
15   ~AliPicoTrack() {;}
16   AliPicoTrack(const AliPicoTrack &pc); 
17   AliPicoTrack &operator=(const AliPicoTrack &pc);
18
19   Double_t Px()                        const { return fPt*TMath::Cos(fPhi);  }
20   Double_t Py()                        const { return fPt*TMath::Sin(fPhi);  }
21   Double_t Pz()                        const { return fPt*TMath::SinH(fEta); }
22   Double_t Pt()                        const { return fPt;                   }
23   Double_t P()                         const { return fPt*TMath::CosH(fEta); }
24   Bool_t   PxPyPz(Double_t p[3])       const { p[0]=Px();p[1]=Py();p[2]=Pz(); return 1;         }
25   Bool_t   GetPxPyPz(Double_t p[3])    const { p[0]=Px();p[1]=Py();p[2]=Pz(); return 1;         }
26   Double_t Xv()                        const { return 0.;      }
27   Double_t Yv()                        const { return 0.;      }
28   Double_t Zv()                        const { return 0.;      }
29   Bool_t   XvYvZv(Double_t x[3])       const { x[0]=0;x[1]=0;x[2]=0; return 1;                  }
30   Double_t OneOverPt()                 const { return 1./fPt;  }
31   Double_t Phi()                       const { return fPhi;    }
32   Double_t Theta()                     const { return 2*TMath::ATan(TMath::Exp(-fEta));         }
33   Double_t E()                         const { Double_t p=P(); return TMath::Sqrt(M()*M()+p*p); }
34   Double_t M()                         const { return 0.13957; }
35   Double_t Eta()                       const { return fEta;    }
36   Double_t Y()                         const { return 0.5*TMath::Log((E()+Pz())/(E()-Pz()));  }
37   Short_t  Charge()                    const { return (char)fQ;}
38   Int_t    GetLabel()                  const { return fLabel;  }
39   Int_t    PdgCode()                   const { return 0;       }
40   const Double_t *PID()                const { return 0;       }
41   Int_t    GetID()                     const { return 0;       }
42   UChar_t  GetITSClusterMap()          const { return 0;       }
43   Int_t    GetEMCALcluster()           const { return fClusId; }
44   Double_t GetEtaEmc()                 const { return GetTrackEtaOnEMCal(); }
45   Double_t GetPhiEmc()                 const { return GetTrackPhiOnEMCal(); }
46   Bool_t   IsEMCAL()                   const { return fEmcal;  }
47   ULong_t  GetStatus()                 const { return 0;       }
48   Bool_t   GetXYZ(Double_t *v)         const { v[0]=0; v[1]=0; v[2]=0; return 0; }
49   Double_t GetBz()                     const { return 0;       }
50   void     GetBxByBz(Double_t b[3])    const { b[0]=0;b[1]=0;b[2]=0; }
51   Bool_t   GetCovarianceXYZPxPyPz(Double_t /*cv*/[21]) const { return 0; }
52   Int_t    Compare(const TObject* obj) const;
53   Bool_t   PropagateToDCA(const AliVVertex *, Double_t, Double_t, Double_t *, Double_t *) { return 0; }
54
55   virtual Double_t GetTrackPhiOnEMCal() const { return fPhiEmc ; }
56   virtual Double_t GetTrackEtaOnEMCal() const { return fEtaEmc ; }
57   virtual void SetTrackPhiEtaOnEMCal(Double_t eta, Double_t phi) { fEtaEmc = eta; fPhiEmc = phi; }
58
59   void     SetEMCALcluster(Int_t id)         { fClusId = id;   }
60
61   static void GetEtaPhiDiff(AliVTrack *t, AliVCluster *v, Double_t &phidiff, Double_t &etadiff);
62
63  protected:
64   Double32_t       fPt;       //[0,0,12]   pt at vertex
65   Double32_t       fEta;      //[-1,1,12]  eta at vertex
66   Double32_t       fPhi;      //[0,6.3,12] phi at vertex
67   Byte_t           fQ;        //           charge
68   Byte_t           fLabel;    //           label
69   Double32_t       fEtaEmc;   //[-1,1,12]  eta at emcal surface
70   Double32_t       fPhiEmc;   //[0,6.3,12] phi at emcal surface
71   Bool_t           fEmcal;    //           is true if track propagated to emcal
72   Short_t          fClusId;   //!          cluster id of matched cluster; -1 if not set
73
74   ClassDef(AliPicoTrack, 2) // Pico track class
75 };
76 #endif