]> git.uio.no Git - u/mrichter/AliRoot.git/commitdiff
update in the tracklet-track residuals analysis (Eva)
authorabercuci <abercuci@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 9 Dec 2008 10:44:16 +0000 (10:44 +0000)
committerabercuci <abercuci@f7af4fe6-9843-0410-8265-dc069ae4e863>
Tue, 9 Dec 2008 10:44:16 +0000 (10:44 +0000)
TRD/qaRec/AliTRDtrackingResolution.cxx

index 19a265b4e846476d8c478f6a44e4e717813fccdf..cc724fc65381ef93e01ff31d49f2f6347dad4bc5 100644 (file)
@@ -279,14 +279,16 @@ TH1* AliTRDtrackingResolution::PlotTrackletResiduals(const AliTRDtrackV1 *track)
     h->Fill(dydx[il], dy);
 
     if(fDebugLevel>=1){
+      Double_t sigmay = fRim.GetErrY(x[il]);
       Float_t yt = fRim.GetYat(x[il]);
       (*fDebugStream) << "TrkltResiduals"
         << "layer="  << il
-        << "x="      <<x[il]
-        << "y="      <<y[il]
-        << "yt="     <<yt
+        << "x="      << x[il]
+        << "y="      << y[il]
+        << "yt="     << yt
         << "dydx="   << dydx[il]
         << "dy="     << dy
+        << "sigmay=" << sigmay
         << "\n";
     }
   }
@@ -306,26 +308,56 @@ TH1* AliTRDtrackingResolution::PlotTrackletPhiResiduals(const AliTRDtrackV1 *tra
     AliWarning("No output histogram defined.");
     return 0x0;
   }
