AliAODRecoDecay::AliAODRecoDecay() :
AliVParticle(),
fSecondaryVtx(0x0),
+ fOwnSecondaryVtx(0x0),
fCharge(0),
fNProngs(0), fNDCA(0), fNPID(0),
fPx(0x0), fPy(0x0), fPz(0x0),
Double_t *d0) :
AliVParticle(),
fSecondaryVtx(vtx2),
+ fOwnSecondaryVtx(0x0),
fCharge(charge),
fNProngs(nprongs), fNDCA(0), fNPID(0),
fPx(0x0), fPy(0x0), fPz(0x0),
Double_t *d0) :
AliVParticle(),
fSecondaryVtx(vtx2),
+ fOwnSecondaryVtx(0x0),
fCharge(charge),
fNProngs(nprongs), fNDCA(0), fNPID(0),
fPx(0x0), fPy(0x0), fPz(0x0),
AliAODRecoDecay::AliAODRecoDecay(const AliAODRecoDecay &source) :
AliVParticle(source),
fSecondaryVtx(source.fSecondaryVtx),
+ fOwnSecondaryVtx(source.fOwnSecondaryVtx),
fCharge(source.fCharge),
fNProngs(source.fNProngs), fNDCA(source.fNDCA), fNPID(source.fNPID),
fPx(0x0), fPy(0x0), fPz(0x0),
//
if(&source == this) return *this;
fSecondaryVtx = source.fSecondaryVtx;
+ fOwnSecondaryVtx = source.fOwnSecondaryVtx;
fCharge = source.fCharge;
fNProngs = source.fNProngs;
fNDCA = source.fNDCA;
//
// Default Destructor
//
- if(fPx) delete [] fPx;
- if(fPy) delete [] fPy;
- if(fPz) delete [] fPz;
- if(fd0) delete [] fd0;
- if(fPID) delete [] fPID;
- if(fDCA) delete [] fDCA;
+ if(fPx) { delete [] fPx; fPx=NULL; }
+ if(fPy) { delete [] fPy; fPy=NULL; }
+ if(fPz) { delete [] fPz; fPz=NULL; }
+ if(fd0) { delete [] fd0; fd0=NULL; }
+ if(fPID) { delete [] fPID; fPID=NULL; }
+ if(fDCA) { delete [] fDCA; fDCA=NULL; }
+ if(fOwnSecondaryVtx) { delete fOwnSecondaryVtx; fOwnSecondaryVtx=NULL; }
}
//----------------------------------------------------------------------------
Double_t AliAODRecoDecay::Alpha() const
Double_t GetSecVtxZ() const {return GetSecondaryVtx()->GetZ();}
Double_t RadiusSecVtx() const;
void SetSecondaryVtx(AliAODVertex *vtx2) {fSecondaryVtx=vtx2;}
- AliAODVertex* GetSecondaryVtx() const {return (AliAODVertex*)fSecondaryVtx.GetObject();}
+ AliAODVertex* GetSecondaryVtx() const { return (((AliAODVertex*)fSecondaryVtx.GetObject()) ? (AliAODVertex*)fSecondaryVtx.GetObject() : GetOwnSecondaryVtx()); }
+ void SetOwnSecondaryVtx(AliAODVertex *vtx2) {fOwnSecondaryVtx=vtx2;}
+ AliAODVertex* GetOwnSecondaryVtx() const {return fOwnSecondaryVtx;}
void GetSecondaryVtx(Double_t vtx[3]) const;
Double_t GetReducedChi2() const {return GetSecondaryVtx()->GetChi2perNDF();}
Short_t Charge() const {return fCharge;}
protected:
TRef fSecondaryVtx; // decay vertex
+ AliAODVertex *fOwnSecondaryVtx; // temporary solution (to work outside AliAODEvent)
Short_t fCharge; // charge, use this convention for prongs charges:
// if(charge== 0) even-index prongs are +
// odd-index prongs are -
Int_t fRunNumber;
// TO BE PUT IN SPECIAL MC CLASS
//Bool_t fSignal; // TRUE if signal, FALSE if background (for simulation)
- //Int_t fEvent; // number of the event this candidate comes from
//Int_t fTrkNum[2]; // numbers of the two decay tracks
//Int_t fPdg[2]; // PDG codes of the two tracks (for sim.)
//Int_t fMum[2]; // PDG codes of the mothers (for sim.)