]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MUON/AliMUONSegResV01.h
Remove several warnings
[u/mrichter/AliRoot.git] / MUON / AliMUONSegResV01.h
1 #ifndef MUONSegResV01_H
2 #define MUONSegResV01_H
3 /////////////////////////////////////////////////////
4 //  Segmentation and Response classes version 01   //
5 /////////////////////////////////////////////////////
6  
7 #include "AliMUON.h"
8 #include "AliMUONSegResV0.h"
9 #include "TArrayF.h"
10 #include "TArrayI.h"
11 #include "TObjArray.h"
12
13 class AliMUONsegmentationV01 :
14 public AliMUONsegmentationV0 {
15  public:
16     AliMUONsegmentationV01();
17     virtual ~AliMUONsegmentationV01(){}
18     //    
19     // Set Chamber Segmentation Parameters
20     // 
21     virtual  void    SetPadDivision(Int_t ndiv[4]);
22     // Radii
23     virtual  void    SetSegRadii(Float_t  r[4]);
24     //
25     // Transform from pad (wire) to real coordinates and vice versa
26     //
27     // Transform from pad to real coordinates
28     virtual void    GetPadIxy(Float_t x ,Float_t y ,Int_t   &ix,Int_t   &iy);
29     // Transform from real to pad coordinates
30     virtual void    GetPadCxy(Int_t   ix,Int_t   iy,Float_t &x ,Float_t &y );    
31     //
32     // Initialisation
33     virtual void Init(AliMUONchamber*);
34     //
35     // Get member data
36     //
37     // Pad size in x by Sector
38     virtual Float_t Dpx(Int_t isec);
39     // Pad size in y by Sector
40     virtual Float_t Dpy(Int_t isec);
41     // Max number of Pads in x
42     virtual Int_t   Npx(){return fNpxS[fNsec-1][1]+1;}
43     //
44     virtual void     SetPad(Int_t,Int_t);
45     //
46     // Iterate over pads
47     // Initialiser
48     virtual void  FirstPad(Float_t xhit, Float_t yhit, Float_t dx, Float_t dy);
49     // Stepper
50     virtual void  NextPad();
51     // Condition
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     // Current Pad during Integration
57     // current sector
58     virtual Int_t ISector()  {return fSector;}
59     // calculate sector from pad coordinates
60     virtual Int_t Sector(Int_t ix, Int_t iy);
61     //
62     // Integration
63     // Current integration limits
64      virtual void IntegrationLimits
65         (Float_t& x1, Float_t& x2, Float_t& y1, Float_t& y2);
66      // Test points for auto calibration
67     void GiveTestPoints(Int_t &n, Float_t *x, Float_t *y);
68     //
69     // Debugging utilities
70     virtual void Draw(Option_t *);
71     // Function for systematic corrections
72     virtual void SetCorrFunc(Int_t dum, TF1* func);
73     virtual TF1* CorrFunc(Int_t);
74     
75
76     ClassDef(AliMUONsegmentationV01,1)
77  protected:
78     //
79     // Implementation of the segmentation data
80     // Version 0 models rectangular pads with the same dimensions all
81     // over the cathode plane
82     //
83     //  geometry
84     //
85     Int_t      fNsec;           // Number of sectors
86     TArrayF    fRSec;           // sector outer radia
87     TArrayI    fNDiv;           // pad size division
88     TArrayF    fDpxD;           // y pad width per sector
89     Int_t      fNpxS[10][1000]; // Number of pads per sector in x
90     Float_t    fCx[10][1000];   // pad-sector contour x vs y  
91     // Chamber region consideres during disintegration
92     // (lower left and upper right corner)
93     //
94     Float_t fxmin;
95     Float_t fxmax;
96     Float_t fymin;
97     Float_t fymax;
98
99     //
100     // Current pad during integration (cursor for disintegration)
101     Int_t   fSector;
102     TObjArray *fCorr;
103 };
104 #endif
105
106
107
108
109
110