]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HLT/global/AliHLTGlobalTrackMerger.cxx
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / HLT / global / AliHLTGlobalTrackMerger.cxx
index ab3b6cca916633fa639a347a1a9d7d74802ff6f3..ae667208c6234163a3929efe06bc729eb61b0574 100644 (file)
  * provided "as is" without express or implied warranty.                  *
  **************************************************************************/
 
-/** @file   AliHLTGlobalTrackMerger.cxx
-    @author Jacek Otwinowski
-    @date   
-    @brief  The HLT global merger base class
-*/
+/ @file   AliHLTGlobalTrackMerger.cxx
+//  @author Jacek Otwinowski
+//  @date   
+//  @brief  The HLT global merger base class
+// 
 
-#include "AliHLTTPCTransform.h"
-#include "AliHLTTPCTrack.h"
-#include "AliHLTTPCTrackSegmentData.h"
-#include "AliHLTTPCTransform.h"
-#include "AliHLTTPCTrackArray.h"
+//#include "AliTPCReconstructor.h"
 
-#include "AliTPCReconstructor.h"
-
-#include "AliTRDtrackV1.h"
 #include "AliESDEvent.h"
 #include "AliESDVertex.h"
+#include "AliESDtrack.h"
 #include "AliTracker.h"
 #include "TTreeStream.h"
 
@@ -62,9 +56,9 @@ AliHLTGlobalTrackMerger::AliHLTGlobalTrackMerger()
   // V(0.,0.,0.), sigmaVx=sigmaVy=5.e-3 [cm], sigmaVz=5.3 [cm]    
   fVertex = new AliESDVertex;
 
-  if (AliTPCReconstructor::StreamLevel()>0) {
-    fDebugStreamer = new TTreeSRedirector("debugGlobalMerger.root");
-  }
+  // if (AliTPCReconstructor::StreamLevel()>0) {
+  //   fDebugStreamer = new TTreeSRedirector("debugGlobalMerger.root");
+  // }
 
 }
 
@@ -76,83 +70,6 @@ AliHLTGlobalTrackMerger::~AliHLTGlobalTrackMerger()
   if(fDebugStreamer) delete fDebugStreamer; fDebugStreamer =0;
 }
 
