Correct use of ROOT_INCLUDE_DIR
[u/mrichter/AliRoot.git] / MUON / MUONmapping / AliMpLocalBoard.cxx
CommitLineData
4fb5ef65 1/**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
3 * *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
6 * *
7 * Permission to use, copy, modify and distribute this software and its *
8 * documentation strictly for non-commercial purposes is hereby granted *
9 * without fee, provided that the above copyright notice appears in all *
10 * copies and that both the copyright notice and this permission notice *
11 * appear in the supporting documentation. The authors make no claims *
12 * about the suitability of this software for any purpose. It is *
13 * provided "as is" without express or implied warranty. *
14 **************************************************************************/
15
3d1463c8 16// $Id$
4fb5ef65 17
3d1463c8 18//-----------------------------------------------------------------------------
4fb5ef65 19// Class AliMpLocalBoard
20// --------------------
21// The class defines the properties of local board
22// Author: Ch. Finck, Subatech Nantes
3d1463c8 23//-----------------------------------------------------------------------------
4fb5ef65 24
25#include "AliMpLocalBoard.h"
26#include "AliMpConstants.h"
168e9c4d 27#include "AliMpEncodePair.h"
4fb5ef65 28
29#include "AliLog.h"
30
31#include <TString.h>
32#include <Riostream.h>
33
b80faac0 34using std::endl;
4fb5ef65 35/// \cond CLASSIMP
36ClassImp(AliMpLocalBoard)
37/// \endcond
38
39
40//_____________________________________________________________________________
41AliMpLocalBoard::AliMpLocalBoard(Int_t id, const Char_t* name, Int_t slot)
42 : TNamed(name, "mapping trigger local board"),
43 fId(id),
44 fSlot(slot),
45 fTC(true),
46 fCrate(),
3ac706ec 47 fSwitch(0),
4fb5ef65 48 fNotified(true),
354e70ca 49 fDEId(false),
50 fInputXfrom(0),
51 fInputXto(0),
52 fInputYfrom(0),
53 fInputYto(0)
4fb5ef65 54{
55/// Default constructor
56}
57
58//______________________________________________________________________________
59AliMpLocalBoard::AliMpLocalBoard(TRootIOCtor* /*ioCtor*/)
60 : TNamed(),
61 fId(),
62 fSlot(),
63 fTC(),
64 fCrate(),
3ac706ec 65 fSwitch(),
4fb5ef65 66 fNotified(),
354e70ca 67 fDEId(),
68 fInputXfrom(0),
69 fInputXto(0),
70 fInputYfrom(0),
71 fInputYto(0)
4fb5ef65 72{
73/// Root IO constructor
74}
75
76
77//_____________________________________________________________________________
78AliMpLocalBoard::~AliMpLocalBoard()
79{
80/// Destructor
81
82}
83
84//_____________________________________________________________________________
85Int_t AliMpLocalBoard::GetIndex(Int_t chamberId) const
86{
87/// Return the index from chamver Id.
88/// chamberId could range from 10-13 in absolute value
89/// chamberId could also range from 0-3 in relative value
90
91 Int_t index = chamberId;
92
93 if ( chamberId >= AliMpConstants::NofTrackingChambers() &&
94 chamberId < AliMpConstants::NofChambers() )
95 {
96 index -= AliMpConstants::NofTrackingChambers();
97 }
98
99 if (index < 0 || index >= AliMpConstants::NofTriggerChambers() )
100 {
101 AliError(Form("chamber# %d not a valid trigger chamber Id, [0-3] or [10-13]", chamberId));
102 return -1;
103 }
104
105 return index;
106}
107
108
109//______________________________________________________________________________
110Bool_t AliMpLocalBoard::AddDE(Int_t detElemId)
111{
112/// Add detection element with given detElemId.
113/// Return true if the detection element was added
114
115 if ( HasDEId(detElemId) ) {
116 AliWarningStream()
117 << "Detection element Id = " << detElemId << " already present."
118 << endl;
119 return false;
120 }
121
122 fDEId.Add(detElemId);
123 return true;
124}
125
126
127//______________________________________________________________________________
128Int_t AliMpLocalBoard::GetNofDEs() const
129{
130/// Return the number of detection elements connected to this crate
131
132 return fDEId.GetSize();
133}
134
135//______________________________________________________________________________
136Int_t AliMpLocalBoard::GetDEId(Int_t index) const
137{
138/// Return the detection element by index (in loop)
139
140 return fDEId.GetValue(index);
141}
142
143//______________________________________________________________________________
144Int_t AliMpLocalBoard::GetDEIdByChamber(Int_t chamberId) const
145{
146/// Return the detection element by index (in loop)
147
148 return fDEId.GetValue(GetIndex(chamberId));
149}
150
151//______________________________________________________________________________
152Bool_t AliMpLocalBoard::HasDEId(Int_t detElemId) const
153{
154/// Return true if the detection element Id is present
155
156 return fDEId.HasValue(detElemId);
157}
158
159//______________________________________________________________________________
60e510d4 160void AliMpLocalBoard::SetSwitch(UInt_t swit)
4fb5ef65 161{
60e510d4 162/// set compact switch
163
164 fSwitch = swit;
165
4fb5ef65 166}
167
168//______________________________________________________________________________
169Int_t AliMpLocalBoard::GetSwitch(Int_t index) const
170{
60e510d4 171/// Return switch bit wise
4fb5ef65 172
60e510d4 173 if (index > 9) {
4fb5ef65 174 AliWarning("Switch index too large");
60e510d4 175 return -1;
176 }
94bf739c 177 return (fSwitch >> (9-index)) & 0x1;
4fb5ef65 178}
179
180//______________________________________________________________________________
168e9c4d 181MpPair_t AliMpLocalBoard::GetPosition() const
4fb5ef65 182{
183/// gives position of the local board in (line, col)
184
185 const Char_t* boardName = GetName();
186 Int_t iLine = boardName[4] - '0';
187 Int_t iCol = boardName[2] - '0';
4fb5ef65 188
168e9c4d 189 return AliMp::Pair(iLine, iCol);
4fb5ef65 190}
191