/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
* See cxx source for full Copyright notice */
-/* $Id: */
-
-//*********************************************************
-// Segmentation classes for slat modules
-// This class works with local coordinates
-// of the slats via the class AliMUONGeometrySegmentation
-// This class contains the size of the slats and the
-// and the differents PCB densities.
-//*********************************************************
+/* $Id$ */
+
+/// \ingroup base
+/// \class AliMUONSt345SlatSegmentation
+/// \brief Segmentation for slat modules
+///
+///*********************************************************
+/// Segmentation classes for slat modules
+/// This class works with local coordinates
+/// of the slats via the class AliMUONGeometrySegmentation
+/// This class contains the size of the slats and the
+/// and the differents PCB densities.
+///*********************************************************
#include "AliMUONVGeometryDESegmentation.h"
class TArrayF;
class TArrayI;
+
class AliMUONSt345SlatSegmentation : public AliMUONVGeometryDESegmentation
{
public:
AliMUONSt345SlatSegmentation();
+ AliMUONSt345SlatSegmentation(Bool_t bending);
virtual ~AliMUONSt345SlatSegmentation();
virtual Float_t Distance2AndOffset(Int_t iX, Int_t iY, Float_t X, Float_t Y, Int_t * dummy); // Distance between 1 pad and a position
virtual Float_t Dpx(Int_t isec) const; // Pad size in x by Sector
virtual Float_t Dpy(Int_t isec) const; // Pad size in y by Sector
virtual void Draw(const char */*opt*/ = "") {} // Not implemented
-
virtual void FirstPad(Float_t xhit, Float_t yhit, Float_t dx, Float_t dy); // Initialisation for pad iteration
virtual void FirstPad(Float_t xhit, Float_t yhit, Float_t zhit, Float_t dx, Float_t dy);
virtual Bool_t HasPad(Float_t /*x*/, Float_t /*y*/, Float_t /*z*/) { return true; }
- virtual Bool_t HasPad(Int_t /*ix*/, Int_t /*iy*/) { return true; }
+ virtual Bool_t HasPad(Int_t ix, Int_t iy);
+ virtual AliMUONGeometryDirection GetDirection() { return kDirUndefined; }
+ virtual const AliMpVSegmentation* GetMpSegmentation() const { return 0; }
virtual Float_t GetAnod(Float_t xhit) const; // Anod wire coordinate closest to xhit
virtual void GetPadI(Float_t x ,Float_t y ,Int_t &ix,Int_t &iy); // Transform from pad to real coordinates
virtual void GetPadI(Float_t x, Float_t y , Float_t z, Int_t &ix, Int_t &iy);
- virtual void GetPadC(Int_t ix,Int_t iy,Float_t &x ,Float_t &y ); // 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 Init(Int_t detectionElementId); // Initialisation
-
+
virtual void IntegrationLimits(Float_t& x1, Float_t& x2, Float_t& y1, Float_t& y2); //Current integration limits
virtual Int_t ISector() {return fSector;} // Current Pad during Integration (current sector)
virtual Int_t Ix() {return fIx;} // x-coordinate
virtual TF1* CorrFunc(Int_t) const {return 0x0;} // Get the correction Function
virtual Int_t Sector(Float_t /*x*/, Float_t /*y*/) {return 1;}
+ virtual void Init(Int_t detectionElementId); // Initialisation
// Current integration limits
protected:
AliMUONSt345SlatSegmentation(const AliMUONSt345SlatSegmentation& rhs);
AliMUONSt345SlatSegmentation& operator=(const AliMUONSt345SlatSegmentation& rhs);
-
+
+ private:
// Internal geometry of the slat
+ Bool_t fBending; // 0: Bending or 1:Non Bending segmentation
Int_t fId; // Identifier of detection element
- Int_t fNsec; // Number of densitiy sectors (should be 4, if not not warranty about the output
+ Int_t fNsec; // Number of density sectors (should be 4, if not not warranty about the output
TArrayI* fNDiv; // Densities (d1, d2, d3, d4). It should be (4, 4, 2, 1) which goes from beam to out-beam
TArrayF* fDpxD; // x pad width per density sector
+ TArrayF* fDpyD; // x pad width per density sector
Float_t fDpx; // x pad base width
Float_t fDpy; // y pad base width
Int_t fNpx; // Number of pads in x
Int_t fNpy; // Number of pads in y
Float_t fWireD; // wire pitch
+ Int_t fRtype; // type of the slat: rounded R=1,2,3, rounded short R=-1,-2,-3, short R=4, normal R=0
//
Int_t fSector; // Current density sector
Float_t fDxPCB; // x-size of PCB board
Float_t fYmin; // upper right x
Float_t fYmax; // upper right y
- ClassDef(AliMUONSt345SlatSegmentation,1)
+ Bool_t fInitDone; // flag for initialization
+
+ ClassDef(AliMUONSt345SlatSegmentation,3)
};
#endif