]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HLT/trigger/AliHLTD0toKpi.cxx
Fixes for #84564: Change in AliESDpid.cxx
[u/mrichter/AliRoot.git] / HLT / trigger / AliHLTD0toKpi.cxx
index 694ce826aef94998716b17b82e9b29b567883ab9..e8082c3f559c0932de87524c82123892432b9410 100644 (file)
@@ -10,6 +10,7 @@
 #include "AliVertexerTracks.h"
 #include "AliHLTGlobalBarrelTrack.h"
 #include "AliExternalTrackParam.h"
+#include "AliKFVertex.h"
 
 ClassImp(AliHLTD0toKpi)
 
@@ -17,7 +18,7 @@ AliHLTD0toKpi::AliHLTD0toKpi()
 {
 }
 
-Double_t AliHLTD0toKpi::InvMass(AliExternalTrackParam* d1, AliExternalTrackParam* d2)
+Double_t AliHLTD0toKpi::InvMass(const AliExternalTrackParam* d1, const AliExternalTrackParam* d2)
 {
   Double_t mpi=TDatabasePDG::Instance()->GetParticle(211)->Mass();
   Double_t mK=TDatabasePDG::Instance()->GetParticle(321)->Mass();
@@ -37,7 +38,7 @@ Double_t AliHLTD0toKpi::InvMass(AliExternalTrackParam* d1, AliExternalTrackParam
   return TMath::Sqrt((energy[0]+energy[1])*(energy[0]+energy[1])-momTot2);
 
 }
-void AliHLTD0toKpi::cosThetaStar(AliExternalTrackParam* d1, AliExternalTrackParam* d2,Double_t &D0,Double_t &D0bar)
+void AliHLTD0toKpi::CosThetaStar(const AliExternalTrackParam* d1, const AliExternalTrackParam* d2,Double_t &D0,Double_t &D0bar)
 {
   Double_t mD0 = TDatabasePDG::Instance()->GetParticle(421)->Mass();
   Double_t mpi=TDatabasePDG::Instance()->GetParticle(211)->Mass();
@@ -68,7 +69,7 @@ void AliHLTD0toKpi::cosThetaStar(AliExternalTrackParam* d1, AliExternalTrackPara
   D0bar = (qL/gamma-beta*TMath::Sqrt(pStar*pStar+mK*mK))/pStar;
 
 }
-Double_t AliHLTD0toKpi::pointingAngle(AliExternalTrackParam* n, AliExternalTrackParam* p, Double_t *pv, Double_t *sv)
+Double_t AliHLTD0toKpi::PointingAngle(const AliExternalTrackParam* n, const AliExternalTrackParam* p, const Double_t *pv, const Double_t *sv)
 {
 
   TVector3 mom(n->Px()+p->Px(),n->Py()+p->Py(),n->Pz()+p->Pz());
@@ -79,32 +80,45 @@ Double_t AliHLTD0toKpi::pointingAngle(AliExternalTrackParam* n, AliExternalTrack
   return TMath::Cos(pta); 
 }
 
-AliAODVertex* AliHLTD0toKpi::ReconstructSecondaryVertex(TObjArray *trkArray, Double_t b, AliESDVertex *v)
+AliAODVertex* AliHLTD0toKpi::ReconstructSecondaryVertex(TObjArray *trkArray, Double_t b, const AliESDVertex *v, bool useKF)
 {
   
   AliESDVertex *vertexESD = 0;
   AliAODVertex *vertexAOD = 0;
   
-  AliVertexerTracks *vertexer = new AliVertexerTracks(b);
-  vertexer->SetVtxStart(v);
-  //if(isESD){vertexESD = (AliESDVertex*)vertexer->VertexForSelectedESDTracks(trkArray);}
-  UShort_t *id = new UShort_t[2];
-  AliHLTGlobalBarrelTrack *t1 = (AliHLTGlobalBarrelTrack*) trkArray->At(0);
-  AliHLTGlobalBarrelTrack *t2 = (AliHLTGlobalBarrelTrack*) trkArray->At(1);
-  id[0]=(UShort_t) t1->GetID();
-  id[1]=(UShort_t) t2->GetID();
-  vertexESD = (AliESDVertex*)vertexer->VertexForSelectedTracks(trkArray,id);
-  delete id;
-  delete vertexer; vertexer=NULL;
-  
-  if(!vertexESD) return vertexAOD;
-  
-  if(vertexESD->GetNContributors()!=trkArray->GetEntriesFast()) { 
-    //AliDebug(2,"vertexing failed"); 
-    delete vertexESD; vertexESD=NULL;
-    return vertexAOD;
+  if(!useKF){
+    AliVertexerTracks *vertexer = new AliVertexerTracks(b);
+    AliESDVertex* vertex = new AliESDVertex(*((AliESDVertex*)v));
+    //AliESDVertex* vertex =  const_cast<AliESDVertex*>(v);
+    vertexer->SetVtxStart(vertex);
+    vertexESD = (AliESDVertex*)vertexer->VertexForSelectedESDTracks(trkArray);
+    delete vertexer; vertexer=NULL;
+    delete vertex;
+
+    if(!vertexESD) return vertexAOD;
+    
+    if(vertexESD->GetNContributors()!=trkArray->GetEntriesFast()) { 
+      //AliDebug(2,"vertexing failed"); 
+      delete vertexESD; vertexESD=NULL;
+      return vertexAOD;
+    }
+  }
+  else{
+    AliKFParticle::SetField(b);
+    
+    AliKFVertex vertexKF;
+    
+    Int_t nTrks = trkArray->GetEntriesFast();
+    for(Int_t i=0; i<nTrks; i++) {
+      AliESDtrack *esdTrack = (AliESDtrack*)trkArray->At(i);
+      AliKFParticle daughterKF(*esdTrack,211);
+      vertexKF.AddDaughter(daughterKF);
+    }
+    vertexESD = new AliESDVertex(vertexKF.Parameters(),
+                                vertexKF.CovarianceMatrix(),
+                                vertexKF.GetChi2(),
+                                vertexKF.GetNContributors());
   }
-
   // convert to AliAODVertex
   Double_t pos[3],cov[6],chi2perNDF;
   vertexESD->GetXYZ(pos); // position
@@ -119,7 +133,7 @@ AliAODVertex* AliHLTD0toKpi::ReconstructSecondaryVertex(TObjArray *trkArray, Dou
   return vertexAOD;
 
 }
-Double_t AliHLTD0toKpi::Pt(AliExternalTrackParam* d1, AliExternalTrackParam* d2)
+Double_t AliHLTD0toKpi::Pt(const AliExternalTrackParam* d1, const AliExternalTrackParam* d2)
 {
   Double_t p1[3],p2[3];
   d1->GetPxPyPz(p1);