Temporary fix to be able to work outside of AliAODEvent.
authormarkus <markus@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 27 Nov 2007 14:20:18 +0000 (14:20 +0000)
committermarkus <markus@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 27 Nov 2007 14:20:18 +0000 (14:20 +0000)
STEER/AliAODRecoDecay.cxx
STEER/AliAODRecoDecay.h

index d5aa302..31d0792 100644 (file)
@@ -31,6 +31,7 @@ ClassImp(AliAODRecoDecay)
 AliAODRecoDecay::AliAODRecoDecay() :
   AliVParticle(),
   fSecondaryVtx(0x0),
+  fOwnSecondaryVtx(0x0),
   fCharge(0),
   fNProngs(0), fNDCA(0), fNPID(0),
   fPx(0x0), fPy(0x0), fPz(0x0),
@@ -50,6 +51,7 @@ AliAODRecoDecay::AliAODRecoDecay(AliAODVertex *vtx2,Int_t nprongs,
                                 Double_t *d0) :
   AliVParticle(),
   fSecondaryVtx(vtx2),
+  fOwnSecondaryVtx(0x0),
   fCharge(charge),
   fNProngs(nprongs), fNDCA(0), fNPID(0),
   fPx(0x0), fPy(0x0), fPz(0x0),
@@ -79,6 +81,7 @@ AliAODRecoDecay::AliAODRecoDecay(AliAODVertex *vtx2,Int_t nprongs,
                                 Double_t *d0) :
   AliVParticle(),
   fSecondaryVtx(vtx2),
+  fOwnSecondaryVtx(0x0),
   fCharge(charge),
   fNProngs(nprongs), fNDCA(0), fNPID(0),
   fPx(0x0), fPy(0x0), fPz(0x0),
@@ -98,6 +101,7 @@ AliAODRecoDecay::AliAODRecoDecay(AliAODVertex *vtx2,Int_t nprongs,
 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),
@@ -138,6 +142,7 @@ AliAODRecoDecay &AliAODRecoDecay::operator=(const AliAODRecoDecay &source)
   //
   if(&source == this) return *this;
   fSecondaryVtx = source.fSecondaryVtx;
+  fOwnSecondaryVtx = source.fOwnSecondaryVtx;
   fCharge = source.fCharge;
   fNProngs = source.fNProngs;
   fNDCA = source.fNDCA;
@@ -171,12 +176,13 @@ AliAODRecoDecay::~AliAODRecoDecay() {
   //  
   // 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 
index fac92c1..bb88c0f 100644 (file)
@@ -36,7 +36,9 @@ class AliAODRecoDecay : public AliVParticle {
   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;}
@@ -153,6 +155,7 @@ class AliAODRecoDecay : public AliVParticle {
  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 -
@@ -179,7 +182,6 @@ class AliAODRecoDecay : public AliVParticle {
   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.)