1 #ifndef ALIMUONSEGMENTATIONSLATMODULE_H
2 #define ALIMUONSEGMENTATIONSLATMODULE_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
8 /////////////////////////////////////////////////////
9 // Segmentation classes for slat modules //
10 // to be used with AluMUONSegmentationSlat //
11 /////////////////////////////////////////////////////
17 #include "AliMUONSegmentationV0.h"
19 class AliMUONSegmentationSlatModule :
20 public AliMUONSegmentationV0 {
22 AliMUONSegmentationSlatModule();
23 virtual ~AliMUONSegmentationSlatModule(){}
25 // Set Chamber Segmentation Parameters
27 virtual void SetPadDivision(Int_t ndiv[4]);
28 // Transform from pad to real coordinates
29 virtual void GetPadI(Float_t x ,Float_t y ,Int_t &ix,Int_t &iy);
30 virtual void GetPadI(Float_t x, Float_t y , Float_t z, Int_t &ix, Int_t &iy)
31 {GetPadI(x, y, ix, iy);}
32 // Transform from real to pad coordinates
33 virtual void GetPadC(Int_t ix,Int_t iy,Float_t &x ,Float_t &y );
34 virtual void GetPadC(Int_t ix, Int_t iy, Float_t &x, Float_t &y, Float_t &z)
35 {z=0; GetPadC(ix, iy, x , y);}
37 virtual void Init(Int_t chamber);
38 // Set Segmentation Zones (PCB Boards)
39 virtual void SetPcbBoards(Int_t n[4]);
43 // Pad size in x by Sector
44 virtual Float_t Dpx(Int_t isec) const;
45 // Pad size in y by Sector
46 virtual Float_t Dpy(Int_t isec) const;
48 virtual void SetPad(Int_t ix,Int_t iy);
49 virtual void SetHit(Float_t xhit, Float_t yhit);
50 virtual void SetHit(Float_t xhit, Float_t yhit, Float_t zhit)
55 virtual void FirstPad(Float_t xhit, Float_t yhit, Float_t dx, Float_t dy);
56 virtual void FirstPad(Float_t xhit, Float_t yhit, Float_t zhit, Float_t dx, Float_t dy)
57 {FirstPad(xhit, yhit, dx, 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]);
66 // Current Pad during Integration
68 virtual Int_t ISector() {return fSector;}
69 // calculate sector from pad coordinates
70 virtual Int_t Sector(Int_t ix, Int_t iy);
73 // Current integration limits
74 virtual void IntegrationLimits
75 (Float_t& x1, Float_t& x2, Float_t& y1, Float_t& y2);
77 virtual void SetId(Int_t id) {fId=id;}
83 Int_t fNsec; // Number of sectors
84 TArrayI* fNDiv; // Pad size division
85 TArrayF* fDpxD; // y pad width per sector
88 Int_t fNpxS[10]; // Number of pads per sector in x
89 Int_t fNpyS[10]; // Number of pads per sector in y
90 Float_t fCx[10]; // 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 Float_t fDxPCB; // x-size of PCB board
104 Float_t fDyPCB; // y-size of PCB board
105 Int_t fPcbBoards[4]; // number of PCB boards per segmentation region
107 ClassDef(AliMUONSegmentationSlatModule,1) // Segmenation for bending plate slats