]>
Commit | Line | Data |
---|---|---|
451f5018 | 1 | #ifndef ALIITSUSEGMENTATIONPIX_H |
2 | #define ALIITSUSEGMENTATIONPIX_H | |
909b16e7 | 3 | |
4 | #include "AliITSsegmentation.h" | |
5 | ||
6 | ||
7 | ||
8 | // segmentation and response for pixels in ITS upgrade | |
9 | ||
451f5018 | 10 | class AliITSUSegmentationPix : |
909b16e7 | 11 | public AliITSsegmentation { |
12 | public: | |
451f5018 | 13 | AliITSUSegmentationPix(UInt_t id=0, int nchips=0,int ncol=0,int nrow=0, |
02f79efe | 14 | float pitchX=0,float pitchZ=0, |
15 | float thickness=0, | |
16 | float pitchLftC=-1,float pitchRgtC=-1, | |
17 | float edgL=0,float edgR=0,float edgT=0,float edgB=0); | |
909b16e7 | 18 | |
451f5018 | 19 | // AliITSUSegmentationPix(Option_t *opt="" ); |
20 | AliITSUSegmentationPix(const AliITSUSegmentationPix &source); | |
9a2806bf | 21 | virtual ~AliITSUSegmentationPix(); |
451f5018 | 22 | AliITSUSegmentationPix& operator=(const AliITSUSegmentationPix &source); |
a84c4b15 | 23 | // |
24 | virtual void Init(); | |
25 | // | |
909b16e7 | 26 | virtual void SetNPads(Int_t, Int_t) {MayNotUse("SetPadSize");} |
27 | virtual Int_t GetNPads() const {return fNCol*fNRow;} | |
28 | // | |
29 | virtual void GetPadIxz(Float_t x,Float_t z,Int_t &ix,Int_t &iz) const; | |
30 | virtual void GetPadCxz(Int_t ix,Int_t iz,Float_t &x,Float_t &z) const; | |
31 | virtual void GetPadTxz(Float_t &x ,Float_t &z) const; | |
32 | virtual Bool_t LocalToDet(Float_t x,Float_t z,Int_t &ix,Int_t &iz) const; | |
33 | virtual void DetToLocal(Int_t ix,Int_t iz,Float_t &x,Float_t &z) const; | |
34 | virtual void CellBoundries(Int_t ix,Int_t iz,Double_t &xl,Double_t &xu, | |
35 | Double_t &zl,Double_t &zu) const; | |
36 | // | |
37 | virtual Int_t GetNumberOfChips() const {return fNChips;} | |
38 | virtual Int_t GetMaximumChipIndex() const {return fNChips-1;} | |
39 | // | |
40 | virtual Int_t GetChipFromLocal(Float_t, Float_t zloc) const; | |
41 | virtual Int_t GetChipsInLocalWindow(Int_t* array, Float_t zmin, Float_t zmax, Float_t, Float_t) const; | |
42 | // | |
43 | virtual Int_t GetChipFromChannel(Int_t, Int_t iz) const; | |
44 | // | |
02f79efe | 45 | virtual Float_t Dpx(Int_t ix=0) const; |
46 | virtual Float_t Dpz(Int_t iz) const; | |
47 | Float_t DxActive() const {return fDxActive;} | |
48 | Float_t DzActive() const {return fDzActive;} | |
49 | Float_t GetShiftXLoc() const {return fShiftXLoc;} | |
50 | Float_t GetShiftZLoc() const {return fShiftZLoc;} | |
51 | Float_t GetGuardLft() const {return fGuardLft;} | |
52 | Float_t GetGuardRgt() const {return fGuardRgt;} | |
53 | Float_t GetGuardTop() const {return fGuardTop;} | |
54 | Float_t GetGuardBot() const {return fGuardBot;} | |
909b16e7 | 55 | // |
02f79efe | 56 | Int_t GetNRow() const {return fNRow;} |
57 | Int_t GetNCol() const {return fNCol;} | |
909b16e7 | 58 | // |
02f79efe | 59 | virtual Int_t Npx() const {return GetNRow();} |
60 | virtual Int_t Npz() const {return GetNCol();} | |
909b16e7 | 61 | // |
62 | virtual void Neighbours(Int_t iX,Int_t iZ,Int_t* Nlist,Int_t Xlist[10],Int_t Zlist[10]) const; | |
63 | // | |
64 | virtual void PrintDefaultParameters() const {AliWarning("No def. parameters defined as const static data members");} | |
ee58ce21 | 65 | virtual void Print(Option_t* option = "") const; |
909b16e7 | 66 | // |
852af72e | 67 | virtual Int_t GetChipTypeID() const {return GetUniqueID();} |
451f5018 | 68 | // |
02f79efe | 69 | void SetDiodShiftMatrix(Int_t nrow,Int_t ncol, const Float_t *shiftX, const Float_t *shiftZ); |
ee58ce21 | 70 | void SetDiodShiftMatrix(Int_t nrow,Int_t ncol, const Double_t *shiftX, const Double_t *shiftZ); |
71 | void GetDiodShift(Int_t row,Int_t col, Float_t &dx,Float_t &dz) const; | |
72 | void GetDiodShift(Int_t row,Int_t col, Double_t &dx,Double_t &dz) const {float dxf,dzf; GetDiodShift(row,col,dxf,dzf); dx=dxf; dz=dzf; } | |
73 | // | |
451f5018 | 74 | Bool_t Store(const char* outf); |
29f5e263 | 75 | static AliITSUSegmentationPix* LoadWithID(UInt_t id, const char* inpf); |
451f5018 | 76 | static void LoadSegmentations(TObjArray* dest, const char* inpf); |
e5373622 | 77 | // |
909b16e7 | 78 | protected: |
79 | Float_t Z2Col(Float_t z) const; | |
80 | Float_t Col2Z(Int_t col) const; | |
81 | // | |
82 | protected: | |
02f79efe | 83 | Float_t fGuardLft; // left guard edge |
84 | Float_t fGuardRgt; // right guard edge | |
85 | Float_t fGuardTop; // upper guard edge | |
86 | Float_t fGuardBot; // bottom guard edge | |
87 | Float_t fShiftXLoc; // shift in local X of sensitive area wrt geometry center | |
88 | Float_t fShiftZLoc; // shift in local Z of sensitive area wrt geometry center | |
89 | Float_t fDxActive; // size of active area in X | |
90 | Float_t fDzActive; // size of active area in Z | |
91 | Float_t fPitchX; // default pitch in X | |
92 | Float_t fPitchZ; // default pitch in Z | |
93 | Float_t fPitchZLftCol; // Z pitch of left column of each chip | |
94 | Float_t fPitchZRgtCol; // Z pitch of right column of each chip | |
95 | Float_t fChipDZ; // aux: chip size along Z | |
852af72e | 96 | Int_t fNChips; // number of chips per chip |
02f79efe | 97 | Int_t fNColPerChip; // number of columns per chip |
98 | Int_t fNRow; // number of rows | |
99 | Int_t fNCol; // number of columns (total) | |
909b16e7 | 100 | // |
02f79efe | 101 | Int_t fDiodShiftMatNCol; // periodicity of diod shift in columns |
102 | Int_t fDiodShiftMatNRow; // periodicity of diod shift in rows | |
103 | Int_t fDiodShiftMatDim; // dimension of diod shift matrix | |
104 | Float_t* fDiodShidtMatX; //[fDiodShiftMatDim] diod shift in X (along column), in fraction of X pitch | |
105 | Float_t* fDiodShidtMatZ; //[fDiodShiftMatDim] diod shift in Z (along row), in fraction of Z pitch | |
ee58ce21 | 106 | // |
e5373622 | 107 | static const char* fgkSegmListName; // pattern for segmentations list name |
108 | // | |
02f79efe | 109 | ClassDef(AliITSUSegmentationPix,3) //Segmentation class upgrade pixels |
909b16e7 | 110 | |
111 | }; | |
112 | ||
113 | #endif |