7fa96f891953455ae1acb9eab5fff6fa06d37155
[u/mrichter/AliRoot.git] / MUON / AliMUONv0.h
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
9 class AliMUONv0 : public AliMUON {
10  
11 public:
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);
21 private:
22    ClassDef(AliMUONv0,1)  //Hits manager for set:MUON version 0
23
24 };
25 class AliMUONsegmentationV0 :
26 public 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
71     virtual char* YourName(){return fName;}
72     ClassDef(AliMUONsegmentationV0,1)
73          protected:
74     //
75     // Implementation of the segmentation data
76     // Version 0 models rectangular pads with the same dimensions all
77     // over the cathode plane
78     //
79     //  geometry
80     //
81     Float_t    fDpx;           // x pad width per sector  
82     Float_t    fDpy;           // y pad base width
83     Int_t      fNpx;
84     Int_t      fNpy;           // Number of pads in y
85     Float_t    fWireD;         // wire pitch
86     
87     // Chamber region consideres during disintegration (lower left and upper right corner)
88     //
89     Int_t fixmin;
90     Int_t fixmax;
91     Int_t fiymin;
92     Int_t fiymax;
93     //
94     // Current pad during integration (cursor for disintegration)
95     Int_t fix;
96     Int_t fiy;
97     Float_t fx;
98     Float_t fy;
99     //
100     // Current pad and wire during tracking (cursor at hit centre)
101     Int_t fixt;
102     Int_t fiyt;
103     Int_t fiwt;
104     Float_t fxt;
105     Float_t fyt;
106     //
107     // Version Identifier
108     char    *fName;       
109 };
110
111 class AliMUONresponseV0 : //Mathieson response
112 public AliMUONresponse {
113  public:
114     AliMUONresponseV0(){}
115     virtual ~AliMUONresponseV0(){}
116     //
117     // Configuration methods
118     // 
119     virtual void   SetRSIGM(Float_t p1) {fNsigma=p1;} 
120     virtual void   SetMUCHSP(Float_t p1) {fChslope=p1;}
121     virtual void   SetMUSIGM(Float_t p1, Float_t p2) {fChwX=p1; fChwY=p2;}
122     virtual void   SetMAXADC(Float_t p1) {fadc_satm=p1;}
123     // Mathieson parameters
124     virtual void   SetSqrtKx3(Float_t p1) {fSqrtKx3=p1;};
125     virtual void   SetKx2(Float_t p1) {fKx2=p1;};
126     virtual void   SetKx4(Float_t p1) {fKx4=p1;};
127     virtual void   SetSqrtKy3(Float_t p1) {fSqrtKy3=p1;};
128     virtual void   SetKy2(Float_t p1) {fKy2=p1;};
129     virtual void   SetKy4(Float_t p1) {fKy4=p1;};
130     virtual void   SetPitch(Float_t p1) {fPitch=p1;};
131     //
132     // Get member data
133     virtual Float_t Chslope() {return fChslope;}
134     virtual Float_t ChwX() {return fChwX;}    
135     virtual Float_t ChwY() {return fChwY;}        
136     virtual Float_t Nsigma() {return fNsigma;}    
137     virtual Float_t adc_satm() {return fadc_satm;}
138     //  
139     // Chamber response methods
140     // Pulse height from scored quantity (eloss)
141     virtual Float_t IntPH(Float_t eloss);
142     // Charge disintegration
143     virtual Float_t IntXY(AliMUONsegmentation * segmentation);
144     // Identification
145     //
146     virtual char* YourName() {return fName;}
147
148     ClassDef(AliMUONresponseV0,1)
149  protected:
150     Float_t fChslope;         // Slope of the charge distribution
151     Float_t fChwX;            // Width of the charge distribution in x
152     Float_t fChwY;            // Width of the charge distribution in y
153     Float_t fNsigma;          // Number of sigma's used for charge distribution
154     Float_t fadc_satm;        // Maximum ADC channel
155     Float_t fSqrtKx3;         // Mathieson parameters for x
156     Float_t fKx2;
157     Float_t fKx4;
158     Float_t fSqrtKy3;         // Mathieson parameters for y
159     Float_t fKy2;
160     Float_t fKy4;
161     Float_t fPitch;           //anode-cathode pitch
162     char    *fName;           // Version Identifier
163 };
164
165 #endif
166
167
168
169
170
171
172