Remove several warnings
[u/mrichter/AliRoot.git] / MUON / AliMUONSegResV01.h
CommitLineData
a897a37a 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
13class AliMUONsegmentationV01 :
14public 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]);
a897a37a 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
e3a4d40e 70 virtual void Draw(Option_t *);
a897a37a 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