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 */
6 /////////////////////////////////////////////////////
7 // Segmentation and Response classes version 01 //
8 /////////////////////////////////////////////////////
11 #include "AliMUONSegResV0.h"
14 #include "TObjArray.h"
16 class AliMUONSegmentationV01 :
17 public AliMUONSegmentationV0 {
19 AliMUONSegmentationV01();
20 virtual ~AliMUONSegmentationV01(){}
22 // Set Chamber Segmentation Parameters
24 virtual void SetPadDivision(Int_t ndiv[4]);
26 virtual void SetSegRadii(Float_t r[4]);
28 // Transform from pad (wire) to real coordinates and vice versa
30 // Transform from pad to real coordinates
31 virtual void GetPadIxy(Float_t x ,Float_t y ,Int_t &ix,Int_t &iy);
32 // Transform from real to pad coordinates
33 virtual void GetPadCxy(Int_t ix,Int_t iy,Float_t &x ,Float_t &y );
36 virtual void Init(AliMUONChamber*);
40 // Pad size in x by Sector
41 virtual Float_t Dpx(Int_t isec);
42 // Pad size in y by Sector
43 virtual Float_t Dpy(Int_t isec);
44 // Max number of Pads in x
45 virtual Int_t Npx(){return fNpxS[fNsec-1][1]+1;}
47 virtual void SetPad(Int_t,Int_t);
51 virtual void FirstPad(Float_t xhit, Float_t yhit, Float_t dx, Float_t dy);
53 virtual void NextPad();
55 virtual Int_t MorePads();
56 // Get next neighbours
57 virtual void Neighbours
58 (Int_t iX, Int_t iY, Int_t* Nlist, Int_t Xlist[10], Int_t Ylist[10]);
60 // Current Pad during Integration
62 virtual Int_t ISector() {return fSector;}
63 // calculate sector from pad coordinates
64 virtual Int_t Sector(Int_t ix, Int_t iy);
67 // Current integration limits
68 virtual void IntegrationLimits
69 (Float_t& x1, Float_t& x2, Float_t& y1, Float_t& y2);
70 // Test points for auto calibration
71 void GiveTestPoints(Int_t &n, Float_t *x, Float_t *y);
73 // Draw segmentation zones
75 // Function for systematic corrections
76 // Set the correction function
77 virtual void SetCorrFunc(Int_t dum, TF1* func);
78 // Get the correction function
79 virtual TF1* CorrFunc(Int_t);
80 ClassDef(AliMUONSegmentationV01,1) // Segmentation approximating circular zones with different pad size
84 Int_t fNsec; // Number of sectors
85 TArrayF fRSec; // Sector outer radia
86 TArrayI fNDiv; // Pad size division
87 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)
94 Float_t fxmin; // lower left x
95 Float_t fxmax; // lower left y
96 Float_t fymin; // upper right x
97 Float_t fymax; // upper right y
100 // Current pad during integration (cursor for disintegration)
101 Int_t fSector; // Current sector
103 TObjArray *fCorr; // Correction functions