/* $Id$ */
-//
-// Class AliMUONGeometrySegmentation
-// ----------------------------------
-// New class for the geometry segmentation
-// composed of the segmentations of detection elements.
-// Applies transformations defined in geometry.
-//
-// Author:Ivana Hrivnacova, IPN Orsay
+/// \ingroup geometry
+/// \class AliMUONGeometrySegmentation
+/// \brief Segmentation for a geometry module
+///
+/// New class for the geometry segmentation
+/// composed of the segmentations of detection elements.
+/// Applies transformations defined in geometry.
+///
+/// Author:Ivana Hrivnacova, IPN Orsay
#ifndef ALI_MUON_GEOMETRY_SEGMENTATION_H
#define ALI_MUON_GEOMETRY_SEGMENTATION_H
+#include "AliMUONGeometryDirection.h"
+
#include <TObject.h>
+#include <TString.h>
class TObjArray;
class TF1;
-class AliMUONGeometryModule;
+class AliMUONGeometryModuleTransformer;
class AliMUONGeometryStore;
class AliMUONGeometryDetElement;
class AliMUONVGeometryDESegmentation;
+class AliMUONSegmentManuIndex;
class AliMUONGeometrySegmentation : public TObject
{
public:
- AliMUONGeometrySegmentation(AliMUONGeometryModule* geometry);
+ AliMUONGeometrySegmentation(
+ const AliMUONGeometryModuleTransformer* geometry);
AliMUONGeometrySegmentation();
virtual ~AliMUONGeometrySegmentation();
- // methods
- void Add(Int_t detElemId,
+ // Methods
+ //
+ void Add(Int_t detElemId, const TString& detElemName,
AliMUONVGeometryDESegmentation* segmentation);
- // get methods
- AliMUONGeometryModule* GetGeometry() const;
+ // Get methods
+ //
+ const AliMUONGeometryModuleTransformer* GetTransformer() const;
+ // Geometry transformer
+
+ const AliMUONVGeometryDESegmentation* GetDESegmentation(
+ Int_t detElemId, Bool_t warn = true) const;
+ // DE segmentation
- //
- // redefined methods from AliSegmentation interface
+ AliMUONGeometryDirection GetDirection(Int_t detElemId) const;
+ // Direction with a constant pad size
+ // (Direction or coordinate where the resolution
+ // is the best)
+
+ TString GetDEName(Int_t detElemId) const;
+ // DE name
+
+ // Redefined methods from AliSegmentation interface
//
// Set Chamber Segmentation Parameters
Float_t& x, Float_t& y, Float_t& z);
// Transform from real to pad coordinates
+ virtual Bool_t HasPad(Int_t detElemId,
+ Int_t ix, Int_t iy);
+ virtual Bool_t HasPad(Int_t detElemId,
+ Float_t& x, Float_t& y, Float_t& z);
+
// Initialisation
//
virtual void Init(Int_t chamber);
virtual void GiveTestPoints(Int_t detElemId,
Int_t& n, Float_t* xg, Float_t* yg) const;
// Test points for auto calibration
- virtual void Draw(Int_t detElemId,
- const char *opt = "") const;
+ virtual void Draw(const char *opt = "");
+ virtual void Draw(Int_t detElemId, const char *opt = "");
// Draw the segmentation zones
// Function for systematic corrections
// Set the correction function
virtual TF1* CorrFunc(Int_t detElemId, Int_t isec) const;
// Get the correction Function
-
+ // Printing
+ //
+ virtual void Print(Option_t* opt = "") const;
+
protected:
AliMUONGeometrySegmentation(const AliMUONGeometrySegmentation& rhs);
private:
// methods
- Bool_t Notify(Int_t detElemId) const;
+ Bool_t OwnNotify(Int_t detElemId, Bool_t warn = true) const;
+
+ // static data members
+ static const Float_t fgkMaxDistance; ///< \brief the big value passed to pad coordinates
+ /// if pad does not exist
// data members
- mutable Int_t fCurrentDetElemId;
- mutable AliMUONGeometryDetElement* fCurrentDetElement;
- mutable AliMUONVGeometryDESegmentation* fCurrentSegmentation;
- AliMUONGeometryModule* fGeometryModule;
- AliMUONGeometryStore* fDESegmentations;
+ mutable Int_t fCurrentDetElemId; ///< current DE ID
+ mutable AliMUONGeometryDetElement* fCurrentDetElement; ///< current detection element
+ mutable AliMUONVGeometryDESegmentation* fCurrentSegmentation;///< current DE segmentation
+
+ const AliMUONGeometryModuleTransformer* fkModuleTransformer; ///< associated geometry transformer
+ AliMUONGeometryStore* fDESegmentations;///< DE segmentations
+ AliMUONGeometryStore* fDENames; ///< DE names
+
- ClassDef(AliMUONGeometrySegmentation,2) // Geometry segmentation
+ ClassDef(AliMUONGeometrySegmentation,3) // Geometry segmentation
};
// inline functions
-inline AliMUONGeometryModule* AliMUONGeometrySegmentation::GetGeometry() const
-{ return fGeometryModule; }
+inline
+const AliMUONGeometryModuleTransformer*
+AliMUONGeometrySegmentation::GetTransformer() const
+{ return fkModuleTransformer; }
#endif //ALI_MUON_GEOMETRY_SEGMENTATION_H