1 /**************************************************************************
2 * Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * Author: The ALICE Off-line Project. *
5 * Contributors are mentioned in the code where appropriate. *
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 **************************************************************************/
18 //-----------------------------------------------------------------------------
19 // Class AliMpLocalBoard
20 // --------------------
21 // The class defines the properties of local board
22 // Author: Ch. Finck, Subatech Nantes
23 //-----------------------------------------------------------------------------
25 #include "AliMpLocalBoard.h"
26 #include "AliMpConstants.h"
27 #include "AliMpIntPair.h"
32 #include <Riostream.h>
35 ClassImp(AliMpLocalBoard)
39 //_____________________________________________________________________________
40 AliMpLocalBoard::AliMpLocalBoard(Int_t id, const Char_t* name, Int_t slot)
41 : TNamed(name, "mapping trigger local board"),
55 /// Default constructor
58 //______________________________________________________________________________
59 AliMpLocalBoard::AliMpLocalBoard(TRootIOCtor* /*ioCtor*/)
74 /// Root IO constructor
78 //_____________________________________________________________________________
79 AliMpLocalBoard::~AliMpLocalBoard()
85 //_____________________________________________________________________________
86 Int_t AliMpLocalBoard::GetIndex(Int_t chamberId) const
88 /// Return the index from chamver Id.
89 /// chamberId could range from 10-13 in absolute value
90 /// chamberId could also range from 0-3 in relative value
92 Int_t index = chamberId;
94 if ( chamberId >= AliMpConstants::NofTrackingChambers() &&
95 chamberId < AliMpConstants::NofChambers() )
97 index -= AliMpConstants::NofTrackingChambers();
100 if (index < 0 || index >= AliMpConstants::NofTriggerChambers() )
102 AliError(Form("chamber# %d not a valid trigger chamber Id, [0-3] or [10-13]", chamberId));
110 //______________________________________________________________________________
111 Bool_t AliMpLocalBoard::AddDE(Int_t detElemId)
113 /// Add detection element with given detElemId.
114 /// Return true if the detection element was added
116 if ( HasDEId(detElemId) ) {
118 << "Detection element Id = " << detElemId << " already present."
123 fDEId.Add(detElemId);
128 //______________________________________________________________________________
129 Int_t AliMpLocalBoard::GetNofDEs() const
131 /// Return the number of detection elements connected to this crate
133 return fDEId.GetSize();
136 //______________________________________________________________________________
137 Int_t AliMpLocalBoard::GetDEId(Int_t index) const
139 /// Return the detection element by index (in loop)
141 return fDEId.GetValue(index);
144 //______________________________________________________________________________
145 Int_t AliMpLocalBoard::GetDEIdByChamber(Int_t chamberId) const
147 /// Return the detection element by index (in loop)
149 return fDEId.GetValue(GetIndex(chamberId));
152 //______________________________________________________________________________
153 Bool_t AliMpLocalBoard::HasDEId(Int_t detElemId) const
155 /// Return true if the detection element Id is present
157 return fDEId.HasValue(detElemId);
160 //______________________________________________________________________________
161 Bool_t AliMpLocalBoard::AddSwitch(Int_t swit)
163 /// Add a swicth for the given local board
164 /// Return true if switch was added
168 << "Invalid value for switch = " << swit
175 fSwitch |= (swit & 0x1);
180 //______________________________________________________________________________
181 Int_t AliMpLocalBoard::GetNofSwitches() const
183 /// Return the number switches in this local board
185 return fSwitches.GetSize();
188 //______________________________________________________________________________
189 Int_t AliMpLocalBoard::GetSwitch(Int_t index) const
191 /// Return switch by index (in loop)
193 if (index < fSwitches.GetSize())
194 return fSwitches.GetValue(index);
196 AliWarning("Switch index too large");
201 //______________________________________________________________________________
202 AliMpIntPair AliMpLocalBoard::GetPosition() const
204 /// gives position of the local board in (line, col)
206 const Char_t* boardName = GetName();
207 Int_t iLine = boardName[4] - '0';
208 Int_t iCol = boardName[2] - '0';
210 return (AliMpIntPair(iLine, iCol));