--- /dev/null
+#ifndef MUONSegResV01_H
+#define MUONSegResV01_H
+/////////////////////////////////////////////////////
+// Segmentation and Response classes version 01 //
+/////////////////////////////////////////////////////
+
+#include "AliMUON.h"
+#include "AliMUONSegResV0.h"
+#include "TArrayF.h"
+#include "TArrayI.h"
+#include "TObjArray.h"
+
+class AliMUONsegmentationV01 :
+public AliMUONsegmentationV0 {
+ public:
+ AliMUONsegmentationV01();
+ virtual ~AliMUONsegmentationV01(){}
+ //
+ // Set Chamber Segmentation Parameters
+ //
+ virtual void SetPadDivision(Int_t ndiv[4]);
+ // Radii
+ virtual void SetSegRadii(Float_t r[4]);
+ //
+ // Transform from pad (wire) to real coordinates and vice versa
+ //
+ // Transform from pad to real coordinates
+ virtual void GetPadIxy(Float_t x ,Float_t y ,Int_t &ix,Int_t &iy);
+ // Transform from real to pad coordinates
+ virtual void GetPadCxy(Int_t ix,Int_t iy,Float_t &x ,Float_t &y );
+ //
+ // Initialisation
+ virtual void Init(AliMUONchamber*);
+ //
+ // Get member data
+ //
+ // Pad size in x by Sector
+ virtual Float_t Dpx(Int_t isec);
+ // Pad size in y by Sector
+ virtual Float_t Dpy(Int_t isec);
+ // Max number of Pads in x
+ virtual Int_t Npx(){return fNpxS[fNsec-1][1]+1;}
+ //
+ virtual void SetPad(Int_t,Int_t);
+ //
+ // Iterate over pads
+ // Initialiser
+ virtual void FirstPad(Float_t xhit, Float_t yhit, Float_t dx, Float_t dy);
+ // Stepper
+ virtual void NextPad();
+ // Condition
+ virtual Int_t MorePads();
+ // Get next neighbours
+ virtual void Neighbours
+ (Int_t iX, Int_t iY, Int_t* Nlist, Int_t Xlist[10], Int_t Ylist[10]);
+ // Provisory RecCluster coordinates reconstructor
+ virtual void FitXY(AliMUONRecCluster* Cluster,TClonesArray* MUONdigits);
+ //
+ // Current Pad during Integration
+ // current sector
+ virtual Int_t ISector() {return fSector;}
+ // calculate sector from pad coordinates
+ virtual Int_t Sector(Int_t ix, Int_t iy);
+ //
+ // Integration
+ // Current integration limits
+ virtual void IntegrationLimits
+ (Float_t& x1, Float_t& x2, Float_t& y1, Float_t& y2);
+ // Test points for auto calibration
+ void GiveTestPoints(Int_t &n, Float_t *x, Float_t *y);
+ //
+ // Debugging utilities
+ virtual void Draw();
+ // Function for systematic corrections
+ virtual void SetCorrFunc(Int_t dum, TF1* func);
+ virtual TF1* CorrFunc(Int_t);
+
+
+ ClassDef(AliMUONsegmentationV01,1)
+ protected:
+ //
+ // Implementation of the segmentation data
+ // Version 0 models rectangular pads with the same dimensions all
+ // over the cathode plane
+ //
+ // geometry
+ //
+ Int_t fNsec; // Number of sectors
+ TArrayF fRSec; // sector outer radia
+ TArrayI fNDiv; // pad size division
+ TArrayF fDpxD; // y pad width per sector
+ Int_t fNpxS[10][1000]; // Number of pads per sector in x
+ Float_t fCx[10][1000]; // pad-sector contour x vs y
+ // Chamber region consideres during disintegration
+ // (lower left and upper right corner)
+ //
+ Float_t fxmin;
+ Float_t fxmax;
+ Float_t fymin;
+ Float_t fymax;
+
+ //
+ // Current pad during integration (cursor for disintegration)
+ Int_t fSector;
+ TObjArray *fCorr;
+};
+#endif
+
+
+
+
+
+