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