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