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*);
42 // Pad size in x by Sector
43 virtual Float_t Dpx(Int_t isec);
44 // Pad size in y by Sector
45 virtual Float_t Dpy(Int_t isec);
46 // Max number of Pads in x
47 virtual Int_t Npx(){return fNpxS[fNsec-1][1]+1;}
49 virtual void SetPad(Int_t,Int_t);
53 virtual void FirstPad(Float_t xhit, Float_t yhit, Float_t dx, Float_t dy);
55 virtual void NextPad();
57 virtual Int_t MorePads();
58 // Get next neighbours
59 virtual void Neighbours
60 (Int_t iX, Int_t iY, Int_t* Nlist, Int_t Xlist[10], Int_t Ylist[10]);
61 // Current Pad during Integration
63 virtual Int_t ISector() {return fSector;}
64 // calculate sector from pad coordinates
65 virtual Int_t Sector(Int_t ix, Int_t iy);
68 // Current integration limits
69 virtual void IntegrationLimits
70 (Float_t& x1, Float_t& x2, Float_t& y1, Float_t& y2);
71 // Test points for auto calibration
72 void GiveTestPoints(Int_t &n, Float_t *x, Float_t *y);
74 // Debugging utilities
75 virtual void Draw(Option_t *);
76 // Function for systematic corrections
77 virtual void SetCorrFunc(Int_t dum, TF1* func);
78 virtual TF1* CorrFunc(Int_t);
81 ClassDef(AliMUONsegmentationV01,1)
84 // Implementation of the segmentation data
85 // Version 0 models rectangular pads with the same dimensions all
86 // over the cathode plane
90 Int_t fNsec; // Number of sectors
91 TArrayF fRSec; // sector outer radia
92 TArrayI fNDiv; // pad size division
93 TArrayF fDpxD; // y pad width per sector
94 Int_t fNpxS[10][1000]; // Number of pads per sector in x
95 Float_t fCx[10][1000]; // pad-sector contour x vs y
96 // Chamber region consideres during disintegration
97 // (lower left and upper right corner)
105 // Current pad during integration (cursor for disintegration)