]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MUON/AliMUONSegResV0.h
Introducing Copyright include file
[u/mrichter/AliRoot.git] / MUON / AliMUONSegResV0.h
CommitLineData
a897a37a 1#ifndef MUONSegResV0_H
2#define MUONSegResV0_H
3
4#include "AliMUONSegRes.h"
5class AliMUONchamber;
6
7class AliMUONsegmentationV0 :
8public AliMUONsegmentation {
9 public:
10 AliMUONsegmentationV0(){}
11 virtual ~AliMUONsegmentationV0(){}
12 // Set Chamber Segmentation Parameters
13 //
14 // Pad size Dx*Dy
15 virtual void SetPADSIZ(Float_t p1, Float_t p2);
16 // Anod Pitch
17 virtual void SetDAnod(Float_t D) {fWireD = D;};
18 // Transform from pad (wire) to real coordinates and vice versa
19 //
20 // Anod wire coordinate closest to xhit
21 virtual Float_t GetAnod(Float_t xhit);
22 // Transform from pad to real coordinates
23 virtual void GetPadIxy(Float_t x ,Float_t y ,Int_t &ix,Int_t &iy);
24 // Transform from real to pad coordinates
25 virtual void GetPadCxy(Int_t ix,Int_t iy,Float_t &x ,Float_t &y );
26 //
27 // Initialisation
28 virtual void Init(AliMUONchamber*);
29 //
30 // Get member data
31 //
32 // Pad size in x
33 virtual Float_t Dpx(){return fDpx;}
34 // Pad size in y
35 virtual Float_t Dpy(){return fDpy;}
36 // Pad size in x by Sector
37 virtual Float_t Dpx(Int_t) {return fDpx;}
38 // Pad size in y by Secto
39 virtual Float_t Dpy(Int_t) {return fDpy;}
40 // Max number of Pads in x
41 virtual Int_t Npx(){return fNpx;}
42 // max number of Pads in y
43 virtual Int_t Npy(){return fNpy;}
44 // set pad position
45 virtual void SetPad(Int_t, Int_t);
46 // set hit position
47 virtual void SetHit(Float_t, Float_t);
48 //
49 // Iterate over pads
50 // Initialiser
51 virtual void FirstPad(Float_t xhit, Float_t yhit, Float_t dx, Float_t dy);
52 // Stepper
53 virtual void NextPad();
54 // Condition
55 virtual Int_t MorePads();
56 //
57 // Distance between 1 pad and a position
58 virtual Float_t Distance2AndOffset(Int_t iX, Int_t iY, Float_t X, Float_t Y, Int_t *
59dummy);
60 // Number of pads read in parallel and offset to add to x
61 // (specific to LYON, but mandatory for display)
e3a4d40e 62 virtual void GetNParallelAndOffset(Int_t, Int_t ,
a897a37a 63 Int_t *Nparallel, Int_t *Offset) {*Nparallel=1;*Offset=0;}
64 // Get next neighbours
65 virtual void Neighbours
66 (Int_t iX, Int_t iY, Int_t* Nlist, Int_t Xlist[10], Int_t Ylist[10]);
a897a37a 67 // Current Pad during Integration
68 // x-coordinaten
69 virtual Int_t Ix(){return fix;}
70 // y-coordinate
71 virtual Int_t Iy(){return fiy;}
72 // current sector
73 virtual Int_t ISector(){return 1;}
74 // calculate sector from pad coordinates
e3a4d40e 75 virtual Int_t Sector(Int_t , Int_t ) {return 1;}
a897a37a 76 //
77 // Signal Generation Condition during Stepping
78 virtual Int_t SigGenCond(Float_t x, Float_t y, Float_t z);
79 // Initialise signal gneration at coord (x,y,z)
80 virtual void SigGenInit(Float_t x, Float_t y, Float_t z);
81 // Current integration limits
82 virtual void IntegrationLimits
83 (Float_t& x1, Float_t& x2, Float_t& y1, Float_t& y2);
84 // Test points for auto calibration
85 virtual void GiveTestPoints(Int_t &n, Float_t *x, Float_t *y);
86 // Debugging utilities
e3a4d40e 87 virtual void Draw(Option_t *);
a897a37a 88 // Function for systematic corrections
e3a4d40e 89 virtual void SetCorrFunc(Int_t, TF1* func) {fCorr=func;}
a897a37a 90
91 virtual TF1* CorrFunc(Int_t) {return fCorr;}
92
93
94 ClassDef(AliMUONsegmentationV0,1)
95 protected:
96 //
97 // Implementation of the segmentation data
98 // Version 0 models rectangular pads with the same dimensions all
99 // over the cathode plane
100 //
101 // geometry
102 //
103 Float_t fDpx; // x pad width per sector
104 Float_t fDpy; // y pad base width
105 Int_t fNpx; // Number of pads in x
106 Int_t fNpy; // Number of pads in y
107 Float_t fWireD; // wire pitch
108 Float_t fRmin; // inner radius
109 Float_t fRmax; // outer radius
110
111
112 // Chamber region consideres during disintegration
113 Int_t fixmin; // lower left x
114 Int_t fixmax; // lower left y
115 Int_t fiymin; // upper right x
116 Int_t fiymax; // upper right y
117 //
118 // Current pad during integration (cursor for disintegration)
119 Int_t fix; // pad coord. x
120 Int_t fiy; // pad coord. y
121 Float_t fx; // x
122 Float_t fy; // y
123 //
124 // Current pad and wire during tracking (cursor at hit centre)
125 //
126 //
127 Float_t fxhit;
128 Float_t fyhit;
129 // Reference point to define signal generation condition
130 Int_t fixt; // pad coord. x
131 Int_t fiyt; // pad coord. y
132 Int_t fiwt; // wire number
133 Float_t fxt; // x
134 Float_t fyt; // y
135 TF1* fCorr; // correction function
136
137};
138
139class AliMUONresponseV0 : //Mathieson response
140public AliMUONresponse {
141 public:
142 AliMUONresponseV0(){}
143 virtual ~AliMUONresponseV0(){}
144 //
145 // Configuration methods
146 //
147 // Number of sigmas over which cluster didintegration is performed
148 virtual void SetSigmaIntegration(Float_t p1) {fSigmaIntegration=p1;}
149 virtual Float_t SigmaIntegration() {return fSigmaIntegration;}
150 // charge slope in ADC/e
151 virtual void SetChargeSlope(Float_t p1) {fChargeSlope=p1;}
152 virtual Float_t ChargeSlope() {return fChargeSlope;}
153 // sigma of the charge spread function
154 virtual void SetChargeSpread(Float_t p1, Float_t p2)
155 {fChargeSpreadX=p1; fChargeSpreadY=p2;}
156 virtual Float_t ChargeSpreadX() {return fChargeSpreadX;}
157 virtual Float_t ChargeSpreadY() {return fChargeSpreadY;}
158 // Adc-count saturation value
159 virtual void SetMaxAdc(Float_t p1) {fMaxAdc=p1;}
160 virtual Float_t MaxAdc() {return fMaxAdc;}
161 // anode cathode Pitch
162 virtual Float_t Pitch() {return fPitch;}
163 virtual void SetPitch(Float_t p1) {fPitch=p1;};
164 // Mathieson parameters
165 virtual void SetSqrtKx3(Float_t p1) {fSqrtKx3=p1;};
166 virtual void SetKx2(Float_t p1) {fKx2=p1;};
167 virtual void SetKx4(Float_t p1) {fKx4=p1;};
168 virtual void SetSqrtKy3(Float_t p1) {fSqrtKy3=p1;};
169 virtual void SetKy2(Float_t p1) {fKy2=p1;};
170 virtual void SetKy4(Float_t p1) {fKy4=p1;};
171
172 //
173 // Chamber response methods
174 // Pulse height from scored quantity (eloss)
175 virtual Float_t IntPH(Float_t eloss);
176 // Charge disintegration
177 virtual Float_t IntXY(AliMUONsegmentation * segmentation);
178
179 ClassDef(AliMUONresponseV0,1)
180 protected:
181 Float_t fChargeSlope; // Slope of the charge distribution
182 Float_t fChargeSpreadX; // Width of the charge distribution in x
183 Float_t fChargeSpreadY; // Width of the charge distribution in y
184 Float_t fSigmaIntegration; // Number of sigma's used for charge distribution
185 Float_t fMaxAdc; // Maximum ADC channel
186 Float_t fSqrtKx3; // Mathieson parameters for x
187 Float_t fKx2;
188 Float_t fKx4;
189 Float_t fSqrtKy3; // Mathieson parameters for y
190 Float_t fKy2;
191 Float_t fKy4;
192 Float_t fPitch; //anode-cathode pitch
193};
194#endif
195
196
197
198
199
200
201
202
203
204
205