X-Git-Url: http://git.uio.no/git/?p=u%2Fmrichter%2FAliRoot.git;a=blobdiff_plain;f=STEER%2FAliVertex.cxx;h=593ff60ed91b00afe804f022920b79a6bde2c0f8;hp=fbdb2abb87a1b090ad295181a55452c05ae53e05;hb=316c6cd94f218f4f522bb4f1cdc3219a07a1b7a8;hpb=2d57349e355a52578469d57be2aa61a0b3af6ea0 diff --git a/STEER/AliVertex.cxx b/STEER/AliVertex.cxx index fbdb2abb87a..593ff60ed91 100644 --- a/STEER/AliVertex.cxx +++ b/STEER/AliVertex.cxx @@ -27,37 +27,53 @@ ClassImp(AliVertex) //-------------------------------------------------------------------------- -AliVertex::AliVertex() : TNamed() { +AliVertex::AliVertex() : + TNamed(), + fSigma(0), + fNContributors(0), + fNIndices(0) +{ // // Default Constructor, set everything to 0 // for(Int_t k=0;k<3;k++) fPosition[k] = 0; - fSigma = 0; - fNContributors=0; + fIndices = 0; } //-------------------------------------------------------------------------- AliVertex::AliVertex(Double_t position[3],Double_t dispersion, - Int_t nContributors): TNamed() { + Int_t nContributors): + TNamed(), + fSigma(dispersion), + fNContributors(nContributors), + fNIndices(0) +{ // // Standard Constructor // for(Int_t k=0;k<3;k++) fPosition[k] = position[k]; - fSigma = dispersion; - fNContributors = nContributors; + fIndices = 0; SetName("BaseVertex"); } //-------------------------------------------------------------------------- -AliVertex::AliVertex(const AliVertex &source): TNamed(source) { +AliVertex::AliVertex(const AliVertex &source): + TNamed(source), + fSigma(source.GetDispersion()), + fNContributors(source.GetNContributors()), + fNIndices(source.GetNIndices()), + fIndices(0x0) +{ // // Copy constructor // for(Int_t i=0;i<3;i++)fPosition[i] = source.fPosition[i]; - fSigma = source.GetDispersion(); - fNContributors = source.GetNContributors(); + if(source.fNIndices>0) { + fIndices = new UShort_t[fNIndices]; + memcpy(fIndices,source.fIndices,fNIndices*sizeof(UShort_t)); + } } //-------------------------------------------------------------------------- @@ -65,12 +81,19 @@ 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(); + 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; } @@ -80,7 +103,8 @@ AliVertex::~AliVertex() { // // Default Destructor // - + delete [] fIndices; + fIndices = 0; } //-------------------------------------------------------------------------- void AliVertex::GetXYZ(Double_t position[3]) const { @@ -94,6 +118,29 @@ void AliVertex::GetXYZ(Double_t position[3]) const { return; } //-------------------------------------------------------------------------- +void AliVertex::SetIndices(Int_t nindices,UShort_t *indices) { +// +// Set indices of tracks used for vertex determination +// + if(fNContributors<1) { printf("fNContributors<1"); return; } + fNIndices = nindices; + delete [] fIndices; + fIndices = new UShort_t[fNIndices]; + for(Int_t i=0;i