]>
Commit | Line | Data |
---|---|---|
a11ef2e4 | 1 | #ifndef ALIITSURECOLAYER |
2 | #define ALIITSURECOLAYER | |
3 | ||
4 | #include <TNamed.h> | |
5 | #include <TObjArray.h> | |
c61e50c3 | 6 | #include <TClonesArray.h> |
32d38de2 | 7 | #include "AliITSURecoSens.h" |
8b16dbae | 8 | |
a11ef2e4 | 9 | class AliITSUGeomTGeo; |
10 | class AliITSsegmentation; | |
c61e50c3 | 11 | class AliCluster; |
32d38de2 | 12 | |
a11ef2e4 | 13 | |
14 | /////////////////////////////////////////////////////////////////////// | |
15 | // // | |
16 | // Class AliITSURecoLayer // | |
17 | // Interface between the framework and reconstruction for ITS layer // | |
18 | // // | |
19 | /////////////////////////////////////////////////////////////////////// | |
20 | ||
21 | ||
22 | class AliITSURecoLayer : public TNamed | |
23 | { | |
24 | public: | |
25 | // | |
ee52e7b5 | 26 | enum {kPassive=BIT(14) // layer is passive |
27 | ,kOwnsClusterArray=BIT(15) // owner of cluster array, delete in destructor | |
28 | }; | |
a11ef2e4 | 29 | AliITSURecoLayer(const char* name); |
32d38de2 | 30 | AliITSURecoLayer(const char* name, Int_t activeID,AliITSUGeomTGeo* gm); |
a11ef2e4 | 31 | virtual ~AliITSURecoLayer(); |
32 | // | |
32d38de2 | 33 | void ProcessClusters(Int_t mode=0); |
a11ef2e4 | 34 | // |
35 | Int_t GetID() const {return (int)GetUniqueID();} | |
36 | Int_t GetActiveID() const {return fActiveID;} | |
37 | Int_t GetNSensors() const {return fNSensors;} | |
852af72e | 38 | Int_t GetNStaves() const {return fNStaves;} |
39 | Int_t GetNSensInStave() const {return fNSensInStave;} | |
a11ef2e4 | 40 | Double_t GetRMin() const {return fRMin;} |
41 | Double_t GetRMax() const {return fRMax;} | |
32d38de2 | 42 | Double_t GetDR() const {return fRMax-fRMin;} |
a11ef2e4 | 43 | Double_t GetR() const {return fR;} |
c51c3124 | 44 | Double_t GetR(Int_t dir) const {return dir==0 ? fR : (dir<0 ? fRMin : fRMax);} |
173b3073 | 45 | Double_t GetZMin() const {return fZMin;} |
46 | Double_t GetZMax() const {return fZMax;} | |
32d38de2 | 47 | Double_t GetMaxStep() const {return fMaxStep;} |
a11ef2e4 | 48 | Bool_t IsActive() const {return !TestBit(kPassive);} |
49 | Bool_t IsPassive() const {return TestBit(kPassive);} | |
ee52e7b5 | 50 | Bool_t GetOwnsClusterArray() const {return TestBit(kOwnsClusterArray);} |
a11ef2e4 | 51 | // |
52 | void SetID(Int_t i) {SetUniqueID(i);} | |
53 | void SetActiveID(Int_t i) {fActiveID = i;} | |
54 | void SetRMin(Double_t r) {fRMin = r;} | |
55 | void SetRMax(Double_t r) {fRMax = r;} | |
56 | void SetR(Double_t r) {fR = r;} | |
173b3073 | 57 | void SetZMin(Double_t z) {fZMin = z;} |
58 | void SetZMax(Double_t z) {fZMax = z;} | |
a11ef2e4 | 59 | void SetPassive(Bool_t v=kTRUE) {SetBit(kPassive,v);} |
ee52e7b5 | 60 | void SetOwnsClusterArray(Bool_t v=kTRUE) {SetBit(kOwnsClusterArray,v);} |
32d38de2 | 61 | void SetMaxStep(Double_t st) {fMaxStep = st>0 ? st : 0.1;} |
a11ef2e4 | 62 | // |
0091e9f0 | 63 | AliITSURecoSens* GetSensor(Int_t i) const {return i<0 ? 0:(AliITSURecoSens*)fSensors[i];} |
852af72e | 64 | AliITSURecoSens* GetSensor(Int_t ld,Int_t is) const {return GetSensor(ld*fNSensInStave+is);} |
8b16dbae | 65 | AliITSURecoSens* GetSensorFromID(Int_t i) const; |
32d38de2 | 66 | TClonesArray* GetClusters() const {return (TClonesArray*)fClusters;} |
ee52e7b5 | 67 | TClonesArray** GetClustersAddress() {return (TClonesArray**)&fClusters;} |
0091e9f0 | 68 | Int_t GetNClusters() const {return fClusters ? fClusters->GetEntriesFast() : 0;} |
c61e50c3 | 69 | AliCluster* GetCluster(Int_t icl) const {return (AliCluster*)fClusters->UncheckedAt(icl);} |
32d38de2 | 70 | void SetClusters(TClonesArray* cl) {fClusters = cl;} |
a11ef2e4 | 71 | // |
5785a9d8 | 72 | // Int_t FindSensors(const double* impPar, AliITSURecoSens *sensors[AliITSURecoSens::kNNeighbors], int mcLab=-1); |
32d38de2 | 73 | Int_t FindSensors(const double* impPar, AliITSURecoSens *sensors[AliITSURecoSens::kNNeighbors]); |
a11ef2e4 | 74 | // |
75 | virtual void Print(Option_t* option = "") const; | |
dde91d5d | 76 | virtual Bool_t IsSortable() const {return kTRUE;} |
77 | virtual Bool_t IsEqual(const TObject* obj) const; | |
78 | virtual Int_t Compare(const TObject* obj) const; | |
32d38de2 | 79 | // |
80 | protected: | |
81 | void Build(); | |
82 | // | |
a11ef2e4 | 83 | protected: |
84 | Int_t fActiveID; // ID within active layers | |
852af72e | 85 | Int_t fNSensors; // N of chips |
86 | Int_t fNSensInStave; // N sensors in the stave | |
87 | Int_t fNStaves; // N stave | |
a11ef2e4 | 88 | Double_t fR; // mean R |
89 | Double_t fRMax; // max R | |
90 | Double_t fRMin; // min R | |
91 | Double_t fZMax; // max Z | |
92 | Double_t fZMin; // min Z | |
852af72e | 93 | Double_t* fPhiStaMax; // max lab phi of the stave |
94 | Double_t* fPhiStaMin; // min lab phi of the stave | |
95 | Double_t fPhiOffs; // offset in phi for 1st stave | |
a11ef2e4 | 96 | Double_t fSensDZInv; // inverse mean sensor Z span |
852af72e | 97 | Double_t fDPhiStaInv;// inverse mean stave dphi |
32d38de2 | 98 | Double_t fMaxStep; // max step in tracking X allowed within layer |
99 | AliITSURecoSens** fSensors; // sensors | |
a11ef2e4 | 100 | AliITSUGeomTGeo* fITSGeom; // geometry interface |
32d38de2 | 101 | TClonesArray* fClusters; // clusters of the layer |
a11ef2e4 | 102 | // |
103 | private: | |
104 | AliITSURecoLayer(const AliITSURecoLayer &source); | |
105 | AliITSURecoLayer& operator=(const AliITSURecoLayer &source); | |
106 | // | |
107 | ||
108 | ClassDef(AliITSURecoLayer,1); // helper for layer data used in reco | |
109 | }; | |
110 | ||
111 | #endif |