]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/mapping/AliMpMotifMap.h
In Print(): added an option to print area borders
[u/mrichter/AliRoot.git] / MUON / mapping / AliMpMotifMap.h
index e53f85ed9cc00d78c627618ca1611dfd4120bb68..4934d7faca1d4761adb994a2048d78eac6667e18 100755 (executable)
@@ -1,32 +1,84 @@
+/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+ * See cxx source for full Copyright notice                               */
+
 // $Id$
-// Category: motif
-//
-// Class AliMpMotifMap
-// -------------------
-// Class describing the motif map container, where motifs are
-// mapped to their string IDs.
-//
-// Authors: David Guez, Ivana Hrivnacova; IPN Orsay
+// $MpId: AliMpMotifMap.h,v 1.14 2006/05/24 13:58:18 ivana Exp $
+
+/// \ingroup motif
+/// \class AliMpMotifMap
+/// \brief Motif map containers
+///
+/// The class defines:
+/// - map of motif objects to their string IDs
+/// - map of motif type objects to their string IDs
+/// - map of motif position objects to their string IDs
+/// - map of motif position objects to their global indices
+///
+/// \author David Guez, Ivana Hrivnacova; IPN Orsay
 
 #ifndef ALI_MP_MOTIF_MAP_H
 #define ALI_MP_MOTIF_MAP_H
 
-#include <map>
-
 #include <TObject.h>
-#include <TString.h>
-#include <TVector2.h>
 
-#include "AliMpMotifTypes.h"
+#include "AliMpContainers.h"
+
+#ifdef WITH_STL
 #include "AliMpIntPair.h"
+#endif
+
+#ifdef WITH_ROOT
+#include "AliMpExMap.h"
+#endif
+
+#ifdef WITH_STL
+#include <map>
+#include <iterator>
+#endif
 
 class AliMpVMotif;
 class AliMpMotifType;
 class AliMpMotifPosition;
+class AliMpMotifMap;
+
+class TArrayI;
+class TString;
+class TVector2;
 
 class AliMpMotifMap : public TObject
 {
   public:
+#ifdef WITH_STL
+    /// Motif map type
+    typedef std::map<TString, AliMpVMotif*> MotifMap;
+    /// Motif map iterator type
+    typedef MotifMap::const_iterator        MotifMapIterator;
+    /// Motif type map type
+    typedef std::map<TString, AliMpMotifType*> MotifTypeMap;
+    /// Motif type map iterator type
+    typedef MotifTypeMap::const_iterator       MotifTypeMapIterator;
+    /// Motif position map to int type
+    typedef std::map<Int_t, AliMpMotifPosition*>  MotiPositionMap;
+    /// Motif position map to int iterator type
+    typedef MotiPositionMap::const_iterator       MotifPositionMapIterator;
+    /// Motif position map to int pair type
+    typedef std::map<AliMpIntPair, AliMpMotifPosition*> MotifPositionMap2;
+    /// Motif position map to int pair iterator type
+    typedef MotifPositionMap2::const_iterator           MotifPositionMap2Iterator;
+#endif    
+#ifdef WITH_ROOT
+    /// Motif map type
+    typedef AliMpExMap MotifMap;
+    /// Motif type map type
+    typedef AliMpExMap MotifTypeMap;
+    /// Motif position map to int type
+    typedef AliMpExMap MotifPositionMap;
+    /// Motif position map to int pair iterator type
+    typedef AliMpExMap MotifPositionMap2;
+#endif    
+
+  public:
+    AliMpMotifMap(Bool_t /*standardConstructor*/);
     AliMpMotifMap();
     virtual ~AliMpMotifMap();
     
@@ -35,46 +87,46 @@ class AliMpMotifMap : public TObject
     Bool_t  AddMotifType(AliMpMotifType* motifType, Bool_t warn = true);
     Bool_t  AddMotifPosition(AliMpMotifPosition* motifType, Bool_t warn = true);
     void   FillMotifPositionMap2();
-    void   Print() const;
+    virtual void Print(const char* option = "ALL") const;
     void   PrintGlobalIndices(const char* fileName) const;
     void   UpdateGlobalIndices(const char* fileName);
    
     // find methods
     AliMpVMotif*  FindMotif(const TString& motifID) const;
     AliMpVMotif*  FindMotif(const TString& motifID, const TString& motifTypeID, 
-                            TVector2 padDimensions) const;
+                            const TVector2& padDimensions) const;
     AliMpMotifType*      FindMotifType(const TString& motifTypeID) const;
     AliMpMotifPosition*  FindMotifPosition(Int_t motifPositionID) const;
-    AliMpMotifPosition*  FindMotifPosition(AliMpIntPair indices) const;
 
+    /// Find all motifPositionsIDs (=electronicCardNumbers) handled by this map
+    void    GetAllMotifPositionsIDs(TArrayI& enc) const;
+    UInt_t  GetNofMotifPositions() const;
+    AliMpMotifPosition* GetMotifPosition(UInt_t index) const;
+
+    /// Calculate total number of pads defined in the map
+    Int_t CalculateNofPads() const;
+     
   private:
     // methods
+    void  PrintMotif(const AliMpVMotif* motif) const;
+    void  PrintMotifType(const AliMpMotifType* motifType) const;
+    void  PrintMotifPosition(const AliMpMotifPosition* motifPosition) const;
+    void  PrintMotifPosition2(const AliMpMotifPosition* motifPosition) const;
     void  PrintMotifs() const;
     void  PrintMotifTypes() const;
     void  PrintMotifPositions() const;
     void  PrintMotifPositions2() const;
-
-    // unused derrived functions
-    virtual void Print(const char* option) const {}
  
-#ifdef __HP_aCC
     // data members
-            // EXCLUDED FOR CINT (does not compile on HP)
-    MotifMap          fMotifs; //! motifs map
-    MotifTypeMap      fMotifTypes; //!motif types map 
-    //MotifPositionMap  fMotifPositions;  //! motif positions map 
-                                          // not taken by cint
-    map<Int_t, AliMpMotifPosition*>  fMotifPositions; //! motif positions map by Id
-    MotifPositionMap2 fMotifPositions2; //! motif positions map
-#else
-    // data members
-    MotifMap          fMotifs;     // motifs map
-    MotifTypeMap      fMotifTypes; // motif types map 
-    //MotifPositionMap  fMotifPositions;  // motif positions map 
-                                          // not taken by cint
-    std::map<Int_t, AliMpMotifPosition*> fMotifPositions; // motif positions map by Id
-    MotifPositionMap2 fMotifPositions2; // motif positions map
+    MotifMap           fMotifs;         ///< motifs map
+    MotifTypeMap       fMotifTypes;     ///< motifs types map
+#ifdef WITH_STL
+    std::map<Int_t, AliMpMotifPosition*> fMotifPositions; ///< motif positions map by Id
+#endif
+#ifdef WITH_ROOT
+    MotifPositionMap   fMotifPositions; ///< motifs positions map
 #endif
+    MotifPositionMap2  fMotifPositions2;///< motifs positions map
 
   ClassDef(AliMpMotifMap,1)  // motif map
 };