1) In AliTPCseed::RefitTrack(), we now also take into account the accetance flag...
authorjthaeder <jthaeder@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 30 Jan 2012 09:25:27 +0000 (09:25 +0000)
committerjthaeder <jthaeder@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 30 Jan 2012 09:25:27 +0000 (09:25 +0000)
2) In AliTPCtrackerMI::FollowToNext(), if a cluster is found, but the track propagation fails or the rotation to another sector fails, mark the cluster as not used in the fit.

TPC/AliTPCseed.cxx
TPC/AliTPCseed.h
TPC/AliTPCtrackerMI.cxx

index e4923ee..4dd8143 100644 (file)
@@ -1424,7 +1424,7 @@ Int_t  AliTPCseed::RefitTrack(AliTPCseed *seed, AliExternalTrackParam * parin, A
   Int_t imin=158, imax=0;
   for (Int_t i=0;i<160;i++) {
     AliTPCclusterMI *c=track->GetClusterPointer(i);
-    if (!c) continue;
+    if (!c || (track->GetClusterIndex(i) & 0x8000)) continue; 
     if (sector<0) sector = c->GetDetector();
     if (c->GetX()<xmin) xmin=c->GetX();
     if (c->GetX()>xmax) xmax=c->GetX();
@@ -1453,7 +1453,7 @@ Int_t  AliTPCseed::RefitTrack(AliTPCseed *seed, AliExternalTrackParam * parin, A
   //
   for (Int_t i=imin; i<=imax; i++){
     AliTPCclusterMI *c=track->GetClusterPointer(i);
-    if (!c) continue;
+    if (!c || (track->GetClusterIndex(i) & 0x8000)) continue; 
     //    if (RejectCluster(c,track)) continue;
     sector = (c->GetDetector()%18);
     if (!track->Rotate(TMath::DegToRad()*(sector%18*20.+10.)-track->GetAlpha())) {
@@ -1473,7 +1473,7 @@ Int_t  AliTPCseed::RefitTrack(AliTPCseed *seed, AliExternalTrackParam * parin, A
   //
   for (Int_t i=imax; i>=imin; i--){
     AliTPCclusterMI *c=track->GetClusterPointer(i);
-    if (!c) continue;
+    if (!c || (track->GetClusterIndex(i) & 0x8000)) continue;
     //if (RejectCluster(c,track)) continue;
     sector = (c->GetDetector()%18);
     if (!track->Rotate(TMath::DegToRad()*(sector%18*20.+10.)-track->GetAlpha())) {
@@ -1493,7 +1493,7 @@ Int_t  AliTPCseed::RefitTrack(AliTPCseed *seed, AliExternalTrackParam * parin, A
   //
   for (Int_t i=imin; i<=imax; i++){
     AliTPCclusterMI *c=track->GetClusterPointer(i);
-    if (!c) continue;
+    if (!c || (track->GetClusterIndex(i) & 0x8000)) continue; 
     sector = (c->GetDetector()%18);
     if (!track->Rotate(TMath::DegToRad()*(sector%18*20.+10.)-track->GetAlpha())) {
       //continue;
@@ -1701,6 +1701,15 @@ Float_t AliTPCseed::GetTPCClustInfo(Int_t nNeighbours, Int_t type, Int_t row0, I
     return ncl+nclBelowThr;
   return 0;
 }
+//_______________________________________________________________________
+Int_t AliTPCseed::GetNumberOfClustersIndices() {
+  Int_t ncls = 0;
+  for (int i=0; i < 160; i++) {
+    if ((fIndex[i] & 0x8000) == 0)
+      ncls++;
+  }
+  return ncls;
+}
 
 //_______________________________________________________________________
 void AliTPCseed::Clear(Option_t*)
index 2a757cf..faf299a 100644 (file)
@@ -148,6 +148,7 @@ class AliTPCseed : public AliTPCtrack {
   Float_t GetTPCClustInfo(Int_t nNeighbours, Int_t type, Int_t row0, Int_t row1);
   void    SetPoolID(Int_t id) {fPoolID = id;}
   Int_t   GetPoolID()  const {return fPoolID;}
+  Int_t   GetNumberOfClustersIndices();  // Should be in AliTPCtrack
  private:
      //     AliTPCseed & operator = (const AliTPCseed &)
      //  {::Fatal("= operator","Not Implemented\n");return *this;}
index 168581a..f4aead8 100644 (file)
@@ -1641,9 +1641,15 @@ Int_t AliTPCtrackerMI::FollowToNext(AliTPCseed& t, Int_t nr) {
       if (TMath::Abs(angle-t.GetAlpha())>0.001){
        Double_t rotation = angle-t.GetAlpha();
        t.SetRelativeSector(relativesector);
-       if (!t.Rotate(rotation)) return 0;      
+       if (!t.Rotate(rotation)) {
+          t.SetClusterIndex(nr, t.GetClusterIndex(nr) | 0x8000);
+          return 0;
+        }      
+      }
+      if (!t.PropagateTo(x)) {
+        t.SetClusterIndex(nr, t.GetClusterIndex(nr) | 0x8000);
+        return 0;
       }
-      if (!t.PropagateTo(x)) return 0;
       //
       t.SetCurrentCluster(cl); 
       t.SetRow(nr);