1 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
2 * See cxx source for full Copyright notice */
5 // $MpId: AliMpMotifMap.h,v 1.14 2006/05/24 13:58:18 ivana Exp $
8 /// \class AliMpMotifMap
9 /// \brief Motif map containers
11 /// The class defines:
12 /// - map of motif objects to their string IDs
13 /// - map of motif type objects to their string IDs
14 /// - map of motif position objects to their string IDs
15 /// - map of motif position objects to their global indices
17 /// \author David Guez, Ivana Hrivnacova; IPN Orsay
19 #ifndef ALI_MP_MOTIF_MAP_H
20 #define ALI_MP_MOTIF_MAP_H
24 #include "AliMpContainers.h"
27 #include "AliMpIntPair.h"
31 #include "AliMpExMap.h"
41 class AliMpMotifPosition;
48 class AliMpMotifMap : public TObject
53 typedef std::map<TString, AliMpVMotif*> MotifMap;
54 /// Motif map iterator type
55 typedef MotifMap::const_iterator MotifMapIterator;
56 /// Motif type map type
57 typedef std::map<TString, AliMpMotifType*> MotifTypeMap;
58 /// Motif type map iterator type
59 typedef MotifTypeMap::const_iterator MotifTypeMapIterator;
60 /// Motif position map to int type
61 typedef std::map<Int_t, AliMpMotifPosition*> MotiPositionMap;
62 /// Motif position map to int iterator type
63 typedef MotiPositionMap::const_iterator MotifPositionMapIterator;
64 /// Motif position map to int pair type
65 typedef std::map<AliMpIntPair, AliMpMotifPosition*> MotifPositionMap2;
66 /// Motif position map to int pair iterator type
67 typedef MotifPositionMap2::const_iterator MotifPositionMap2Iterator;
71 typedef AliMpExMap MotifMap;
72 /// Motif type map type
73 typedef AliMpExMap MotifTypeMap;
74 /// Motif position map to int type
75 typedef AliMpExMap MotifPositionMap;
76 /// Motif position map to int pair iterator type
77 typedef AliMpExMap MotifPositionMap2;
82 AliMpMotifMap(TRootIOCtor* ioCtor);
83 virtual ~AliMpMotifMap();
86 Bool_t AddMotif(AliMpVMotif* motif, Bool_t warn = true);
87 Bool_t AddMotifType(AliMpMotifType* motifType, Bool_t warn = true);
88 Bool_t AddMotifPosition(AliMpMotifPosition* motifType, Bool_t warn = true);
89 void FillMotifPositionMap2();
90 virtual void Print(const char* option = "ALL") const;
91 void PrintGlobalIndices(const char* fileName) const;
92 void UpdateGlobalIndices(const char* fileName);
95 AliMpVMotif* FindMotif(const TString& motifID) const;
96 AliMpVMotif* FindMotif(const TString& motifID, const TString& motifTypeID,
97 const TVector2& padDimensions) const;
98 AliMpMotifType* FindMotifType(const TString& motifTypeID) const;
99 AliMpMotifPosition* FindMotifPosition(Int_t motifPositionID) const;
101 /// Find all motifPositionsIDs (=electronicCardNumbers) handled by this map
102 void GetAllMotifPositionsIDs(TArrayI& enc) const;
103 UInt_t GetNofMotifPositions() const;
104 AliMpMotifPosition* GetMotifPosition(UInt_t index) const;
106 /// Calculate total number of pads defined in the map
107 Int_t CalculateNofPads() const;
111 void PrintMotif(const AliMpVMotif* motif) const;
112 void PrintMotifType(const AliMpMotifType* motifType) const;
113 void PrintMotifPosition(const AliMpMotifPosition* motifPosition) const;
114 void PrintMotifPosition2(const AliMpMotifPosition* motifPosition) const;
115 void PrintMotifs() const;
116 void PrintMotifTypes() const;
117 void PrintMotifPositions() const;
118 void PrintMotifPositions2() const;
121 MotifMap fMotifs; ///< motifs map
122 MotifTypeMap fMotifTypes; ///< motifs types map
124 std::map<Int_t, AliMpMotifPosition*> fMotifPositions; ///< motif positions map by Id
127 MotifPositionMap fMotifPositions; ///< motifs positions map
129 MotifPositionMap2 fMotifPositions2;///< motifs positions map
131 ClassDef(AliMpMotifMap,1) // motif map
134 #endif //ALI_MP_MOTIF_MAP_H