]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MUON/AliMUONSegResV01.h
minor bugs
[u/mrichter/AliRoot.git] / MUON / AliMUONSegResV01.h
CommitLineData
a897a37a 1#ifndef MUONSegResV01_H
2#define MUONSegResV01_H
3da30618 3/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
5
6/* $Id$ */
7
a897a37a 8/////////////////////////////////////////////////////
9// Segmentation and Response classes version 01 //
10/////////////////////////////////////////////////////
11
12#include "AliMUON.h"
13#include "AliMUONSegResV0.h"
14#include "TArrayF.h"
15#include "TArrayI.h"
16#include "TObjArray.h"
17
18class AliMUONsegmentationV01 :
19public AliMUONsegmentationV0 {
20 public:
21 AliMUONsegmentationV01();
22 virtual ~AliMUONsegmentationV01(){}
23 //
24 // Set Chamber Segmentation Parameters
25 //
26 virtual void SetPadDivision(Int_t ndiv[4]);
27 // Radii
28 virtual void SetSegRadii(Float_t r[4]);
29 //
30 // Transform from pad (wire) to real coordinates and vice versa
31 //
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 );
36 //
37 // Initialisation
38 virtual void Init(AliMUONchamber*);
39 //
40 // Get member data
41 //
0b34885d 42 // Pad size in x
43 virtual Float_t Dpx(){return AliMUONsegmentationV0::Dpx();}
44 // Pad size in y
45 virtual Float_t Dpy(){return AliMUONsegmentationV0::Dpy();}
a897a37a 46 // Pad size in x by Sector
47 virtual Float_t Dpx(Int_t isec);
48 // Pad size in y by Sector
49 virtual Float_t Dpy(Int_t isec);
50 // Max number of Pads in x
51 virtual Int_t Npx(){return fNpxS[fNsec-1][1]+1;}
52 //
53 virtual void SetPad(Int_t,Int_t);
54 //
55 // Iterate over pads
56 // Initialiser
57 virtual void FirstPad(Float_t xhit, Float_t yhit, Float_t dx, Float_t dy);
58 // Stepper
59 virtual void NextPad();
60 // Condition
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]);
a897a37a 65 // Current Pad during Integration
66 // current sector
67 virtual Int_t ISector() {return fSector;}
68 // calculate sector from pad coordinates
69 virtual Int_t Sector(Int_t ix, Int_t iy);
70 //
71 // Integration
72 // Current integration limits
73 virtual void IntegrationLimits
74 (Float_t& x1, Float_t& x2, Float_t& y1, Float_t& y2);
75 // Test points for auto calibration
76 void GiveTestPoints(Int_t &n, Float_t *x, Float_t *y);
77 //
78 // Debugging utilities
e3a4d40e 79 virtual void Draw(Option_t *);
a897a37a 80 // Function for systematic corrections
81 virtual void SetCorrFunc(Int_t dum, TF1* func);
82 virtual TF1* CorrFunc(Int_t);
83
84
85 ClassDef(AliMUONsegmentationV01,1)
86 protected:
87 //
88 // Implementation of the segmentation data
89 // Version 0 models rectangular pads with the same dimensions all
90 // over the cathode plane
91 //
92 // geometry
93 //
94 Int_t fNsec; // Number of sectors
95 TArrayF fRSec; // sector outer radia
96 TArrayI fNDiv; // pad size division
97 TArrayF fDpxD; // y pad width per sector
98 Int_t fNpxS[10][1000]; // Number of pads per sector in x
99 Float_t fCx[10][1000]; // pad-sector contour x vs y
100 // Chamber region consideres during disintegration
101 // (lower left and upper right corner)
102 //
103 Float_t fxmin;
104 Float_t fxmax;
105 Float_t fymin;
106 Float_t fymax;
107
108 //
109 // Current pad during integration (cursor for disintegration)
110 Int_t fSector;
111 TObjArray *fCorr;
112};
113#endif
114
115
116
117
118
119