ROOT logo
/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

// $Id$
// $MpId: AliMpDDLStore.h,v 1.6 2006/05/24 13:58:16 ivana Exp $ 

/// \ingroup management
/// \class AliMpDDLStore
/// \brief The top container class for DDLs, det elements and bus patched
///
/// It provides acces to DDL, det element and bus patches objects
/// via various characteristics.
///
/// \author Ivana Hrivnacova, IPN Orsay;
///         Christian Finck, SUBATECH Nantes

#ifndef ALI_MP_DDL_STORE_H
#define ALI_MP_DDL_STORE_H

#include "AliMpExMap.h"
#include "AliMpRegionalTrigger.h"
#include <TObject.h>
#include <TObjArray.h>
#include <TArrayI.h>


class AliMpDDL;
class AliMpDetElement;
class AliMpBusPatch;
class AliMpLocalBoard;
class AliMpTriggerCrate;
class AliMpDataStreams;
class TArrayI;

class AliMpDDLStore : public  TObject {

  public:
    AliMpDDLStore(TRootIOCtor* ioCtor);
    virtual ~AliMpDDLStore();
    
    // static access method
    static AliMpDDLStore* Instance(Bool_t warn = true); 
    static AliMpDDLStore* ReadData(const AliMpDataStreams& dataStreams,
                                   Bool_t warn = true);
    
    // methods
    AliMpDDL*          GetDDL(Int_t ddlId, Bool_t warn = true) const;
    AliMpDetElement*   GetDetElement(Int_t detElemId, Bool_t warn = true) const;
    AliMpBusPatch*     GetBusPatch(Int_t busPatchId, Bool_t warn = true) const;
    AliMpLocalBoard*   GetLocalBoard(Int_t localBoardId, Bool_t warn = true) const;
    AliMpTriggerCrate* GetTriggerCrate(TString crateName, Bool_t warn = true) const;
    AliMpTriggerCrate* GetTriggerCrate(Int_t ddlId, Int_t index, Bool_t warn = true) const;

    /// Return regional trigger object
    const AliMpRegionalTrigger*  GetRegionalTrigger() const { return &fRegionalTrigger; }
    
    Int_t  GetDEfromBus(Int_t busPatchId) const;
    Int_t  GetDEfromLocalBoard(Int_t localBoardId, Int_t chamberId) const;
    Int_t  GetNextDEfromLocalBoard(Int_t localBoardId, Int_t chamberId) const;
    Int_t  GetPreviousDEfromLocalBoard(Int_t localBoardId, Int_t chamberId) const;
    
    Int_t  GetDDLfromBus(Int_t busPatchId) const;
    Int_t  GetBusPatchId(Int_t detElemId, Int_t manuId) const;

    Long_t GetLinkPortId(Int_t busPatchId) const;

    /// Print info of all manus
    void PrintAllManu() const;
    
    // Set methods
    void SetRegionalTrigger(const AliMpRegionalTrigger& regionalTrigger);

    TIterator* CreateBusPatchIterator() const; 
    
  private:
    AliMpDDLStore(const AliMpDataStreams& dataStreams);
    /// Not implemented
    AliMpDDLStore();
    /// Not implemented
    AliMpDDLStore(const AliMpDDLStore& rhs);
    /// Not implemented
    AliMpDDLStore& operator=(const AliMpDDLStore& rhs);

    // static methods
    static const TString&  GetRevertKeyword();
    static const TString&  GetExplicitKeyword();

    // methods
    Int_t  GetManuListIndex(Int_t detElemId) const;
    Int_t  GetBusPatchIndex(Int_t detElemId, Int_t manuId) const;
    Bool_t ReadDDLs(const AliMpDataStreams& dataStreams);
    Bool_t ReadTrigger(const AliMpDataStreams& dataStreams);
    Bool_t SetTriggerDDLs();
    Bool_t SetManus();
    Bool_t ReadBusPatchSpecial(const AliMpDataStreams& dataStreams);
    Bool_t SetPatchModules();
    Bool_t ReadBusPatchInfo(const AliMpDataStreams& dataStreams);
    Int_t  GetLocalBoardId(TString name) const;

    // static data members	
    static AliMpDDLStore* fgInstance; ///< Singleton instance
    static const Int_t    fgkNofDDLs; ///< Total number of DDLs
    static const Int_t    fgkNofTriggerDDLs; ///< Total number of trigger DDLs

    // data members	
    TObjArray     fDDLs;           ///< Array of DDL objects
    AliMpExMap    fBusPatches;     ///< The map of bus patches per their IDs
    TArrayI       fManuList12[16]; ///< Arrays of 1st manu in bus
    TArrayI       fManuBridge2[16]; ///< Arrays of manu number before the bridge in buspatch
    AliMpRegionalTrigger fRegionalTrigger; ///< Regional trigger
        
  ClassDef(AliMpDDLStore,5)  // The manager class for definition of detection element types
};

