public AliMUONSegmentationV0 {
public:
AliMUONSegmentationV01();
+ AliMUONSegmentationV01(Int_t nsec);
AliMUONSegmentationV01(const AliMUONSegmentationV01 & segmentation);
- virtual ~AliMUONSegmentationV01(){}
+ virtual ~AliMUONSegmentationV01();
+
//
// Set Chamber Segmentation Parameters
//
virtual void SetPadDivision(Int_t ndiv[4]);
// Radii
virtual void SetSegRadii(Float_t r[4]);
+ virtual void SetOffsetY(Float_t off) {fOffsetY = off;}
//
// Transform from pad (wire) to real coordinates and vice versa
//
// Transform from pad to real coordinates
virtual void GetPadI(Float_t x ,Float_t y ,Int_t &ix,Int_t &iy);
- virtual void GetPadI(Float_t x, Float_t y , Float_t z, Int_t &ix, Int_t &iy)
- {GetPadI(x, y, ix, iy);}
+ virtual void GetPadI(Float_t x, Float_t y , Float_t z, Int_t &ix, Int_t &iy);
// Transform from real to pad coordinates
virtual void GetPadC(Int_t ix,Int_t iy,Float_t &x ,Float_t &y );
- virtual void GetPadC(Int_t ix, Int_t iy, Float_t &x, Float_t &y, Float_t &z)
- {z=0; GetPadC(ix, iy, x , y);}
+ virtual void GetPadC(Int_t ix, Int_t iy, Float_t &x, Float_t &y, Float_t &z)
+ {z=fZ; GetPadC(ix, iy, x , y);}
//
// Initialisation
virtual void Init(Int_t chamber);
// Iterate over pads
// Initialiser
virtual void FirstPad(Float_t xhit, Float_t yhit, Float_t dx, Float_t dy);
- virtual void FirstPad(Float_t xhit, Float_t yhit, Float_t zhit, Float_t dx, Float_t dy)
- {FirstPad(xhit, yhit, dx, dy);}
+ virtual void FirstPad(Float_t xhit, Float_t yhit, Float_t zhit, Float_t dx, Float_t dy);
// Stepper
virtual void NextPad();
// Condition
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);
+ void GiveTestPoints(Int_t &n, Float_t *x, Float_t *y) const;
//
// Draw segmentation zones
- virtual void Draw(const char *opt="");
+ virtual void Draw(const char *opt="") const;
// Function for systematic corrections
// Set the correction function
virtual void SetCorrFunc(Int_t dum, TF1* func);
// Get the correction function
- virtual TF1* CorrFunc(Int_t iZone);
+ virtual TF1* CorrFunc(Int_t iZone) const;
// assignment operator
AliMUONSegmentationV01& operator=(const AliMUONSegmentationV01& rhs);
ClassDef(AliMUONSegmentationV01,1) // Segmentation approximating circular zones with different pad size
protected:
// 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 fNsec; // Number of sectors
+ TArrayF* fRSec; // Sector outer radia
+ TArrayI* fNDiv; // Pad size division
+ TArrayF* fDpxD; // y pad width per sector
+ Float_t fOffsetY; // Staggering offset in y
// Segmentation map
- Int_t fNpxS[10][1000]; // Number of pads per sector in x
- Float_t fCx[10][1000]; // pad-sector contour x vs y
+ 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; // lower left x
- Float_t fXmax; // lower left y
- Float_t fYmin; // upper right x
- Float_t fYmax; // upper right y
+ Float_t fXmin; // ! lower left x
+ Float_t fXmax; // ! lower left y
+ Float_t fYmin; // ! upper right x
+ Float_t fYmax; // ! upper right y
//
// Current pad during integration (cursor for disintegration)
- Int_t fSector; // Current sector
+ Int_t fSector; // ! Current sector
//
- TObjArray *fCorr; // Correction functions
+ TObjArray *fCorrA; // ! Array of correction functions
};
#endif