get tables from the aliroot directory if they are not in the current one
[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;
a9e2aefa 13class TObjArray;
14
a9e2aefa 15#include "AliMUONSegmentationV0.h"
c1a185bf 16#include "TArrayI.h" // because the object, and not the pointer,
17#include "TArrayF.h" // belongs to the class
18
a9e2aefa 19
20class AliMUONSegmentationV01 :
21public AliMUONSegmentationV0 {
22 public:
23 AliMUONSegmentationV01();
e9e4cdf2 24 AliMUONSegmentationV01(Int_t nsec);
a9e2aefa 25 AliMUONSegmentationV01(const AliMUONSegmentationV01 & segmentation);
26
e9e4cdf2 27 virtual ~AliMUONSegmentationV01();
28
a9e2aefa 29 //
30 // Set Chamber Segmentation Parameters
31 //
32 virtual void SetPadDivision(Int_t ndiv[4]);
33 // Radii
34 virtual void SetSegRadii(Float_t r[4]);
e80ad807 35 virtual void SetOffsetY(Float_t off) {fOffsetY = off;}
a9e2aefa 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);
b1ad38fa 41 virtual void GetPadI(Float_t x, Float_t y , Float_t z, Int_t &ix, Int_t &iy);
a9e2aefa 42 // Transform from real to pad coordinates
a30a000f 43 virtual void GetPadC(Int_t ix,Int_t iy,Float_t &x ,Float_t &y );
3afc6e30 44 virtual void GetPadC(Int_t ix, Int_t iy, Float_t &x, Float_t &y, Float_t &z);
a9e2aefa 45 //
46 // Initialisation
d81db581 47 virtual void Init(Int_t chamber);
a9e2aefa 48 //
49 // Get member data
50 //
51 // Pad size in x by Sector
94de3818 52 virtual Float_t Dpx(Int_t isec) const;
a9e2aefa 53 // Pad size in y by Sector
94de3818 54 virtual Float_t Dpy(Int_t isec) const;
a9e2aefa 55 // Max number of Pads in x
94de3818 56 virtual Int_t Npx() const {return fNpxS[fNsec-1][1]+1;}
a9e2aefa 57 //
58 virtual void SetPad(Int_t ix,Int_t iy);
59 //
60 // Iterate over pads
61 // Initialiser
62 virtual void FirstPad(Float_t xhit, Float_t yhit, Float_t dx, Float_t dy);
b1ad38fa 63 virtual void FirstPad(Float_t xhit, Float_t yhit, Float_t zhit, Float_t dx, Float_t dy);
a9e2aefa 64 // Stepper
65 virtual void NextPad();
66 // Condition
67 virtual Int_t MorePads();
68 // Get next neighbours
69 virtual void Neighbours
70 (Int_t iX, Int_t iY, Int_t* Nlist, Int_t Xlist[10], Int_t Ylist[10]);
71 //
72 // Current Pad during Integration
73 // current sector
74 virtual Int_t ISector() {return fSector;}
75 // calculate sector from pad coordinates
76 virtual Int_t Sector(Int_t ix, Int_t iy);
77 //
78 // Integration
79 // Current integration limits
80 virtual void IntegrationLimits
81 (Float_t& x1, Float_t& x2, Float_t& y1, Float_t& y2);
82 // Test points for auto calibration
c3eff6ad 83 void GiveTestPoints(Int_t &n, Float_t *x, Float_t *y) const;
a9e2aefa 84 //
85 // Draw segmentation zones
c3eff6ad 86 virtual void Draw(const char *opt="") const;
a9e2aefa 87 // Function for systematic corrections
88 // Set the correction function
89 virtual void SetCorrFunc(Int_t dum, TF1* func);
90 // Get the correction function
c3eff6ad 91 virtual TF1* CorrFunc(Int_t iZone) const;
a9e2aefa 92 // assignment operator
93 AliMUONSegmentationV01& operator=(const AliMUONSegmentationV01& rhs);
94 ClassDef(AliMUONSegmentationV01,1) // Segmentation approximating circular zones with different pad size
95 protected:
96 // Geometry
97 //
c3eff6ad 98 Int_t fNsec; // Number of sectors
99 TArrayF* fRSec; // Sector outer radia
100 TArrayI* fNDiv; // Pad size division
101 TArrayF* fDpxD; // y pad width per sector
e80ad807 102 Float_t fOffsetY; // Staggering offset in y
a9e2aefa 103 // Segmentation map
e9e4cdf2 104 Int_t fNpxS[10][1000]; // Number of pads per sector in x
105 Float_t fCx[10][1000]; // pad-sector contour x vs y
a9e2aefa 106 // Chamber region consideres during disintegration
107 // (lower left and upper right corner)
108 //
e9e4cdf2 109 Float_t fXmin; // ! lower left x
110 Float_t fXmax; // ! lower left y
111 Float_t fYmin; // ! upper right x
112 Float_t fYmax; // ! upper right y
a9e2aefa 113
114 //
115 // Current pad during integration (cursor for disintegration)
e9e4cdf2 116 Int_t fSector; // ! Current sector
a9e2aefa 117 //
e9e4cdf2 118 TObjArray *fCorrA; // ! Array of correction functions
a9e2aefa 119};
120#endif
121
122
123
124
125
126
127
128