#endif //ALI_MP_DDL_STORE_H















 AliMpDDLStore.h:1
 AliMpDDLStore.h:2
 AliMpDDLStore.h:3
 AliMpDDLStore.h:4
 AliMpDDLStore.h:5
 AliMpDDLStore.h:6
 AliMpDDLStore.h:7
 AliMpDDLStore.h:8
 AliMpDDLStore.h:9
 AliMpDDLStore.h:10
 AliMpDDLStore.h:11
 AliMpDDLStore.h:12
 AliMpDDLStore.h:13
 AliMpDDLStore.h:14
 AliMpDDLStore.h:15
 AliMpDDLStore.h:16
 AliMpDDLStore.h:17
 AliMpDDLStore.h:18
 AliMpDDLStore.h:19
 AliMpDDLStore.h:20
 AliMpDDLStore.h:21
 AliMpDDLStore.h:22
 AliMpDDLStore.h:23
 AliMpDDLStore.h:24
 AliMpDDLStore.h:25
 AliMpDDLStore.h:26
 AliMpDDLStore.h:27
 AliMpDDLStore.h:28
 AliMpDDLStore.h:29
 AliMpDDLStore.h:30
 AliMpDDLStore.h:31
 AliMpDDLStore.h:32
 AliMpDDLStore.h:33
 AliMpDDLStore.h:34
 AliMpDDLStore.h:35
 AliMpDDLStore.h:36
 AliMpDDLStore.h:37
 AliMpDDLStore.h:38
 AliMpDDLStore.h:39
 AliMpDDLStore.h:40
 AliMpDDLStore.h:41
 AliMpDDLStore.h:42
 AliMpDDLStore.h:43
 AliMpDDLStore.h:44
 AliMpDDLStore.h:45
 AliMpDDLStore.h:46
 AliMpDDLStore.h:47
 AliMpDDLStore.h:48
 AliMpDDLStore.h:49
 AliMpDDLStore.h:50
 AliMpDDLStore.h:51
 AliMpDDLStore.h:52
 AliMpDDLStore.h:53
 AliMpDDLStore.h:54
 AliMpDDLStore.h:55
 AliMpDDLStore.h:56
 AliMpDDLStore.h:57
 AliMpDDLStore.h:58
 AliMpDDLStore.h:59
 AliMpDDLStore.h:60
 AliMpDDLStore.h:61
 AliMpDDLStore.h:62
 AliMpDDLStore.h:63
 AliMpDDLStore.h:64
 AliMpDDLStore.h:65
 AliMpDDLStore.h:66
 AliMpDDLStore.h:67
 AliMpDDLStore.h:68
 AliMpDDLStore.h:69
 AliMpDDLStore.h:70
 AliMpDDLStore.h:71
 AliMpDDLStore.h:72
 AliMpDDLStore.h:73
 AliMpDDLStore.h:74
 AliMpDDLStore.h:75
 AliMpDDLStore.h:76
 AliMpDDLStore.h:77
 AliMpDDLStore.h:78
 AliMpDDLStore.h:79
 AliMpDDLStore.h:80
 AliMpDDLStore.h:81
 AliMpDDLStore.h:82
 AliMpDDLStore.h:83
 AliMpDDLStore.h:84
 AliMpDDLStore.h:85
 AliMpDDLStore.h:86
 AliMpDDLStore.h:87
 AliMpDDLStore.h:88
 AliMpDDLStore.h:89
 AliMpDDLStore.h:90
 AliMpDDLStore.h:91
 AliMpDDLStore.h:92
 AliMpDDLStore.h:93
 AliMpDDLStore.h:94
 AliMpDDLStore.h:95
 AliMpDDLStore.h:96
 AliMpDDLStore.h:97
 AliMpDDLStore.h:98
 AliMpDDLStore.h:99
 AliMpDDLStore.h:100
 AliMpDDLStore.h:101
 AliMpDDLStore.h:102
 AliMpDDLStore.h:103
 AliMpDDLStore.h:104
 AliMpDDLStore.h:105
 AliMpDDLStore.h:106
 AliMpDDLStore.h:107
 AliMpDDLStore.h:108
 AliMpDDLStore.h:109
 AliMpDDLStore.h:110
 AliMpDDLStore.h:111
 AliMpDDLStore.h:112
 AliMpDDLStore.h:113
 AliMpDDLStore.h:114
 AliMpDDLStore.h:115
 AliMpDDLStore.h:116
 AliMpDDLStore.h:117
 AliMpDDLStore.h:118
 AliMpDDLStore.h:119
 AliMpDDLStore.h:120
 AliMpDDLStore.h:121
 AliMpDDLStore.h:122
 AliMpDDLStore.h:123
 AliMpDDLStore.h:124
 AliMpDDLStore.h:125
 AliMpDDLStore.h:126
 AliMpDDLStore.h:127
 AliMpDDLStore.h:128
 AliMpDDLStore.h:129
 AliMpDDLStore.h:130