X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=STEER%2FAliAODRecoDecay.h;h=c7ca7e219d974d497aa3228824532c896589b239;hb=2639cc20edd6a8d2ac15a26a13fbcb8283d206e6;hp=773bc4d4c3a26be9af05c9c8b01063cb71def1f6;hpb=0fc99302ee1938af5236a1fb6d02da81295d111d;p=u%2Fmrichter%2FAliRoot.git diff --git a/STEER/AliAODRecoDecay.h b/STEER/AliAODRecoDecay.h index 773bc4d4c3a..c7ca7e219d9 100644 --- a/STEER/AliAODRecoDecay.h +++ b/STEER/AliAODRecoDecay.h @@ -11,10 +11,12 @@ #include #include +#include #include "AliAODVertex.h" -#include "AliVParticle.h" +#include "AliAODTrack.h" +#include "AliVTrack.h" -class AliAODRecoDecay : public AliVParticle { +class AliAODRecoDecay : public AliVTrack { public: @@ -45,6 +47,13 @@ class AliAODRecoDecay : public AliVParticle { Short_t GetCharge() const {return fCharge;} void SetCharge(Short_t charge=0) {fCharge=charge;} + // Match to MC signal: + // check if this candidate is matched to a MC signal + // If no, return -1 + // If yes, return label (>=0) of the AliAODMCParticle + // if ndgCk>0, checks also daughters PDGs + Int_t MatchToMC(Int_t pdgabs,TClonesArray *mcArray,Int_t ndgCk=0,Int_t *pdgDg=0) const; + // PID void SetPID(Int_t nprongs,Double_t *pid); Double_t *GetPID() const { return fPID; } @@ -62,6 +71,13 @@ class AliAODRecoDecay : public AliVParticle { Int_t GetEventNumber() const { return fEventNumber; } Int_t GetRunNumber() const { return fRunNumber; } + // methods of AliVTrack + virtual Int_t GetID() const { return -1; } + virtual UChar_t GetITSClusterMap() const; + virtual ULong_t GetStatus() const; + virtual Bool_t GetXYZ(Double_t *p) const { return XvYvZv(p); } + virtual Bool_t GetCovarianceXYZPxPyPz(Double_t cv[21]) const; + // kinematics & topology Double_t Px() const; Double_t Py() const; @@ -105,10 +121,11 @@ class AliAODRecoDecay : public AliVParticle { Double_t ImpParXY(AliAODVertex *vtx1) const; // prongs - //Int_t GetNProngs() const {return GetSecondaryVtx()->GetNDaughters();} - Int_t GetNProngs() const {return fNProngs;} + Int_t GetNProngs() const {return fNProngs;} + Int_t GetNDaughters() const {return GetSecondaryVtx()->GetNDaughters();} + TObject *GetDaughter(Int_t i) const {return (GetNDaughters()>i ? GetSecondaryVtx()->GetDaughter(i) : 0x0);} - Short_t ChargeProng(Int_t ip) const; + Short_t ChargeProng(Int_t ip) const; Double_t Getd0Prong(Int_t ip) const {return fd0[ip];} Double_t Prodd0d0(Int_t ip1=0,Int_t ip2=0) const {return fd0[ip1]*fd0[ip2];} Double_t PxProng(Int_t ip) const {return fPx[ip];} @@ -151,9 +168,12 @@ class AliAODRecoDecay : public AliVParticle { {printf("Dummy function; use AliAODRecoDecay::Y(UInt_t pdg) instead"); return (Double_t)-999.;} Double_t M() const {printf("Dummy function"); return (Double_t)-999.;} - + Int_t GetLabel() const {return -1;} protected: + Int_t MatchToMC(Int_t pdgabs,TClonesArray *mcArray,Int_t dgLabels[10],Int_t ndg,Int_t ndgCk=0,Int_t *pdgDg=0) const; + Int_t MatchToMC(Int_t pdgabs,TClonesArray *mcArray,Int_t dgLabels[10]) const { return MatchToMC(pdgabs,mcArray,dgLabels,GetNDaughters()); } + TRef fSecondaryVtx; // decay vertex AliAODVertex *fOwnSecondaryVtx; // temporary solution (to work outside AliAODEvent) Short_t fCharge; // charge, use this convention for prongs charges: @@ -188,7 +208,7 @@ class AliAODRecoDecay : public AliVParticle { // - ClassDef(AliAODRecoDecay,3) // base class for AOD reconstructed decays + ClassDef(AliAODRecoDecay,4) // base class for AOD reconstructed decays }; @@ -300,6 +320,7 @@ inline void AliAODRecoDecay::SetDCAs(Int_t nDCA,Double_t *dca) return; } if(fDCA) delete [] fDCA; + fNDCA = nDCA; fDCA = new Double32_t[nDCA]; for(Int_t i=0;i