fix tracklet fit in the reconstruction code
authorabercuci <abercuci@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 15 Dec 2008 09:23:27 +0000 (09:23 +0000)
committerabercuci <abercuci@f7af4fe6-9843-0410-8265-dc069ae4e863>
Mon, 15 Dec 2008 09:23:27 +0000 (09:23 +0000)
TRD/AliTRDseed.cxx
TRD/AliTRDseedV1.cxx
TRD/AliTRDseedV1.h
TRD/AliTRDtrackV1.cxx

index 0d8af1f..db169f3 100644 (file)
@@ -303,7 +303,7 @@ void AliTRDseed::Update()
   Int_t    zouts[2*knTimebins];       
   Float_t  allowedz[knTimebins];         // Allowed z for given time bin
   Float_t  yres[knTimebins];             // Residuals from reference
-  Float_t  anglecor = fTilt * fZref[1];  // Correction to the angle
+  //Float_t  anglecor = fTilt * fZref[1];  // Correction to the angle
   
   
   fN  = 0; 
@@ -312,7 +312,9 @@ void AliTRDseed::Update()
     yres[i] = 10000.0;
     if (!fClusters[i]) continue;
     if(!fClusters[i]->IsInChamber()) continue;
-    yres[i] = fY[i] - fYref[0] - (fYref[1] + anglecor) * fX[i] + fTilt*(fZ[i] - fZref[0]);   // Residual y
+    // Residual y
+    //yres[i] = fY[i] - fYref[0] - (fYref[1] + anglecor) * fX[i] + fTilt*(fZ[i] - fZref[0]);
+    yres[i] = fY[i] - fTilt*(fZ[i] - (fZref[0] - fX[i]*fZref[1]));
     zints[fN] = Int_t(fZ[i]);
     fN++;    
   }
@@ -396,11 +398,13 @@ void AliTRDseed::Update()
       if (!fClusters[i]) continue; 
       if(!fClusters[i]->IsInChamber()) continue;
       if (TMath::Abs(fZ[i] - allowedz[i]) > 2) continue;
-      yres[i] = fY[i] - fYref[0] - (fYref[1] + anglecor) * fX[i] /*+ fTilt*(fZ[i] - fZref[0])*/;   // Residual y
-      if (TMath::Abs(fZ[i] - fZProb) > 2) {
-       if (fZ[i] > fZProb) yres[i] += fTilt * fPadLength;
-       if (fZ[i] < fZProb) yres[i] -= fTilt * fPadLength;
-      }
+      // Residual y
+      //yres[i] = fY[i] - fYref[0] - (fYref[1] + anglecor) * fX[i] /*+ fTilt*(fZ[i] - fZref[0])*/;   
+      yres[i] = fY[i] - fTilt*(fZ[i] - (fZref[0] - fX[i]*fZref[1]));
+/*      if (TMath::Abs(fZ[i] - fZProb) > 2) {
+        if (fZ[i] > fZProb) yres[i] += fTilt * fPadLength;
+        if (fZ[i] < fZProb) yres[i] -= fTilt * fPadLength;
+      }*/
     }
   }
   
@@ -497,10 +501,10 @@ void AliTRDseed::Update()
   fZfitR[1]  = (sumw   * sumwxz - sumwx * sumwz)  / det;
   fZfit[0]   = (sumwx2 * sumwz  - sumwx * sumwxz) / det;
   fZfit[1]   = (sumw   * sumwxz - sumwx * sumwz)  / det;
-  fYfitR[0] += fYref[0] + correction;
-  fYfitR[1] += fYref[1];
+//   fYfitR[0] += fYref[0] + correction;
+//   fYfitR[1] += fYref[1];
   fYfit[0]   = fYfitR[0];
-  fYfit[1]   = fYfitR[1];
+  fYfit[1]   = -fYfitR[1];
 
        //printf("y0 = %7.3f tgy = %7.3f z0 = %7.3f tgz = %7.3f \n", fYfitR[0], fYfitR[1], fZfitR[0], fZfitR[1]);
 
index 1d750f4..4b2ee0c 100644 (file)
@@ -468,7 +468,7 @@ Bool_t      AliTRDseedV1::AttachClustersIter(AliTRDtrackingChamber *chamber, Float_t
       // update x reference positions (calibration/alignment aware)
       for (Int_t iTime = 0; iTime < AliTRDtrackerV1::GetNTimeBins(); iTime++) {
         if(!fClusters[iTime]) continue;
-        fX[iTime] = fClusters[iTime]->GetX() - fX0;
+        fX[iTime] = fX0 - fClusters[iTime]->GetX();
       } 
       
       AliTRDseed::Update();
index eb477b2..f9f0231 100644 (file)
@@ -88,14 +88,15 @@ class AliTRDseedV1 : public AliTRDseed
   Double_t  GetSnp() const           { return fSnp;}
   Double_t  GetTgl() const           { return fTgl;}
   Float_t   GetXref() const          { return fXref;}
-  Double_t  GetYat(Double_t x) const { return fYfit[0] + fYfit[1] * (x-fX0);}
-  Double_t  GetZat(Double_t x) const { return fZfit[0] + fZfit[1] * (x-fX0);}
+  Double_t  GetYat(Double_t x) const { return fYfit[0] + fYfit[1] * (fX0-x);}
+  Double_t  GetZat(Double_t x) const { return fZfit[0] + fZfit[1] * (fX0-x);}
   
   inline AliTRDcluster* NextCluster();
   inline AliTRDcluster* PrevCluster();
   void      Print(Option_t *o = "") const;
   inline void ResetClusterIter(Bool_t forward = kTRUE);
 
+  void      SetCovRef(const Double_t *cov) { memcpy(&fRefCov[0], cov, 3*sizeof(Double_t));}
   void      SetMomentum(Double_t mom){ fMom = mom;}
   void      SetOwner();
   void      SetDetector(Int_t d)     { fDet = d;  }
index 516d335..38c954a 100644 (file)
@@ -748,9 +748,17 @@ Bool_t  AliTRDtrackV1::Update(AliTRDseedV1 *trklt, Double_t chisq)
   SetChi2(GetChi2() + chisq);
   
   // update tracklet
+  Float_t snp = GetSnp();
+  Float_t tgl = GetTgl();
   trklt->SetMomentum(GetP());
-  trklt->SetSnp(GetSnp());
-  trklt->SetTgl(GetTgl());
+  trklt->SetYref(0, GetY());
+  trklt->SetYref(1, snp/(1. - snp*snp));
+  trklt->SetZref(0,  GetZ());
+  trklt->SetZref(1, tgl);
+  const Double_t *cc = GetCovariance();
+  trklt->SetCovRef(cc);
+  trklt->SetSnp(snp);
+  trklt->SetTgl(tgl);
   return kTRUE;
 }