1 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
2 * See cxx source for full Copyright notice */
5 // $MpId: AliMpManuStore.h,v 1.6 2006/05/24 13:58:16 ivana Exp $
7 /// \ingroup management
8 /// \class AliMpManuStore
9 /// \brief The container class for manu serial numbers
11 /// \author Ivana Hrivnacova, IPN Orsay; Christian Finck, SUBATECH Nantes
13 #ifndef ALI_MP_MANU_STORE_H
14 #define ALI_MP_MANU_STORE_H
18 #include "AliMpPlaneType.h"
19 #include "AliMpStationType.h"
20 #include "AliMpEncodePair.h"
25 class AliMpDetElement;
26 class AliMpDataStreams;
29 class AliMpManuStore : public TObject {
32 AliMpManuStore(TRootIOCtor* ioCtor);
33 virtual ~AliMpManuStore();
35 // static access method
36 static AliMpManuStore* Instance(Bool_t warn = true);
37 static AliMpManuStore* ReadData(const AliMpDataStreams& dataStreams,
40 static void SetWarnIfDoublon(Bool_t warn);
44 Bool_t AddManu(Int_t detElemId, Int_t manuId, Int_t serialNb);
46 Int_t NofManus() const;
47 Int_t NofManus(Int_t detElemId) const;
49 Int_t GetManuSerial(Int_t detElemId, Int_t manuId) const;
50 MpPair_t GetDetElemIdManu(Int_t manuSerial) const;
53 AliMpManuStore(const AliMpDataStreams& dataStreams);
57 AliMpManuStore(const AliMpManuStore& rhs);
59 AliMpManuStore& operator=(const AliMpManuStore& rhs);
62 Bool_t ReadData(const AliMpDetElement* detElement, Int_t& nofManus);
63 Bool_t ReadManuSerial();
65 // not yet in use methods
66 void ReplaceManu(Int_t detElemId, Int_t manuId, Int_t serialNb);
67 Bool_t WriteData(const TString& outDir = "data_run_out");
69 // static data members
70 static AliMpManuStore* fgInstance; ///< Singleton instance
71 static Bool_t fgWarnIfDoublon; ///< Option to warn about doublons
74 const AliMpDataStreams& fkDataStreams; //!< Data streams
75 mutable TExMap fManuToSerialNbs; ///< Map from manuId to serial #
76 mutable TExMap fSerialNbToManus; ///< Map manu serial # to manuId
77 mutable TExMap fNofManusInDE; ///< Number of manus with serial nbs in DE
78 Int_t fNofManus; ///< Total number of manus
80 ClassDef(AliMpManuStore,1) // The manager class for definition of detection element types
85 inline void AliMpManuStore::SetWarnIfDoublon(Bool_t warn)
87 /// Set option to warn if the same serial number is present for more manus
89 fgWarnIfDoublon = warn;
93 #endif //ALI_MP_MANU_STORE_H