]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - TPC/Calib/AliTPCcalibTime.cxx
Added plots fpr PID qa from PIDqa task + addedd mean and sigma for Nsigma_TOF + cleanup
[u/mrichter/AliRoot.git] / TPC / Calib / AliTPCcalibTime.cxx
index e0b94815e0cf497424369ab15694a52204fcd645..6df9bf499df75734e32e97488f08263dc4755877 100644 (file)
@@ -39,16 +39,10 @@ Comments to be written here:
 
 #include "AliDCSSensor.h"
 #include "AliDCSSensorArray.h"
-//#include "AliESDEvent.h"
+#include "AliESDEvent.h"
 #include "AliESDInputHandler.h"
 #include "AliESDVertex.h"
-//#include "AliESDfriend.h"
-
-#include "AliVEvent.h"
-#include "AliVTrack.h"
-#include "AliVfriendEvent.h"
-#include "AliVfriendTrack.h"
-
+#include "AliESDfriend.h"
 #include "AliLog.h"
 #include "AliRelAlignerKalman.h"
 #include "AliTPCCalROC.h"
@@ -372,31 +366,19 @@ void AliTPCcalibTime::ResetCurrent(){
 
 
 
-void AliTPCcalibTime::Process(AliVEvent *event){
+void AliTPCcalibTime::Process(AliESDEvent *event){
   //
   // main function to make calibration
   //
-
-    //Printf("*******************AliTPCcalibTime::Process()*******************");
-  if(!event) {
-      //Printf("ERROR AliTPCcalibTime::Process(): NO EVENT AVAILABLE!");
-      return;
-  }
-  if (event->GetNumberOfTracks()<2) {
-      //Printf("ACHTUNG AliTPCcalibTime::Process(): not enough tracks!");
-      return;
-  }
-  //AliESDfriend *ESDfriend=static_cast<AliESDfriend*>(event->FindListObject("AliESDfriend"));
-  AliVfriendEvent *friendEvent=event->FindFriend();
-  if (!friendEvent) {
-    //Printf("ERROR AliTPCcalibTime::Process(): NO FRIEND AVAILABLE!");
+  if(!event) return;
+  if (event->GetNumberOfTracks()<2) return; 
+  AliESDfriend *ESDfriend=static_cast<AliESDfriend*>(event->FindListObject("AliESDfriend"));
+  if (!ESDfriend) {
     return;
   }
-  if (friendEvent->TestSkipBit()) return;
+  if (ESDfriend->TestSkipBit()) return;
   
   ResetCurrent();
-
-  //AliESDEvent *ev=(AliESDEvent*)event;
   //if(IsLaser  (event)) 
   ProcessLaser (event);
   //if(IsCosmics(event)) 
@@ -405,7 +387,7 @@ void AliTPCcalibTime::Process(AliVEvent *event){
   ProcessBeam  (event);
 }
 
-void AliTPCcalibTime::ProcessLaser(AliVEvent *event){
+void AliTPCcalibTime::ProcessLaser(AliESDEvent *event){
   //
   // Fit drift velocity using laser 
   // 
@@ -534,16 +516,16 @@ void AliTPCcalibTime::ProcessLaser(AliVEvent *event){
   }
 }
 
-void AliTPCcalibTime::ProcessCosmic(const AliVEvent *const event){
+void AliTPCcalibTime::ProcessCosmic(const AliESDEvent *const event){
   //
   // process Cosmic event - track matching A side C side
   //
   if (!event) {
-    //Printf("ERROR: event not available");
+    Printf("ERROR: ESD not available");
     return;
   }  
   if (event->GetTimeStamp() == 0 ) {
-    //Printf("no time stamp!");
+    Printf("no time stamp!");
     return;
   }
   
@@ -560,8 +542,8 @@ void AliTPCcalibTime::ProcessCosmic(const AliVEvent *const event){
   if (ntracks > fCutTracks) return;
   
   if (GetDebugLevel()>20) printf("Hallo world: Im here\n");
-  //AliESDfriend *esdFriend=(AliESDfriend*)(((AliESDEvent*)event)->FindListObject("AliESDfriend"));
-  AliVfriendEvent *friendEvent=event->FindFriend();
+  AliESDfriend *esdFriend=(AliESDfriend*)(((AliESDEvent*)event)->FindListObject("AliESDfriend"));
+  
   TObjArray  tpcSeeds(ntracks);
   Double_t vtxx[3]={0,0,0};
   Double_t svtxx[3]={0.000001,0.000001,100.};
@@ -574,25 +556,17 @@ void AliTPCcalibTime::ProcessCosmic(const AliVEvent *const event){
   for (Int_t i=0;i<ntracks;++i) {
     clusterSideA[i]=0;
     clusterSideC[i]=0;
-    AliVTrack *track = event->GetVTrack(i);
-    if(!track) continue;
-
-    AliExternalTrackParam trckIn;
-    track->GetTrackParamIp(trckIn);
-    if ( (track->GetTrackParamIp(trckIn)) <0) continue;
-    AliExternalTrackParam * trackIn = &trckIn;
+    AliESDtrack *track = event->GetTrack(i);
+    
+    const AliExternalTrackParam * trackIn = track->GetInnerParam();
+    const AliExternalTrackParam * trackOut = track->GetOuterParam();
     if (!trackIn) continue;
-
-    AliExternalTrackParam trckOut;
-    track->GetTrackParamOp(trckOut);
-    if ( (track->GetTrackParamOp(trckOut)) <0) continue;
-    AliExternalTrackParam * trackOut = &trckOut;
     if (!trackOut) continue;
     
-    const AliVfriendTrack *friendTrack = friendEvent->GetTrack(i);
+    AliESDfriendTrack *friendTrack = esdFriend->GetTrack(i);
     if (!friendTrack) continue;
     if (friendTrack) ProcessSame(track,friendTrack,event);
-    if (friendTrack) ProcessAlignITS(track,friendTrack,event,friendEvent);
+    if (friendTrack) ProcessAlignITS(track,friendTrack,event,esdFriend);
     if (friendTrack) ProcessAlignTRD(track,friendTrack);
     if (friendTrack) ProcessAlignTOF(track,friendTrack);
     TObject *calibObject;
@@ -617,29 +591,19 @@ void AliTPCcalibTime::ProcessCosmic(const AliVEvent *const event){
   //
 
   for (Int_t i=0;i<ntracks;++i) {
-    AliVTrack *track0 = event->GetVTrack(i);
+    AliESDtrack *track0 = event->GetTrack(i);
     // track0 - choosen upper part
     if (!track0) continue;
-
-    AliExternalTrackParam trckOut;
-    track0->GetTrackParamOp(trckOut);
-    if ( (track0->GetTrackParamOp(trckOut)) < 0) continue;
-    AliExternalTrackParam * trackOut = &trckOut;
-    if (!trackOut) continue;
-    if (trackOut->GetAlpha()<0) continue;
+    if (!track0->GetOuterParam()) continue;
+    if (track0->GetOuterParam()->GetAlpha()<0) continue;
     Double_t d1[3];
     track0->GetDirection(d1);    
     for (Int_t j=0;j<ntracks;++j) {
       if (i==j) continue;
-      AliVTrack *track1 = event->GetVTrack(j);
+      AliESDtrack *track1 = event->GetTrack(j);   
       //track 1 lower part
       if (!track1) continue;
-
-      AliExternalTrackParam trck1Out;
-      track1->GetTrackParamOp(trck1Out);
-      if ( (track1->GetTrackParamOp(trck1Out)) < 0) continue;
-      AliExternalTrackParam * track1Out = &trck1Out;
-      if (!track1Out) continue;
+      if (!track1->GetOuterParam()) continue;
       if (track0->GetTPCNcls()+ track1->GetTPCNcls()< kMinClusters) continue;
       Int_t nAC = TMath::Max( TMath::Min(clusterSideA[i], clusterSideC[j]), 
                              TMath::Min(clusterSideC[i], clusterSideA[j]));
@@ -676,10 +640,8 @@ void AliTPCcalibTime::ProcessCosmic(const AliVEvent *const event){
       //
       //
       Float_t dmax = TMath::Max(TMath::Abs(dist0),TMath::Abs(dist1));
-      AliExternalTrackParam param0;
-      param0.CopyFromVTrack(track0);
-      AliExternalTrackParam param1;
-      param1.CopyFromVTrack(track1);
+      AliExternalTrackParam param0(*track0);
+      AliExternalTrackParam param1(*track1);
       //
       // Propagate using Magnetic field and correct fo material budget
       //
@@ -797,7 +759,7 @@ void AliTPCcalibTime::ProcessCosmic(const AliVEvent *const event){
   if (GetDebugLevel()>20) printf("Trigger: %s\n",event->GetFiredTriggerClasses().Data());
 }
 
-void AliTPCcalibTime::ProcessBeam(const AliVEvent *const event){
+void AliTPCcalibTime::ProcessBeam(const AliESDEvent *const event){
   //
   // Process beam data - calculates vartex
   //                     from A side and C side
@@ -830,46 +792,27 @@ void AliTPCcalibTime::ProcessBeam(const AliVEvent *const event){
   if (ntracks==0) return;
   if (ntracks > fCutTracks) return;
   //
-  //AliESDfriend *esdFriend=(AliESDfriend*)(((AliESDEvent*)event)->FindListObject("AliESDfriend"));
-  AliVfriendEvent *friendEvent=event->FindFriend();
+  AliESDfriend *esdFriend=(AliESDfriend*)(((AliESDEvent*)event)->FindListObject("AliESDfriend"));
   //
   // Divide tracks to A and C side tracks - using the cluster indexes
   TObjArray tracksA(ntracks);  
   TObjArray tracksC(ntracks);  
   //
-  //AliESDVertex *vertexSPD =  (AliESDVertex *)event->GetPrimaryVertexSPD();
-  //AliESDVertex *vertex    =  (AliESDVertex *)event->GetPrimaryVertex();
-  //AliESDVertex *vertexTracks =  (AliESDVertex *)event->GetPrimaryVertexTracks();
-
-  AliESDVertex vtxSPD;
-  event->GetPrimaryVertexSPD(vtxSPD);
-  AliESDVertex *vertexSPD=&vtxSPD;
-
-  AliESDVertex vtx;
-  event->GetPrimaryVertex(vtx);
-  AliESDVertex *vertex=&vtx;
-
-  AliESDVertex vtxTracks;
-  event->GetPrimaryVertexTracks(vtxTracks);
-  AliESDVertex *vertexTracks=&vtxTracks;
-
-
+  AliESDVertex *vertexSPD =  (AliESDVertex *)event->GetPrimaryVertexSPD();
+  AliESDVertex *vertex    =  (AliESDVertex *)event->GetPrimaryVertex();
+  AliESDVertex *vertexTracks =  (AliESDVertex *)event->GetPrimaryVertexTracks();
   Double_t vertexZA[10000], vertexZC[10000];
   //
   Int_t ntracksA= 0;
   Int_t ntracksC= 0;
   //
   for (Int_t itrack=0;itrack<ntracks;itrack++) {
-    AliVTrack *track = event->GetVTrack(itrack);
-    if(!track) continue;
-    const AliVfriendTrack *friendTrack = friendEvent->GetTrack(itrack);
+    AliESDtrack *track = event->GetTrack(itrack);
+    AliESDfriendTrack *friendTrack = esdFriend->GetTrack(itrack);
     if (!friendTrack) continue;
     if (TMath::Abs(track->GetTgl())>kMaxTgl) continue;
     if (TMath::Abs(track->Pt())<kMinPt) continue;
-    AliExternalTrackParam trckIn;
-    track->GetTrackParamIp(trckIn);
-    AliExternalTrackParam * trackIn = &trckIn;
-
+    const AliExternalTrackParam * trackIn  = track->GetInnerParam();
     TObject *calibObject=0;
     AliTPCseed *seed = 0;
     Int_t nA=0, nC=0;
@@ -1314,23 +1257,17 @@ Bool_t  AliTPCcalibTime::IsPair(const AliExternalTrackParam *tr0, const AliExter
 
   return kTRUE;  
 }
-Bool_t AliTPCcalibTime::IsCross(const AliVTrack *const tr0, const AliVTrack *const tr1){
+Bool_t AliTPCcalibTime::IsCross(const AliESDtrack *const tr0, const AliESDtrack *const tr1){
   //
   // check if the cosmic pair of tracks crossed A/C side
   // 
-  AliExternalTrackParam trck0Out;
-  tr0->GetTrackParamOp(trck0Out);
-
-  AliExternalTrackParam trck1Out;
-  tr1->GetTrackParamOp(trck1Out);
-
-  Bool_t result= trck0Out.GetZ()*trck1Out.GetZ()<0;
+  Bool_t result= tr0->GetOuterParam()->GetZ()*tr1->GetOuterParam()->GetZ()<0;
   if (result==kFALSE) return result;
   result=kTRUE;
   return result;
 }
 
-Bool_t AliTPCcalibTime::IsSame(const AliVTrack *const tr0, const AliVTrack *const tr1){
+Bool_t AliTPCcalibTime::IsSame(const AliESDtrack *const tr0, const AliESDtrack *const tr1){
   // 
   // track crossing the CE
   // 0. minimal number of clusters 
@@ -1352,35 +1289,21 @@ Bool_t AliTPCcalibTime::IsSame(const AliVTrack *const tr0, const AliVTrack *cons
   //
   // 1. alpha cut - sector+-1
   //
-  AliExternalTrackParam trck0Out;
-  tr0->GetTrackParamOp(trck0Out);
-
-  AliExternalTrackParam trck1Out;
-  tr1->GetTrackParamOp(trck1Out);
-
-  if (TMath::Abs(trck0Out.GetAlpha()-trck1Out.GetAlpha())>kalphaCut) return kFALSE;
+  if (TMath::Abs(tr0->GetOuterParam()->GetAlpha()-tr1->GetOuterParam()->GetAlpha())>kalphaCut) return kFALSE;
   //
   // 2. Z crossing
   //
-  AliExternalTrackParam trck0In;
-  tr0->GetTrackParamIp(trck0In);
-
-  AliExternalTrackParam trck1In;
-  tr1->GetTrackParamIp(trck1In);
-  //if (tr0->GetOuterParam()->GetZ()*tr0->GetInnerParam()->GetZ()>0) result&=kFALSE;
-  //if (tr1->GetOuterParam()->GetZ()*tr1->GetInnerParam()->GetZ()>0) result&=kFALSE;
-  if (trck0Out.GetZ()*trck0In.GetZ()>0) result&=kFALSE;
-  if (trck1Out.GetZ()*trck1In.GetZ()>0) result&=kFALSE;
-
+  if (tr0->GetOuterParam()->GetZ()*tr0->GetInnerParam()->GetZ()>0) result&=kFALSE;
+  if (tr1->GetOuterParam()->GetZ()*tr1->GetInnerParam()->GetZ()>0) result&=kFALSE;
   if (result==kFALSE){
     return result;
   }
   //
   //
-  const Double_t *p0I = trck0In.GetParameter();
-  const Double_t *p1I = trck1In.GetParameter();
-  const Double_t *p0O = trck0Out.GetParameter();
-  const Double_t *p1O = trck1Out.GetParameter();
+  const Double_t *p0I = tr0->GetInnerParam()->GetParameter();
+  const Double_t *p1I = tr1->GetInnerParam()->GetParameter();
+  const Double_t *p0O = tr0->GetOuterParam()->GetParameter();
+  const Double_t *p1O = tr1->GetOuterParam()->GetParameter();
   //
   if (TMath::Abs(p0I[0]-p1I[0])>fCutMaxD)  result&=kFALSE;
   if (TMath::Abs(p0I[1]-p1I[1])>fCutMaxDz) result&=kFALSE;
@@ -1397,7 +1320,7 @@ Bool_t AliTPCcalibTime::IsSame(const AliVTrack *const tr0, const AliVTrack *cons
 }
 
 
-void  AliTPCcalibTime::ProcessSame(const AliVTrack *const track, const AliVfriendTrack *const friendTrack, const AliVEvent *const event){
+void  AliTPCcalibTime::ProcessSame(const AliESDtrack *const track, AliESDfriendTrack *const friendTrack, const AliESDEvent *const event){
   //
   // Process  TPC tracks crossing CE
   //
@@ -1411,19 +1334,12 @@ void  AliTPCcalibTime::ProcessSame(const AliVTrack *const track, const AliVfrien
   const Double_t kMaxDy=1;  // maximal distance in y
   const Double_t kMaxDsnp=0.05;  // maximal distance in snp
   const Double_t kMaxDtheta=0.05;  // maximal distance in theta
-
-  AliExternalTrackParam trckIn;
-  track->GetTrackParam(trckIn);
-
-  AliExternalTrackParam trckTPCOut;
-  friendTrack->GetTrackParamTPCOut(trckTPCOut);
-  if ( (friendTrack->GetTrackParamTPCOut(trckTPCOut)) < 0) return;
-  AliExternalTrackParam * trackTPCOut = &trckTPCOut;
-  if (!trackTPCOut) return;
+  
+  if (!friendTrack->GetTPCOut()) return;
   //
   // 0. Select only track crossing the CE
   //
-  if (trckIn.GetZ()*trckTPCOut.GetZ()>0) return;
+  if (track->GetInnerParam()->GetZ()*friendTrack->GetTPCOut()->GetZ()>0) return;
   //
   // 1. cut on track length
   //
@@ -1438,13 +1354,8 @@ void  AliTPCcalibTime::ProcessSame(const AliVTrack *const track, const AliVfrien
   }
   if (!seed) return;
   //
-  //AliExternalTrackParam trackIn(*track->GetInnerParam());
-  AliExternalTrackParam trackIn(trckIn);
-
-  AliExternalTrackParam trckOut;
-  track->GetTrackParamOp(trckOut);
-  AliExternalTrackParam trackOut(trckOut);
-
+  AliExternalTrackParam trackIn(*track->GetInnerParam());
+  AliExternalTrackParam trackOut(*track->GetOuterParam());
   Double_t cov[3]={0.01,0.,0.01}; //use the same errors
   Double_t xyz[3]={0,0.,0.0};  
   Double_t bz   =0;
@@ -1572,7 +1483,7 @@ void  AliTPCcalibTime::ProcessSame(const AliVTrack *const track, const AliVfrien
 
 }
 
-void  AliTPCcalibTime::ProcessAlignITS(AliVTrack *const track, const AliVfriendTrack *const friendTrack, const AliVEvent *const event, AliVfriendEvent *const friendEvent){
+void  AliTPCcalibTime::ProcessAlignITS(AliESDtrack *const track, const AliESDfriendTrack *const friendTrack, const AliESDEvent *const event, AliESDfriend *const esdFriend){
   //
   // Process track - Update TPC-ITS alignment
   // Updates: 
@@ -1601,63 +1512,42 @@ void  AliTPCcalibTime::ProcessAlignITS(AliVTrack *const track, const AliVfriendT
   // 
   Int_t dummycl[1000];
   if (track->GetTPCNcls()<kMinTPC) return;  // minimal amount of clusters cut
-  if (!track->IsOn(AliVTrack::kTPCrefit)) return;
-
-  AliExternalTrackParam trckIn;
-  track->GetTrackParamIp(trckIn);
-  if ( (track->GetTrackParamIp(trckIn)) < 0) return;
-  AliExternalTrackParam * trackIn = &trckIn;
-  if (!trackIn)   return;
-
-  AliExternalTrackParam trckOut;
-  track->GetTrackParamOp(trckOut);
-  if ( (track->GetTrackParamOp(trckOut)) < 0) return;
-  AliExternalTrackParam * trackOut = &trckOut;
-  if (!trackOut)   return;
-
-  if (trackIn->Pt()<kMinPt)  return;
+  if (!track->IsOn(AliESDtrack::kTPCrefit)) return;
+  if (!track->GetInnerParam())   return;
+  if (!track->GetOuterParam())   return;
+  if (track->GetInnerParam()->Pt()<kMinPt)  return;
   // exclude crossing track
-  if (trckOut.GetZ()*trckIn.GetZ()<0)   return;
-  if (TMath::Abs(trackIn->GetZ())<kMinZ/3.)   return;
-  if (trackIn->GetX()>90)   return;
+  if (track->GetOuterParam()->GetZ()*track->GetInnerParam()->GetZ()<0)   return;
+  if (TMath::Abs(track->GetInnerParam()->GetZ())<kMinZ/3.)   return;
+  if (track->GetInnerParam()->GetX()>90)   return;
   //
-  AliExternalTrackParam &pTPC=(AliExternalTrackParam &)(*trackIn);
+  AliExternalTrackParam &pTPC=(AliExternalTrackParam &)(*(track->GetInnerParam()));
   //  
   AliExternalTrackParam pITS;   // ITS standalone if possible
   AliExternalTrackParam pITS2;  //TPC-ITS track
-
-  AliExternalTrackParam trckITSOut;
-  friendTrack->GetTrackParamITSOut(trckITSOut);
-  AliExternalTrackParam * trackITSOut = &trckITSOut;
-
-  if ( (friendTrack->GetTrackParamITSOut(trckITSOut)) == 0 && (trackITSOut) ){
-    pITS2=(*trackITSOut);  //TPC-ITS track - snapshot ITS out
+  if (friendTrack->GetITSOut()){
+    pITS2=(*(friendTrack->GetITSOut()));  //TPC-ITS track - snapshot ITS out
     pITS2.Rotate(pTPC.GetAlpha());
     AliTracker::PropagateTrackToBxByBz(&pITS2,pTPC.GetX(),0.1,0.1,kFALSE);
   }
 
-  //AliESDfriendTrack *itsfriendTrack=0;
+  AliESDfriendTrack *itsfriendTrack=0;
   //
   // try to find standalone ITS track corresponing to the TPC if possible
   //
   Bool_t hasAlone=kFALSE;
   Int_t ntracks=event->GetNumberOfTracks();
   for (Int_t i=0; i<ntracks; i++){
-    AliVTrack * trackITS = event->GetVTrack(i);
+    AliESDtrack * trackITS = event->GetTrack(i); 
     if (!trackITS) continue;
     if (trackITS->GetITSclusters(dummycl)<kMinITS) continue;  // minimal amount of clusters
-    const AliVfriendTrack *itsfriendTrack = friendEvent->GetTrack(i);
+    itsfriendTrack = esdFriend->GetTrack(i);
     if (!itsfriendTrack) continue;
-
-    AliExternalTrackParam itstrckOut;
-    itsfriendTrack->GetTrackParamITSOut(itstrckOut);
-    if ( (itsfriendTrack->GetTrackParamITSOut(itstrckOut)) < 0) continue;
-    AliExternalTrackParam * ITStrackOut = &itstrckOut;
-    if (!ITStrackOut) continue;
+    if (!itsfriendTrack->GetITSOut()) continue;
      
-    if (TMath::Abs(pTPC.GetTgl()-ITStrackOut->GetTgl())> kMaxAngle) continue;
-    if (TMath::Abs(pTPC.GetSigned1Pt()-ITStrackOut->GetSigned1Pt())> kMax1Pt) continue;
-    pITS=(*ITStrackOut);
+    if (TMath::Abs(pTPC.GetTgl()-itsfriendTrack->GetITSOut()->GetTgl())> kMaxAngle) continue;
+    if (TMath::Abs(pTPC.GetSigned1Pt()-itsfriendTrack->GetITSOut()->GetSigned1Pt())> kMax1Pt) continue;
+    pITS=(*(itsfriendTrack->GetITSOut()));
     //
     pITS.Rotate(pTPC.GetAlpha());
     AliTracker::PropagateTrackToBxByBz(&pITS,pTPC.GetX(),0.1,0.1,kFALSE);
@@ -1782,7 +1672,7 @@ void  AliTPCcalibTime::ProcessAlignITS(AliVTrack *const track, const AliVfriendT
 
 
 
-void  AliTPCcalibTime::ProcessAlignTRD(AliVTrack *const track, const AliVfriendTrack *const friendTrack){
+void  AliTPCcalibTime::ProcessAlignTRD(AliESDtrack *const track, const AliESDfriendTrack *const friendTrack){
   //
   // Process track - Update TPC-TRD alignment
   // Updates: 
@@ -1813,27 +1703,17 @@ void  AliTPCcalibTime::ProcessAlignTRD(AliVTrack *const track, const AliVfriendT
   if (track->GetTPCNcls()<kMinTPC) return;  // minimal amount of clusters cut
   //  if (!friendTrack->GetTRDIn()) return;  
   //  if (!track->IsOn(AliESDtrack::kTRDrefit)) return;   
-  if (!track->IsOn(AliVTrack::kTRDout)) return;
-
-  AliExternalTrackParam trckIn;
-  track->GetTrackParamIp(trckIn);
-  if ( (track->GetTrackParamIp(trckIn)) < 0) return;
-  AliExternalTrackParam * trackIn = &trckIn;
-  if (!trackIn)   return;
-
-  AliExternalTrackParam trckTPCOut;
-  friendTrack->GetTrackParamTPCOut(trckTPCOut);
-  if ( (friendTrack->GetTrackParamTPCOut(trckTPCOut)) < 0) return;
-  AliExternalTrackParam * trackTPCOut = &trckTPCOut;
-  if (!trackTPCOut)   return;
+  if (!track->IsOn(AliESDtrack::kTRDout)) return;  
+  if (!track->GetInnerParam())   return;
+  if (!friendTrack->GetTPCOut())   return;
   // exclude crossing track
-  if (trckTPCOut.GetZ()*trckIn.GetZ()<0)   return;
+  if (friendTrack->GetTPCOut()->GetZ()*track->GetInnerParam()->GetZ()<0)   return;
   //
-  AliExternalTrackParam &pTPC=(AliExternalTrackParam &)(*trackTPCOut);
+  AliExternalTrackParam &pTPC=(AliExternalTrackParam &)(*(friendTrack->GetTPCOut()));
   AliTracker::PropagateTrackToBxByBz(&pTPC,kRefX,0.1,0.1,kFALSE);
   AliExternalTrackParam *pTRDtrack = 0; 
   TObject *calibObject=0;
-  for (Int_t l=0;(calibObject=friendTrack->GetCalibObject(l));++l) {
+  for (Int_t l=0;(calibObject=((AliESDfriendTrack*)friendTrack)->GetCalibObject(l));++l) {
     if ((dynamic_cast< AliTPCseed*>(calibObject))) continue;
     if ((pTRDtrack=dynamic_cast< AliExternalTrackParam*>(calibObject))) break;
   }
@@ -1960,7 +1840,7 @@ void  AliTPCcalibTime::ProcessAlignTRD(AliVTrack *const track, const AliVfriendT
 }
 
 
-void  AliTPCcalibTime::ProcessAlignTOF(AliVTrack *const track, const AliVfriendTrack *const friendTrack){
+void  AliTPCcalibTime::ProcessAlignTOF(AliESDtrack *const track, const AliESDfriendTrack *const friendTrack){
   //
   //
   // Process track - Update TPC-TOF alignment
@@ -1989,22 +1869,12 @@ void  AliTPCcalibTime::ProcessAlignTOF(AliVTrack *const track, const AliVfriendT
   //     Clusters are not in friends - use alingment points
   //
   if (track->GetTOFsignal()<=0)  return;
-
-  AliExternalTrackParam trckIn;
-  track->GetTrackParamIp(trckIn);
-  if ( (track->GetTrackParamIp(trckIn)) < 0) return;
-  AliExternalTrackParam * trackIn = &trckIn;
-  if (!trackIn)   return;
-
-  AliExternalTrackParam trckTPCOut;
-  friendTrack->GetTrackParamTPCOut(trckTPCOut);
-  if ( (friendTrack->GetTrackParamTPCOut(trckTPCOut)) < 0) return;
-  AliExternalTrackParam * trackTPCOut = &trckTPCOut;
-  if (!trackTPCOut)   return;
-
+  if (!friendTrack->GetTPCOut()) return;
+  if (!track->GetInnerParam())   return;
+  if (!friendTrack->GetTPCOut())   return;
   const AliTrackPointArray *points=friendTrack->GetTrackPointArray();
   if (!points) return;
-  AliExternalTrackParam pTPC(*trackTPCOut);
+  AliExternalTrackParam pTPC(*(friendTrack->GetTPCOut()));
   AliExternalTrackParam pTOF(pTPC);
   Double_t mass = TDatabasePDG::Instance()->GetParticle("mu+")->Mass();
   Int_t npoints = points->GetNPoints();
@@ -2037,7 +1907,7 @@ void  AliTPCcalibTime::ProcessAlignTOF(AliVTrack *const track, const AliVfriendT
   //
   if (track->GetTPCNcls()<kMinTPC) return;  // minimal amount of clusters cut
   // exclude crossing track
-  if (trckTPCOut.GetZ()*trckIn.GetZ()<0)   return;
+  if (friendTrack->GetTPCOut()->GetZ()*track->GetInnerParam()->GetZ()<0)   return;
   //
   if (TMath::Abs(pTOF.GetY()-pTPC.GetY())    >kMaxDy)    return;
   if (TMath::Abs(pTOF.GetSnp()-pTPC.GetSnp())>kMaxAngle) return;
@@ -2323,26 +2193,18 @@ void        AliTPCcalibTime::FillResHistoTPCITS(const AliExternalTrackParam * pT
 }  
 
      
-void        AliTPCcalibTime::FillResHistoTPC(const AliVTrack *pTrack){
+void        AliTPCcalibTime::FillResHistoTPC(const AliESDtrack * pTrack){
   //
   // fill residual histograms pTPC - vertex
   // Histogram is filled only for primary tracks
   //
   if (fMemoryMode<2) return;
   Double_t histoX[4];
-  AliExternalTrackParam prmTPCIn;
-  pTrack->GetTrackParamIp(prmTPCIn);
-  AliExternalTrackParam * pTPCIn = &prmTPCIn;
-
-  AliExternalTrackParam pTPCvertex(*pTPCIn);
+  const AliExternalTrackParam * pTPCIn = pTrack->GetInnerParam();
+  AliExternalTrackParam pTPCvertex(*(pTrack->GetInnerParam()));
   //
-
-  AliExternalTrackParam cnstrPrm;
-  pTrack->GetTrackParamCp(cnstrPrm);
-  if ( (pTrack->GetTrackParamCp(cnstrPrm)) <0) return;
-  AliExternalTrackParam * constrainedParam = &cnstrPrm;
-  if (!constrainedParam) return;
-  AliExternalTrackParam lits(*constrainedParam);
+  if (!(pTrack->GetConstrainedParam())) return;
+  AliExternalTrackParam lits(*(pTrack->GetConstrainedParam()));
   if (TMath::Abs(pTrack->GetY())>3) return;  // beam pipe
   pTPCvertex.Rotate(lits.GetAlpha());
   //pTPCvertex.PropagateTo(pTPCvertex->GetX(),fMagF);