-#ifndef ITSTRACK_H
-#define ITSTRACK_H
+#ifndef ALIITSTRACK_H
+#define ALIITSTRACK_H
+#include <TObject.h>
+#include <TMatrix.h>
+#include <TVector.h>
-////////////////////////////////////////////////////////////////////////
-// Track class for set: ITS //
-////////////////////////////////////////////////////////////////////////
+#include "../TPC/AliTPCtrack.h"
-#include <TObject.h>
+class TObjArray;
+// ITS Track Class
+//Origin A. Badala' and G.S. Pappalardo: e-mail Angela.Badala@ct.infn.it, Giuseppe.S.Pappalardo@ct.infn.it
+//
+class AliITStrack : public TObject {
+
+public:
+ AliITStrack() ;
+ AliITStrack(AliTPCtrack &obj);
+ AliITStrack(const AliITStrack &cobj);
+ AliITStrack &operator=(AliITStrack obj);
+ ~AliITStrack();
+ Float_t &operator()(Int_t i) const { return fvTrack(i);}
+ Float_t &operator()(Int_t r, Int_t c) const {return (*fmCovariance)(r,c);}
+ Int_t GetNumClust() { return fNumClustInTrack;}
+ void AddClustInTrack() { fNumClustInTrack++;}
+ TObjArray *GetListOfCluster() { return flistCluster;}
+ void SetChi2(Double_t chi2) { fChi2 = chi2;}
+ Double_t GetChi2() { return fChi2;}
+ Double_t GetZ() const {return fvTrack(1);}
+ Double_t GetTgl() const {return fvTrack(3);}
+ Double_t Getrtrack() const{return rtrack;}
+ Double_t Getphi() const{return fvTrack(0);}
+ Double_t GetC() const {return fvTrack(4);}
+ Double_t GetD() const{return fvTrack(2);}
+ Double_t GetPt() const {return 0.3*0.2/(fvTrack(4)*100.);}
+ void SetVertex(TVector &vert) { for(Int_t i=0;i<3;i++) fVertex(i) = vert(i);}
+ void SetErrorVertex(TVector &evert) {for(Int_t i=0;i<3;i++) fErrorVertex(i) = evert(i);}
+ void LmTPC(); // trasform state vector and covariance matrix from local TPC to master
+ TVector GetVertex() { return fVertex;}
+ TVector GetErrorVertex() { return fErrorVertex;}
+ Long_t GetLabel() { return flabel;}
+ void SetLabel(Long_t label) { flabel = label;}
+ Int_t GetLayer() { return fLayer;}
+ TMatrix &GetCMatrix() { return *fmCovariance;}
+ TVector &GetVector() { return fvTrack;}
+ void SetLayer(Int_t layer) { fLayer = layer;}
+ AliTPCtrack *GetTPCtrack() { return fTPCtrack;}
-//_____________________________________________________________________________
-class AliITStrack : public TObject {
+ void PutCluster(Int_t layerc, TVector vecclust);
+ TVector GetLabTrack(Int_t lay);
+ void Search(TVector VecTotLabref, Long_t &labref, Int_t &freq);
+ Float_t GetZclusterTrack(Int_t lay) {return ((Float_t) (*ClusterInTrack)(lay,2));}
+ void GetClusters();
+ Int_t GetLabTPC() {return (*fTPCtrack).GetLabel();}
+ Int_t GetIdPoint(Int_t lay) {return ((Int_t) (*ClusterInTrack)(lay,4));}
+ Int_t GetIdModule(Int_t lay) {return ((Int_t) (*ClusterInTrack)(lay,5));}
+
-public:
+ Int_t DoNotCross(Double_t rk) const;
+ Double_t argA(Double_t rk) const;
+ Double_t arga(Double_t rk) const;
+ Double_t argB(Double_t rk) const;
+ Double_t argC(Double_t rk) const;
+ void Propagation(Double_t rk) ;
- AliITStrack() {}
- AliITStrack(const AliITStrack& t) {}
- virtual ~AliITStrack() {}
+ Double_t GetSigmaphi() const{return ((Double_t)(*fmCovariance)(0,0));}
+ Double_t GetSigmaZ() const{return ((Double_t)(*fmCovariance)(1,1));}
+ void AddEL(AliITSRad *rl,Double_t signdE, Bool_t flagtot, Double_t mass=0.1396);
+ void AddMS(AliITSRad *rl);
+ void Correct(Double_t rk);
+ void SetDv(Double_t x) {Dv=x;}
+ void SetZv(Double_t x) {Zv=x;}
+ Double_t GetDv() {return Dv;}
+ Double_t GetZv() {return Zv;}
+ void SetsigmaDv( Double_t x) {sigmaDv=x;}
+ void SetsigmaZv( Double_t x) {sigmaZv=x;}
+ Double_t GetsigmaDv() {return sigmaDv;}
+ Double_t GetsigmaZv() {return sigmaZv;}
+ void PrimaryTrack(AliITSRad *rl);
+ void Setd2(TVector &x) {for(Int_t i=0; i<6; i++){d2(i)=x(i);}}
+ void Settgl2(TVector &x) {for(Int_t i=0; i<6; i++){tgl2(i)=x(i);}}
+ void Setdtgl(TVector &x) {for(Int_t i=0; i<6; i++){dtgl(i)=x(i);}}
+ TVector Getd2() { return d2;}
+ TVector Gettgl2() { return tgl2;}
+ TVector Getdtgl() { return dtgl;}
+ Double_t Getd2(Int_t i){return (Double_t)d2(i);}
+ Double_t Gettgl2(Int_t i){return (Double_t)tgl2(i);}
+ Double_t Getdtgl(Int_t i){return (Double_t)dtgl(i);}
+ Double_t GetxoTPC() {return xoTPC;}
+ // Double_t PhiDef(Double_t x, Double_t y);
+ // Double_t Getalphaprov(){return alphaprov;} //provvirio
+////////////////////////////////////////////////////////////////////////////////////////
+ private:
+
+ AliTPCtrack *fTPCtrack; // reference to TPC track
+
+ TVector fvTrack; // state vector: |phi/z/D/tgl/C
+ Double_t rtrack; // radius of courrent layer
+ TMatrix *fmCovariance; // Covariance Matrix
+
+ Double_t fChi2; // fChi^2 of track
+ TObjArray *flistCluster; // list of clusters of the track
+ Int_t fNumClustInTrack; // total number of clusters
+ Long_t flabel; // label of the track
+ TVector fVertex; // vertex coordinates of the track
+ TVector fErrorVertex; // error on the vertex coordinates
+ Int_t fLayer; // current Layer of the track
+ TMatrix *ClusterInTrack; // matrix of clusters belonging to the track
+ // row index = layer-1;
+ // cols index = master coordinates of the clusters
+
+
+ Double_t Dv; // radial impact parameter for vertex constraint
+ Double_t Zv; // longitudinal impact parameter for vertex constraint
+ Double_t sigmaDv; // sigma for Dv extraction
+ Double_t sigmaZv; // sigma for Zv extraction
+ TVector d2; // C(2,2) per primary track
+ TVector tgl2; // C(3,3) per primary track
+ TVector dtgl; // C(2,3) per primary track
- Bool_t IsSortable() const {return kTRUE;}
+ Double_t xoTPC;
+
+ //Double_t alphaprov; //provviosorio
- ClassDef(AliITStrack,1) // ITS reconstructed tracks
+
+ ClassDef(AliITStrack, 1)
+
};
#endif
+