-//_____________________________________________________________________________
-Bool_t AliHLTGlobalTrackMerger::LoadTracks(TClonesArray *aTRDTracks, AliESDEvent *esdEvent)
-{
-  // load TRD tracks
-  if(!aTRDTracks) return kFALSE;
-
-  Int_t entries = aTRDTracks->GetEntriesFast();
-  for(Int_t i=0; i<entries; ++i) {
-    AliTRDtrackV1 *track = (AliTRDtrackV1*)aTRDTracks->At(i);
-    if(!track) continue;
-
-    FillTRDESD(track,AliESDtrack::kTRDin,esdEvent); 
-  }
-
-return kTRUE;
-}
-
-//_____________________________________________________________________________
-Bool_t AliHLTGlobalTrackMerger::LoadTracks(AliHLTTPCTrackArray *aTPCTracks, AliESDEvent *esdEvent)
-{
-  // load TPC tracks
-  if(!aTPCTracks) return kFALSE;
-
-  for (Int_t i=0; i<aTPCTracks->GetNTracks();++i) {
-    AliHLTTPCTrack* track=(*aTPCTracks)[i];
-    if(!track) continue;
-
-    // convert to the AliKalmanTrack 
-    Int_t local=track->Convert2AliKalmanTrack();
-    if(local<0) continue;
-
-    FillTPCESD(track,AliESDtrack::kTPCin,esdEvent); 
-  }
-
-return kTRUE;
-}
-
-//_____________________________________________________________________________
-void AliHLTGlobalTrackMerger::FillTPCESD(AliHLTTPCTrack *tpcTrack, ULong_t flags, AliESDEvent* esdEvent)
-{
-  // create AliESDtracks from AliHLTTPCTracks 
-  // and add them to AliESDEvent
-
-  if(!tpcTrack) return;
-  if(!esdEvent) return;
-
-  AliESDtrack iotrack;
-  iotrack.UpdateTrackParams(tpcTrack,flags);
-
-  Float_t points[4]={tpcTrack->GetFirstPointX(),tpcTrack->GetFirstPointY(),tpcTrack->GetLastPointX(),tpcTrack->GetLastPointY()};
-  if(tpcTrack->GetSector() == -1){ // Set first and last points for global tracks
-    Double_t s = TMath::Sin( tpcTrack->GetAlpha() );
-    Double_t c = TMath::Cos( tpcTrack->GetAlpha() );
-    points[0] =  tpcTrack->GetFirstPointX()*c + tpcTrack->GetFirstPointY()*s;
-    points[1] = -tpcTrack->GetFirstPointX()*s + tpcTrack->GetFirstPointY()*c;
-    points[2] =  tpcTrack->GetLastPointX() *c + tpcTrack->GetLastPointY() *s;
-    points[3] = -tpcTrack->GetLastPointX() *s + tpcTrack->GetLastPointY() *c;
-  }
-  iotrack.SetTPCPoints(points);
-
-  esdEvent->AddTrack(&iotrack);
-}
-//_____________________________________________________________________________
-void AliHLTGlobalTrackMerger::FillTRDESD(AliTRDtrackV1* trdTrack, ULong_t flags, AliESDEvent* esdEvent)
-{
-  // create AliESDtracks from AliTRDtrackV1
-  // and add them to AliESDEvent
-
-  if(!trdTrack) return;
-  if(!esdEvent) return;
-
-  AliESDtrack iotrack;
-  iotrack.UpdateTrackParams(trdTrack,flags);
-  esdEvent->AddTrack(&iotrack);
-}
-
 //_____________________________________________________________________________
 Bool_t AliHLTGlobalTrackMerger::Merge(AliESDEvent* esdEvent)
 {
@@ -160,7 +77,7 @@ Bool_t AliHLTGlobalTrackMerger::Merge(AliESDEvent* esdEvent)
   // 1. propagate TPC track to the radius between TPC and TRD
   // 2. propagate TRD track to the same radius between TPC and TRD
   // 3. matches TPC and TRD tracks at the radius
-  // 4. propagate matched TPC and TRD track to the merging radius (first measured TPC point - x coordinate)
+  // 4. propagate matched TRD track to the merging radius (first measured TPC point - x coordinate)
   // 5. merge TPC and TRD track parameters at the merging radius 
   // 6. create AliESDtrack from merged tracks
   // 7. add AliESDtrack to AliESDEvent
@@ -173,6 +90,7 @@ Bool_t AliHLTGlobalTrackMerger::Merge(AliESDEvent* esdEvent)
   Bool_t isOk = kFALSE;
   Bool_t isMatched = kFALSE;
   AliESDtrack *track=0;
+  AliExternalTrackParam *extTPCTrack = 0;
 
   Int_t nTracks = esdEvent->GetNumberOfTracks(); 
   HLTWarning("nTracks %d",nTracks);
@@ -186,19 +104,23 @@ Bool_t AliHLTGlobalTrackMerger::Merge(AliESDEvent* esdEvent)
     // TPC tracks
     if((track->GetStatus()&AliESDtrack::kTPCin)==0) continue;
     AliESDtrack *tpcTrack = track;
-
     nTracksTPC++;
 
+    // create external tpc track param (needed to propagate to matching radius) 
+    if ((extTPCTrack = new AliExternalTrackParam(*tpcTrack)) == 0) continue; 
+
     kMergeRadius = tpcTrack->GetTPCPoints(0); // [cm] merging at first measured TPC point
 
     HLTInfo("-------------------------------------------------------------------------------------");
-    HLTInfo("-----tpc track before matching: alpha %f, x %f, y, %f, z %f, snp %f, tgl %f, 1pt %f",tpcTrack->GetAlpha(),tpcTrack->GetX(),tpcTrack->GetY(),tpcTrack->GetZ(),tpcTrack->GetSnp(),tpcTrack->GetTgl(),tpcTrack->GetSigned1Pt());
+    //HLTInfo("-----tpc track before matching: alpha %f, x %f, y, %f, z %f, snp %f, tgl %f, 1pt %f",tpcTrack->GetAlpha(),tpcTrack->GetX(),tpcTrack->GetY(),tpcTrack->GetZ(),tpcTrack->GetSnp(),tpcTrack->GetTgl(),tpcTrack->GetSigned1Pt());
+    HLTInfo("-----ext tpc track before matching: alpha %f, x %f, y, %f, z %f, snp %f, tgl %f, 1pt %f",extTPCTrack->GetAlpha(),extTPCTrack->GetX(),extTPCTrack->GetY(),extTPCTrack->GetZ(),extTPCTrack->GetSnp(),extTPCTrack->GetTgl(),extTPCTrack->GetSigned1Pt());
 
     // propagate tracks to the matching radius 
-    isOk = AliTracker::PropagateTrackTo(tpcTrack,kMatchRadius,tpcTrack->GetMass(),kMaxStep,kFALSE);
+    //isOk = AliTracker::PropagateTrackTo(tpcTrack,kMatchRadius,tpcTrack->GetMass(),kMaxStep,kFALSE);
+    isOk = AliTracker::PropagateTrackTo(extTPCTrack,kMatchRadius,tpcTrack->GetMass(),kMaxStep,kFALSE);
     if(!isOk) continue;
 
-    HLTInfo("-----tpc track at matching radius: alpha %f, x %f, y, %f, z %f, snp %f, tgl %f, 1pt %f",tpcTrack->GetAlpha(),tpcTrack->GetX(),tpcTrack->GetY(),tpcTrack->GetZ(),tpcTrack->GetSnp(),tpcTrack->GetTgl(),tpcTrack->GetSigned1Pt());
+    HLTInfo("-----ext tpc track at matching radius: alpha %f, x %f, y, %f, z %f, snp %f, tgl %f, 1pt %f",extTPCTrack->GetAlpha(),extTPCTrack->GetX(),extTPCTrack->GetY(),extTPCTrack->GetZ(),extTPCTrack->GetSnp(),extTPCTrack->GetTgl(),extTPCTrack->GetSigned1Pt());
 
     Int_t nTracksTRD =0;
     for(Int_t jTrack = 0; jTrack<nTracks; ++jTrack) 
@@ -209,41 +131,43 @@ Bool_t AliHLTGlobalTrackMerger::Merge(AliESDEvent* esdEvent)
       // TRD tracks
       if((track->GetStatus()&AliESDtrack::kTRDin)==0) continue;
       AliESDtrack *trdTrack = track;
-
       nTracksTRD++;
 
-      HLTInfo("1-----trd track before matching: alpha %f, x %f, y %f, z %f, snp %f, tgl %f, 1pt %f",trdTrack->GetAlpha(),trdTrack->GetX(),trdTrack->GetY(),trdTrack->GetZ(),trdTrack->GetSnp(),trdTrack->GetTgl(),trdTrack->GetSigned1Pt());
+      HLTInfo("-----trd track before matching: alpha %f, x %f, y %f, z %f, snp %f, tgl %f, 1pt %f",trdTrack->GetAlpha(),trdTrack->GetX(),trdTrack->GetY(),trdTrack->GetZ(),trdTrack->GetSnp(),trdTrack->GetTgl(),trdTrack->GetSigned1Pt());
 
       isOk = AliTracker::PropagateTrackTo(trdTrack,kMatchRadius,trdTrack->GetMass(),kMaxStep,kFALSE);
       if(!isOk) continue;
 
-      HLTInfo("1-----trd track at matching radius: alpha %f, x %f, y %f, z %f, snp %f, tgl %f, 1pt %f",trdTrack->GetAlpha(),trdTrack->GetX(),trdTrack->GetY(),trdTrack->GetZ(),trdTrack->GetSnp(),trdTrack->GetTgl(),trdTrack->GetSigned1Pt());
+      HLTInfo("-----trd track at matching radius: alpha %f, x %f, y %f, z %f, snp %f, tgl %f, 1pt %f",trdTrack->GetAlpha(),trdTrack->GetX(),trdTrack->GetY(),trdTrack->GetZ(),trdTrack->GetSnp(),trdTrack->GetTgl(),trdTrack->GetSigned1Pt());
 
       // match TPC and TRD tracks
-      isMatched = MatchTracks(tpcTrack,trdTrack);
+      //isMatched = MatchTracks(tpcTrack,trdTrack);
+      isMatched = MatchTracks(extTPCTrack,trdTrack);
       if(!isMatched) continue;
 
-      HLTInfo("2-----tpc track after matching: alpha %f, x %f, y %f, z %f, snp %f, tgl %f, 1pt %f",tpcTrack->GetAlpha(),tpcTrack->GetX(),tpcTrack->GetY(),tpcTrack->GetZ(),tpcTrack->GetSnp(),tpcTrack->GetTgl(),tpcTrack->GetSigned1Pt());
-      HLTInfo("2-----trd track after matching: alpha %f, x %f, y %f, z %f, snp %f, tgl %f, 1pt %f",trdTrack->GetAlpha(),trdTrack->GetX(),trdTrack->GetY(),trdTrack->GetZ(),trdTrack->GetSnp(),trdTrack->GetTgl(),trdTrack->GetSigned1Pt());
-
-      // propagate tracks to the merging radius 
-      isOk = AliTracker::PropagateTrackTo(tpcTrack,kMergeRadius,tpcTrack->GetMass(),kMaxStep,kFALSE);
-      if(!isOk) continue;
+      //HLTInfo("-----tpc track after matching: alpha %f, x %f, y %f, z %f, snp %f, tgl %f, 1pt %f",tpcTrack->GetAlpha(),tpcTrack->GetX(),tpcTrack->GetY(),tpcTrack->GetZ(),tpcTrack->GetSnp(),tpcTrack->GetTgl(),tpcTrack->GetSigned1Pt());
+      HLTInfo("-----ext tpc track after matching: alpha %f, x %f, y %f, z %f, snp %f, tgl %f, 1pt %f",extTPCTrack->GetAlpha(),extTPCTrack->GetX(),extTPCTrack->GetY(),extTPCTrack->GetZ(),extTPCTrack->GetSnp(),extTPCTrack->GetTgl(),extTPCTrack->GetSigned1Pt());
+      HLTInfo("-----trd track after matching: alpha %f, x %f, y %f, z %f, snp %f, tgl %f, 1pt %f",trdTrack->GetAlpha(),trdTrack->GetX(),trdTrack->GetY(),trdTrack->GetZ(),trdTrack->GetSnp(),trdTrack->GetTgl(),trdTrack->GetSigned1Pt());
 
+      // propagate TRD tracks to the merging radius 
+      //isOk = AliTracker::PropagateTrackTo(tpcTrack,kMergeRadius,tpcTrack->GetMass(),kMaxStep,kFALSE);
+      //if(!isOk) continue;
       isOk = AliTracker::PropagateTrackTo(trdTrack,kMergeRadius,trdTrack->GetMass(),kMaxStep,kFALSE);
       if(!isOk) continue;
 
-      HLTInfo("3-----tpc before merging: alpha %f, x %f, y %f, z %f, snp %f, tgl %f, 1pt %f",tpcTrack->GetAlpha(),tpcTrack->GetX(),tpcTrack->GetY(),tpcTrack->GetZ(),tpcTrack->GetSnp(),tpcTrack->GetTgl(),tpcTrack->GetSigned1Pt());
-      HLTInfo("3-----trd before merging: alpha %f, x %f, y %f, z %f, snp %f, tgl %f, 1pt %f",trdTrack->GetAlpha(),trdTrack->GetX(),trdTrack->GetY(),trdTrack->GetZ(),trdTrack->GetSnp(),trdTrack->GetTgl(),trdTrack->GetSigned1Pt());
+      HLTInfo("-----tpc before merging: alpha %f, x %f, y %f, z %f, snp %f, tgl %f, 1pt %f",tpcTrack->GetAlpha(),tpcTrack->GetX(),tpcTrack->GetY(),tpcTrack->GetZ(),tpcTrack->GetSnp(),tpcTrack->GetTgl(),tpcTrack->GetSigned1Pt());
+      HLTInfo("-----trd before merging: alpha %f, x %f, y %f, z %f, snp %f, tgl %f, 1pt %f",trdTrack->GetAlpha(),trdTrack->GetX(),trdTrack->GetY(),trdTrack->GetZ(),trdTrack->GetSnp(),trdTrack->GetTgl(),trdTrack->GetSigned1Pt());
 
       // merge TPC and TRD tracks
       // create AliESDtrack and add it to AliESDevent
       Bool_t isMerged = MergeTracks(tpcTrack,trdTrack,esdEvent);
       if(!isMerged) 
         HLTInfo("No merged tracks");
-
     }
     HLTInfo("nTracksTRD %d",nTracksTRD);
