]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MUON/AliMUONSegmentationV01.h
Removal of useless dependecies via forward declarations
[u/mrichter/AliRoot.git] / MUON / AliMUONSegmentationV01.h
CommitLineData
a9e2aefa 1#ifndef ALIMUONSEGMENTATIONV01_H
2#define ALIMUONSEGMENTATIONV01_H
3
4/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5 * See cxx source for full Copyright notice */
6
7/* $Id$ */
8
9/////////////////////////////////////////////////////
10// Segmentation and Response classes version 01 //
11/////////////////////////////////////////////////////
12class AliMUON;
13class TArrayF;
14class TArrayI;
15class TObjArray;
16
17
18
19#include "AliMUONSegmentationV0.h"
20#include "TArrayI.h"
21#include "TArrayF.h"
22
23class AliMUONSegmentationV01 :
24public AliMUONSegmentationV0 {
25 public:
26 AliMUONSegmentationV01();
27 AliMUONSegmentationV01(const AliMUONSegmentationV01 & segmentation);
28
29 virtual ~AliMUONSegmentationV01(){}
30 //
31 // Set Chamber Segmentation Parameters
32 //
33 virtual void SetPadDivision(Int_t ndiv[4]);
34 // Radii
35 virtual void SetSegRadii(Float_t r[4]);
36 //
37 // Transform from pad (wire) to real coordinates and vice versa
38 //
39 // Transform from pad to real coordinates
a30a000f 40 virtual void GetPadI(Float_t x ,Float_t y ,Int_t &ix,Int_t &iy);
41 virtual void GetPadI(Float_t x, Float_t y , Float_t z, Int_t &ix, Int_t &iy)
42 {GetPadI(x, y, ix, iy);}
a9e2aefa 43 // Transform from real to pad coordinates
a30a000f 44 virtual void GetPadC(Int_t ix,Int_t iy,Float_t &x ,Float_t &y );
45 virtual void GetPadC(Int_t ix, Int_t iy, Float_t &x, Float_t &y, Float_t &z)
46 {z=0; GetPadC(ix, iy, x , y);}
a9e2aefa 47 //
48 // Initialisation
d81db581 49 virtual void Init(Int_t chamber);
a9e2aefa 50 //
51 // Get member data
52 //
53 // Pad size in x by Sector
94de3818 54 virtual Float_t Dpx(Int_t isec) const;
a9e2aefa 55 // Pad size in y by Sector
94de3818 56 virtual Float_t Dpy(Int_t isec) const;
a9e2aefa 57 // Max number of Pads in x
94de3818 58 virtual Int_t Npx() const {return fNpxS[fNsec-1][1]+1;}
a9e2aefa 59 //
60 virtual void SetPad(Int_t ix,Int_t iy);
61 //
62 // Iterate over pads
63 // Initialiser
64 virtual void FirstPad(Float_t xhit, Float_t yhit, Float_t dx, Float_t dy);
24b005db 65 virtual void FirstPad(Float_t xhit, Float_t yhit, Float_t zhit, Float_t dx, Float_t dy)
66 {FirstPad(xhit, yhit, dx, dy);}
a9e2aefa 67 // Stepper
68 virtual void NextPad();
69 // Condition
70 virtual Int_t MorePads();
71 // Get next neighbours
72 virtual void Neighbours
73 (Int_t iX, Int_t iY, Int_t* Nlist, Int_t Xlist[10], Int_t Ylist[10]);
74 //
75 // Current Pad during Integration
76 // current sector
77 virtual Int_t ISector() {return fSector;}
78 // calculate sector from pad coordinates
79 virtual Int_t Sector(Int_t ix, Int_t iy);
80 //
81 // Integration
82 // Current integration limits
83 virtual void IntegrationLimits
84 (Float_t& x1, Float_t& x2, Float_t& y1, Float_t& y2);
85 // Test points for auto calibration
86 void GiveTestPoints(Int_t &n, Float_t *x, Float_t *y);
87 //
88 // Draw segmentation zones
ef42d733 89 virtual void Draw(const char *opt="");
a9e2aefa 90 // Function for systematic corrections
91 // Set the correction function
92 virtual void SetCorrFunc(Int_t dum, TF1* func);
93 // Get the correction function
94 virtual TF1* CorrFunc(Int_t iZone);
95 // assignment operator
96 AliMUONSegmentationV01& operator=(const AliMUONSegmentationV01& rhs);
97 ClassDef(AliMUONSegmentationV01,1) // Segmentation approximating circular zones with different pad size
98 protected:
99 // Geometry
100 //
101 Int_t fNsec; // Number of sectors
102 TArrayF fRSec; // Sector outer radia
103 TArrayI fNDiv; // Pad size division
104 TArrayF fDpxD; // y pad width per sector
105 // Segmentation map
106 Int_t fNpxS[10][1000]; // Number of pads per sector in x
107 Float_t fCx[10][1000]; // pad-sector contour x vs y
108 // Chamber region consideres during disintegration
109 // (lower left and upper right corner)
110 //
ecfa008b 111 Float_t fXmin; // lower left x
112 Float_t fXmax; // lower left y
113 Float_t fYmin; // upper right x
114 Float_t fYmax; // upper right y
a9e2aefa 115
116 //
117 // Current pad during integration (cursor for disintegration)
118 Int_t fSector; // Current sector
119 //
120 TObjArray *fCorr; // Correction functions
121};
122#endif
123
124
125
126
127
128
129
130