Reordering includes, forward declarations from most specific to more
[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.12 2006/03/17 11:37:50 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 <TObject.h>
23
24 #include "AliMpContainers.h"
25
26 #ifdef WITH_STL
27 #include "AliMpIntPair.h"
28 #endif
29
30 #ifdef WITH_ROOT
31 #include "AliMpExMap.h"
32 #endif
33
34 #ifdef WITH_STL
35 #include <map>
36 #endif
37
38 class AliMpVMotif;
39 class AliMpMotifType;
40 class AliMpMotifPosition;
41 class AliMpMotifMap;
42
43 class TArrayI;
44 class TString;
45 class TVector2;
46
47 class AliMpMotifMap : public TObject
48 {
49   public:
50 #ifdef WITH_STL
51     typedef std::map<TString, AliMpVMotif*> MotifMap;
52     typedef MotifMap::const_iterator        MotifMapIterator;
53     typedef std::map<TString, AliMpMotifType*> MotifTypeMap;
54     typedef MotifTypeMap::const_iterator       MotifTypeMapIterator;
55     typedef std::map<Int_t, AliMpMotifPosition*>  MotiPositionMap;
56     typedef MotiPositionMap::const_iterator       MotifPositionMapIterator;
57     typedef std::map<AliMpIntPair, AliMpMotifPosition*> MotifPositionMap2;
58     typedef MotifPositionMap2::const_iterator           MotifPositionMap2Iterator;
59 #endif    
60 #ifdef WITH_ROOT
61     typedef AliMpExMap MotifMap;
62     typedef AliMpExMap MotifTypeMap;
63     typedef AliMpExMap MotifPositionMap;
64     typedef AliMpExMap MotifPositionMap2;
65 #endif    
66
67   public:
68     AliMpMotifMap(Bool_t /*standardConstructor*/);
69     AliMpMotifMap();
70     virtual ~AliMpMotifMap();
71     
72     // methods
73     Bool_t  AddMotif(AliMpVMotif* motif, Bool_t warn = true);
74     Bool_t  AddMotifType(AliMpMotifType* motifType, Bool_t warn = true);
75     Bool_t  AddMotifPosition(AliMpMotifPosition* motifType, Bool_t warn = true);
76     void   FillMotifPositionMap2();
77     virtual void Print(const char* option = "ALL") const;
78     void   PrintGlobalIndices(const char* fileName) const;
79     void   UpdateGlobalIndices(const char* fileName);
80    
81     // find methods
82     AliMpVMotif*  FindMotif(const TString& motifID) const;
83     AliMpVMotif*  FindMotif(const TString& motifID, const TString& motifTypeID, 
84                             const TVector2& padDimensions) const;
85     AliMpMotifType*      FindMotifType(const TString& motifTypeID) const;
86     AliMpMotifPosition*  FindMotifPosition(Int_t motifPositionID) const;
87
88     /// Find all motifPositionsIDs (=electronicCardNumbers) handled by this map
89     void  GetAllMotifPositionsIDs(TArrayI& enc) const;
90
91     /// Calculate total number of pads defined in the map
92     Int_t CalculateNofPads() const;
93      
94   private:
95     // methods
96     void  PrintMotif(const AliMpVMotif* motif) const;
97     void  PrintMotifType(const AliMpMotifType* motifType) const;
98     void  PrintMotifPosition(const AliMpMotifPosition* motifPosition) const;
99     void  PrintMotifPosition2(const AliMpMotifPosition* motifPosition) const;
100     void  PrintMotifs() const;
101     void  PrintMotifTypes() const;
102     void  PrintMotifPositions() const;
103     void  PrintMotifPositions2() const;
104  
105     // data members
106     MotifMap           fMotifs;         //  motifs map
107     MotifTypeMap       fMotifTypes;     //  motifs types map
108 #ifdef WITH_STL
109     std::map<Int_t, AliMpMotifPosition*> fMotifPositions; // motif positions map by Id
110 #endif
111 #ifdef WITH_ROOT
112     MotifPositionMap   fMotifPositions; //  motifs positions map
113 #endif
114     MotifPositionMap2  fMotifPositions2;//  motifs positions map
115
116   ClassDef(AliMpMotifMap,1)  // motif map
117 };
118
119 #endif //ALI_MP_MOTIF_MAP_H