]>
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;} | |
0091e9f0 | 38 | Int_t GetNLadders() const {return fNLadders;} |
39 | Int_t GetNSensInLadder() const {return fNSensInLadder;} | |
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];} |
a11ef2e4 | 64 | AliITSURecoSens* GetSensor(Int_t ld,Int_t is) const {return GetSensor(ld*fNSensInLadder+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 | // |
32d38de2 | 72 | Int_t FindSensors(const double* impPar, AliITSURecoSens *sensors[AliITSURecoSens::kNNeighbors]); |
a11ef2e4 | 73 | // |
74 | virtual void Print(Option_t* option = "") const; | |
dde91d5d | 75 | virtual Bool_t IsSortable() const {return kTRUE;} |
76 | virtual Bool_t IsEqual(const TObject* obj) const; | |
77 | virtual Int_t Compare(const TObject* obj) const; | |
32d38de2 | 78 | // |
79 | protected: | |
80 | void Build(); | |
81 | // | |
a11ef2e4 | 82 | protected: |
83 | Int_t fActiveID; // ID within active layers | |
84 | Int_t fNSensors; // N of modules | |
85 | Int_t fNSensInLadder; // N sensors in the ladder | |
86 | Int_t fNLadders; // N ladder | |
87 | Double_t fR; // mean R | |
88 | Double_t fRMax; // max R | |
89 | Double_t fRMin; // min R | |
90 | Double_t fZMax; // max Z | |
91 | Double_t fZMin; // min Z | |
92 | Double_t* fPhiLadMax; // max lab phi of the ladder | |
93 | Double_t* fPhiLadMin; // min lab phi of the ladder | |
94 | Double_t fPhiOffs; // offset in phi for 1st ladder | |
95 | Double_t fSensDZInv; // inverse mean sensor Z span | |
96 | Double_t fDPhiLadInv;// inverse mean ladder dphi | |
32d38de2 | 97 | Double_t fMaxStep; // max step in tracking X allowed within layer |
98 | AliITSURecoSens** fSensors; // sensors | |
a11ef2e4 | 99 | AliITSUGeomTGeo* fITSGeom; // geometry interface |
32d38de2 | 100 | TClonesArray* fClusters; // clusters of the layer |
a11ef2e4 | 101 | // |
102 | private: | |
103 | AliITSURecoLayer(const AliITSURecoLayer &source); | |
104 | AliITSURecoLayer& operator=(const AliITSURecoLayer &source); | |
105 | // | |
106 | ||
107 | ClassDef(AliITSURecoLayer,1); // helper for layer data used in reco | |
108 | }; | |
109 | ||
110 | #endif |