d1126fe0e2bee4f51850cdcf43220d10cde539bf
[u/mrichter/AliRoot.git] / ITS / UPGRADE / AliITStrackU.h
1 #ifndef ALIITSTRACKU_H
2 #define ALIITSTRACKU_H 
3 /* Copyright(c) 1998-2003, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5 ////////////////////////////////////////////////////////
6 //  Stand alone track class UPGRADE                   //
7 //  Authors: A.Mastroserio                            //
8 //           C.Terrevoli                              //
9 //           annalisa.mastroserio@cern.ch             //      
10 //           cristina.terrevoli@ba.infn.it            //                                                    
11 ////////////////////////////////////////////////////////
12
13 #include "AliITStrackV2.h"
14 #include "AliCluster.h"
15
16
17 class AliESDtrack;
18
19 class AliITStrackU : public AliITStrackV2 {
20
21
22  public:
23
24   AliITStrackU();
25   AliITStrackU(Int_t nlay);
26   AliITStrackU(AliESDtrack& t,Bool_t c=kFALSE);
27   AliITStrackU(const AliITStrackU& t, Bool_t trackMI=kFALSE);
28   AliITStrackU(Double_t alpha, Double_t radius,
29                Double_t Ycoor, Double_t Zcoor, Double_t phi, 
30                Double_t tanlambda, Double_t curv, Int_t lab, Int_t nlay);
31   Bool_t UpdateMI(const AliCluster *c, Double_t chi2, Int_t i);
32   Int_t* ClIndex() {return fClIndex;}
33   Float_t GetSigmaY(Int_t i) const {return fSigmaY[i];}
34   Float_t GetSigmaZ(Int_t i) const {return fSigmaZ[i];}
35   Float_t GetSigmaYZ(Int_t i) const {return fSigmaYZ[i];}
36   void SetSigmaY(Int_t i, Float_t s) {fSigmaY[i]=s;}
37   void SetSigmaZ(Int_t i, Float_t s) {fSigmaZ[i]=s;}
38   void SetSigmaYZ(Int_t i, Float_t s) {fSigmaYZ[i]=s;}
39   
40   Float_t GetExpQ() const {return fExpQ;}
41   void SetExpQ(Float_t f) {fExpQ=f;}
42
43   
44   Int_t GetClIndex(Int_t i) const {return fClIndex[i];}
45   void SetClIndex(Int_t i, Int_t c) {fClIndex[i]=c;}
46   Float_t GetNormChi2(Int_t i) const {return fNormChi2[i];}
47   void SetNormChi2(Int_t i, Float_t n) {fNormChi2[i]=n;}
48   Float_t GetNormQ(Int_t i) const {return fNormQ[i];}
49   void SetNormQ(Int_t i, Float_t q) {fNormQ[i]=q;}
50   Float_t GetNy(Int_t i) const {return fNy[i];}
51   void SetNy(Int_t i, Float_t f) {fNy[i]=f;}
52   Float_t GetNz(Int_t i) const {return fNz[i];}
53   void SetNz(Int_t i, Float_t f) {fNz[i]=f;}
54   Double_t GetPredictedChi2MI(Double_t cy, Double_t cz, Double_t cerry, Double_t cerrz, Double_t covyz=0.) const;
55
56   Int_t GetClusterIndexU(Int_t i) const {return fSain[i];}
57   Int_t GetClusterMark(Int_t layer,Int_t i) const {return fCluMark[layer][i];}
58   Int_t GetNumberOfClustersU() const {return fNU;}
59   Int_t GetNumberOfMarked(Int_t lay) const {return fNM[lay];}
60   static Int_t GetMaxNumberOfClusters() {return kMaxNumberOfClusters;}
61   Int_t GetMaxNMarkedPerLayer() const {return kMaxNumberOfClustersL;}
62   void  AddClusterU(Int_t layer, Int_t clnumb);
63   void  AddClusterV2(Int_t layer,Int_t clnumb);
64   void  AddClusterMark(Int_t layer, Int_t clnumb);
65
66   enum {kMaxNumberOfClustersL = 4};// Max. n. of clusters/layer 
67   enum {kMaxNumberOfClusters = 15};// Max. number of clusters
68
69  protected: 
70   
71   void Init(Double_t alpha, Double_t radius,
72             Double_t Ycoor, Double_t Zcoor, Double_t phi, 
73             Double_t tanlambda, Double_t curv, Int_t lab/*,Int_t nlay*/);
74   void SetNumberOfClustersU(Int_t n){fNU = n;}
75   void SetNumberOfMarked(Int_t lay,Int_t n) {fNM[lay] = n;}
76   void ResetIndexU(){for(Int_t k=0; k<kMaxNumberOfClusters; k++) fSain[k]=0;}
77   void ResetMarked(); 
78
79   static const Int_t fgMaxNLayer = 8; //max number of layers in ITSUpgrade
80   Int_t fNLayers;    // number of layers
81   UInt_t  fSain[kMaxNumberOfClusters];   // cluster index (Stand Alone Upgrade)
82   Int_t fNU;          // number of clusters Stand Alone Upgrade 
83
84   Int_t fCluMark[fgMaxNLayer][kMaxNumberOfClustersL]; //indices for cluster used
85   Int_t fNM[fgMaxNLayer]; //number of marked clusters
86   
87   Float_t fDy[fgMaxNLayer];           //dy in layer
88   Float_t fDz[fgMaxNLayer];           //dz in layer
89   Float_t fSigmaY[fgMaxNLayer];       //sigma y 
90   Float_t fSigmaZ[fgMaxNLayer];       //sigma z
91   Float_t fSigmaYZ[fgMaxNLayer];       //covariance of y and z
92
93   Float_t fNy[fgMaxNLayer];              //expected size of cluster
94   Float_t fNz[fgMaxNLayer];              //expected size of cluster
95   Float_t fNormQ[fgMaxNLayer];           // normalized Q
96   Float_t fExpQ;            // expected Q
97
98   Float_t fNormChi2[fgMaxNLayer];        // normalized chi2
99   Int_t    fClIndex[fgMaxNLayer];        //cluster Index
100   
101   
102   ClassDef(AliITStrackU,2)
103     };
104
105 #endif
106
107
108