]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MUON/mapping/AliMpDDLStore.h
Replacement of AliMpIntPair object with algoritmic
[u/mrichter/AliRoot.git] / MUON / mapping / AliMpDDLStore.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: AliMpDDLStore.h,v 1.6 2006/05/24 13:58:16 ivana Exp $ 
6
7 /// \ingroup management
8 /// \class AliMpDDLStore
9 /// \brief The top container class for DDLs, det elements and bus patched
10 ///
11 /// It provides acces to DDL, det element and bus patches objects
12 /// via various characteristics.
13 ///
14 /// \author Ivana Hrivnacova, IPN Orsay;
15 ///         Christian Finck, SUBATECH Nantes
16
17 #ifndef ALI_MP_DDL_STORE_H
18 #define ALI_MP_DDL_STORE_H
19
20 #include "AliMpExMap.h"
21 #include "AliMpRegionalTrigger.h"
22 #include <TObject.h>
23 #include <TObjArray.h>
24 #include <TArrayI.h>
25
26
27 class AliMpDDL;
28 class AliMpDetElement;
29 class AliMpBusPatch;
30 class AliMpLocalBoard;
31 class AliMpTriggerCrate;
32 class AliMpDataStreams;
33 class TArrayI;
34
35 class AliMpDDLStore : public  TObject {
36
37   public:
38     AliMpDDLStore(TRootIOCtor* ioCtor);
39     virtual ~AliMpDDLStore();
40     
41     // static access method
42     static AliMpDDLStore* Instance(Bool_t warn = true); 
43     static AliMpDDLStore* ReadData(const AliMpDataStreams& dataStreams,
44                                    Bool_t warn = true);
45     
46     // methods
47     AliMpDDL*          GetDDL(Int_t ddlId, Bool_t warn = true) const;
48     AliMpDetElement*   GetDetElement(Int_t detElemId, Bool_t warn = true) const;
49     AliMpBusPatch*     GetBusPatch(Int_t busPatchId, Bool_t warn = true) const;
50     AliMpLocalBoard*   GetLocalBoard(Int_t localBoardId, Bool_t warn = true) const;
51     AliMpTriggerCrate* GetTriggerCrate(TString crateName, Bool_t warn = true) const;
52     AliMpTriggerCrate* GetTriggerCrate(Int_t ddlId, Int_t index, Bool_t warn = true) const;
53
54     /// Return regional trigger object
55     const AliMpRegionalTrigger*  GetRegionalTrigger() const { return &fRegionalTrigger; }
56     
57     Int_t  GetDEfromBus(Int_t busPatchId) const;
58     Int_t  GetDEfromLocalBoard(Int_t localBoardId, Int_t chamberId) const;
59     Int_t  GetNextDEfromLocalBoard(Int_t localBoardId, Int_t chamberId) const;
60     Int_t  GetPreviousDEfromLocalBoard(Int_t localBoardId, Int_t chamberId) const;
61     
62     Int_t  GetDDLfromBus(Int_t busPatchId) const;
63     Int_t  GetBusPatchId(Int_t detElemId, Int_t manuId) const;
64
65     Long_t GetLinkPortId(Int_t busPatchId) const;
66
67     /// Print info of all manus
68     void PrintAllManu() const;
69     
70     // Set methods
71     void SetRegionalTrigger(const AliMpRegionalTrigger& regionalTrigger);
72
73     TIterator* CreateBusPatchIterator() const; 
74     
75   private:
76     AliMpDDLStore(const AliMpDataStreams& dataStreams);
77     /// Not implemented
78     AliMpDDLStore();
79     /// Not implemented
80     AliMpDDLStore(const AliMpDDLStore& rhs);
81     /// Not implemented
82     AliMpDDLStore& operator=(const AliMpDDLStore& rhs);
83
84     // methods
85     Int_t  GetManuListIndex(Int_t detElemId) const;
86     Int_t  GetBusPatchIndex(Int_t detElemId, Int_t manuId) const;
87     Bool_t ReadDDLs();
88     Bool_t ReadTrigger();
89     Bool_t SetTriggerDDLs();
90     Bool_t SetManus();
91     Bool_t ReadBusPatchSpecial();
92     Bool_t SetPatchModules();
93     Bool_t ReadBusPatchInfo();
94     Int_t  GetLocalBoardId(TString name) const;
95
96     // static data members      
97     static AliMpDDLStore* fgInstance; ///< Singleton instance
98     static const Int_t    fgkNofDDLs; ///< Total number of DDLs
99     static const Int_t    fgkNofTriggerDDLs; ///< Total number of trigger DDLs
100     static const TString  fgkRevertKeyword; ///< A keyword for ReadBusPatchSpecial()
101     static const TString  fgkExplicitKeyword; ///< A keyword for ReadBusPatchSpecial()
102
103     // data members     
104     const AliMpDataStreams&  fkDataStreams;  //!< Data streams
105     TObjArray     fDDLs;           ///< Array of DDL objects
106     AliMpExMap    fBusPatches;     ///< The map of bus patches per their IDs
107     TArrayI       fManuList12[16]; ///< Arrays of 1st manu in bus
108     TArrayI       fManuBridge2[16]; ///< Arrays of manu number before the bridge in buspatch
109     AliMpRegionalTrigger fRegionalTrigger; ///< Regional trigger
110         
111   ClassDef(AliMpDDLStore,5)  // The manager class for definition of detection element types
112 };
113
114 #endif //ALI_MP_DDL_STORE_H
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129