Integrating the Cooked Matrix tracker into the commom reconstruction framework
[u/mrichter/AliRoot.git] / ITS / UPGRADE / AliITSUSegmentationPix.h
CommitLineData
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 10class AliITSUSegmentationPix :
909b16e7 11public 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