fIndex[0]=index;
SetNumberOfClusters(1);
-
+ //
+ //MI
+ fSdEdx = 0;
+ fNFoundable = 0;
+ fBConstrain = 0;
+ fLastPoint = 0;
+ fFirstPoint = 0;
+ fRemoval = 0;
+ fTrackType = 0;
+ fLab2 = 0;
}
//_____________________________________________________________________________
fC20=c20; fC21=c21; fC22=c22;
fC30=c[6 ]; fC31=c[7 ]; fC32=c32; fC33=c[9 ];
fC40=c[10]; fC41=c[11]; fC42=c42; fC43=c[13]; fC44=c[14];
-
+ //
+ //MI
+ fSdEdx = 0;
+ fNFoundable = 0;
+ fBConstrain = 0;
+ fLastPoint = 0;
+ fFirstPoint = 0;
+ fRemoval = 0;
+ fTrackType = 0;
+ fLab2 = 0;
}
//_____________________________________________________________________________
StartTimeIntegral();
Double_t times[10]; t.GetIntegratedTimes(times); SetIntegratedTimes(times);
SetIntegratedLength(t.GetIntegratedLength());
+ //
+ //MI
+ fSdEdx = 0;
+ fNFoundable = 0;
+ fBConstrain = 0;
+ fLastPoint = 0;
+ fFirstPoint = 0;
+ fRemoval = 0;
+ fTrackType = 0;
+ fLab2 = 0;
}
//_____________________________________________________________________________
fC40=t.fC40; fC41=t.fC41; fC42=t.fC42; fC43=t.fC43; fC44=t.fC44;
Int_t n=GetNumberOfClusters();
- for (Int_t i=0; i<n; i++) fIndex[i]=t.fIndex[i];
+ for (Int_t i=0; i<kMaxRow; i++) fIndex[i]=t.fIndex[i];
+ //
+ //MI
+ fSdEdx = t.fSdEdx;
+ fNFoundable = t.fNFoundable;
+ fBConstrain = t.fBConstrain;
+ fLastPoint = t.fLastPoint;
+ fFirstPoint = t.fFirstPoint;
+ fRemoval = t.fRemoval ;
+ fTrackType = t.fTrackType;
+ fLab2 = t.fLab2;
+
}
//_____________________________________________________________________________
}
////////////////////////////////////////////////////////////////////////
+
+
+////////////////////////////////////////////////////////////////////////
+// MI ADDITION
+
+Float_t AliTPCtrack::Density(Int_t row0, Int_t row1)
+{
+ //
+ // calculate cluster density
+ Int_t good = 0;
+ Int_t found = 0;
+ //if (row0<fFirstPoint) row0 = fFirstPoint;
+ if (row1>fLastPoint) row1 = fLastPoint;
+
+
+ for (Int_t i=row0;i<=row1;i++){
+ // Int_t index = fClusterIndex[i];
+ Int_t index = fIndex[i];
+ if (index!=-1) good++;
+ if (index>0) found++;
+ }
+ Float_t density=0;
+ if (good>0) density = Float_t(found)/Float_t(good);
+ return density;
+}
+
+
+Float_t AliTPCtrack::Density2(Int_t row0, Int_t row1)
+{
+ //
+ // calculate cluster density
+ Int_t good = 0;
+ Int_t found = 0;
+ //
+ for (Int_t i=row0;i<=row1;i++){
+ Int_t index = fIndex[i];
+ if (index!=-1) good++;
+ if (index>0) found++;
+ }
+ Float_t density=0;
+ if (good>0) density = Float_t(found)/Float_t(good);
+ return density;
+}
+
+
+Double_t AliTPCtrack::GetZat0() const
+{
+ //
+ // return virtual z - supposing that x = 0
+ if (TMath::Abs(fP2)>1) return 0;
+ if (TMath::Abs(fX*fP4-fP2)>1) return 0;
+ Double_t vz = fP1+fP3/fP4*(asin(-fP2)-asin(fX*fP4-fP2));
+ return vz;
+}
+
+
+Double_t AliTPCtrack::GetD(Double_t x, Double_t y) const {
+ //------------------------------------------------------------------
+ // This function calculates the transverse impact parameter
+ // with respect to a point with global coordinates (x,y)
+ //------------------------------------------------------------------
+ //Double_t xt=fX, yt=fP0;
+
+ Double_t sn=TMath::Sin(fAlpha), cs=TMath::Cos(fAlpha);
+ Double_t a = x*cs + y*sn;
+ y = -x*sn + y*cs; x=a;
+ //
+ Double_t r = TMath::Abs(1/fP4);
+ Double_t x0 = TMath::Abs(fP2*r);
+ Double_t y0 = fP0;
+ y0= fP0+TMath::Sqrt(1-(fP4*fX-fP2)*(fP4*fX-fP2))/fP4;
+
+ Double_t delta = TMath::Sqrt((x-x0)*(x-x0)+(y-y0)*(y-y0));
+ // Double_t delta = TMath::Sqrt(TMath::Abs(x*x-2*x0*x+x0*x0+ y*y-2*y*y0+y0*y0));
+ delta -= TMath::Abs(r);
+ return delta;
+}
AliTPCtrack(const AliTPCtrack& t);
virtual ~AliTPCtrack() {}
Int_t PropagateToVertex(Double_t x0=36.66,Double_t rho=1.2e-3);
- Int_t PropagateToPrimVertex(Double_t x0,Double_t rho){return PropagateToVertex(x0,rho);}
Int_t Rotate(Double_t angle);
void SetdEdx(Double_t dedx) {fdEdx=dedx;}
Int_t PropagateTo(Double_t xr,Double_t x0=28.94,Double_t rho=0.9e-3);
Int_t Update(const AliCluster* c, Double_t chi2, UInt_t i);
void ResetCovariance();
+ // MI addition
+ Float_t fSdEdx; // sigma of dedx
+ //
+ Int_t fNFoundable; //number of foundable clusters - dead zone taken to the account
+ Bool_t fBConstrain; // indicate seeding with vertex constrain
+ Int_t fLastPoint; // last cluster position
+ Int_t fFirstPoint; // first cluster position
+ Int_t fRemoval; // removal factor
+ Int_t fTrackType; // track type - 0 - normal - 1 - kink - 2 -V0 3- double found
+ Int_t fLab2; // index of corresponding track (kink, V0, double)
+ Int_t fNShared; // number of shared points
+ Float_t fKinkPoint[12]; //radius, of kink, dfi and dtheta
+ //
+ // TClonesArray * fHelixIn; //array of helixes
+ //TClonesArray * fHelixOut; //array of helixes
+ //
+ Float_t Density(Int_t row0, Int_t row1); //calculate cluster density
+ Float_t Density2(Int_t row0, Int_t row1); //calculate cluster density
+ Double_t GetZat0() const;
+ Double_t GetD(Double_t x=0, Double_t y=0) const;
protected:
Double_t fX; // X-coordinate of this track (reference plane)
Double_t fC30, fC31, fC32, fC33; // track
Double_t fC40, fC41, fC42, fC43, fC44; // parameters
- UInt_t fIndex[kMaxRow]; // indices of associated clusters
+ Int_t fIndex[kMaxRow]; // indices of associated clusters
//[SR, 01.04.2003]
Int_t fNWrong; // number of wrong clusters