e4050a8642664becd8410161ffd38de27251ecba
[u/mrichter/AliRoot.git] / MUON / mapping / AliMpMotifMap.h
1 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
2  * See cxx source for full Copyright notice                               */
3
4 // $Id$
5 // $MpId: AliMpMotifMap.h,v 1.11 2006/03/14 09:04:53 ivana Exp $
6
7 /// \ingroup motif
8 /// \class AliMpMotifMap
9 /// \brief Motif map containers
10
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
16 ///
17 /// Authors: David Guez, Ivana Hrivnacova; IPN Orsay
18
19 #ifndef ALI_MP_MOTIF_MAP_H
20 #define ALI_MP_MOTIF_MAP_H
21
22 #include "AliMpContainers.h"
23
24 #ifdef WITH_STL
25 #include <map>
26 #include "AliMpIntPair.h"
27 #endif
28
29 #ifdef WITH_ROOT
30 #include "AliMpExMap.h"
31 #endif
32
33 #include <TObject.h>
34
35 class TArrayI;
36 class TString;
37 class TVector2;
38
39 class AliMpVMotif;
40 class AliMpMotifType;
41 class AliMpMotifPosition;
42 class AliMpMotifMap;
43
44 class AliMpMotifMap : public TObject
45 {
46   public:
47 #ifdef WITH_STL
48     typedef std::map<TString, AliMpVMotif*> MotifMap;
49     typedef MotifMap::const_iterator        MotifMapIterator;
50     typedef std::map<TString, AliMpMotifType*> MotifTypeMap;
51     typedef MotifTypeMap::const_iterator       MotifTypeMapIterator;
52     typedef std::map<Int_t, AliMpMotifPosition*>  MotiPositionMap;
53     typedef MotiPositionMap::const_iterator       MotifPositionMapIterator;
54     typedef std::map<AliMpIntPair, AliMpMotifPosition*> MotifPositionMap2;
55     typedef MotifPositionMap2::const_iterator           MotifPositionMap2Iterator;
56 #endif    
57 #ifdef WITH_ROOT
58     typedef AliMpExMap MotifMap;
59     typedef AliMpExMap MotifTypeMap;
60     typedef AliMpExMap MotifPositionMap;
61     typedef AliMpExMap MotifPositionMap2;
62 #endif    
63
64   public:
65     AliMpMotifMap(Bool_t /*standardConstructor*/);
66     AliMpMotifMap();
67     virtual ~AliMpMotifMap();
68     
69     // methods
70     Bool_t  AddMotif(AliMpVMotif* motif, Bool_t warn = true);
71     Bool_t  AddMotifType(AliMpMotifType* motifType, Bool_t warn = true);
72     Bool_t  AddMotifPosition(AliMpMotifPosition* motifType, Bool_t warn = true);
73     void   FillMotifPositionMap2();
74     virtual void Print(const char* option = "ALL") const;
75     void   PrintGlobalIndices(const char* fileName) const;
76     void   UpdateGlobalIndices(const char* fileName);
77    
78     // find methods
79     AliMpVMotif*  FindMotif(const TString& motifID) const;
80     AliMpVMotif*  FindMotif(const TString& motifID, const TString& motifTypeID, 
81                             const TVector2& padDimensions) const;
82     AliMpMotifType*      FindMotifType(const TString& motifTypeID) const;
83     AliMpMotifPosition*  FindMotifPosition(Int_t motifPositionID) const;
84
85     /// Find all motifPositionsIDs (=electronicCardNumbers) handled by this map
86     void  GetAllMotifPositionsIDs(TArrayI& enc) const;
87
88     /// Calculate total number of pads defined in the map
89     Int_t CalculateNofPads() const;
90      
91   private:
92     // methods
93     void  PrintMotif(const AliMpVMotif* motif) const;
94     void  PrintMotifType(const AliMpMotifType* motifType) const;
95     void  PrintMotifPosition(const AliMpMotifPosition* motifPosition) const;
96     void  PrintMotifPosition2(const AliMpMotifPosition* motifPosition) const;
97     void  PrintMotifs() const;
98     void  PrintMotifTypes() const;
99     void  PrintMotifPositions() const;
100     void  PrintMotifPositions2() const;
101  
102     // data members
103     MotifMap           fMotifs;         //  motifs map
104     MotifTypeMap       fMotifTypes;     //  motifs types map
105 #ifdef WITH_STL
106     std::map<Int_t, AliMpMotifPosition*> fMotifPositions; // motif positions map by Id
107 #endif
108 #ifdef WITH_ROOT
109     MotifPositionMap   fMotifPositions; //  motifs positions map
110 #endif
111     MotifPositionMap2  fMotifPositions2;//  motifs positions map
112
113   ClassDef(AliMpMotifMap,1)  // motif map
114 };
115
116 #endif //ALI_MP_MOTIF_MAP_H