]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG/EMCAL/AliPicoTrack.h
added using AliVVtrack:GetP, GetXYZ to classes to get rid of hidden function warning...
[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, Int_t label, Byte_t type,
14                Double_t etaemc=0, Double_t phiemc=0, Double_t ptemc=0, Bool_t ise=0, Double_t mass=0.13957);
15   AliPicoTrack(const AliPicoTrack &pc); 
16   AliPicoTrack &operator=(const AliPicoTrack &pc);
17
18   Double_t        Px()                        const { return fPt*TMath::Cos(fPhi);  }
19   Double_t        Py()                        const { return fPt*TMath::Sin(fPhi);  }
20   Double_t        Pz()                        const { return fPt*TMath::SinH(fEta); }
21   Double_t        Pt()                        const { return fPt;                   }
22   Double_t        P()                         const { return fPt*TMath::CosH(fEta); }
23   
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 fM; }
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   void            SetLabel(Int_t label)             { fLabel = label; }
40   Byte_t          GetTrackType()              const { return fTrackType;}
41   void            SetTrackType(Byte_t type)         { fTrackType = type;}
42   Int_t           PdgCode()                   const { return 0;       }
43   const Double_t *PID()                const { return 0;       }
44   Int_t           GetID()                     const { return 0;       }
45   UChar_t         GetITSClusterMap()          const { return 0;       }
46   Int_t           GetEMCALcluster()           const { return fClusId; }
47   void            SetEMCALcluster(Int_t id)         { fClusId = id;   }
48   Double_t        GetEtaEmc()                 const { return GetTrackEtaOnEMCal(); }
49   Double_t        GetPhiEmc()                 const { return GetTrackPhiOnEMCal(); }
50   Bool_t          IsEMCAL()                   const { return fEmcal;  }
51   ULong_t         GetStatus()                 const { return 0;       }
52   Bool_t          GetXYZ(Double_t *v)         const { v[0]=0; v[1]=0; v[2]=0; return 0; }
53   using AliVVtrack::GetXYZ;
54   Double_t        GetBz()                     const { return 0;       }
55   void            GetBxByBz(Double_t b[3])    const { b[0]=0;b[1]=0;b[2]=0; }
56   Bool_t          GetCovarianceXYZPxPyPz(Double_t /*cv*/[21]) const { return 0; }
57   AliVTrack      *GetTrack()                  const { return fOrig;   }
58   void            SetTrack(AliVTrack *t)            { fOrig = t;      }
59   Double_t        GetTrackPhiOnEMCal()        const { return fPhiEmc ; }
60   Double_t        GetTrackEtaOnEMCal()        const { return fEtaEmc ; }
61   Double_t        GetTrackPtOnEMCal()         const { return fPtEmc  ; }
62   Double_t        GetTrackPOnEMCal()          const { return fPtEmc*TMath::CosH(fEtaEmc);}
63   void            SetTrackPhiEtaPtOnEMCal(Double_t eta, Double_t phi, Double_t pt) { fEtaEmc = eta; fPhiEmc = phi; fPtEmc = pt;}
64   void            Clear(Option_t * /*option*/ ="")  { fClusId = -1; fOrig = 0; } 
65   Int_t           Compare(const TObject* obj) const;
66   Bool_t          PropagateToDCA(const AliVVertex *, Double_t, Double_t, Double_t *, Double_t *) { return 0; }
67
68   static void     GetEtaPhiDiff(const AliVTrack *t, const AliVCluster *v, Double_t &phidiff, Double_t &etadiff);
69   static Byte_t   GetTrackType(const AliVTrack *t);
70
71  protected:
72   Double32_t      fPt;       //[0,0,12]   pt at vertex
73   Double32_t      fEta;      //[-1,1,12]  eta at vertex
74   Double32_t      fPhi;      //[0,6.3,12] phi at vertex
75   Double32_t      fM;        //           mass
76   Byte_t          fQ;        //           charge
77   Int_t           fLabel;    //           label  
78   Byte_t          fTrackType;//           0=global track; 1=w/o SPD, w/ ITS refit; 2=w/o SPD, w/o ITS refit
79   Double32_t      fEtaEmc;   //[-1,1,12]  eta at emcal surface
80   Double32_t      fPhiEmc;   //[0,6.3,12] phi at emcal surface
81   Double32_t      fPtEmc;    //[0,0,12]   pt at emcal surface
82   Bool_t          fEmcal;    //           is true if track propagated to emcal
83   Short_t         fClusId;   //!          cluster id of matched cluster; -1 if not set
84   AliVTrack      *fOrig;     //!          ptr to original track
85
86   ClassDef(AliPicoTrack, 7) // Pico track class
87 };
88 #endif