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 */
8 /////////////////////////////////////////////////////
9 // Segmentation and Response classes version 01 //
10 /////////////////////////////////////////////////////
13 #include "AliMUONSegResV0.h"
16 #include "TObjArray.h"
18 class AliMUONsegmentationV01 :
19 public AliMUONsegmentationV0 {
21 AliMUONsegmentationV01();
22 virtual ~AliMUONsegmentationV01(){}
24 // Set Chamber Segmentation Parameters
26 virtual void SetPadDivision(Int_t ndiv[4]);
28 virtual void SetSegRadii(Float_t r[4]);
30 // Transform from pad (wire) to real coordinates and vice versa
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 );
38 virtual void Init(AliMUONchamber*);
43 virtual Float_t Dpx(){return AliMUONsegmentationV0::Dpx();}
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;}
53 virtual void SetPad(Int_t,Int_t);
57 virtual void FirstPad(Float_t xhit, Float_t yhit, Float_t dx, Float_t dy);
59 virtual void NextPad();
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
67 virtual Int_t ISector() {return fSector;}
68 // calculate sector from pad coordinates
69 virtual Int_t Sector(Int_t ix, Int_t iy);
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);
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);
85 ClassDef(AliMUONsegmentationV01,1)
88 // Implementation of the segmentation data
89 // Version 0 models rectangular pads with the same dimensions all
90 // over the cathode plane
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)
109 // Current pad during integration (cursor for disintegration)