#include <TMath.h>
#include <TRef.h>
+#include <TClonesArray.h>
#include "AliAODVertex.h"
#include "AliAODTrack.h"
#include "AliVTrack.h"
+class AliVVertex;
+
class AliAODRecoDecay : public AliVTrack {
public:
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; }
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;
+ virtual Bool_t PropagateToDCA(const AliVVertex* vtx,Double_t b,Double_t maxd,Double_t dz[2],Double_t covar[3]);
// kinematics & topology
Double_t Px() const;
Double_t M() const
{printf("Dummy function"); return (Double_t)-999.;}
Int_t GetLabel() const {return -1;}
+ Int_t PdgCode() const {return 0;}
+
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:
#endif
+