Line data Source code
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 28 : 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 : // static methods
85 : static const TString& GetRevertKeyword();
86 : static const TString& GetExplicitKeyword();
87 :
88 : // methods
89 : Int_t GetManuListIndex(Int_t detElemId) const;
90 : Int_t GetBusPatchIndex(Int_t detElemId, Int_t manuId) const;
91 : Bool_t ReadDDLs(const AliMpDataStreams& dataStreams);
92 : Bool_t ReadTrigger(const AliMpDataStreams& dataStreams);
93 : Bool_t SetTriggerDDLs();
94 : Bool_t SetManus();
95 : Bool_t ReadBusPatchSpecial(const AliMpDataStreams& dataStreams);
96 : Bool_t SetPatchModules();
97 : Bool_t ReadBusPatchInfo(const AliMpDataStreams& dataStreams);
98 : Int_t GetLocalBoardId(TString name) const;
99 :
100 : // static data members
101 : static AliMpDDLStore* fgInstance; ///< Singleton instance
102 : static const Int_t fgkNofDDLs; ///< Total number of DDLs
103 : static const Int_t fgkNofTriggerDDLs; ///< Total number of trigger DDLs
104 :
105 : // data members
106 : TObjArray fDDLs; ///< Array of DDL objects
107 : AliMpExMap fBusPatches; ///< The map of bus patches per their IDs
108 : TArrayI fManuList12[16]; ///< Arrays of 1st manu in bus
109 : TArrayI fManuBridge2[16]; ///< Arrays of manu number before the bridge in buspatch
110 : AliMpRegionalTrigger fRegionalTrigger; ///< Regional trigger
111 :
112 2404 : ClassDef(AliMpDDLStore,5) // The manager class for definition of detection element types
113 : };
114 :
115 : #endif //ALI_MP_DDL_STORE_H
116 :
117 :
118 :
119 :
120 :
121 :
122 :
123 :
124 :
125 :
126 :
127 :
128 :
129 :
130 :
|