b0f5e3fc |
1 | #ifndef ALIITSSEGMENTATIONSDD_H |
2 | #define ALIITSSEGMENTATIONSDD_H |
3 | |
4 | |
5 | #include "AliITSsegmentation.h" |
6 | #include "AliITSresponse.h" |
7 | |
8 | // segmentation for SDD |
9 | |
10 | class AliITSsegmentationSDD : |
11 | public AliITSsegmentation { |
12 | public: |
13 | |
14 | |
15 | AliITSsegmentationSDD(); |
16 | AliITSsegmentationSDD(AliITSgeom *gm, AliITSresponse *resp); |
17 | AliITSsegmentationSDD(AliITSsegmentationSDD &source); |
18 | virtual ~AliITSsegmentationSDD(){} |
19 | AliITSsegmentationSDD& operator=(AliITSsegmentationSDD &source); |
20 | |
21 | // Set Detector Segmentation Parameters |
22 | // |
23 | // Detector size : x,z,y |
24 | virtual void SetDetSize |
25 | (Float_t p1=35000., Float_t p2=76800., Float_t p3= 300.) |
26 | {fDx=p1; fDz=p2; fDy=p3;} |
27 | |
28 | // Cell size dz*dx |
29 | virtual void SetCellSize(Float_t pitch=200., Float_t clock=40.) |
30 | {fPitch=pitch;fTimeStep=1000./clock;} |
31 | |
32 | // Maximum number of cells along the two coordinates z,x (anodes,samples) |
33 | virtual void SetNCells(Int_t p1=384, Int_t p2=256) |
34 | {fNanodes=2*p1;fNsamples=p2;} |
35 | |
36 | // Transform from real local to cell coordinates |
37 | virtual void GetCellIxz(Float_t &x ,Float_t &z ,Int_t &ix,Int_t &iz); |
38 | // Transform from cell to real local coordinates |
39 | virtual void GetCellCxz(Int_t ix,Int_t iz,Float_t &x ,Float_t &z ); |
40 | // Transform from real global to local coordinates |
41 | virtual void GetLocal(Int_t module,Float_t *g ,Float_t *l); |
42 | // Transform from real local to global coordinates |
43 | virtual void GetGlobal(Int_t module,Float_t *l ,Float_t *g); |
44 | // |
45 | // Initialisation |
46 | virtual void Init(); |
47 | // |
48 | // Get member data |
49 | // |
50 | // Detector type geometry |
51 | virtual AliITSgeom* Geometry() {return fGeom;} |
52 | // Detector length |
53 | virtual Float_t Dx() {return fDx;} |
54 | // Detector width |
55 | virtual Float_t Dz() {return fDz;} |
56 | // Detector thickness |
57 | virtual Float_t Dy() {return fDy;} |
58 | // Cell size in x |
59 | virtual Float_t Dpx(Int_t dummy) {return fTimeStep;} |
60 | // Cell size in z |
61 | virtual Float_t Dpz(Int_t dummy) {return fPitch;} |
62 | |
63 | // Maximum number of samples in x |
64 | virtual Int_t Npx() {return fNsamples;} |
65 | // Maximum number of anodes in z |
66 | virtual Int_t Npz() {return fNanodes;} |
67 | |
68 | // |
69 | // Get next neighbours |
70 | virtual void Neighbours |
71 | (Int_t iX, Int_t iZ, Int_t* Nlist, Int_t Xlist[10], Int_t Zlist[10]); |
72 | |
73 | // Set cell position |
74 | virtual void SetPad(Int_t, Int_t) {} |
75 | // Set hit position |
76 | virtual void SetHit(Float_t, Float_t) {} |
77 | |
78 | // |
79 | // Iterate over cells |
80 | // Initialiser |
81 | virtual void FirstCell |
82 | (Float_t xhit, Float_t zhit, Float_t dx, Float_t dz) {} |
83 | // Stepper |
84 | virtual void NextCell() {} |
85 | // Condition |
86 | virtual Int_t MoreCells() {return 0;} |
87 | // |
88 | // Current cell cursor during disintegration |
89 | // x-coordinate |
90 | virtual Int_t Ix() {return 0;} |
91 | // z-coordinate |
92 | virtual Int_t Iz() {return 0;} |
93 | // |
94 | // Signal Generation Condition during Stepping |
95 | virtual Int_t SigGenCond(Float_t x, Float_t y, Float_t z) {return 0;} |
96 | // Initialise signal generation at coord (x,y,z) |
97 | virtual void SigGenInit(Float_t x, Float_t y, Float_t z) {} |
98 | // Current integration limits |
99 | virtual void IntegrationLimits |
100 | (Float_t& x1, Float_t& x2, Float_t& z1, Float_t& z2) {} |
101 | // Test points for auto calibration |
102 | virtual void GiveTestPoints(Int_t &n, Float_t *x, Float_t *z) {} |
103 | // Function for systematic corrections |
104 | // Set the correction function |
105 | virtual void SetCorrFunc(Int_t, TF1*) {} |
106 | // Get the correction Function |
107 | virtual TF1* CorrFunc(Int_t) {return 0;} |
108 | |
109 | protected: |
110 | |
111 | Int_t fNsamples; // Number of time samples in x |
112 | Int_t fNanodes; // Summed # of anodes in the two det halves (z) |
113 | Float_t fPitch; // Anode pitch - microns |
114 | Float_t fTimeStep; // Sampling time - ns |
115 | Float_t fDx ; // Full width of the detector (x axis) - microns |
116 | Float_t fDz ; // Length of half-detector (z axis) - microns |
117 | Float_t fDy; // Full thickness of the detector (y axis) |
118 | |
119 | AliITSgeom *fGeom; // pointer to the geometry class |
120 | AliITSresponse *fResponse; // pointer to the response class |
121 | |
122 | TF1* fCorr; // correction function |
123 | |
124 | ClassDef(AliITSsegmentationSDD,1) // SDD segmentation |
125 | }; |
126 | |
127 | #endif |