]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MUON/mapping/AliMpSegmentation.h
Reverting commit from rev. 37415;
[u/mrichter/AliRoot.git] / MUON / mapping / AliMpSegmentation.h
1 #ifndef ALI_MP_SEGMENTATION_H
2 #define ALI_MP_SEGMENTATION_H
3
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6
7 // $Id$ 
8 // $MpId: AliMpSegmentation.h,v 1.7 2006/05/24 13:58:16 ivana Exp $ 
9
10 /// \ingroup management
11 /// \class AliMpSegmentation
12 /// \brief Singleton container class for mapping segmentations
13 ///
14 /// It provides access to mapping segmentations based on the
15 /// AliMpVSegmentation interface and to segmentations underlying
16 /// detectors (sector, slat, trigger).                                  \n
17 /// Mapping segmentations for all detection elements
18 /// are created at the first call to AliMpSegmentation::Instance().
19 /// The class is a singleton, it has all constructors
20 /// private, except for the special constructor for Root I/O.
21 ///
22 /// \author Ivana Hrivnacova, IPN Orsay; Laurent Aphecetche, SUBATECH
23
24 #ifndef ROOT_TObject
25 #  include <TObject.h>
26 #endif
27
28 #ifndef ALI_MP_STRING_OBJ_MAP_H
29 #  include "AliMpStringObjMap.h"
30 #endif
31
32 #ifndef ALI_MP_EX_MAP_H
33 #  include "AliMpExMap.h"
34 #endif
35
36 #ifndef ALI_MP_CATHOD_TYPE_H
37 #  include "AliMpCathodType.h"
38 #endif
39
40 class AliMpDEStore;
41 class AliMpSegmentation;
42 class AliMpVSegmentation;
43 class AliMpSlatMotifMap;
44 class AliMpDataStreams;
45 class AliMpSector;
46 class AliMpSlat;
47 class AliMpTrigger;
48 class TRootIOCtor;
49
50 class AliMpSegmentation : public  TObject {
51
52   public:
53     AliMpSegmentation(TRootIOCtor* ioCtor);
54     virtual ~AliMpSegmentation();
55     
56     // static methods
57     static AliMpSegmentation* Instance(Bool_t warn = true);
58     static AliMpSegmentation* ReadData(const AliMpDataStreams& dataStreams, 
59                                        Bool_t warn = true);
60
61     // methods
62     
63     //
64     // Access to segmentations
65     //
66     
67     const AliMpVSegmentation* GetMpSegmentation(
68                                  Int_t detElemId, AliMp::CathodType cath, 
69                                  Bool_t warn = true) const;
70
71     const AliMpVSegmentation* GetMpSegmentationByElectronics(
72                                  Int_t detElemId, Int_t elCardID, 
73                                  Bool_t warn = true) const;
74     //
75     // Access to sectors, slats, triggers
76     //
77
78     const AliMpSector*  GetSector(const AliMpVSegmentation* kSegmentation, 
79                                   Bool_t warn = true) const;
80     const AliMpSector*  GetSector(Int_t detElemId, AliMp::CathodType cath, 
81                                   Bool_t warn = true) const;
82     const AliMpSector*  GetSectorByElectronics(Int_t detElemId, Int_t elCardID, 
83                                   Bool_t warn = true) const;
84   
85     const AliMpSlat*    GetSlat(const AliMpVSegmentation* kSegmentation, 
86                                   Bool_t warn = true) const;
87     const AliMpSlat*    GetSlat(Int_t detElemId, AliMp::CathodType cath, 
88                                   Bool_t warn = true) const;
89     const AliMpSlat*    GetSlatByElectronics(Int_t detElemId, Int_t elCardID, 
90                                   Bool_t warn = true) const;
91   
92     const AliMpTrigger* GetTrigger(const AliMpVSegmentation* kSegmentation, 
93                                   Bool_t warn = true) const;
94     const AliMpTrigger* GetTrigger(Int_t detElemId, AliMp::CathodType cath, 
95                                   Bool_t warn = true) const;
96     const AliMpTrigger* GetTriggerByElectronics(Int_t detElemId, Int_t elCardID, 
97                                   Bool_t warn = true) const;
98   
99   private:
100     AliMpSegmentation(const AliMpDataStreams& dataStreams);
101     /// Not implemented
102     AliMpSegmentation(const AliMpSegmentation& rhs);
103     /// Not implemented
104     AliMpSegmentation& operator=(const AliMpSegmentation& rhs);
105
106     AliMpVSegmentation* CreateMpSegmentation(
107                               Int_t detElemId, AliMp::CathodType cath);
108                               
109
110     AliMpExMap* FillElCardsMap(Int_t detElemId);
111
112     // static data members
113     static AliMpSegmentation* fgInstance; ///< Singleton instance
114
115     // data members
116     const AliMpDataStreams&  fkDataStreams;  //!< Data streams
117     AliMpDEStore*      fDetElements;    ///< Detection element store
118     AliMpStringObjMap  fMpSegmentations;///< Map of mapping segmentations to DE seg names
119     AliMpExMap         fElCardsMap;     ///< Map of el. cards IDs to segmentations
120     AliMpSlatMotifMap* fSlatMotifMap;   ///< Map of motif, motifTypes to avoid duplications and allow proper deletion
121     
122   ClassDef(AliMpSegmentation,3)  // The factory for building mapping segmentations
123 };
124
125 #endif //ALI_MP_SEGMENTATION_H
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140