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";
}
}
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";
}
}
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;
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();
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));
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)");
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)");
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;