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