+
+    // delete external TPC track
+    if(extTPCTrack) delete extTPCTrack; extTPCTrack=0;
   }
   HLTInfo("nTracksTPC %d",nTracksTPC);
 
@@ -260,23 +184,6 @@ Bool_t AliHLTGlobalTrackMerger::MergeTracks(AliESDtrack *tpcTrack, AliESDtrack*
   if(!tpcTrack) return kFALSE;
   if(!trdTrack) return kFALSE;
 
-  /*
-  Double_t tpcParam[5] = {tpcTrack->GetY(),tpcTrack->GetZ(),tpcTrack->GetSnp(),tpcTrack->GetTgl(),tpcTrack->GetSigned1Pt()};
-  Double_t trdParam[5] = {trdTrack->GetY(),trdTrack->GetZ(),trdTrack->GetSnp(),trdTrack->GetTgl(),trdTrack->GetSigned1Pt()};
-
-  const Double_t* tpcCv = tpcTrack->GetCovariance();
-  const Double_t* trdCv = trdTrack->GetCovariance();
-
-  Double_t tpcCovar[15] = {tpcCv[0],tpcCv[1],tpcCv[2],tpcCv[3],tpcCv[4],tpcCv[5],tpcCv[6],tpcCv[7],tpcCv[8],tpcCv[9],tpcCv[10],tpcCv[11],tpcCv[12],tpcCv[13], tpcCv[14] } ;
-
-  Double_t trdCovar[15] = {trdCv[0],trdCv[1],trdCv[2],trdCv[3],trdCv[4],trdCv[5],trdCv[6],trdCv[7],trdCv[8],trdCv[9],trdCv[10],trdCv[11],trdCv[12],trdCv[13], trdCv[14] } ;
-
-
-  Bool_t isNotOK = SmoothTracks(tpcParam, tpcCovar, tpcTrack->GetChi2(), 5,
-                                trdParam, trdCovar, trdTrack->GetChi2(), 5,
-                                trackParam, trackCovar, trackChi2, trackNDF,5);
-  */
-
   Double_t trackParam[5], trackCovar[15]; 
   Double_t trackChi2;
   Int_t trackNDF;
@@ -334,7 +241,7 @@ void AliHLTGlobalTrackMerger::SetParameter(Double_t maxy, Double_t maxz, Double_
 }
 
 //_____________________________________________________________________________
-Bool_t AliHLTGlobalTrackMerger::MatchTracks(AliESDtrack *trackTPC, AliESDtrack *trackTRD)
+Bool_t AliHLTGlobalTrackMerger::MatchTracks(AliExternalTrackParam *trackTPC, const AliESDtrack *trackTRD)
 { 
   // match TPC and TRD tracks 
   // return kTRUE in case of matching
@@ -342,44 +249,45 @@ Bool_t AliHLTGlobalTrackMerger::MatchTracks(AliESDtrack *trackTPC, AliESDtrack *
   if(!trackTPC) return kFALSE;
   if(!trackTRD) return kFALSE;
 
-  Double_t x_tpc=trackTPC->GetX();
-  Double_t y_tpc=trackTPC->GetY();
-  Double_t z_tpc=trackTPC->GetZ();
-  Double_t snp_tpc=trackTPC->GetSnp();
-  Double_t tgl_tpc=trackTPC->GetTgl();
-  Double_t signed1Pt_tpc=trackTPC->GetSigned1Pt();
+  Double_t xTpc=trackTPC->GetX();
+  Double_t yTpc=trackTPC->GetY();
+  Double_t zTpc=trackTPC->GetZ();
+  Double_t snpTpc=trackTPC->GetSnp();
+  Double_t tglTpc=trackTPC->GetTgl();
+  Double_t signed1PtTpc=trackTPC->GetSigned1Pt();
 
-  Double_t x_trd=trackTRD->GetX();
-  Double_t y_trd=trackTRD->GetY();
-  Double_t z_trd=trackTRD->GetZ();
-  Double_t snp_trd=trackTRD->GetSnp();
-  Double_t tgl_trd=trackTRD->GetTgl();
-  Double_t signed1Pt_trd=trackTRD->GetSigned1Pt();
+  Double_t xTrd=trackTRD->GetX();
+  Double_t yTrd=trackTRD->GetY();
+  Double_t zTrd=trackTRD->GetZ();
+  Double_t snpTrd=trackTRD->GetSnp();
+  Double_t tglTrd=trackTRD->GetTgl();
+  Double_t signed1PtTrd=trackTRD->GetSigned1Pt();
 
   // debug stream
-  if (AliTPCReconstructor::StreamLevel()>0) {
-  //TTreeSRedirector &cstream = *fDebugStreamer;
-  *fDebugStreamer<<"match"<<
-  "x_tpc="<<x_tpc<<
-  "y_tpc="<<y_tpc<<
-  "z_tpc="<<z_tpc<<
-  "snp_tpc="<<snp_tpc<<
-  "tgl_tpc="<<tgl_tpc<<
-  "signed1Pt_tpc="<<signed1Pt_tpc<<
-  "x_trd="<<x_trd<<
-  "y_trd="<<y_trd<<
-  "z_trd="<<z_trd<<
-  "snp_trd="<<snp_trd<<
-  "tgl_trd="<<tgl_trd<<
-  "signed1Pt_trd="<<signed1Pt_trd<<
-  "\n";
-  }
-
-  if (TMath::Abs(y_tpc-y_trd) > fMaxY) return kFALSE;
-  if (TMath::Abs(z_tpc-z_trd) > fMaxZ) return kFALSE;
-  if (TMath::Abs(snp_tpc-snp_trd) > fMaxSnp) return kFALSE;
-  if (TMath::Abs(tgl_tpc-tgl_trd) > fMaxTgl) return kFALSE;
-  if (TMath::Abs(signed1Pt_tpc-signed1Pt_trd) > fMaxSigned1Pt) return kFALSE;
+  // if (AliTPCReconstructor::StreamLevel()>0) {
+  // //TTreeSRedirector &cstream = *fDebugStreamer;
+  // *fDebugStreamer<<"match"<<
+  // "xTpc="<<xTpc<<
+  // "yTpc="<<yTpc<<
+  // "zTpc="<<zTpc<<
+  // "snpTpc="<<snpTpc<<
+  // "tglTpc="<<tglTpc<<
+  // "signed1PtTpc="<<signed1PtTpc<<
+  // "xTrd="<<xTrd<<
+  // "yTrd="<<yTrd<<
+  // "zTrd="<<zTrd<<
+  // "snpTrd="<<snpTrd<<
+  // "tglTrd="<<tglTrd<<
+  // "signed1PtTrd="<<signed1PtTrd<<
+  // "\n";
+  // }
+
+  if (TMath::Abs(xTpc-xTrd) > 0) {/* get rid of warning*/;}
+  if (TMath::Abs(yTpc-yTrd) > fMaxY) return kFALSE;
+  if (TMath::Abs(zTpc-zTrd) > fMaxZ) return kFALSE;
+  if (TMath::Abs(snpTpc-snpTrd) > fMaxSnp) return kFALSE;
+  if (TMath::Abs(tglTpc-tglTrd) > fMaxTgl) return kFALSE;
+  if (TMath::Abs(signed1PtTpc-signed1PtTrd) > fMaxSigned1Pt) return kFALSE;
 
 return kTRUE;
 }
@@ -447,6 +355,7 @@ Bool_t AliHLTGlobalTrackMerger::SmoothTracks( const Double_t T1[], const Double_
 //_____________________________________________________________________________
 void AliHLTGlobalTrackMerger::MultSSQ( const Double_t *A, const Double_t *B, Double_t *C, Int_t N )
 {
+  // no clue
   for( Int_t ind=0, i=0; i<N; ++i ){
     for( Int_t j=0; j<N; ++j, ++ind ){
       C[ind] = 0;
@@ -486,7 +395,7 @@ Bool_t AliHLTGlobalTrackMerger::InvertS( Double_t A[], Int_t N )
        x = 1 / x;
        for( Int_t step=1; step<=N-j; ik+=++step ){ // ik==Ai1
          Double_t sum = 0;
-         for( Double_t *jk=j1; jk!=jj; sum += (*(jk++)) * (*(ik++)) );
+         for( Double_t *jk=j1; jk!=jj; sum += (*(jk++)) * (*(ik++)) ) {}
          *ik = (*ik - sum) * x; // ik == Aij
        }
       }else{
@@ -546,7 +455,7 @@ Bool_t AliHLTGlobalTrackMerger::InvertS( Double_t A[], Int_t N )
 }
 
 //_____________________________________________________________________________
-void  AliHLTGlobalTrackMerger::PropagateTracksToDCA(AliESDEvent *esdEvent)
+void  AliHLTGlobalTrackMerger::PropagateTracksToDCA(const AliESDEvent *esdEvent)
 {
   // try to propagate all tracks to DCA to primary vertex
   if(!esdEvent) return;