]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MUON/mapping/AliMpSegmentation.h
bugfix: stopwatches for HLT benchmarks had been resumed at wrong point and measuremen...
[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.                                        \n
16 /// Mapping segmentations for all detection elements
17 /// are created at the first call to AliMpSegmentation::Instance().
18 /// The class is a singleton, it has all constructors
19 /// private, except for the special constructor for Root I/O.
20 ///
21 /// \author Ivana Hrivnacova, IPN Orsay; Laurent Aphecetche, SUBATECH
22
23 #ifndef ROOT_TObject
24 #  include <TObject.h>
25 #endif
26
27 #ifndef ALI_MP_STRING_OBJ_MAP_H
28 #  include "AliMpStringObjMap.h"
29 #endif
30
31 #ifndef ALI_MP_EX_MAP_H
32 #  include "AliMpExMap.h"
33 #endif
34
35 #ifndef ALI_MP_CATHOD_TYPE_H
36 #  include "AliMpCathodType.h"
37 #endif
38
39 class AliMpDEStore;
40 class AliMpVSegmentation;
41 class AliMpSegmentation;
42 class AliMpSlatMotifMap;
43 class AliMpDataStreams;
44 class TRootIOCtor;
45
46 class AliMpSegmentation : public  TObject {
47
48   public:
49     AliMpSegmentation(TRootIOCtor* /*ioCtor*/);
50     virtual ~AliMpSegmentation();
51     
52     // static methods
53     static AliMpSegmentation* Instance(Bool_t warn = true);
54     static AliMpSegmentation* ReadData(const AliMpDataStreams& dataStreams, 
55                                        Bool_t warn = true);
56
57     // methods
58     const AliMpVSegmentation* GetMpSegmentation(
59                                  Int_t detElemId, AliMp::CathodType cath, 
60                                  Bool_t warn = true) const;
61
62     const AliMpVSegmentation* GetMpSegmentationByElectronics(
63                                  Int_t detElemId, Int_t elCardID, 
64                                  Bool_t warn = true) const;
65     
66   private:
67     AliMpSegmentation(const AliMpDataStreams& dataStreams);
68     /// Not implemented
69     AliMpSegmentation(const AliMpSegmentation& rhs);
70     /// Not implemented
71     AliMpSegmentation& operator=(const AliMpSegmentation& rhs);
72
73     AliMpVSegmentation* CreateMpSegmentation(
74                               Int_t detElemId, AliMp::CathodType cath);
75
76     AliMpExMap* FillElCardsMap(Int_t detElemId);
77
78     // static data members
79     static AliMpSegmentation* fgInstance; ///< Singleton instance
80
81     // data members
82     const AliMpDataStreams&  fDataStreams;  //!< Data streams
83     AliMpDEStore*      fDetElements;    ///< Detection element store
84     AliMpStringObjMap  fMpSegmentations;///< Map of mapping segmentations to DE seg names
85     AliMpExMap         fElCardsMap;     ///< Map of el. cards IDs to segmentations
86     AliMpSlatMotifMap* fSlatMotifMap;   ///< Map of motif, motifTypes to avoid duplications and allow proper deletion
87     
88   ClassDef(AliMpSegmentation,3)  // The factory for building mapping segmentations
89 };
90
91 #endif //ALI_MP_SEGMENTATION_H
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106