d9c0a4ca37194a466bd60d6dec21cdd44945a350
[u/mrichter/AliRoot.git] / RICH / AliRICHSegResV0.h
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)
127     virtual Float_t IntPH(Float_t eloss=0);
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