Another Standalone ITS tracker (E. Crescio)
[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 <TObject.h>
21
22 class TTree;
23 class AliITStrackerSA;
24 class AliITSgeom;
25
26 class AliITSclusterTable : public TObject {
27
28
29  public:
30
31   AliITSclusterTable();
32   AliITSclusterTable(AliITSgeom* geom, AliITStrackerSA* tracker);
33   void FillArray(TTree* clusterTree,Int_t evnumber=0);
34   void FillArrayLabel(const Int_t numberofparticles,TTree* clusterTree,
35                       Int_t evnumber=0);
36   virtual ~AliITSclusterTable();
37
38
39   Int_t      GetNCluster(Int_t mod) const {return fNCl[mod];}
40   Int_t      GetClusterIndMod(Int_t mod,Int_t i){return fDet[mod]->At(i);} 
41   TArrayI*   GetListOfClusters(Int_t mod) const {return fDet[mod];}
42   TArrayI*   GetNClustersSameLabel(Int_t label) const {return fLbl[label];}
43   Int_t      ThereIsClusterOnLayer(Int_t label,Int_t layer)
44              {return fLbl[label]->At(layer);}
45   Int_t      ThisParticleIsTrackable(Int_t label,Int_t numberofpoints=6);
46
47  protected: 
48
49   // copy constructor (NO copy allowed: the constructor is protected
50   // to avoid misuse)
51   AliITSclusterTable(const AliITSclusterTable& tab);
52   // assignment operator (NO assignment allowed)
53   AliITSclusterTable& operator=(const AliITSclusterTable& /* tab */);
54
55   static Int_t FindIndex(Int_t ndim, Int_t *ptr, Int_t value);
56
57   Int_t        *fNCl;//number of clusters per module
58   TArrayI**    fDet;      //Array of cluster indices for each detector
59   TArrayI**    fLbl;      //Array of number of clusters (on each layer) 
60                           // with the same label for each label.
61   AliITSgeom *fGeom;      //! ITS geometry
62   AliITStrackerSA *fTracker; //! SA tracker
63
64   ClassDef(AliITSclusterTable,1)
65 };
66
67 #endif
68
69
70