]> git.uio.no Git - u/mrichter/AliRoot.git/blame - ITS/UPGRADE/AliITSURecoLayer.h
Fixes for reco
[u/mrichter/AliRoot.git] / ITS / UPGRADE / AliITSURecoLayer.h
CommitLineData
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"
a11ef2e4 8class AliITSUGeomTGeo;
9class AliITSsegmentation;
c61e50c3 10class AliCluster;
32d38de2 11
a11ef2e4 12
13///////////////////////////////////////////////////////////////////////
14// //
15// Class AliITSURecoLayer //
16// Interface between the framework and reconstruction for ITS layer //
17// //
18///////////////////////////////////////////////////////////////////////
19
20
21class AliITSURecoLayer : public TNamed
22{
23 public:
24 //
25 enum {kPassive=BIT(14)};
26 AliITSURecoLayer(const char* name);
32d38de2 27 AliITSURecoLayer(const char* name, Int_t activeID,AliITSUGeomTGeo* gm);
a11ef2e4 28 virtual ~AliITSURecoLayer();
29 //
32d38de2 30 void ProcessClusters(Int_t mode=0);
a11ef2e4 31 //
32 Int_t GetID() const {return (int)GetUniqueID();}
33 Int_t GetActiveID() const {return fActiveID;}
34 Int_t GetNSensors() const {return fNSensors;}
35 Double_t GetRMin() const {return fRMin;}
36 Double_t GetRMax() const {return fRMax;}
32d38de2 37 Double_t GetDR() const {return fRMax-fRMin;}
a11ef2e4 38 Double_t GetR() const {return fR;}
173b3073 39 Double_t GetZMin() const {return fZMin;}
40 Double_t GetZMax() const {return fZMax;}
32d38de2 41 Double_t GetMaxStep() const {return fMaxStep;}
a11ef2e4 42 Bool_t IsActive() const {return !TestBit(kPassive);}
43 Bool_t IsPassive() const {return TestBit(kPassive);}
44 //
45 void SetID(Int_t i) {SetUniqueID(i);}
46 void SetActiveID(Int_t i) {fActiveID = i;}
47 void SetRMin(Double_t r) {fRMin = r;}
48 void SetRMax(Double_t r) {fRMax = r;}
49 void SetR(Double_t r) {fR = r;}
173b3073 50 void SetZMin(Double_t z) {fZMin = z;}
51 void SetZMax(Double_t z) {fZMax = z;}
a11ef2e4 52 void SetPassive(Bool_t v=kTRUE) {SetBit(kPassive,v);}
32d38de2 53 void SetMaxStep(Double_t st) {fMaxStep = st>0 ? st : 0.1;}
a11ef2e4 54 //
32d38de2 55 AliITSURecoSens* GetSensor(Int_t i) const {return (AliITSURecoSens*)fSensors[i];}
a11ef2e4 56 AliITSURecoSens* GetSensor(Int_t ld,Int_t is) const {return GetSensor(ld*fNSensInLadder+is);}
32d38de2 57 TClonesArray* GetClusters() const {return (TClonesArray*)fClusters;}
c61e50c3 58 AliCluster* GetCluster(Int_t icl) const {return (AliCluster*)fClusters->UncheckedAt(icl);}
32d38de2 59 void SetClusters(TClonesArray* cl) {fClusters = cl;}
a11ef2e4 60 //
32d38de2 61 Int_t FindSensors(const double* impPar, AliITSURecoSens *sensors[AliITSURecoSens::kNNeighbors]);
a11ef2e4 62 //
63 virtual void Print(Option_t* option = "") const;
dde91d5d 64 virtual Bool_t IsSortable() const {return kTRUE;}
65 virtual Bool_t IsEqual(const TObject* obj) const;
66 virtual Int_t Compare(const TObject* obj) const;
32d38de2 67 //
68 protected:
69 void Build();
70 //
a11ef2e4 71 protected:
72 Int_t fActiveID; // ID within active layers
73 Int_t fNSensors; // N of modules
74 Int_t fNSensInLadder; // N sensors in the ladder
75 Int_t fNLadders; // N ladder
76 Double_t fR; // mean R
77 Double_t fRMax; // max R
78 Double_t fRMin; // min R
79 Double_t fZMax; // max Z
80 Double_t fZMin; // min Z
81 Double_t* fPhiLadMax; // max lab phi of the ladder
82 Double_t* fPhiLadMin; // min lab phi of the ladder
83 Double_t fPhiOffs; // offset in phi for 1st ladder
84 Double_t fSensDZInv; // inverse mean sensor Z span
85 Double_t fDPhiLadInv;// inverse mean ladder dphi
32d38de2 86 Double_t fMaxStep; // max step in tracking X allowed within layer
87 AliITSURecoSens** fSensors; // sensors
a11ef2e4 88 AliITSUGeomTGeo* fITSGeom; // geometry interface
32d38de2 89 TClonesArray* fClusters; // clusters of the layer
a11ef2e4 90 //
91 private:
92 AliITSURecoLayer(const AliITSURecoLayer &source);
93 AliITSURecoLayer& operator=(const AliITSURecoLayer &source);
94 //
95
96 ClassDef(AliITSURecoLayer,1); // helper for layer data used in reco
97};
98
99#endif