]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONGeometrySegmentation.h
Updated comments for Doxygen
[u/mrichter/AliRoot.git] / MUON / AliMUONGeometrySegmentation.h
index 94f832988655a23915075768f3d1766b6e67162b..916bd0805d230db2de4915b66528f1a500e287f3 100644 (file)
@@ -3,44 +3,64 @@
 
 /* $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
@@ -63,6 +83,11 @@ class AliMUONGeometrySegmentation : public TObject
                           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);
@@ -141,8 +166,8 @@ class AliMUONGeometrySegmentation : public TObject
     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
@@ -152,7 +177,10 @@ class AliMUONGeometrySegmentation : public TObject
                    // 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);
   
@@ -161,22 +189,31 @@ class AliMUONGeometrySegmentation : public TObject
 
   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