fCchi2(1e10),
fIalpha(0),
fIx(0),
+fTalpha(0),
+fTx(0),
fOalpha(0),
fOx(0),
fITSchi2(0),
fTPCsignal(0),
fTRDchi2(0),
fTRDncls(0),
+fTRDncls0(0),
fTRDsignal(0),
fTOFchi2(0),
fTOFindex(0),
fPHOSpos[0]=fPHOSpos[1]=fPHOSpos[2]=0.;
fEMCALpos[0]=fEMCALpos[1]=fEMCALpos[2]=0.;
Int_t i;
- for (i=0; i<5; i++) { fRp[i]=0.; fCp[i]=0.; fIp[i]=0.; fOp[i]=0.;}
- for (i=0; i<15; i++) { fRc[i]=0.; fCc[i]=0.; fIc[i]=0.; fOc[i]=0.; }
+ for (i=0; i<5; i++) { fRp[i]=0.; fCp[i]=0.; fIp[i]=0.; fOp[i]=0.; fTp[i]=0.;}
+ for (i=0; i<15; i++) { fRc[i]=0.; fCc[i]=0.; fIc[i]=0.; fOc[i]=0.; fTc[i]=0.; }
for (i=0; i<6; i++) { fITSindex[i]=0; }
for (i=0; i<180; i++){ fTPCindex[i]=0; }
- for (i=0; i<90; i++) { fTRDindex[i]=0; }
+ for (i=0; i<130; i++) { fTRDindex[i]=0; }
fTPCLabel = 0;
fTRDLabel = 0;
fITSLabel = 0;
+ fITStrack = 0;
+ fTRDtrack = 0;
+}
+
+//_______________________________________________________________________
+
+AliESDtrack::AliESDtrack(const AliESDtrack& track):TObject(track){
+ //
+ //copy constructor
+ //
+ fFlags = track.fFlags;
+ fLabel =track.fLabel;
+ fTrackLength =track.fTrackLength;
+ for (Int_t i=0;i<kSPECIES;i++) fTrackTime[i] =track.fTrackTime[i];
+ for (Int_t i=0;i<kSPECIES;i++) fR[i] =track.fR[i];
+ fStopVertex =track.fStopVertex;
+ //
+ fRalpha =track.fRalpha;
+ fRx =track.fRx;
+ for (Int_t i=0;i<5;i++) fRp[i] =track.fRp[i];
+ for (Int_t i=0;i<15;i++) fRc[i] =track.fRc[i];
+ //
+ fCalpha =track.fCalpha;
+ fCx =track.fCx;
+ for (Int_t i=0;i<5;i++) fCp[i] =track.fCp[i];
+ for (Int_t i=0;i<15;i++) fCc[i] =track.fCc[i];
+ fCchi2 =track.fCchi2;
+ //
+ fIalpha =track.fIalpha;
+ fIx =track.fIx;
+ for (Int_t i=0;i<5;i++) fIp[i] =track.fIp[i];
+ for (Int_t i=0;i<15;i++) fIc[i] =track.fIc[i];
+ //
+ fTalpha =track.fTalpha;
+ fTx =track.fTx;
+ for (Int_t i=0;i<5;i++) fTp[i] =track.fTp[i];
+ for (Int_t i=0;i<15;i++) fTc[i] =track.fTc[i];
+ //
+ fOalpha =track.fOalpha;
+ fOx =track.fOx;
+ for (Int_t i=0;i<5;i++) fOp[i] =track.fOp[i];
+ for (Int_t i=0;i<15;i++) fOc[i] =track.fOc[i];
+ //
+ fXalpha =track.fXalpha;
+ fXx =track.fXx;
+ for (Int_t i=0;i<5;i++) fXp[i] =track.fXp[i];
+ for (Int_t i=0;i<15;i++) fXc[i] =track.fXc[i];
+ //
+ fITSchi2 =track.fITSchi2;
+ for (Int_t i=0;i<12;i++) fITSchi2MIP[i] =track.fITSchi2MIP[i];
+ fITSncls =track.fITSncls;
+ for (Int_t i=0;i<6;i++) fITSindex[i]=track.fITSindex[i];
+ fITSsignal =track.fITSsignal;
+ for (Int_t i=0;i<kSPECIES;i++) fITSr[i]=track.fITSr[i];
+ fITSLabel =track.fITSLabel;
+ fITSFakeRatio =track.fITSFakeRatio;
+ fITStrack =0; //coping separatelly - in user code
+ //
+ fTPCchi2 =track.fTPCchi2;
+ fTPCncls =track.fTPCncls;
+ for (Int_t i=0;i<180;i++) fTPCindex[i]=track.fTPCindex[i];
+ fTPCClusterMap=track.fTPCClusterMap;
+ fTPCsignal=track.fTPCsignal;
+ for (Int_t i=0;i<kSPECIES;i++) fTPCr[i]=track.fTPCr[i];
+ fTPCLabel=track.fTPCLabel;
+ //
+ fTRDchi2=track.fTRDchi2;
+ fTRDncls=track.fTRDncls;
+ fTRDncls0=track.fTRDncls0;
+ for (Int_t i=0;i<130;i++) fTRDindex[i]=track.fTRDindex[i];
+ fTRDsignal=track.fTRDsignal;
+ for (Int_t i=0;i<kSPECIES;i++) fTRDr[i]=track.fTRDr[i];
+ fTRDLabel=track.fTRDLabel;
+ fTRDtrack=0;
+ //
+ fTOFchi2=track.fTOFchi2;
+ fTOFindex=track.fTOFindex;
+ fTOFsignal=track.fTOFsignal;
+ for (Int_t i=0;i<kSPECIES;i++) fTOFr[i]=track.fTOFr[i];
+ //
+ for (Int_t i=0;i<3;i++) fPHOSpos[i]=track.fPHOSpos[i];
+ fPHOSsignal=track.fPHOSsignal;
+ for (Int_t i=0;i<kSPECIES;i++) fPHOSr[i]=track.fPHOSr[i];
+ //
+ for (Int_t i=0;i<3;i++) fEMCALpos[i]=track.fEMCALpos[i];
+ fEMCALsignal=track.fEMCALsignal;
+ for (Int_t i=0;i<kSPECIES;i++) fEMCALr[i]=track.fEMCALr[i];
+ //
+ fRICHsignal=track.fRICHsignal;
+ for (Int_t i=0;i<kSPECIES;i++) fRICHr[i]=track.fRICHr[i];
+
}
+//_______________________________________________________________________
+AliESDtrack::~AliESDtrack(){
+ //
+ // This is destructor according Coding Conventrions
+ //
+ //printf("Delete track\n");
+ if (fITStrack) delete fITStrack;
+ if (fTRDtrack) delete fTRDtrack;
+}
//_______________________________________________________________________
Double_t AliESDtrack::GetMass() const {
if (fR[0]<fR[4]*10.) return 0.93827;
return 0.00051;
}
- if (k==1) return 0.10566;
+ if (k==1) return 0.10566;
if (k==2||k==-1) return 0.13957;
if (k==3) return 0.49368;
if (k==4) return 0.93827;
for (i=0; i<15; i++) fXc[i]=buf[i];
}
}
- case kTOFin:
- break;
- case kTOFout:
- break;
case kTRDin: case kTRDrefit:
fTRDLabel = t->GetLabel();
-
+
fTRDncls=t->GetNumberOfClusters();
fTRDchi2=t->GetChi2();
for (Int_t i=0;i<fTRDncls;i++) fTRDindex[i]=t->GetClusterIndex(i);
fTRDsignal=t->GetPIDsignal();
break;
+ case kTRDbackup:
+ t->GetExternalParameters(fTx,fTp);
+ t->GetExternalCovariance(fTc);
+ fTRDncls0 = t->GetNumberOfClusters();
+ break;
+ case kTOFin:
+ break;
+ case kTOFout:
+ break;
case kTRDStop:
break;
default:
}
+void AliESDtrack::GetTRDExternalParameters(Double_t &x, Double_t p[5], Double_t cov[15]) const
+{
+ //
+ //this function returns TRD parameters
+ //
+ x=fTx;
+ for (Int_t i=0; i<5; i++) p[i]=fTp[i];
+ for (Int_t i=0; i<15; i++) cov[i]=fTc[i];
+}
+
void AliESDtrack::GetOuterPxPyPz(Double_t *p, TString det) const {
//---------------------------------------------------------------------
// This function returns the global track momentum components
}
void AliESDtrack::SetITSChi2MIP(const Float_t *chi2mip){
- for (Int_t i=0; i<6; i++) fITSchi2MIP[i]=chi2mip[i];
+ for (Int_t i=0; i<12; i++) fITSchi2MIP[i]=chi2mip[i];
}
//_______________________________________________________________________
void AliESDtrack::GetITSpid(Double_t *p) const {
// This function returns indices of the assgined TRD clusters
//---------------------------------------------------------------------
if (idx!=0)
- for (Int_t i=0; i<90; i++) idx[i]=fTRDindex[i]; // MI I prefer some constant
+ for (Int_t i=0; i<130; i++) idx[i]=fTRDindex[i]; // MI I prefer some constant
return fTRDncls;
}
class AliESDtrack : public TObject {
public:
AliESDtrack();
- virtual ~AliESDtrack() {}
+ AliESDtrack(const AliESDtrack& track);
+ virtual ~AliESDtrack();
void SetStatus(ULong_t flags) {fFlags|=flags;}
void ResetStatus(ULong_t flags) {fFlags&=~flags;}
Bool_t UpdateTrackParams(AliKalmanTrack *t, ULong_t flags);
void SetITSpid(const Double_t *p);
void SetITSChi2MIP(const Float_t *chi2mip);
+ void SetITStrack(AliKalmanTrack * track){fITStrack=track;}
void GetITSpid(Double_t *p) const;
Float_t GetITSsignal() const {return fITSsignal;}
Float_t GetITSchi2() const {return fITSchi2;}
Int_t GetITSclusters(UInt_t *idx) const;
Int_t GetITSLabel() const {return fITSLabel;}
Float_t GetITSFakeRatio() const {return fITSFakeRatio;}
-
+ AliKalmanTrack * GetITStrack(){return fITStrack;}
void SetTPCpid(const Double_t *p);
void GetTPCpid(Double_t *p) const;
const TBits& GetTPCClusterMap() const {return fTPCClusterMap;}
void SetTRDpid(const Double_t *p);
+ void SetTRDtrack(AliKalmanTrack * track){fTRDtrack=track;}
void GetTRDpid(Double_t *p) const;
Float_t GetTRDsignal() const {return fTRDsignal;}
Float_t GetTRDchi2() const {return fTRDchi2;}
void SetTRDpid(Int_t iSpecies, Float_t p);
Float_t GetTRDpid(Int_t iSpecies) const;
Int_t GetTRDLabel() const {return fTRDLabel;}
-
+ void GetTRDExternalParameters(Double_t &x, Double_t p[5], Double_t cov[15]) const;//MI
+ AliKalmanTrack * GetTRDtrack(){return fTRDtrack;}
void SetTOFsignal(Double_t tof) {fTOFsignal=tof;}
Float_t GetTOFsignal() const {return fTOFsignal;}
kTPCin=0x0010,kTPCout=0x0020,kTPCrefit=0x0040,kTPCpid=0x0080,
kTRDin=0x0100,kTRDout=0x0200,kTRDrefit=0x0400,kTRDpid=0x0800,
kTOFin=0x1000,kTOFout=0x2000,kTOFrefit=0x4000,kTOFpid=0x8000,
- kPHOSpid=0x10000, kRICHpid=0x20000, kEMCALpid=0x40000,
+ kPHOSpid=0x10000, kRICHpid=0x20000, kEMCALpid=0x40000,
+ kTRDbackup=0x80000,
kTRDStop=0x20000000,
kESDpid=0x40000000,
kTIME=0x80000000
Double_t fIx; // x-coordinate of the track reference plane
Double_t fIp[5]; // external track parameters
Double_t fIc[15]; // external cov. matrix of the track parameters
+//Track parameters at the inner wall of the TRD
+ Double_t fTalpha; // Track rotation angle
+ Double_t fTx; // x-coordinate of the track reference plane
+ Double_t fTp[5]; // external track parameters
+ Double_t fTc[15]; // external cov. matrix of the track parameters
//Track parameters at the radius of the PHOS
Double_t fOalpha; // Track rotation angle
// ITS related track information
Float_t fITSchi2; // chi2 in the ITS
- Float_t fITSchi2MIP[6]; // chi2s in the ITS
+ Float_t fITSchi2MIP[12]; // chi2s in the ITS
Int_t fITSncls; // number of clusters assigned in the ITS
UInt_t fITSindex[6]; //! indices of the assigned ITS clusters
Float_t fITSsignal; // detector's PID signal
Float_t fITSr[kSPECIES]; // "detector response probabilities" (for the PID)
Int_t fITSLabel; // label according TPC
Float_t fITSFakeRatio; // ration of fake tracks
+ AliKalmanTrack * fITStrack; //OWNER: pointer to the ITS track -- currently for debug purpose
+
// TPC related track information
Float_t fTPCchi2; // chi2 in the TPC
Int_t fTPCncls; // number of clusters assigned in the TPC
Float_t fTPCsignal; // detector's PID signal
Float_t fTPCr[kSPECIES]; // "detector response probabilities" (for the PID)
Int_t fTPCLabel; // label according TPC
-
// TRD related track information
Float_t fTRDchi2; // chi2 in the TRD
Int_t fTRDncls; // number of clusters assigned in the TRD
- UInt_t fTRDindex[90]; //! indices of the assigned TRD clusters
+ Int_t fTRDncls0; // number of clusters assigned in the TRD before first material cross
+ UInt_t fTRDindex[130]; //! indices of the assigned TRD clusters
Float_t fTRDsignal; // detector's PID signal
Float_t fTRDr[kSPECIES]; // "detector response probabilities" (for the PID)
Int_t fTRDLabel; // label according TRD
-
+ AliKalmanTrack * fTRDtrack; //OWNER: pointer to the TRD track -- currently for debug purpose
// TOF related track information
Float_t fTOFchi2; // chi2 in the TOF
UInt_t fTOFindex; // index of the assigned TOF cluster
Float_t fRICHsignal; // detector's PID signal (beta for RICH)
Float_t fRICHr[kSPECIES];// "detector response probabilities" (for the PID)
- ClassDef(AliESDtrack,5) //ESDtrack
+ ClassDef(AliESDtrack,6) //ESDtrack
};
#endif