PMD module
[u/mrichter/AliRoot.git] / MUON / MUONmapping / AliMpLocalBoard.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: AliMpManuGeo.h,v 1.5 2006/05/24 13:58:16 ivana Exp $
6
7 /// \ingroup mptrigger
8 /// \class AliMpLocalBoard
9 /// \brief Class that manages the properties of the local board
10 ///
11 /// \author Ch. Finck; Subatech Nantes
12
13 #ifndef ALI_MP_LOCAL_BOARD_H
14 #define ALI_MP_LOCAL_BOARD_H
15
16 #include <TNamed.h>
17
18 #include "AliMpArrayI.h"
19 #include "AliMpEncodePair.h"
20
21 class TString;
22
23 class AliMpLocalBoard : public TNamed
24 {
25
26  public:
27     AliMpLocalBoard(Int_t id, const Char_t* name, Int_t slot);
28     AliMpLocalBoard(TRootIOCtor* /*ioCtor*/);
29     virtual ~AliMpLocalBoard();
30     
31     // detElem
32     Bool_t AddDE(Int_t detElemId);
33     Int_t  GetNofDEs() const;
34     Int_t  GetDEId(Int_t index) const;
35     Int_t  GetDEIdByChamber(Int_t chamberId) const;
36     Bool_t HasDEId(Int_t detElemId) const;
37
38     // get methods
39     //
40            /// Return the identifier (unique)
41     Int_t  GetId()   const {return fId;}
42            /// Return the slot Identifier in the given crate
43     Int_t  GetSlot() const {return fSlot;}
44
45     /// set slot
46     void   SetSlot(Int_t slot) {fSlot = slot;}
47
48     // Switches
49     //
50             /// Get switch bit wise (return a inteter for backware compatibility)
51     Int_t  GetSwitch(Int_t index) const;
52             /// Set switch in a compact way
53     void   SetSwitch(UInt_t swit);
54             /// Get switch in a compact way
55     UInt_t  GetSwitch() const {return fSwitch;}
56
57     // switch enum for local board (see PRR, chpt: 2.4.4)
58     enum {kX2d, kX2m, kX2u, ///< (1) indicate a change of strip pitch in Y circuit
59           kOR0, kOR1,  ///< taking into account the different segmentation in Y from MT1 to MT2
60           kENY,        ///< (0) enable communication in Y to n+/-1 board via tranverse connector, (1) disable
61           kZeroAllYLSB,///< (1) reset the LSB for special configuration of board RC2L5B4 & RC2L6B1
62           kZeroDown,   ///< (0) information is expected from n-1 board for X input, (1) not
63           kZeroMiddle, ///< (0) always, not used
64           kZeroUp };   ///< (0) information is expected from n+1 board for X input, (1) not
65
66     // Transverse connector
67     //     
68              /// Set transverse connector
69     void     SetTC(Bool_t connect) {fTC = connect;}
70              /// Return transverse connector
71     Bool_t   GetTC() const {return fTC;}
72
73     // Crate name
74     //
75              /// Set crate name
76     void     SetCrate(TString name) {fCrate = name;}
77              /// Return crate name
78     TString  GetCrate() const {return fCrate;}
79
80     // Notify
81     //
82              /// Set notified flag (not copy card)
83     void     SetNotified(Bool_t notify) {fNotified = notify;}
84              /// Return notified flag (not copy card) 
85     Bool_t   IsNotified() const {return fNotified;}
86
87     
88     /// given position (line, col)
89     MpPair_t GetPosition() const;
90
91     // Id to be copy to or from
92     
93     /// Get Id from where the X input are copied
94     Int_t GetInputXfrom() const {return fInputXfrom;}
95     /// Get Id to where the X input are copied
96     Int_t GetInputXto() const   {return fInputXto;}
97     /// Get Id from where the Y input are copied
98     Int_t GetInputYfrom() const {return fInputYfrom;}
99     /// Get Id to where the Y input are copied
100     Int_t GetInputYto() const  {return fInputYto;}
101
102     /// Set Id from where the X input are copied 
103     void SetInputXfrom(Int_t id) {fInputXfrom = id;}
104     /// Set Id to where the X input are copied    
105     void SetInputXto(Int_t id)   {fInputXto   = id;}
106     /// Set Id from where the Y input are copied 
107     void SetInputYfrom(Int_t id) {fInputYfrom = id;}
108     /// Set Id to where the Y input are copied 
109     void SetInputYto(Int_t id)   {fInputYto   = id;}
110
111  private:
112   /// Not implemented
113    AliMpLocalBoard();
114   /// Not implemented
115    AliMpLocalBoard(const AliMpLocalBoard& src);
116    /// Not implemented
117    AliMpLocalBoard& operator = (const AliMpLocalBoard& src) ;
118
119    Int_t GetIndex(Int_t chamberId) const;
120    
121    Int_t       fId;       ///< Identifier (unique)
122    Int_t       fSlot;     ///< Slot Identifier in the given crate 
123    Bool_t      fTC;       ///< Transverse connector
124    TString     fCrate;    ///< Crate name
125    UInt_t      fSwitch;   ///< switches in compact way
126    Bool_t      fNotified; ///< notified flag (not copy card)
127    AliMpArrayI fDEId;     ///< list of Detection element to which this local board is connected
128    Int_t       fInputXfrom;///< local id of x3-4 inputs copied from (zero: not copied)
129    Int_t       fInputXto;  ///< local id of x3-4 inputs copied to (zero: not copied)
130    Int_t       fInputYfrom;///< local id of y1-4 inputs copied from (zero: not copied)
131    Int_t       fInputYto;  ///< local id of y1-4 inputs copied to (zero: not copied)
132
133   ClassDef(AliMpLocalBoard,3) //utility class for the motif type
134 };
135
136
137 #endif