1 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
2 * See cxx source for full Copyright notice */
5 // $MpId: AliMpDDLStore.h,v 1.6 2006/05/24 13:58:16 ivana Exp $
7 /// \ingroup management
8 /// \class AliMpDDLStore
9 /// \brief The top container class for DDLs, det elements and bus patched
11 /// It provides acces to DDL, det element and bus patches objects
12 /// via various characteristics.
14 /// \author Ivana Hrivnacova, IPN Orsay;
15 /// Christian Finck, SUBATECH Nantes
17 #ifndef ALI_MP_DDL_STORE_H
18 #define ALI_MP_DDL_STORE_H
20 #include "AliMpExMap.h"
21 #include "AliMpIntPair.h"
22 #include "AliMpGlobalCrate.h"
23 #include "AliMpRegionalTrigger.h"
25 #include <TObjArray.h>
30 class AliMpDetElement;
32 class AliMpLocalBoard;
33 class AliMpTriggerCrate;
37 class AliMpDDLStore : public TObject {
40 AliMpDDLStore(TRootIOCtor* /*ioCtor*/);
41 virtual ~AliMpDDLStore();
43 // static access method
44 static AliMpDDLStore* Instance(Bool_t warn = true);
45 static AliMpDDLStore* ReadData(Bool_t warn = true);
48 AliMpDDL* GetDDL(Int_t ddlId, Bool_t warn = true) const;
49 AliMpDetElement* GetDetElement(Int_t detElemId, Bool_t warn = true) const;
50 AliMpBusPatch* GetBusPatch(Int_t busPatchId, Bool_t warn = true) const;
51 AliMpLocalBoard* GetLocalBoard(Int_t localBoardId, Bool_t warn = true) const;
52 AliMpTriggerCrate* GetTriggerCrate(TString crateName, Bool_t warn = true) const;
53 AliMpTriggerCrate* GetTriggerCrate(Int_t ddlId, Int_t index, Bool_t warn = true) const;
55 /// Return regional trigger object
56 const AliMpRegionalTrigger* GetRegionalTrigger() const { return &fRegionalTrigger; }
57 /// Return global crate object
58 const AliMpGlobalCrate* GetGlobalCrate() const { return &fGlobalCrate; }
60 Int_t GetDEfromBus(Int_t busPatchId) const;
61 Int_t GetDEfromLocalBoard(Int_t localBoardId, Int_t chamberId) const;
62 Int_t GetNextDEfromLocalBoard(Int_t localBoardId, Int_t chamberId) const;
63 Int_t GetPreviousDEfromLocalBoard(Int_t localBoardId, Int_t chamberId) const;
65 Int_t GetDDLfromBus(Int_t busPatchId) const;
66 Int_t GetBusPatchId(Int_t detElemId, Int_t manuId) const;
68 /// Return trigger crates iterator
69 TExMapIter GetTriggerCrateItr() const { return fRegionalTrigger.GetTriggerCrateItr(); }
71 /// Return trigger local board iterator
72 TExMapIter GetLocalBoardItr() const { return fRegionalTrigger.GetLocalBoardItr(); }
74 /// Get an iterator to loop over bus patches
75 TExMapIter GetBusPatchesIterator() const { return fBusPatches.GetIterator(); }
77 /// Get detection elt and Manu number from serial number
78 AliMpIntPair GetDetElemIdManu(Int_t manuSerial) const;
80 /// print info of all manus
81 void PrintAllManu() const;
84 void SetRegionalTrigger(const AliMpRegionalTrigger& regionalTrigger);
90 AliMpDDLStore(const AliMpDDLStore& rhs);
92 AliMpDDLStore& operator=(const AliMpDDLStore& rhs);
95 Int_t GetManuListIndex(Int_t detElemId) const;
96 Int_t GetBusPatchIndex(Int_t detElemId, Int_t manuId) const;
99 Bool_t SetTriggerDDLs();
101 Bool_t ReadBusPatchSpecial();
102 Bool_t SetPatchModules();
103 Bool_t SetBusPatchLength();
104 Int_t GetLocalBoardId(TString name) const;
106 // static data members
107 static AliMpDDLStore* fgInstance; ///< Singleton instance
108 static const Int_t fgkNofDDLs; ///< Total number of DDLs
109 static const Int_t fgkNofTriggerDDLs; ///< Total number of trigger DDLs
110 static const TString fgkRevertKeyword; ///< A keyword for ReadBusPatchSpecial()
111 static const TString fgkExplicitKeyword; ///< A keyword for ReadBusPatchSpecial()
114 TObjArray fDDLs; ///< Array of DDL objects
115 AliMpExMap fBusPatches; ///< The map of bus patches per their IDs
116 TArrayI fManuList12[16]; ///< Arrays of 1st manu in bus
117 TArrayI fManuBridge2[16]; ///< Arrays of manu number before the bridge in buspatch
118 AliMpGlobalCrate fGlobalCrate; ///< Global Crate Object
119 AliMpRegionalTrigger fRegionalTrigger; ///< Regional trigger
121 ClassDef(AliMpDDLStore,4) // The manager class for definition of detection element types
124 #endif //ALI_MP_DDL_STORE_H