#include "AliESDkink.h"
#include "AliPID.h"
#include "TTreeStream.h"
+#include "AliAlignObj.h"
+#include "AliTrackPointArray.h"
+
//
ClassImp(AliTPCtrackerMI)
+//_________________________________________________________________________
+Bool_t AliTPCtrackerMI::GetTrackPoint(Int_t index, AliTrackPoint &p ) const
+{
+ // Get track space point by index
+ // return false in case the cluster doesn't exist
+ AliTPCclusterMI *cl = GetClusterMI(index);
+ if (!cl) return kFALSE;
+ Int_t sector = (index&0xff000000)>>24;
+ Int_t row = (index&0x00ff0000)>>16;
+ Float_t xyz[3];
+ xyz[0] = fParam->GetPadRowRadii(sector,row);
+ xyz[1] = cl->GetY();
+ xyz[2] = cl->GetZ();
+ Float_t sin,cos;
+ fParam->AdjustCosSin(sector,cos,sin);
+ Float_t x = cos*xyz[0]-sin*xyz[1];
+ Float_t y = cos*xyz[1]+sin*xyz[0];
+ Float_t cov[6];
+ Float_t sigmaY2 = 0.027*cl->GetSigmaY2();
+ if (sector < fParam->GetNInnerSector()) sigmaY2 *= 2.07;
+ Float_t sigmaZ2 = 0.066*cl->GetSigmaZ2();
+ if (sector < fParam->GetNInnerSector()) sigmaZ2 *= 1.77;
+ cov[0] = sin*sin*sigmaY2;
+ cov[1] = -sin*cos*sigmaY2;
+ cov[2] = 0.;
+ cov[3] = cos*cos*sigmaY2;
+ cov[4] = 0.;
+ cov[5] = sigmaZ2;
+ p.SetXYZ(x,y,xyz[2],cov);
+ AliAlignObj::ELayerID iLayer;
+ Int_t idet;
+ if (sector < fParam->GetNInnerSector()) {
+ iLayer = AliAlignObj::kTPC1;
+ idet = sector;
+ }
+ else {
+ iLayer = AliAlignObj::kTPC2;
+ idet = sector - fParam->GetNInnerSector();
+ }
+ UShort_t volid = AliAlignObj::LayerToVolUID(iLayer,idet);
+ p.SetVolumeID(volid);
+ return kTRUE;
+}
+
+
+
Int_t AliTPCtrackerMI::UpdateClusters(AliTPCseed& t, Int_t nr) {
//-----------------------------------------------------------------
// This function tries to find a track prolongation to next pad row
fEvent = event;
fIteration = 1;
- ReadSeeds(event,0);
+ ReadSeeds(event,1);
PropagateBack(fSeeds);
Int_t nseed = fSeeds->GetEntriesFast();
Int_t ntracks=0;
ULong_t status=esd->GetStatus();
if (!(status&AliESDtrack::kTPCin)) continue;
AliTPCtrack t(*esd);
+ t.SetNumberOfClusters(0);
// AliTPCseed *seed = new AliTPCseed(t,t.GetAlpha());
AliTPCseed *seed = new AliTPCseed(t/*,t.GetAlpha()*/);
for (Int_t ikink=0;ikink<3;ikink++) {
}
}
- if ((status==AliESDtrack::kTPCin)&&(direction==1)) seed->ResetCovariance();
+ if (((status&AliESDtrack::kITSout)==0)&&(direction==1)) seed->ResetCovariance();
if ( direction ==2 &&(status & AliESDtrack::kTRDrefit) == 0 ) seed->ResetCovariance();
if ( direction ==2 && ((status & AliESDtrack::kTPCout) == 0) ) {
fSeeds->AddAt(0,i);
continue;
}
if ( direction ==2 &&(status & AliESDtrack::kTRDrefit) > 0 ) {
- Double_t par0[5],par1[5],x;
- esd->GetInnerExternalParameters(x,par0);
+ Double_t par0[5],par1[5],alpha,x;
+ esd->GetInnerExternalParameters(alpha,x,par0);
esd->GetExternalParameters(x,par1);
Double_t delta1 = TMath::Abs(par0[4]-par1[4])/(0.000000001+TMath::Abs(par0[4]+par1[4]));
Double_t delta2 = TMath::Abs(par0[3]-par1[3]);
if (TMath::Abs(ktrack0->GetC())>5) continue; // cut on the curvature for mother particle
AliExternalTrackParam paramm(*ktrack0);
AliExternalTrackParam paramd(*ktrack1);
- if (row0>60&&ktrack1->GetReference().X()>90.) new (¶md) AliExternalTrackParam(ktrack1->GetReference());
+ if (row0>60&&ktrack1->GetReference().GetX()>90.) new (¶md) AliExternalTrackParam(ktrack1->GetReference());
//
//
kink->SetMother(paramm);