+//_____________________________________________________________________________
+Int_t AliTRDtrack::PropagateToR(Double_t r,Double_t step)
+{
+ //
+ // Propagate track to the radial position
+ // Rotation always connected to the last track position
+ //
+
+ Double_t xyz0[3];
+ Double_t xyz1[3];
+ Double_t y;
+ Double_t z;
+
+ Double_t radius = TMath::Sqrt(GetX()*GetX() + GetY()*GetY());
+ // Direction +-
+ Double_t dir = (radius > r) ? -1.0 : 1.0;
+
+ for (Double_t x = radius+dir*step; dir*x < dir*r; x += dir*step) {
+
+ GetXYZ(xyz0);
+ Double_t alpha = TMath::ATan2(xyz0[1],xyz0[0]);
+ Rotate(alpha,kTRUE);
+ GetXYZ(xyz0);
+ GetProlongation(x,y,z);
+ xyz1[0] = x * TMath::Cos(alpha) + y * TMath::Sin(alpha);
+ xyz1[1] = x * TMath::Sin(alpha) - y * TMath::Cos(alpha);
+ xyz1[2] = z;
+ Double_t param[7];
+ AliTracker::MeanMaterialBudget(xyz0,xyz1,param);
+ if (param[1] <= 0) {
+ param[1] = 100000000;
+ }
+ PropagateTo(x,param[1],param[0]*param[4]);
+
+ }
+
+ GetXYZ(xyz0);
+ Double_t alpha = TMath::ATan2(xyz0[1],xyz0[0]);
+ Rotate(alpha,kTRUE);
+ GetXYZ(xyz0);
+ GetProlongation(r,y,z);
+ xyz1[0] = r * TMath::Cos(alpha) + y * TMath::Sin(alpha);
+ xyz1[1] = r * TMath::Sin(alpha) - y * TMath::Cos(alpha);
+ xyz1[2] = z;
+ Double_t param[7];
+ AliTracker::MeanMaterialBudget(xyz0,xyz1,param);
+
+ if (param[1] <= 0) {
+ param[1] = 100000000;
+ }
+ PropagateTo(r,param[1],param[0]*param[4]);
+
+ return 0;
+
+}
+
+//_____________________________________________________________________________
+Int_t AliTRDtrack::GetSector() const
+{
+ //
+ // Return the current sector
+ //
+
+ return Int_t(TVector2::Phi_0_2pi(GetAlpha()) / AliTRDgeometry::GetAlpha())
+ % AliTRDgeometry::kNsector;
+
+}
+
+//_____________________________________________________________________________
+void AliTRDtrack::SetSampledEdx(Float_t q, Int_t i)
+{
+ //
+ // The sampled energy loss
+ //
+
+ Double_t s = GetSnp();
+ Double_t t = GetTgl();
+ q *= TMath::Sqrt((1.0 - s*s) / (1.0 + t*t));
+ fdQdl[i] = q;
+
+}
+
+//_____________________________________________________________________________
+void AliTRDtrack::SetSampledEdx(Float_t q)
+{
+ //
+ // The sampled energy loss
+ //
+
+ Double_t s = GetSnp();
+ Double_t t = GetTgl();
+ q *= TMath::Sqrt((1.0 - s*s) / (1.0 + t*t));
+ fdQdl[fNdedx] = q;
+ fNdedx++;
+
+}
+
+//_____________________________________________________________________________
+Double_t AliTRDtrack::GetBz() const
+{
+ //
+ // Returns Bz component of the magnetic field (kG)
+ //
+
+ if (AliTracker::UniformField()) {
+ return AliTracker::GetBz();
+ }
+ Double_t r[3];
+ GetXYZ(r);
+
+ return AliTracker::GetBz(r);
+
+}