Avoid all warnings on SunOS. Again!
[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     char    *fName;       //! Version Identifier
90 };
91
92 class AliRICHresponseV0 : //Mathieson response
93 public AliRICHresponse {
94  public:
95     AliRICHresponseV0(){}
96     virtual ~AliRICHresponseV0(){}
97     
98     
99     
100     //
101     // Configuration methods
102     // 
103     virtual void   SetRSIGM(Float_t p1) {fNsigma=p1;} 
104     virtual void   SetMUCHSP(Float_t p1) {fChslope=p1;}
105     virtual void   SetMUSIGM(Float_t p1, Float_t p2) {fChwX=p1; fChwY=p2;}
106     virtual void   SetMAXADC(Float_t p1) {fadc_satm=p1;}
107     // Mathieson parameters
108     virtual void   SetSqrtKx3(Float_t p1) {fSqrtKx3=p1;};
109     virtual void   SetKx2(Float_t p1) {fKx2=p1;};
110     virtual void   SetKx4(Float_t p1) {fKx4=p1;};
111     virtual void   SetSqrtKy3(Float_t p1) {fSqrtKy3=p1;};
112     virtual void   SetKy2(Float_t p1) {fKy2=p1;};
113     virtual void   SetKy4(Float_t p1) {fKy4=p1;};
114     virtual void   SetPitch(Float_t p1) {fPitch=p1;};
115     
116     //
117     // Get member data
118     virtual Float_t Chslope() {return fChslope;}
119     virtual Float_t ChwX() {return fChwX;}    
120     virtual Float_t ChwY() {return fChwY;}        
121     virtual Float_t Nsigma() {return fNsigma;}    
122     virtual Float_t adc_satm() {return fadc_satm;}
123     //  
124     // Chamber response methods
125     // Pulse height from scored quantity (eloss)
126     virtual Float_t IntPH(Float_t eloss=0);
127     virtual Int_t FeedBackPhotons(Float_t *source, Float_t qtot);
128     
129     // Charge disintegration
130     virtual Float_t IntXY(AliRICHsegmentation * segmentation);
131     // Identification
132     //
133     virtual char* YourName() {return fName;}
134     
135     ClassDef(AliRICHresponseV0,1)
136         protected:
137     Float_t fChslope;         // Slope of the charge distribution
138     Float_t fChwX;            // Width of the charge distribution in x
139     Float_t fChwY;            // Width of the charge distribution in y
140     Float_t fNsigma;          // Number of sigma's used for charge distribution
141     Float_t fadc_satm;        // Maximum ADC channel
142     Float_t fSqrtKx3;         // Mathieson parameters for x
143     Float_t fKx2;
144     Float_t fKx4;
145     Float_t fSqrtKy3;         // Mathieson parameters for y
146     Float_t fKy2;
147     Float_t fKy4;
148     Float_t fPitch;           //anode-cathode pitch
149     char    *fName;           //! Version Identifier
150 };
151
152 #endif