ddae0931 |
1 | #ifndef RICHSegResV0_H |
2 | #define RICHSegResV0_H |
3 | |
4 | #include "AliRICH.h" |
5 | #include "AliRICHv0.h" |
6 | |
7 | class AliRICHsegmentationV0 : |
8 | public AliRICHsegmentation { |
9 | public: |
10 | AliRICHsegmentationV0(){} |
11 | virtual ~AliRICHsegmentationV0(){} |
12 | // |
13 | // Set Chamber Segmentation Parameters |
14 | virtual void SetPADSIZ(Float_t p1, Float_t p2); |
15 | virtual void SetDAnod(Float_t D) {fWireD = D;}; |
16 | // |
17 | // Transform from pad (wire) to real coordinates and vice versa |
18 | virtual Float_t GetAnod(Float_t xhit); |
19 | virtual void GetPadIxy(Float_t x ,Float_t y ,Int_t &ix,Int_t &iy); |
20 | virtual void GetPadCxy(Int_t ix,Int_t iy,Float_t &x ,Float_t &y ); |
21 | // |
22 | // Initialisation |
23 | virtual void Init(AliRICHchamber*); |
24 | // |
25 | // Get member data |
26 | virtual Float_t Dpx(){return fDpx;} |
27 | virtual Float_t Dpy(){return fDpy;} |
28 | virtual Int_t Npx(){return fNpx;} |
29 | virtual Int_t Npy(){return fNpy;} |
30 | // |
31 | // Iterate over pads |
32 | virtual void FirstPad(Float_t xhit, Float_t yhit, Float_t dx, Float_t dy); |
33 | virtual void NextPad(); |
34 | virtual Int_t MorePads(); |
35 | // Get next neighbours |
36 | virtual void Neighbours |
37 | (Int_t iX, Int_t iY, Int_t* Nlist, Int_t Xlist[10], Int_t Ylist[10]); |
38 | // Provisory RecCluster coordinates reconstructor |
39 | virtual void FitXY(AliRICHRecCluster* Cluster,TClonesArray* RICHdigits); |
40 | // |
41 | // Current Pad during Integration |
42 | virtual Int_t Ix(){return fix;} |
43 | virtual Int_t Iy(){return fiy;} |
44 | virtual Int_t ISector(){return 1;} |
45 | // |
46 | // Signal Generation Condition during Stepping |
47 | virtual Int_t SigGenCond(Float_t x, Float_t y, Float_t z); |
48 | virtual void SigGenInit(Float_t x, Float_t y, Float_t z); |
49 | virtual void IntegrationLimits |
50 | (Float_t& x1, Float_t& x2, Float_t& y1, Float_t& y2); |
51 | // |
52 | // Identification |
53 | virtual char* YourName(){return fName;} |
54 | ClassDef(AliRICHsegmentationV0,1) |
55 | protected: |
56 | // |
57 | // Implementation of the segmentation data |
58 | // Version 0 models rectangular pads with the same dimensions all |
59 | // over the cathode plane |
60 | // |
61 | // geometry |
62 | // |
63 | Float_t fDpx; // x pad width per sector |
64 | Float_t fDpy; // y pad base width |
65 | Int_t fNpx; |
66 | Int_t fNpy; // Number of pads in y |
67 | Float_t fWireD; // wire pitch |
68 | |
69 | // Chamber region consideres during disintegration (lower left and upper right corner) |
70 | // |
71 | Int_t fixmin; |
72 | Int_t fixmax; |
73 | Int_t fiymin; |
74 | Int_t fiymax; |
75 | // |
76 | // Current pad during integration (cursor for disintegration) |
77 | Int_t fix; |
78 | Int_t fiy; |
79 | Float_t fx; |
80 | Float_t fy; |
81 | // |
82 | // Current pad and wire during tracking (cursor at hit centre) |
83 | Int_t fixt; |
84 | Int_t fiyt; |
85 | Int_t fiwt; |
86 | Float_t fxt; |
87 | Float_t fyt; |
88 | // |
89 | // Version Identifier |
90 | char *fName; |
91 | }; |
92 | |
93 | class AliRICHresponseV0 : //Mathieson response |
94 | public AliRICHresponse { |
95 | public: |
96 | AliRICHresponseV0(){} |
97 | virtual ~AliRICHresponseV0(){} |
98 | |
99 | |
100 | |
101 | // |
102 | // Configuration methods |
103 | // |
104 | virtual void SetRSIGM(Float_t p1) {fNsigma=p1;} |
105 | virtual void SetMUCHSP(Float_t p1) {fChslope=p1;} |
106 | virtual void SetMUSIGM(Float_t p1, Float_t p2) {fChwX=p1; fChwY=p2;} |
107 | virtual void SetMAXADC(Float_t p1) {fadc_satm=p1;} |
108 | // Mathieson parameters |
109 | virtual void SetSqrtKx3(Float_t p1) {fSqrtKx3=p1;}; |
110 | virtual void SetKx2(Float_t p1) {fKx2=p1;}; |
111 | virtual void SetKx4(Float_t p1) {fKx4=p1;}; |
112 | virtual void SetSqrtKy3(Float_t p1) {fSqrtKy3=p1;}; |
113 | virtual void SetKy2(Float_t p1) {fKy2=p1;}; |
114 | virtual void SetKy4(Float_t p1) {fKy4=p1;}; |
115 | virtual void SetPitch(Float_t p1) {fPitch=p1;}; |
116 | |
117 | // |
118 | // Get member data |
119 | virtual Float_t Chslope() {return fChslope;} |
120 | virtual Float_t ChwX() {return fChwX;} |
121 | virtual Float_t ChwY() {return fChwY;} |
122 | virtual Float_t Nsigma() {return fNsigma;} |
123 | virtual Float_t adc_satm() {return fadc_satm;} |
124 | // |
125 | // Chamber response methods |
126 | // Pulse height from scored quantity (eloss) |
f91473f6 |
127 | virtual Float_t IntPH(Float_t eloss=0); |
ddae0931 |
128 | virtual Int_t FeedBackPhotons(Float_t *source, Float_t qtot); |
129 | |
130 | // Charge disintegration |
131 | virtual Float_t IntXY(AliRICHsegmentation * segmentation); |
132 | // Identification |
133 | // |
134 | virtual char* YourName() {return fName;} |
135 | |
136 | ClassDef(AliRICHresponseV0,1) |
137 | protected: |
138 | Float_t fChslope; // Slope of the charge distribution |
139 | Float_t fChwX; // Width of the charge distribution in x |
140 | Float_t fChwY; // Width of the charge distribution in y |
141 | Float_t fNsigma; // Number of sigma's used for charge distribution |
142 | Float_t fadc_satm; // Maximum ADC channel |
143 | Float_t fSqrtKx3; // Mathieson parameters for x |
144 | Float_t fKx2; |
145 | Float_t fKx4; |
146 | Float_t fSqrtKy3; // Mathieson parameters for y |
147 | Float_t fKy2; |
148 | Float_t fKy4; |
149 | Float_t fPitch; //anode-cathode pitch |
150 | char *fName; // Version Identifier |
151 | }; |
152 | |
153 | #endif |