]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MUON/AliMUONSegmentationSlatModule.h
Added class description comments.
[u/mrichter/AliRoot.git] / MUON / AliMUONSegmentationSlatModule.h
CommitLineData
4c503756 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 */
5
6/* $Id$ */
7
8/////////////////////////////////////////////////////
9// Segmentation classes for slat modules //
10// to be used with AluMUONSegmentationSlat //
11/////////////////////////////////////////////////////
12
13class TArrayF;
14class TArrayI;
15class TObjArray;
16
17#include "AliMUONSegmentationV0.h"
18
19class AliMUONSegmentationSlatModule :
20public AliMUONSegmentationV0 {
21 public:
22 AliMUONSegmentationSlatModule();
e9e4cdf2 23 AliMUONSegmentationSlatModule(Int_t nsec);
24 virtual ~AliMUONSegmentationSlatModule();
25
4c503756 26 //
27 // Set Chamber Segmentation Parameters
28 //
29 virtual void SetPadDivision(Int_t ndiv[4]);
30 // Transform from pad to real coordinates
31 virtual void GetPadI(Float_t x ,Float_t y ,Int_t &ix,Int_t &iy);
32 virtual void GetPadI(Float_t x, Float_t y , Float_t z, Int_t &ix, Int_t &iy)
33 {GetPadI(x, y, ix, iy);}
34 // Transform from real to pad coordinates
35 virtual void GetPadC(Int_t ix,Int_t iy,Float_t &x ,Float_t &y );
36 virtual void GetPadC(Int_t ix, Int_t iy, Float_t &x, Float_t &y, Float_t &z)
37 {z=0; GetPadC(ix, iy, x , y);}
38 // Initialisation
39 virtual void Init(Int_t chamber);
40 // Set Segmentation Zones (PCB Boards)
41 virtual void SetPcbBoards(Int_t n[4]);
42 //
43 // Get member data
44 //
45 // Pad size in x by Sector
46 virtual Float_t Dpx(Int_t isec) const;
47 // Pad size in y by Sector
48 virtual Float_t Dpy(Int_t isec) const;
49 //
50 virtual void SetPad(Int_t ix,Int_t iy);
51 virtual void SetHit(Float_t xhit, Float_t yhit);
52 virtual void SetHit(Float_t xhit, Float_t yhit, Float_t zhit)
53 {SetHit(xhit, yhit);}
54 //
55 // Iterate over pads
56 // Initialiser
57 virtual void FirstPad(Float_t xhit, Float_t yhit, Float_t dx, Float_t dy);
58 virtual void FirstPad(Float_t xhit, Float_t yhit, Float_t zhit, Float_t dx, Float_t dy)
59 {FirstPad(xhit, yhit, dx, dy);}
60 // Stepper
61 virtual void NextPad();
62 // Condition
63 virtual Int_t MorePads();
64 // Get next neighbours
65 virtual void Neighbours
66 (Int_t iX, Int_t iY, Int_t* Nlist, Int_t Xlist[10], Int_t Ylist[10]);
67 //
68 // Current Pad during Integration
69 // current sector
70 virtual Int_t ISector() {return fSector;}
71 // calculate sector from pad coordinates
72 virtual Int_t Sector(Int_t ix, Int_t iy);
73 //
74 // Integration
75 // Current integration limits
76 virtual void IntegrationLimits
77 (Float_t& x1, Float_t& x2, Float_t& y1, Float_t& y2);
78 //
79 virtual void SetId(Int_t id) {fId=id;}
80
81 protected:
82 //
83 // Geometry
84 //
4c503756 85 Int_t fNsec; // Number of sectors
86 TArrayI* fNDiv; // Pad size division
87 TArrayF* fDpxD; // y pad width per sector
88
89 // Segmentation map
90 Int_t fNpxS[10]; // Number of pads per sector in x
91 Int_t fNpyS[10]; // Number of pads per sector in y
92 Float_t fCx[10]; // pad-sector contour x vs y
93 // Chamber region consideres during disintegration
94 // (lower left and upper right corner)
95 //
96 Float_t fXmin; // lower left x
97 Float_t fXmax; // lower left y
98 Float_t fYmin; // upper right x
99 Float_t fYmax; // upper right y
100
101 //
102 // Current pad during integration (cursor for disintegration)
103 Int_t fSector; // Current sector
104
105 Float_t fDxPCB; // x-size of PCB board
106 Float_t fDyPCB; // y-size of PCB board
107 Int_t fPcbBoards[4]; // number of PCB boards per segmentation region
108
109 ClassDef(AliMUONSegmentationSlatModule,1) // Segmenation for bending plate slats
110
111};
112#endif
113
114
115
116
117
118