-  return h;
-  // refit the track 
-  AliTRDtrackerV1::FitRiemanTilt(fTrack, 0x0, kTRUE);
-  //AliTRDtrackerV1::FitLine(fTrack);
+  // refit the track
+  AliRieman fRim(fTrack->GetNumberOfClusters());
+  Float_t x[AliTRDgeometry::kNlayer] = {-1., -1., -1., -1., -1., -1.}, y[AliTRDgeometry::kNlayer], dydx[AliTRDgeometry::kNlayer];
+  Float_t dydx_ref=0, dydx_fit=0, phiref=0, phifit=0, phidiff=0;
+  AliTRDseedV1 *tracklet = 0x0;
+  for(Int_t il=0; il<AliTRDgeometry::kNlayer; il++){
+    if(!(tracklet = fTrack->GetTracklet(il))) continue;
+    if(!tracklet->IsOK()) continue;
+    AliTRDcluster *c = 0x0;
+    tracklet->ResetClusterIter(kFALSE);
+    while((c = tracklet->PrevCluster())){
+      Float_t xc = c->GetX();
+      Float_t yc = c->GetY();
+      Float_t zc = c->GetZ();
+      Float_t zt = tracklet->GetZref(0) - (tracklet->GetX0()-xc)*tracklet->GetZref(1); 
+      yc -= tracklet->GetTilt()*(zc-zt);
+      fRim.AddPoint(xc, yc, zc, 1, 10);
+    }
+    tracklet->Fit(kTRUE);
 
-  Float_t  dydx_ref, dydx_fit;
-  AliTRDseedV1 *fTracklet = 0x0;  
-  for(Int_t ily=0; ily<AliTRDgeometry::kNlayer; ily++){
-    if(!(fTracklet = fTrack->GetTracklet(ily))) continue;
-    if(!fTracklet->IsOK()) continue;
+    x[il] = tracklet->GetX0();
+    y[il] = tracklet->GetYfit(0)-tracklet->GetYfit(1)*(tracklet->GetX0()-x[il]);
+    dydx[il] = tracklet->GetYref(1);
+  }
+  fRim.Update();
+
+  for(Int_t il=0; il<AliTRDgeometry::kNlayer; il++){
+    if(x[il] < 0.) continue;
+    if(!(tracklet = fTrack->GetTracklet(il))) continue;
+    if(!tracklet->IsOK()) continue;
+
+    dydx_ref = fRim.GetDYat(x[il]); 
+    dydx_fit = tracklet->GetYfit(1);
+
+    phiref = TMath::ATan(dydx_ref);//*TMath::RadToDeg();
+    phifit = TMath::ATan(dydx_fit);//*TMath::RadToDeg();
+    
+    phidiff = phiref-phifit; /*/sigma_phi*/;
+
+    h->Fill(dydx_ref, phidiff);
 
-    dydx_ref   = fTracklet->GetYref(1);
-    dydx_fit   = fTracklet->GetYfit(1);
-  
-    h->Fill(dydx_ref, dydx_ref-dydx_fit);
 
     if(fDebugLevel>=1){
       (*fDebugStream) << "TrkltPhiResiduals"
-        << "dydx_ref="     << dydx_ref
-        << "dydx_fit="     << dydx_fit
+        << "layer="  << il
+        << "dydx_fit="   << dydx_fit
+        << "dydx_ref="   << dydx_ref
+        << "phiref="     << phiref
+        << "phifit="     << phifit
+        << "phidiff="     << phidiff
         << "\n";
     }
   }
@@ -366,7 +398,7 @@ TH1* AliTRDtrackingResolution::PlotResolution(const AliTRDtrackV1 *track)
   UChar_t s;
   Int_t pdg = fMC->GetPDG(), det=-1;
   Int_t label = fMC->GetLabel();
-  Float_t x0, y0, z0, dy, dydx, dzdx;
+  Float_t x0, y0, z0, dx, dy, dydx, dzdx;
   AliTRDseedV1 *fTracklet = 0x0;  
   for(Int_t ily=0; ily<AliTRDgeometry::kNlayer; ily++){
     if(!(fTracklet = fTrack->GetTracklet(ily))) continue;
@@ -383,7 +415,11 @@ TH1* AliTRDtrackingResolution::PlotResolution(const AliTRDtrackV1 *track)
     tt.SetZref(1, dzdx); 
     if(!tt.Fit(kFALSE)) continue;
     //tt.Update();
-    dy = tt.GetYfit(0) - y0;
+
+    dx = 0.;//x0 - tt.GetXref();
+    Float_t yt = y0 - dx*dydx;
+    Float_t yf = tt.GetYfit(0) - dx*tt.GetYfit(1);
+    dy = yf-yt;
     Float_t dphi   = TMath::ATan(tt.GetYfit(1)) - TMath::ATan(dydx);
     Float_t dz = 100.;
     Bool_t  cross = fTracklet->GetNChange();
@@ -427,7 +463,7 @@ TH1* AliTRDtrackingResolution::PlotResolution(const AliTRDtrackV1 *track)
       Float_t xc = c->GetX();
       Float_t yc = c->GetY();
       Float_t zc = c->GetZ();
-      Float_t dx = x0 - xc; 
+      dx = x0 - xc; 
       Float_t yt = y0 - dx*dydx;
       Float_t zt = z0 - dx*dzdx; 
       dy = yt - (yc - tilt*(zc-zt));
@@ -471,7 +507,7 @@ void AliTRDtrackingResolution::GetRefFigure(Int_t ifig)
     if(!(g = (TGraphErrors*)fGraphS->At(ifig))) break;
     g->Draw("apl");
     ax = g->GetHistogram()->GetYaxis();
-    ax->SetRangeUser(-.5, 1.);
+    ax->SetRangeUser(-.5, 2.5);
     ax->SetTitle("Clusters Y Residuals #sigma/#mu [mm]");
     ax = g->GetHistogram()->GetXaxis();
     ax->SetTitle("tg(#phi)");
@@ -485,7 +521,7 @@ void AliTRDtrackingResolution::GetRefFigure(Int_t ifig)
     if(!(g = (TGraphErrors*)fGraphS->At(ifig))) break;
     g->Draw("apl");
     ax = g->GetHistogram()->GetYaxis();
-    ax->SetRangeUser(-.5, 1.);
+    ax->SetRangeUser(-.5, 3.);
     ax->SetTitle("Tracklet Y Residuals #sigma/#mu [mm]");
     ax = g->GetHistogram()->GetXaxis();
     ax->SetTitle("tg(#phi)");
@@ -499,8 +535,8 @@ void AliTRDtrackingResolution::GetRefFigure(Int_t ifig)
     if(!(g = (TGraphErrors*)fGraphS->At(ifig))) break;
     g->Draw("apl");
     ax = g->GetHistogram()->GetYaxis();
-    ax->SetRangeUser(-.5, 1.);
-    ax->SetTitle("Tracklet Phi Residuals #sigma/#mu [mm]");
+    ax->SetRangeUser(-.5, 2.);
+    ax->SetTitle("Tracklet Phi Residuals #sigma/#mu [rad]");
     ax = g->GetHistogram()->GetXaxis();
     ax->SetTitle("tg(#phi)");
     if(!(g = (TGraphErrors*)fGraphM->At(ifig))) break;