X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=TPC%2FAliTPCtracker.cxx;h=5c1219ac20a97ee50fbb548048461c626c3cdc02;hb=3f98e62326d8afffeda4860ba9a5ea4d71c2f1ed;hp=6bd18b10e94567e2642337d5b832407f456ec05a;hpb=14718359d4956520c1015c3144f5ed687fef3677;p=u%2Fmrichter%2FAliRoot.git diff --git a/TPC/AliTPCtracker.cxx b/TPC/AliTPCtracker.cxx index 6bd18b10e94..5c1219ac20a 100644 --- a/TPC/AliTPCtracker.cxx +++ b/TPC/AliTPCtracker.cxx @@ -25,42 +25,53 @@ #include #include -#include "AliESD.h" +#include "AliESDEvent.h" +#include "AliESDtrack.h" #include "AliTPCtracker.h" #include "AliTPCcluster.h" #include "AliTPCParam.h" #include "AliClusters.h" -extern Double_t SigmaY2(Double_t, Double_t, Double_t); -extern Double_t SigmaZ2(Double_t, Double_t); - ClassImp(AliTPCtracker) +//_____________________________________________________________________________ +AliTPCtracker::AliTPCtracker(): + AliTracker(), + fkNIS(0), + fInnerSec(0), + fkNOS(0), + fOuterSec(0), + fN(0), + fSectors(0), + fParam(0), + fSeeds(0) +{ + // + // The default TPC tracker constructor + // +} + //_____________________________________________________________________________ AliTPCtracker::AliTPCtracker(const AliTPCParam *par): -AliTracker(), fkNIS(par->GetNInnerSector()/2), fkNOS(par->GetNOuterSector()/2) + AliTracker(), + fkNIS(par->GetNInnerSector()/2), + fInnerSec(new AliTPCSector[fkNIS]), + fkNOS(par->GetNOuterSector()/2), + fOuterSec(new AliTPCSector[fkNOS]), + fN(0), + fSectors(0), + fParam((AliTPCParam*) par), + fSeeds(0) { //--------------------------------------------------------------------- // The main TPC tracker constructor //--------------------------------------------------------------------- - fInnerSec=new AliTPCSector[fkNIS]; - fOuterSec=new AliTPCSector[fkNOS]; Int_t i; for (i=0; iDelete(); delete fSeeds; } - - // [SR, 01.04.2003] - if (fBarrelFile) { - fBarrelFile->Close(); - delete fBarrelFile; - } -} - -//_____________________________________________________________________________ - -void AliTPCtracker::SetBarrelTree(const char *mode) { - // - // Creates a tree for BarrelTracks - // mode = "back" or "refit" - // - // [SR, 01.04.2003] - // - - if (!IsStoringBarrel()) return; - - TDirectory *sav = gDirectory; - if (!fBarrelFile) fBarrelFile = new TFile("AliBarrelTracks.root", "UPDATE"); - - char buff[40]; - sprintf(buff, "BarrelTPC_%d_%s", GetEventNumber(), mode); - - fBarrelFile->cd(); - fBarrelTree = new TTree(buff, "Barrel TPC tracks"); - - if (!fBarrelArray) fBarrelArray = new TClonesArray("AliBarrelTrack", 4); - for(Int_t i=0; i<4; i++) new((*fBarrelArray)[i]) AliBarrelTrack(); - - fBarrelTree->Branch("tracks", &fBarrelArray); - - sav->cd(); -} -//_____________________________________________________________________________ - -void AliTPCtracker::StoreBarrelTrack(AliTPCtrack *ps, Int_t refPlane, Int_t isIn) { - // - // Stores Track at a given reference plane - // - // refPlane: 1-4 - // isIn: 1 - backward, 2 - refit - // - - if (!IsStoringBarrel()) return; - if (refPlane < 0 || refPlane > 4) return; - if (isIn > 2) return; - - static Int_t nClusters; - static Int_t nWrong; - static Double_t chi2; - static Int_t index; - - Int_t newClusters, newWrong; - Double_t newChi2; - - if ( (refPlane == 1 && isIn == kTrackBack) || - (refPlane == 4 && isIn == kTrackRefit) ) { - - fBarrelArray->Clear(); - nClusters = nWrong = 0; - chi2 = 0.0; - index = 0; - } - - // propagate - Double_t refX = 0; - if (refPlane == 1) refX = fParam->GetInnerRadiusLow(); - if (refPlane == 2) refX = fParam->GetInnerRadiusUp(); - if (refPlane == 3) refX = fParam->GetOuterRadiusLow(); - if (refPlane == 4) refX = fParam->GetOuterRadiusUp(); - - ps->PropagateTo(refX); - - fBarrelTrack = (AliBarrelTrack*)(*fBarrelArray)[index++]; - ps->GetBarrelTrack(fBarrelTrack); - - newClusters = ps->GetNumberOfClusters() - nClusters; - newWrong = ps->GetNWrong() - nWrong; - newChi2 = ps->GetChi2() - chi2; - - nClusters = ps->GetNumberOfClusters(); - nWrong = ps->GetNWrong(); - chi2 = ps->GetChi2(); - - fBarrelTrack->SetNClusters(newClusters, newChi2); - fBarrelTrack->SetNWrongClusters(newWrong); - fBarrelTrack->SetRefPlane(refPlane, isIn); } - //_____________________________________________________________________________ Double_t f1(Double_t x1,Double_t y1, Double_t x2,Double_t y2, @@ -312,9 +232,9 @@ Int_t AliTPCtracker::FollowProlongation(AliTPCseed& t, Int_t rf) { UInt_t index=0; Double_t maxchi2=kMaxCHI2; const AliTPCRow &krow=fSectors[s][nr]; - Double_t pt=t.GetConvConst()/(100/0.299792458/0.2)/t.Get1Pt(); - Double_t sy2=SigmaY2(t.GetX(),t.GetTgl(),pt); - Double_t sz2=SigmaZ2(t.GetX(),t.GetTgl()); + Double_t pt=t.GetSignedPt(); + Double_t sy2=AliTPCcluster::SigmaY2(t.GetX(),t.GetTgl(),pt); + Double_t sz2=AliTPCcluster::SigmaZ2(t.GetX(),t.GetTgl()); Double_t road=4.*sqrt(t.GetSigmaY2() + sy2), y=t.GetY(), z=t.GetZ(); if (road>kMaxROAD) { @@ -422,7 +342,7 @@ Int_t AliTPCtracker::FollowBackProlongation Int_t s=Int_t(alpha/fSectors->GetAlpha())%fN; Int_t idx=-1, sec=-1, row=-1; - Int_t nc=seed.GetNumber(); + Int_t nc=track.GetNumberOfClusters(); if (nc--) { idx=track.GetClusterIndex(nc); @@ -434,7 +354,8 @@ Int_t AliTPCtracker::FollowBackProlongation Int_t nr=fSectors->GetNRows(); for (Int_t i=0; iGetX(i), ymax=fSectors->GetMaxY(i); - Double_t y=seed.GetYat(x); + Double_t y; + if (!seed.GetYAt(x,GetBz(),y)) return 0; if (y > ymax) { s = (s+1) % fN; @@ -449,9 +370,9 @@ Int_t AliTPCtracker::FollowBackProlongation AliTPCcluster *cl=0; Int_t index=0; Double_t maxchi2=kMaxCHI2; - Double_t pt=seed.GetConvConst()/(100/0.299792458/0.2)/seed.Get1Pt(); - Double_t sy2=SigmaY2(seed.GetX(),seed.GetTgl(),pt); - Double_t sz2=SigmaZ2(seed.GetX(),seed.GetTgl()); + Double_t pt=seed.GetSignedPt(); + Double_t sy2=AliTPCcluster::SigmaY2(seed.GetX(),seed.GetTgl(),pt); + Double_t sz2=AliTPCcluster::SigmaZ2(seed.GetX(),seed.GetTgl()); Double_t road=4.*sqrt(seed.GetSigmaY2() + sy2), z=seed.GetZ(); if (road>kMaxROAD) { Warning("FollowBackProlongation","Too broad road !"); @@ -503,8 +424,6 @@ Int_t AliTPCtracker::FollowBackProlongation } - seed.SetNumber(nc); - return 1; } @@ -597,8 +516,8 @@ void AliTPCtracker::MakeSeeds(Int_t i1, Int_t i2) { c[13]=f30*sy1*f40+f32*sy2*f42; c[14]=f40*sy1*f40+f42*sy2*f42+f43*sy3*f43; - UInt_t index=kr1.GetIndex(is); - AliTPCseed *track=new AliTPCseed(index, x, c, x1, ns*alpha+shift); + Int_t index=kr1.GetIndex(is); + AliTPCseed *track=new AliTPCseed(x1, ns*alpha+shift, x, c, index); Float_t l=fSectors->GetPadPitchWidth(); track->SetSampledEdx(kr1[is]->GetQ()/l,0); @@ -637,7 +556,8 @@ Int_t AliTPCtracker::ReadSeeds(const TFile *inp) { Int_t n=(Int_t)seedTree->GetEntries(); for (Int_t i=0; iGetEvent(i); - fSeeds->AddLast(new AliTPCseed(*seed,seed->GetAlpha())); + seed->ResetClusters(); + fSeeds->AddLast(new AliTPCseed(*seed)); } delete seed; @@ -650,7 +570,7 @@ Int_t AliTPCtracker::ReadSeeds(const TFile *inp) { } //_____________________________________________________________________________ -Int_t AliTPCtracker::Clusters2Tracks(AliESD *event) { +Int_t AliTPCtracker::Clusters2Tracks(AliESDEvent *event) { //----------------------------------------------------------------- // This is a track finder. // The clusters must be already loaded ! @@ -716,7 +636,7 @@ Int_t AliTPCtracker::Clusters2Tracks(AliESD *event) { } //_____________________________________________________________________________ -Int_t AliTPCtracker::RefitInward(AliESD* event) { +Int_t AliTPCtracker::RefitInward(AliESDEvent* event) { // // The function propagates tracks throught TPC inward // using already associated clusters. @@ -737,9 +657,9 @@ Int_t AliTPCtracker::RefitInward(AliESD* event) { if ( (status & AliESDtrack::kTRDrefit ) == 0 ) continue; AliTPCtrack* tpcTrack = new AliTPCtrack(*track); - AliTPCseed* seed = new AliTPCseed(*tpcTrack, tpcTrack->GetAlpha()); + AliTPCseed* seed=new AliTPCseed(*tpcTrack); seed->ResetClusters(); - if ( (status & AliESDtrack::kTRDrefit) == 0 ) seed->ResetCovariance(); + if ( (status & AliESDtrack::kTRDrefit) == 0 ) seed->ResetCovariance(10.); fSectors = fOuterSec; @@ -769,7 +689,7 @@ Int_t AliTPCtracker::RefitInward(AliESD* event) { return 0; } -Int_t AliTPCtracker::PropagateBack(AliESD *event) { +Int_t AliTPCtracker::PropagateBack(AliESDEvent *event) { //----------------------------------------------------------------- // This function propagates tracks back through the TPC. // The clusters must be already loaded ! @@ -788,15 +708,9 @@ Int_t AliTPCtracker::PropagateBack(AliESD *event) { if ( (status & AliESDtrack::kITSout) == 0 ) continue; const AliTPCtrack t(*esd); - AliTPCseed s(t,t.GetAlpha()); - - if ( (status & AliESDtrack::kITSout) == 0 ) s.ResetCovariance(); + AliTPCseed s(t); s.ResetClusters(); - s.ResetNWrong(); - s.ResetNRotation(); - - Int_t nc=t.GetNumberOfClusters(); - s.SetNumber(nc); //set number of the cluster to start with + if ( (status & AliESDtrack::kITSout) == 0 ) s.ResetCovariance(10.); //inner sectors fSectors=fInnerSec; fN=fkNIS; @@ -816,7 +730,7 @@ Int_t AliTPCtracker::PropagateBack(AliESD *event) { //outer sectors fSectors=fOuterSec; fN=fkNOS; - nc=s.GetNumberOfClusters(); + Int_t nc=s.GetNumberOfClusters(); alpha=s.GetAlpha() - fSectors->GetAlphaShift(); if (alpha > 2.*TMath::Pi()) alpha -= 2.*TMath::Pi();