#include "AliCluster.h"
#include "AliTPCtrack.h"
+#include "AliESDtrack.h"
#include "AliITStrackV2.h"
ClassImp(AliITStrackV2)
fC41(0),
fC42(0),
fC43(0),
- fC44(0)
+ fC44(0),
+ fESDtrack(0)
{
for(Int_t i=0; i<kMaxLayer; i++) fIndex[i]=0;
for(Int_t i=0; i<4; i++) fdEdxSample[i]=0;
}
+
//____________________________________________________________________________
AliITStrackV2::AliITStrackV2(const AliTPCtrack& t) throw (const Char_t *) :
AliKalmanTrack(t) {
//Conversion of the track parameters
Double_t x,p[5]; t.GetExternalParameters(x,p);
fX=x; x=GetConvConst();
- fP0=p[0];
- fP1=p[1];
+ fP0=p[0];
+ fP1=p[1];
fP2=p[2];
fP3=p[3];
- fP4=p[4]/x;
+ fP4=p[4]/x;
//Conversion of the covariance matrix
Double_t c[15]; t.GetExternalCovariance(c);
}
+//____________________________________________________________________________
+AliITStrackV2::AliITStrackV2(AliESDtrack& t,Bool_t c) throw (const Char_t *) :
+AliKalmanTrack() {
+ //------------------------------------------------------------------
+ // Conversion ESD track -> ITS track.
+ // If c==kTRUE, create the ITS track out of the constrained params.
+ //------------------------------------------------------------------
+ SetNumberOfClusters(t.GetITSclusters(fIndex));
+ SetLabel(t.GetLabel());
+ SetMass(t.GetMass());
+
+ fdEdx=t.GetITSsignal();
+ fAlpha = t.GetAlpha();
+ if (fAlpha < -TMath::Pi()) fAlpha += 2*TMath::Pi();
+ else if (fAlpha >= TMath::Pi()) fAlpha -= 2*TMath::Pi();
+
+ //Conversion of the track parameters
+ Double_t x,p[5];
+ if (c) t.GetConstrainedExternalParameters(x,p);
+ else t.GetExternalParameters(x,p);
+ fX=x; x=GetConvConst();
+ fP0=p[0];
+ fP1=p[1];
+ fP2=p[2];
+ fP3=p[3];
+ fP4=p[4]/x;
+
+ //Conversion of the covariance matrix
+ Double_t cv[15];
+ if (c) t.GetConstrainedExternalCovariance(cv);
+ else t.GetExternalCovariance(cv);
+ fC00=cv[0 ];
+ fC10=cv[1 ]; fC11=cv[2 ];
+ fC20=cv[3 ]; fC21=cv[4 ]; fC22=cv[5 ];
+ fC30=cv[6 ]; fC31=cv[7 ]; fC32=cv[8 ]; fC33=cv[9 ];
+ fC40=cv[10]/x; fC41=cv[11]/x; fC42=cv[12]/x; fC43=cv[13]/x; fC44=cv[14]/x/x;
+
+ if (t.GetStatus()&AliESDtrack::kTIME) {
+ StartTimeIntegral();
+ Double_t times[10]; t.GetIntegratedTimes(times); SetIntegratedTimes(times);
+ SetIntegratedLength(t.GetIntegratedLength());
+ }
+ fESDtrack=&t;
+
+ if (!Invariant()) throw "AliITStrackV2: conversion failed !\n";
+
+}
+
+void AliITStrackV2::UpdateESDtrack(ULong_t flags) {
+ fESDtrack->UpdateTrackParams(this,flags);
+}
+void AliITStrackV2::SetConstrainedESDtrack(Double_t chi2) {
+ fESDtrack->SetConstrainedTrackParams(this,chi2);
+}
+
//____________________________________________________________________________
AliITStrackV2::AliITStrackV2(const AliITStrackV2& t) : AliKalmanTrack(t) {
//------------------------------------------------------------------
fIndex[i]=t.fIndex[i];
if (i<4) fdEdxSample[i]=t.fdEdxSample[i];
}
+ fESDtrack=t.fESDtrack;
}
//_____________________________________________________________________________
if (x0!=0.) {
d*=x0;
Double_t dE=0.153e-3/beta2*(log(5940*beta2/(1-beta2)) - beta2)*d;
+ if (beta2/(1-beta2)>3.5*3.5)
+ dE=0.153e-3/beta2*(log(3.5*5940)+0.5*log(beta2/(1-beta2)) - beta2)*d;
fP4*=(1.- sqrt(p2+GetMass()*GetMass())/p2*dE);
}
return 0;
}
+ if (chi2<0) return 1;
+
Int_t n=GetNumberOfClusters();
fIndex[n]=index;
SetNumberOfClusters(n+1);