]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/ITS/tracking/AliHLTITSLayer.h
bugfix (partially) #54670
[u/mrichter/AliRoot.git] / HLT / ITS / tracking / AliHLTITSLayer.h
1 // ************************************************************************
2 // This file is property of and copyright by the ALICE HLT Project        *
3 // ALICE Experiment at CERN, All rights reserved.                         *
4 // See cxx source for full Copyright notice                               *
5 //                                                                        *
6 //*************************************************************************
7
8 #ifndef ALIHLTITSLAYER_H
9 #define ALIHLTITSLAYER_H
10
11 #include "AliHLTITSDetector.h"
12 #include "AliITSRecoParam.h"
13
14 /**
15  * @class AliHLTITSLayer
16  *
17  * The AliHLTTPCCAHit class is the internal representation
18  * of the TPC clusters for the AliHLTTPCCATracker algorithm.
19  *
20  */
21 class AliHLTITSLayer 
22 {
23  public:
24   AliHLTITSLayer();
25   AliHLTITSLayer(Double_t r, Double_t p, Double_t z, Int_t nl, Int_t nd);
26   ~AliHLTITSLayer();
27   Int_t InsertCluster(AliITSRecPoint *c);
28   void  SortClusters();
29   void ResetClusters();
30   void ResetWeights();
31   void SelectClusters(Double_t zmin,Double_t zmax,Double_t ymin,Double_t ymax);
32   const AliITSRecPoint *GetNextCluster(Int_t &ci,Bool_t test=kFALSE);
33   void ResetRoad();
34   Double_t GetRoad() const {return fRoad;}
35   Double_t GetR() const {return fR;}
36   Int_t FindClusterIndex(Float_t z) const;
37   AliITSRecPoint *GetCluster(Int_t i) const {return i<fN? fClusters[i]:0;} 
38   Float_t  *GetWeight(Int_t i)  {return i<fN ?&fClusterWeight[i]:0;}
39   AliHLTITSDetector &GetDetector(Int_t n) const { return fDetectors[n]; }
40   Int_t FindDetectorIndex(Double_t phi, Double_t z) const;
41   Double_t GetThickness(Double_t y, Double_t z, Double_t &x0) const;
42   Int_t InRoad() const ;
43   Int_t GetNumberOfClusters() const {return fN;}
44   Int_t GetNladders() const {return fNladders;}
45   Int_t GetNdetectors() const {return fNdetectors;}
46   Int_t GetSkip() const {return fSkip;}
47   void  SetSkip(Int_t skip){fSkip=skip;}
48   void IncAccepted(){fAccepted++;}
49   Int_t GetAccepted() const {return fAccepted;}    
50   Int_t GetClusterTracks(Int_t i, Int_t j) const {return fClusterTracks[i][j];}
51   void SetClusterTracks(Int_t i, Int_t j, Int_t c) {fClusterTracks[i][j]=c;}
52
53  protected:
54
55   AliHLTITSLayer(const AliHLTITSLayer& layer);
56   AliHLTITSLayer & operator=(const AliHLTITSLayer& layer){
57     this->~AliHLTITSLayer();new(this) AliHLTITSLayer(layer);
58     return *this;}
59   Double_t fR;                // mean radius of this layer
60   Double_t fPhiOffset;        // offset of the first detector in Phi
61   Int_t fNladders;            // number of ladders
62   Double_t fZOffset;          // offset of the first detector in Z
63   Int_t fNdetectors;          // detectors/ladder
64   AliHLTITSDetector *fDetectors; // array of detectors
65   Int_t fN;                   // number of clusters
66   AliITSRecPoint *fClusters[AliITSRecoParam::fgkMaxClusterPerLayer]; // pointers to clusters
67   Int_t        fClusterIndex[AliITSRecoParam::fgkMaxClusterPerLayer]; // pointers to clusters
68   Float_t fY[AliITSRecoParam::fgkMaxClusterPerLayer];                // y position of the clusters      
69   Float_t fZ[AliITSRecoParam::fgkMaxClusterPerLayer];                // z position of the clusters      
70   Float_t fYB[2];                                       // ymin and ymax
71   //
72   AliITSRecPoint *fClusters5[6][AliITSRecoParam::fgkMaxClusterPerLayer5]; // pointers to clusters -     slice in y
73   Int_t        fClusterIndex5[6][AliITSRecoParam::fgkMaxClusterPerLayer5]; // pointers to clusters -     slice in y    
74   Float_t fY5[6][AliITSRecoParam::fgkMaxClusterPerLayer5];                // y position of the clusters  slice in y    
75   Float_t fZ5[6][AliITSRecoParam::fgkMaxClusterPerLayer5];                // z position of the clusters  slice in y 
76   Int_t fN5[6];                                       // number of cluster in slice
77   Float_t fDy5;                                       //delta y
78   Float_t fBy5[6][2];                                    //slice borders
79   //
80   AliITSRecPoint *fClusters10[11][AliITSRecoParam::fgkMaxClusterPerLayer10]; // pointers to clusters -     slice in y
81   Int_t        fClusterIndex10[11][AliITSRecoParam::fgkMaxClusterPerLayer10]; // pointers to clusters -     slice in y    
82   Float_t fY10[11][AliITSRecoParam::fgkMaxClusterPerLayer10];                // y position of the clusters  slice in y    
83   Float_t fZ10[11][AliITSRecoParam::fgkMaxClusterPerLayer10];                // z position of the clusters  slice in y 
84   Int_t fN10[11];                                       // number of cluster in slice
85   Float_t fDy10;                                        // delta y
86   Float_t fBy10[11][2];                                 // slice borders
87   //
88   AliITSRecPoint *fClusters20[21][AliITSRecoParam::fgkMaxClusterPerLayer20]; // pointers to clusters -     slice in y
89   Int_t        fClusterIndex20[21][AliITSRecoParam::fgkMaxClusterPerLayer20]; // pointers to clusters -     slice in y    
90   Float_t fY20[21][AliITSRecoParam::fgkMaxClusterPerLayer20];                // y position of the clusters  slice in y    
91   Float_t fZ20[21][AliITSRecoParam::fgkMaxClusterPerLayer20];                // z position of the clusters  slice in y 
92   Int_t fN20[21];                                       // number of cluster in slice
93   Float_t fDy20;                                        //delta y 
94   Float_t fBy20[21][2];                                 //slice borders
95   //
96   AliITSRecPoint** fClustersCs;                         //clusters table in current slice
97   Int_t   *fClusterIndexCs;                             //cluster index in current slice 
98   Float_t *fYcs;                                        //y position in current slice
99   Float_t *fZcs;                                        //z position in current slice
100   Int_t    fNcs;                                        //number of clusters in current slice    
101   Int_t fCurrentSlice;                                  //current slice
102   //
103   Float_t  fClusterWeight[AliITSRecoParam::fgkMaxClusterPerLayer]; // probabilistic weight of the cluster
104   Int_t    fClusterTracks[4][AliITSRecoParam::fgkMaxClusterPerLayer]; //tracks registered to given cluster
105   Float_t fZmax;      //    edges
106   Float_t fYmin;      //   of  the
107   Float_t fYmax;      //   "window"
108   Int_t fI;            // index of the current cluster within the "window"
109   Int_t fImax;            // index of the last cluster within the "window"    
110   Int_t fSkip;     // indicates possibility to skip cluster
111   Int_t fAccepted;     // accept indicator 
112   Double_t fRoad;      // road defined by the cluster density
113 };
114
115
116 #endif