]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HLT/trigger/AliHLTD0toKpi.cxx
added more options to run D0 finder from offline or online data (Gaute)
[u/mrichter/AliRoot.git] / HLT / trigger / AliHLTD0toKpi.cxx
index 971c188ce1e0774c4f7393083183568f911a8f62..47705ecfe0157d2a45c42336bb56d6063912a9c8 100644 (file)
@@ -4,6 +4,11 @@
 #include "TMath.h"
 #include "AliESDtrack.h"
 #include "TVector3.h"
+#include "AliAODVertex.h"
+#include "AliESDVertex.h"
+#include "TObjArray.h"
+#include "AliVertexerTracks.h"
+
 
 ClassImp(AliHLTD0toKpi)
 
@@ -72,3 +77,38 @@ Double_t AliHLTD0toKpi::pointingAngle(AliESDtrack* n, AliESDtrack* p, Double_t *
 
   return TMath::Cos(pta); 
 }
+
+AliAODVertex* AliHLTD0toKpi::ReconstructSecondaryVertex(TObjArray *trkArray, Double_t b, const AliESDVertex *v)
+{
+  
+  AliESDVertex *vertexESD = 0;
+  AliAODVertex *vertexAOD = 0;
+  
+  AliVertexerTracks *vertexer = new AliVertexerTracks(b);
+  AliESDVertex* fV1 = new AliESDVertex(*v);
+  vertexer->SetVtxStart(fV1);
+  vertexESD = (AliESDVertex*)vertexer->VertexForSelectedESDTracks(trkArray);
+  delete vertexer; vertexer=NULL;
+  
+  if(!vertexESD) return vertexAOD;
+  
+  if(vertexESD->GetNContributors()!=trkArray->GetEntriesFast()) { 
+    //AliDebug(2,"vertexing failed"); 
+    delete vertexESD; vertexESD=NULL;
+    return vertexAOD;
+  }
+
+  // convert to AliAODVertex
+  Double_t pos[3],cov[6],chi2perNDF;
+  vertexESD->GetXYZ(pos); // position
+  vertexESD->GetCovMatrix(cov); //covariance matrix
+  chi2perNDF = vertexESD->GetChi2toNDF();
+  //dispersion = vertexESD->GetDispersion();
+  delete vertexESD; vertexESD=NULL;
+
+  Int_t nprongs= trkArray->GetEntriesFast();
+  vertexAOD = new AliAODVertex(pos,cov,chi2perNDF,0x0,-1,AliAODVertex::kUndef,nprongs);
+
+  return vertexAOD;
+
+}