Line data Source code
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 SelectClusters(Double_t zmin,Double_t zmax,Double_t ymin,Double_t ymax);
31 : const AliITSRecPoint *GetNextCluster(Int_t &ci,Bool_t test=kFALSE);
32 : void ResetRoad();
33 0 : Double_t GetRoad() const {return fRoad;}
34 0 : Double_t GetR() const {return fR;}
35 : Int_t FindClusterIndex(Float_t z) const;
36 0 : AliITSRecPoint *GetCluster(Int_t i) const {return i<fN? fClusters[i]:0;}
37 0 : AliHLTITSDetector &GetDetector(Int_t n) const { return fDetectors[n]; }
38 : Int_t FindDetectorIndex(Double_t phi, Double_t z) const;
39 : Double_t GetThickness(Double_t y, Double_t z, Double_t &x0) const;
40 : Int_t InRoad() const ;
41 0 : Int_t GetNumberOfClusters() const {return fN;}
42 0 : Int_t GetNladders() const {return fNladders;}
43 0 : Int_t GetNdetectors() const {return fNdetectors;}
44 0 : Int_t GetSkip() const {return fSkip;}
45 0 : void SetSkip(Int_t skip){fSkip=skip;}
46 0 : void IncAccepted(){fAccepted++;}
47 0 : Int_t GetAccepted() const {return fAccepted;}
48 :
49 : protected:
50 :
51 : AliHLTITSLayer(const AliHLTITSLayer& layer);
52 : AliHLTITSLayer & operator=(const AliHLTITSLayer& layer){
53 : this->~AliHLTITSLayer();new(this) AliHLTITSLayer(layer);
54 : return *this;}
55 : Double_t fR; // mean radius of this layer
56 : Double_t fPhiOffset; // offset of the first detector in Phi
57 : Int_t fNladders; // number of ladders
58 : Double_t fZOffset; // offset of the first detector in Z
59 : Int_t fNdetectors; // detectors/ladder
60 : AliHLTITSDetector *fDetectors; // array of detectors
61 : Int_t fN; // number of clusters
62 : AliITSRecPoint *fClusters[AliITSRecoParam::kMaxClusterPerLayer]; // pointers to clusters
63 : UShort_t fClusterIndex[AliITSRecoParam::kMaxClusterPerLayer]; // pointers to clusters
64 : Float_t fY[AliITSRecoParam::kMaxClusterPerLayer]; // y position of the clusters
65 : Float_t fZ[AliITSRecoParam::kMaxClusterPerLayer]; // z position of the clusters
66 : Float_t fYB[2]; // ymin and ymax
67 : //
68 : AliITSRecPoint *fClusters5[6][AliITSRecoParam::kMaxClusterPerLayer5]; // pointers to clusters - slice in y
69 : UShort_t fClusterIndex5[6][AliITSRecoParam::kMaxClusterPerLayer5]; // pointers to clusters - slice in y
70 : Float_t fY5[6][AliITSRecoParam::kMaxClusterPerLayer5]; // y position of the clusters slice in y
71 : Float_t fZ5[6][AliITSRecoParam::kMaxClusterPerLayer5]; // z position of the clusters slice in y
72 : Int_t fN5[6]; // number of cluster in slice
73 : Float_t fDy5; //delta y
74 : Float_t fBy5[6][2]; //slice borders
75 : //
76 : AliITSRecPoint *fClusters10[11][AliITSRecoParam::kMaxClusterPerLayer10]; // pointers to clusters - slice in y
77 : UShort_t fClusterIndex10[11][AliITSRecoParam::kMaxClusterPerLayer10]; // pointers to clusters - slice in y
78 : Float_t fY10[11][AliITSRecoParam::kMaxClusterPerLayer10]; // y position of the clusters slice in y
79 : Float_t fZ10[11][AliITSRecoParam::kMaxClusterPerLayer10]; // z position of the clusters slice in y
80 : Int_t fN10[11]; // number of cluster in slice
81 : Float_t fDy10; // delta y
82 : Float_t fBy10[11][2]; // slice borders
83 : //
84 : AliITSRecPoint *fClusters20[21][AliITSRecoParam::kMaxClusterPerLayer20]; // pointers to clusters - slice in y
85 : UShort_t fClusterIndex20[21][AliITSRecoParam::kMaxClusterPerLayer20]; // pointers to clusters - slice in y
86 : Float_t fY20[21][AliITSRecoParam::kMaxClusterPerLayer20]; // y position of the clusters slice in y
87 : Float_t fZ20[21][AliITSRecoParam::kMaxClusterPerLayer20]; // z position of the clusters slice in y
88 : Int_t fN20[21]; // number of cluster in slice
89 : Float_t fDy20; //delta y
90 : Float_t fBy20[21][2]; //slice borders
91 : //
92 : AliITSRecPoint** fClustersCs; //clusters table in current slice
93 : UShort_t *fClusterIndexCs; //cluster index in current slice
94 : Float_t *fYcs; //y position in current slice
95 : Float_t *fZcs; //z position in current slice
96 : Int_t fNcs; //number of clusters in current slice
97 : Int_t fCurrentSlice; //current slice
98 : //
99 :
100 : Float_t fZmax; // edges
101 : Float_t fYmin; // of the
102 : Float_t fYmax; // "window"
103 : Int_t fI; // index of the current cluster within the "window"
104 : Int_t fImax; // index of the last cluster within the "window"
105 : Int_t fSkip; // indicates possibility to skip cluster
106 : Int_t fAccepted; // accept indicator
107 : Double_t fRoad; // road defined by the cluster density
108 : };
109 :
110 :
111 : #endif
|