+/* 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 <TObject.h>
+
+#include "AliMpContainers.h"
+
#ifdef WITH_STL
- #include <map>
+#include "AliMpIntPair.h"
#endif
-#include <TObject.h>
-
-#include "AliMpMotifTypes.h"
+#ifdef WITH_ROOT
+#include "AliMpExMap.h"
+#endif
-class TString;
-class TVector2;
+#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();
Bool_t AddMotifType(AliMpMotifType* motifType, Bool_t warn = true);
Bool_t AddMotifPosition(AliMpMotifPosition* motifType, Bool_t warn = true);
void FillMotifPositionMap2();
- virtual void Print(const char* /*option*/ = "") const;
+ virtual void Print(const char* option = "ALL") const;
void PrintGlobalIndices(const char* fileName) const;
void UpdateGlobalIndices(const char* fileName);
const TVector2& padDimensions) const;
AliMpMotifType* FindMotifType(const TString& motifTypeID) const;
AliMpMotifPosition* FindMotifPosition(Int_t motifPositionID) const;
- // AliMpMotifPosition* FindMotifPosition(const 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:
-#ifdef WITH_ROOT
- static const Int_t fgkSeparator; // the separator used for conversion
- // of TString to Int_t
-
- // methods
- Int_t GetIndex(const TString& s) const;
- Int_t GetIndex(const AliMpIntPair& pair) const;
- TString GetString(Int_t index) const;
- AliMpIntPair GetPair(Int_t index) const;
-#endif
-
// methods
void PrintMotif(const AliMpVMotif* motif) const;
void PrintMotifType(const AliMpMotifType* motifType) const;
void PrintMotifPositions() const;
void PrintMotifPositions2() const;
-#ifdef WITH_STL
-#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
-#endif
+ 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
- // data members
- mutable MotifMap fMotifs; // motifs map
- mutable MotifTypeMap fMotifTypes; // motifs types map
- mutable MotifPositionMap fMotifPositions; // motifs positions map
- mutable MotifPositionMap2 fMotifPositions2;// motifs positions map
+ MotifPositionMap fMotifPositions; ///< motifs positions map
#endif
+ MotifPositionMap2 fMotifPositions2;///< motifs positions map
ClassDef(AliMpMotifMap,1) // motif map
};