]> git.uio.no Git - u/mrichter/AliRoot.git/blame - MUON/mapping/AliMpDetElement.cxx
Commenting out StdoutToAliDebug which is, with the current AliLog
[u/mrichter/AliRoot.git] / MUON / mapping / AliMpDetElement.cxx
CommitLineData
f0c62051 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
16// $Id$
17// $MpId: AliMpDetElement.cxx,v 1.4 2006/05/24 13:58:34 ivana Exp $
18// Category: management
19//
20// Class AliMpDetElement
21// --------------------
22// The class defines the electronics properties of detection element
23// Authors: Ivana Hrivnacova, IPN Orsay
24// Laurent Aphecetche, Christian Finck, SUBATECH Nantes
25
26#include "AliMpDetElement.h"
27#include "AliMpDEManager.h"
28
29#include "AliLog.h"
30
31#include <TObjString.h>
32#include <Riostream.h>
33
34/// \cond CLASSIMP
35ClassImp(AliMpDetElement)
36/// \endcond
37
38const char AliMpDetElement::fgkNameSeparator = '_';
39
40//______________________________________________________________________________
41AliMpDetElement::AliMpDetElement(Int_t id, const TString& name,
42 const TString& segType, AliMp::PlaneType planeType)
43 : TObject(),
44 fId(id),
45 fDdlId(-1),
46 fName(name),
47 fSegType(segType),
48 fPlaneType(planeType),
49 fBusPatchIds(),
50 fManuToSerialNbs(1700),
51 fSerialNbToManus(1700)
52{
53/// Standard constructor
54
55}
56
57//______________________________________________________________________________
58AliMpDetElement::AliMpDetElement(TRootIOCtor* /*ioCtor*/)
59 : TObject(),
60 fId(0),
61 fDdlId(-1),
62 fName(),
63 fSegType(),
64 fPlaneType(),
65 fBusPatchIds(),
66 fManuToSerialNbs(),
67 fSerialNbToManus()
68{
69/// Root IO constructor
70}
71
72//______________________________________________________________________________
73AliMpDetElement::~AliMpDetElement()
74{
75/// Destructor
76}
77
78
79//
80// public methods
81//
82
83//______________________________________________________________________________
84Bool_t AliMpDetElement::AddBusPatch(Int_t busPatchId)
85{
86/// Add bus patch Id if a bus patch with the same Id is not yet present;
87/// return false if bus patch was not added
88
89 if ( HasBusPatchId(busPatchId) ) {
90 AliWarningStream()
91 << "Bus patch Id = " << busPatchId << " already present."
92 << endl;
93 return false;
94 }
95
96 fBusPatchIds.Add(busPatchId);
97 return true;
98}
99
100//______________________________________________________________________________
101void AliMpDetElement::AddManuSerial(Int_t manuId, Int_t serialNb)
102{
103/// Map the serial manu number
104/// (Eventually add check if the given pair already present)
105
106 fManuToSerialNbs.Add(Long_t(manuId), Long_t(serialNb));
107 fSerialNbToManus.Add(Long_t(serialNb), Long_t(manuId));
108}
109
110//______________________________________________________________________________
111TString AliMpDetElement::GetSegName(AliMp::CathodType cathType) const
112{
113/// Return the segmentation name for the given catod type
114
115 return fSegType + fgkNameSeparator + PlaneTypeName(GetPlaneType(cathType));
116}
117
118//______________________________________________________________________________
119AliMp::PlaneType AliMpDetElement::GetPlaneType(AliMp::CathodType cath) const
120{
121/// Return plane type \n
122
123 if ( cath == AliMp::kCath0 ) return fPlaneType;
124 else return AliMp::OtherPlaneType(fPlaneType);
125}
126
127//______________________________________________________________________________
128AliMp::CathodType AliMpDetElement::GetCathodType(AliMp::PlaneType planeType) const
129{
130/// Return cathod type for given planeType
131
132 if ( fPlaneType == planeType ) return AliMp::kCath0;
133 else return AliMp::kCath1;
134}
135
136//______________________________________________________________________________
137AliMp::StationType AliMpDetElement::GetStationType() const
138{
139/// Return station type \n
140/// Failure causes Fatal error - as AliMp::StationType has no possibility
141/// to return undefined value
142
143 Int_t chamberId = AliMpDEManager::GetChamberId(fId, false);
144 if ( ! AliMpDEManager::IsValidChamberId(chamberId, true) ) {
145 AliFatal("Cannot return AliMp::StationType value.");
146 return AliMp::kStation1;
147 }
148
149 if ( chamberId == 0 || chamberId == 1 ) return AliMp::kStation1;
150 if ( chamberId == 2 || chamberId == 3 ) return AliMp::kStation2;
151 if ( chamberId >= 4 && chamberId <= 9 ) return AliMp::kStation345;
152 if ( chamberId >= 10 && chamberId <= 13 ) return AliMp::kStationTrigger;
153
154 // Should never get to this line
155 AliFatal("Cannot return AliMp::StationType value.");
156 return AliMp::kStation1;
157}
158
159//______________________________________________________________________________
160Int_t AliMpDetElement::GetNofBusPatches() const
161{
162/// Return the number of bus patches in this detection element
163
164 return fBusPatchIds.GetSize();
165}
166
167//______________________________________________________________________________
168Int_t AliMpDetElement::GetBusPatchId(Int_t index) const
169{
170/// Return the index-th bus patch
171
172 if ( index < 0 || index > GetNofBusPatches() ) {
173 AliErrorStream()
174 << "In DE = " << fId << ": Index " << index << " outside limits." << endl;
175 return 0;
176 }
177
178 return fBusPatchIds.GetValue(index);
179}
180
181
182//______________________________________________________________________________
183Bool_t AliMpDetElement::HasBusPatchId(Int_t busPatchId) const
184{
185/// Return true if the bus patch Id is present
186
187 return fBusPatchIds.HasValue(busPatchId);;
188}
189
190//______________________________________________________________________________
191Int_t AliMpDetElement::GetNofManus() const
192{
193/// Return the number of manus in this detection element
194
195 return fManuToSerialNbs.GetSize();
196}
197
198//______________________________________________________________________________
199Int_t AliMpDetElement::GetManuSerialFromId(Int_t manuId) const
200{
201/// Return manu serial number from manuId
202
203 return (Int_t)fManuToSerialNbs.GetValue(Long_t(manuId));
204}
205
206//______________________________________________________________________________
207Int_t AliMpDetElement::GetManuIdFromSerial(Int_t serialNb) const
208{
209/// Return manuId from manu serial number
210
211 return (Int_t)fSerialNbToManus.GetValue(Long_t(serialNb));
212}
213