X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=STEER%2FAliVertex.cxx;h=63063f86176d5b0aba171dbfacec9c5a2266b778;hb=d1d8b044586ba01a9f58fb447f4e35fc252f2038;hp=32e92ff27fee99a64fb0f97658244677e9424cbf;hpb=c1b20d3188a9e00ef1ba7308a905a6edea3886fd;p=u%2Fmrichter%2FAliRoot.git diff --git a/STEER/AliVertex.cxx b/STEER/AliVertex.cxx index 32e92ff27fe..63063f86176 100644 --- a/STEER/AliVertex.cxx +++ b/STEER/AliVertex.cxx @@ -63,7 +63,8 @@ AliVertex::AliVertex(const AliVertex &source): TNamed(source), fSigma(source.GetDispersion()), fNContributors(source.GetNContributors()), - fNIndices(source.GetNIndices()) + fNIndices(source.GetNIndices()), + fIndices(0x0) { // // Copy constructor @@ -80,16 +81,18 @@ AliVertex &AliVertex::operator=(const AliVertex &source){ // // assignment operator // - if(&source == this) return *this; - this->SetName(source.GetName()); - this->SetTitle(source.GetTitle()); - for(Int_t i=0;i<3;i++)fPosition[i] = source.fPosition[i]; - fSigma = source.GetDispersion(); - fNContributors = source.GetNContributors(); - fNIndices = source.GetNIndices(); - if(source.fNIndices>0) { - fIndices = new UShort_t[fNIndices]; - memcpy(fIndices,source.fIndices,fNIndices*sizeof(UShort_t)); + if(&source != this){ + TNamed::operator=(source); + for(Int_t i=0;i<3;i++)fPosition[i] = source.fPosition[i]; + fSigma = source.GetDispersion(); + fNContributors = source.GetNContributors(); + fNIndices = source.GetNIndices(); + if(fIndices)delete [] fIndices; + fIndices = 0; + if(fNIndices>0) { + fIndices = new UShort_t[fNIndices]; + memcpy(fIndices,source.fIndices,fNIndices*sizeof(UShort_t)); + } } return *this; } @@ -101,7 +104,17 @@ AliVertex::~AliVertex() { // Default Destructor // delete [] fIndices; + fIndices = 0; } + +void AliVertex::Clear(Option_t* option) +{ + // Delete allocated memory + delete [] fIndices; + fIndices = 0; + TNamed::Clear(option); +} + //-------------------------------------------------------------------------- void AliVertex::GetXYZ(Double_t position[3]) const { // @@ -120,6 +133,7 @@ void AliVertex::SetIndices(Int_t nindices,UShort_t *indices) { // if(fNContributors<1) { printf("fNContributors<1"); return; } fNIndices = nindices; + delete [] fIndices; fIndices = new UShort_t[fNIndices]; for(Int_t i=0;i