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