]> git.uio.no Git - u/mrichter/AliRoot.git/blob - ITS/AliITSclusterTable.h
Added new method DisIntegrate(AliMUONHit&, TList& digits) to replace the one in
[u/mrichter/AliRoot.git] / ITS / AliITSclusterTable.h
1 #ifndef ALIITSCLUSTERTABLE_H
2 #define ALIITSCLUSTERTABLE_H 
3 /* Copyright(c) 1998-2003, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5 //////////////////////////////////////////////////////////////////////////
6 // Class used to simplify some operations with clusters.                 //
7 // -Function FillArray fills an array wich contains, for each            //
8 //  ITS module, an array with the indices of all the clusters detected   //
9 //  by the module. The indices correspond to the cluster indices in class// 
10 //  AliITSlayer of AliITStrackerV2.                                      //
11 //  This function is used in AliITStrackerSA::FindTracks.                // 
12 // -Function FillArrayLabel fills an array wich contains, for each       //
13 //  particle label, and for each layer, the information on clusters:     //
14 //  0 if there is no cluster, 1 if there is a cluster with this label.   //
15 //  This function is used to define trackable tracks.                    //   
16 ///////////////////////////////////////////////////////////////////////////
17
18
19 #include <TArrayI.h>
20 #include <TArrayD.h>
21 #include <TArrayF.h>
22 #include <TObject.h>
23
24 class TTree;
25 class AliITStrackerSA;
26 class AliITSgeom;
27 class AliITSclusterV2;
28
29 class AliITSclusterTable : public TObject {
30
31
32  public:
33
34   AliITSclusterTable();
35   AliITSclusterTable(AliITSgeom* geom, AliITStrackerSA* tracker, Double_t* primaryVertex);
36   void FillArray(TTree* clusterTree);
37   void FillArrayLabel(Int_t numberofparticles);
38   void FillArrayCoorAngles();
39   void GetCoorAngles(AliITSclusterV2* cl,Int_t module,Double_t &phi,Double_t &lambda,Float_t &x,Float_t &y,Float_t &z);
40   void GetCoorErrors(AliITSclusterV2* cl, Int_t module,Float_t &sx,Float_t &sy, Float_t &sz);
41   virtual ~AliITSclusterTable();
42
43
44   Int_t      GetNCluster(Int_t mod) const {return fNCl[mod];}
45   Int_t      GetClusterIndMod(Int_t mod,Int_t i){return fDet[mod]->At(i);} 
46   Int_t      ThereIsClusterOnLayer(Int_t label,Int_t layer)
47              {return fLbl[label]->At(layer);}
48   Int_t      ThisParticleIsTrackable(Int_t label,Int_t numberofpoints=6);
49   Double_t   GetPhiCluster(Int_t layer, Int_t i){return fPhiList[layer]->At(i);}
50   Double_t   GetLambdaCluster(Int_t layer, Int_t i) {return fLambdaList[layer]->At(i);}
51   Float_t   GetXCluster(Int_t layer, Int_t i){return fXList[layer]->At(i);}
52   Float_t   GetYCluster(Int_t layer, Int_t i) {return fYList[layer]->At(i);}
53   Float_t   GetZCluster(Int_t layer, Int_t i) {return fZList[layer]->At(i);}
54   Float_t   GetXClusterError(Int_t layer, Int_t i) {return fSxList[layer]->At(i);}
55   Float_t   GetYClusterError(Int_t layer, Int_t i) {return fSyList[layer]->At(i);}
56   Float_t   GetZClusterError(Int_t layer, Int_t i) {return fSzList[layer]->At(i);}
57
58   TArrayI*   GetListOfClusters(Int_t mod) const {return fDet[mod];}
59   TArrayI*   GetNClustersSameLabel(Int_t label) const {return fLbl[label];}
60   TArrayD*   GetListOfPhi(Int_t layer) const {return fPhiList[layer];}
61   TArrayD*   GetListOfLambda(Int_t layer) const {return fLambdaList[layer];}
62   TArrayF*   GetListOfX(Int_t layer) const {return fXList[layer];}
63   TArrayF*   GetListOfY(Int_t layer) const {return fYList[layer];}
64   TArrayF*   GetListOfZ(Int_t layer) const {return fZList[layer];}
65   TArrayF*   GetListOfSx(Int_t layer)const {return fSxList[layer];}
66   TArrayF*   GetListOfSy(Int_t layer)const {return fSyList[layer];}
67   TArrayF*   GetListOfSz(Int_t layer)const {return fSzList[layer];}
68  protected: 
69
70   // copy constructor (NO copy allowed: the constructor is protected
71   // to avoid misuse)
72   AliITSclusterTable(const AliITSclusterTable& tab);
73   // assignment operator (NO assignment allowed)
74   AliITSclusterTable& operator=(const AliITSclusterTable& /* tab */);
75
76   static Int_t FindIndex(Int_t ndim, Int_t *ptr, Int_t value);
77
78   Int_t        *fNCl;      //number of clusters per module
79   Double_t     fPrimaryVertex[3]; //primaryVertex
80   TArrayI**    fDet;       //Array of cluster indices for each detector
81   TArrayI**    fLbl;       //Array of number of clusters (on each layer) 
82                            // with the same label for each label.
83   TArrayD**    fPhiList;   //Array of cluster azimuthal angles on each layer
84   TArrayD**    fLambdaList;//Array of cluster Lambda angles on each layer
85   TArrayF**    fXList;     //Array of cluster x coordinates on each layer
86   TArrayF**    fYList;     //Array of cluster y coordinates on each layer
87   TArrayF**    fZList;    // Array of cluster z coordinates on each layer
88   TArrayF**    fSxList;    //Array of cluster errors on x on each layer
89   TArrayF**    fSyList;    //Array of cluster errors on y on each layer
90   TArrayF**    fSzList;    //Array of cluster errors on z on each layer
91  
92   AliITSgeom *fGeom;      //! ITS geometry
93   AliITStrackerSA *fTracker; //! SA tracker
94
95   ClassDef(AliITSclusterTable,1)
96 };
97
98 #endif
99
100
101