]> git.uio.no Git - u/mrichter/AliRoot.git/blob - MUON/mapping/AliMpLocalBoard.h
241cfdf0d2ee6d7fa2d28fdcf056f8af1ddef333
[u/mrichter/AliRoot.git] / MUON / mapping / 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 management
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
20 class TString;
21
22 class AliMpLocalBoard : public TNamed
23 {
24
25  public:
26     AliMpLocalBoard(Int_t id, const Char_t* name, Int_t slot);
27     AliMpLocalBoard(TRootIOCtor* /*ioCtor*/);
28     virtual ~AliMpLocalBoard();
29     
30     // detElem
31     Bool_t AddDE(Int_t detElemId);
32     Int_t  GetNofDEs() const;
33     Int_t  GetDEId(Int_t index) const;
34     Int_t  GetDEIdByChamber(Int_t chamberId) const;
35     Bool_t HasDEId(Int_t detElemId) const;
36
37     // get methods
38     //
39            /// Return the identifier (unique)
40     Int_t  GetId()   const {return fId;}
41            /// Return the slot Identifier in the given crate
42     Int_t  GetSlot() const {return fSlot;}
43
44     /// set slot
45     void   SetSlot(Int_t slot) {fSlot = slot;}
46
47     // Switches
48     //
49     Bool_t AddSwitch(Int_t swit);
50     Int_t  GetNofSwitches() const;
51     Int_t  GetSwitch(Int_t index) const;
52
53             /// Set switch in a compact way
54     void   SetSwitch(UInt_t swit) {fSwitch = swit;}
55             /// Get switch in a compact way
56     UInt_t  GetSwitch() const {return fSwitch;}
57
58     // switch enum for local board (see PRR, chpt: 2.4.4)
59     enum {kX2d, kX2m, kX2u, ///< (1) indicate a change of strip pitch in Y circuit
60           kOR0, kOR1,  ///< taking into account the different segmentation in Y from MT1 to MT2
61           kENY,        ///< (0) enable communication in Y to n+/-1 board via tranverse connector, (1) disable
62           kZeroAllYLSB,///< (1) reset the LSB for special configuration of board RC2L5B4 & RC2L6B1
63           kZeroDown,   ///< (0) information is expected from n-1 board for X input, (1) not
64           kZeroMiddle, ///< (0) always, not used
65           kZeroUp };   ///< (0) information is expected from n+1 board for X input, (1) not
66
67     // Transverse connector
68     //     
69              /// Set transverse connector
70     void     SetTC(Bool_t connect) {fTC = connect;}
71              /// Return transverse connector
72     Bool_t   GetTC() const {return fTC;}
73
74     // Crate name
75     //
76              /// Set crate name
77     void     SetCrate(TString name) {fCrate = name;}
78              /// Return crate name
79     TString  GetCrate() const {return fCrate;}
80
81     // Notify
82     //
83              /// Set notified flag (not copy card)
84     void     SetNotified(Bool_t notify) {fNotified = notify;}
85              /// Return notified flag (not copy card) 
86     Bool_t   IsNotified() const {return fNotified;}
87
88     // given position (line, col)
89     AliMpIntPair 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() {return fInputXfrom;}
95     /// Get Id to where the X input are copied
96     Int_t GetInputXto()   {return fInputXto;}
97     /// Get Id from where the Y input are copied
98     Int_t GetInputYfrom() {return fInputYfrom;}
99     /// Get Id to where the Y input are copied
100     Int_t GetInputYto()   {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
124    Bool_t      fTC;       ///< Transverse connector
125    TString     fCrate;    ///< Crate name
126    AliMpArrayI fSwitches; ///< switches
127    UInt_t      fSwitch;   ///< switches in compact way
128    Bool_t      fNotified; ///< notified flag (not copy card)
129    AliMpArrayI fDEId;     ///< list of Detection element to which this local board is connected
130    Int_t       fInputXfrom;///< local id of x3-4 inputs copied from (zero: not copied)
131    Int_t       fInputXto;  ///< local id of x3-4 inputs copied to (zero: not copied)
132    Int_t       fInputYfrom;///< local id of y1-4 inputs copied from (zero: not copied)
133    Int_t       fInputYto;  ///< local id of y1-4 inputs copied to (zero: not copied)
134
135   ClassDef(AliMpLocalBoard,2) //utility class for the motif type
136 };
137
138
139 #endif