]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - STEER/AliVertexerTracks.cxx
Set charge-array to zero if old class version was read.
[u/mrichter/AliRoot.git] / STEER / AliVertexerTracks.cxx
index b5f9e36a8b6fd6c47fd90876b54c8d2031e35e57..ef45126ce7f5adf12e35d4811abe5c4a2ec453b5 100644 (file)
@@ -392,7 +392,13 @@ Double_t AliVertexerTracks::GetStrLinMinDist(Double_t *p0,Double_t *p1,Double_t
   Double_t x10=p0[0]-x0[0];
   Double_t y10=p0[1]-x0[1];
   Double_t z10=p0[2]-x0[2];
-  return ((x10*x10+y10*y10+z10*z10)*(x12*x12+y12*y12+z12*z12)-(x10*x12+y10*y12+z10*z12)*(x10*x12+y10*y12+z10*z12))/(x12*x12+y12*y12+z12*z12);
+  //  return ((x10*x10+y10*y10+z10*z10)*(x12*x12+y12*y12+z12*z12)-(x10*x12+y10*y12+z10*z12)*(x10*x12+y10*y12+z10*z12))/(x12*x12+y12*y12+z12*z12);
+
+  return ((y10*z12-z10*y12)*(y10*z12-z10*y12)+
+         (z10*x12-x10*z12)*(z10*x12-x10*z12)+
+         (x10*y12-y10*x12)*(x10*y12-y10*x12))
+    /(x12*x12+y12*y12+z12*z12);
+
 }
 //---------------------------------------------------------------------------
 void AliVertexerTracks::OneTrackVertFinder() 
@@ -625,7 +631,7 @@ AliESDVertex* AliVertexerTracks::RemoveTracksFromVertex(AliESDVertex *inVtx,
   TMatrixD sumWi(TMatrixD::kInverted,vV);
   TMatrixD sumWiri(sumWi,TMatrixD::kMult,rv);
 
-  Int_t nUsedTrks = inVtx->GetNContributors();
+  Int_t nUsedTrks = inVtx->GetNIndices();
   Double_t chi2 = inVtx->GetChi2();
 
   AliExternalTrackParam *track = 0;
@@ -692,7 +698,7 @@ AliESDVertex* AliVertexerTracks::RemoveTracksFromVertex(AliESDVertex *inVtx,
   AliESDVertex *outVtx = new AliESDVertex(position,cov,chi2,nUsedTrks);
   outVtx->SetTitle(inVtx->GetTitle());
   UShort_t *inindices = inVtx->GetIndices();
-  Int_t nIndices = outVtx->GetNContributors()-1;
+  Int_t nIndices = nUsedTrks;
   UShort_t *outindices = new UShort_t[nIndices];
   Int_t j=0;
   for(Int_t k=0; k<inVtx->GetNIndices(); k++) {
@@ -746,8 +752,7 @@ void AliVertexerTracks::StrLinVertexFinderMinDist(Int_t optUseWeights)
   AliExternalTrackParam *track1;
   Double_t field=GetFieldkG();
   const Int_t knacc = (Int_t)fTrkArraySel.GetEntriesFast();
-  TClonesArray *linarray = new TClonesArray("AliStrLine",1000);
-  TClonesArray &lines = *linarray;
+  static TClonesArray linarray("AliStrLine",knacc);
   for(Int_t i=0; i<knacc; i++){
     track1 = (AliExternalTrackParam*)fTrkArraySel.At(i);
     Double_t alpha=track1->GetAlpha();
@@ -769,11 +774,10 @@ void AliVertexerTracks::StrLinVertexFinderMinDist(Int_t optUseWeights)
        iel++;
       }    
     }
-    new(lines[i]) AliStrLine(pos,sigmasq,wmat,dir);     
+    new(linarray[i]) AliStrLine(pos,sigmasq,wmat,dir);     
   }
-  fVert=TrackletVertexFinder(linarray,optUseWeights);
-  linarray->Delete();
-  delete linarray;
+  fVert=TrackletVertexFinder(&linarray,optUseWeights);
+  linarray.Clear("C");
 }
 //---------------------------------------------------------------------------
 AliESDVertex AliVertexerTracks::TrackletVertexFinder(TClonesArray *lines, Int_t optUseWeights)
@@ -1397,4 +1401,3 @@ AliESDVertex* AliVertexerTracks::VertexForSelectedESDTracks(TObjArray *trkArray,
   return fCurrentVertex;
 }
 //--------------------------------------------------------------------------
-