/// composed of the segmentations of detection elements.
/// Applies transformations defined in geometry.
///
-/// Author:Ivana Hrivnacova, IPN Orsay
+/// \author Ivana Hrivnacova, IPN Orsay
#ifndef ALI_MUON_GEOMETRY_SEGMENTATION_H
#define ALI_MUON_GEOMETRY_SEGMENTATION_H
-#include <TObject.h>
-
#include "AliMUONGeometryDirection.h"
+#include <TObject.h>
+#include <TString.h>
+
class TObjArray;
class TF1;
-class AliMUONGeometryModule;
-class AliMUONGeometryStore;
+class AliMUONGeometryModuleTransformer;
class AliMUONGeometryDetElement;
class AliMUONVGeometryDESegmentation;
class AliMUONSegmentManuIndex;
+class AliMpExMap;
+
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;
- virtual const AliMUONVGeometryDESegmentation* GetDESegmentation(Int_t detElemId) const;
+ // Get methods
+ //
+ const AliMUONGeometryModuleTransformer* GetTransformer() const;
+ // Geometry transformer
+
+ const AliMUONVGeometryDESegmentation* GetDESegmentation(
+ Int_t detElemId, Bool_t warn = true) const;
// DE segmentation
- virtual AliMUONGeometryDirection GetDirection(Int_t detElemId) const;
+
+ AliMUONGeometryDirection GetDirection(Int_t detElemId) const;
// Direction with a constant pad size
- // (Direction or coordinate where the resolution is the best)
+ // (Direction or coordinate where the resolution
+ // is the best)
- //
- // redefined methods from AliSegmentation interface
+ 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);
-
- // get pad for a given connection
- virtual Bool_t GetPadE(Int_t detElemId, Int_t &ix, Int_t &iy, AliMUONSegmentManuIndex* connect);
- virtual AliMUONSegmentManuIndex* GetMpConnection(Int_t detElemId, Int_t ix, Int_t iy);
- // get electronics connection for given pad
-
+ 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);
// Set the correction function
virtual TF1* CorrFunc(Int_t detElemId, Int_t isec) const;
// Get the correction Function
- virtual void Print(Option_t* ="") const;
+ // Printing
+ //
+ virtual void Print(Option_t* opt = "") const;
protected:
+ /// Not implemented
AliMUONGeometrySegmentation(const AliMUONGeometrySegmentation& rhs);
-
- // operators
+ /// Not implemented
AliMUONGeometrySegmentation& operator=(const AliMUONGeometrySegmentation & rhs);
private:
// methods
- Bool_t OwnNotify(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
+ AliMpExMap* fDESegmentations; ///< DE segmentations
+ AliMpExMap* fDENames; ///< DE names
+
- ClassDef(AliMUONGeometrySegmentation,2) // Geometry segmentation
+ ClassDef(AliMUONGeometrySegmentation,3) // Geometry segmentation
};
// inline functions
-inline AliMUONGeometryModule* AliMUONGeometrySegmentation::GetGeometry() const
-{ return fGeometryModule; }
+/// Return associated geometry transformer
+inline
+const AliMUONGeometryModuleTransformer*
+AliMUONGeometrySegmentation::GetTransformer() const
+{ return fkModuleTransformer; }
#endif //ALI_MUON_GEOMETRY_SEGMENTATION_H