CbmRoot
Loading...
Searching...
No Matches
CbmMuchUnpackPar.cxx
Go to the documentation of this file.
1/* Copyright (C) 2017-2021 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
2 SPDX-License-Identifier: GPL-3.0-only
3 Authors: Pierre-Alain Loizeau, Ajit Kumar, Florian Uhlig [committer] */
4
5#include "CbmMuchUnpackPar.h"
6
7#include "FairDetParIo.h"
8#include "FairParIo.h"
9#include "FairParamList.h"
10#include <Logger.h>
11
12#include "TMath.h"
13#include "TString.h"
14
15using namespace std;
16
17// ----- Standard constructor ------------------------------------------
18CbmMuchUnpackPar::CbmMuchUnpackPar(const char* name, const char* title, const char* context)
19 : FairParGenericSet(name, title, context)
20 , fuNrOfDpbs(0)
21 , fiDbpIdArray()
22 , fiCrobActiveFlag()
23 , fuFebsInGemA(0)
24 , fuFebsInGemB(0)
25 , fuFebsInRpc(0)
26 , fnFebsIdsArrayGemA()
27 , fnFebsIdsArrayGemB()
28 , fnFebsIdsArrayRpc()
29 , fChannelsToPadXA()
30 , fChannelsToPadYA()
31 , fChannelsToPadXB()
32 , fChannelsToPadYB()
33 , fChannelsToPadXRpc()
34 , fChannelsToPadYRpc()
35 , fRealX()
36 , fRealPadSize()
37{
38 detName = "Much";
39}
40// -------------------------------------------------------------------------
41
42
43// ----- Destructor ----------------------------------------------------
45// -------------------------------------------------------------------------
46
47
48// ----- Public method clear -------------------------------------------
50{
51 status = kFALSE;
52 resetInputVersions();
53}
54// -------------------------------------------------------------------------
55
56// -------------------------------------------------------------------------
57
58void CbmMuchUnpackPar::putParams(FairParamList* l)
59{
60 if (!l) return;
61
62 l->add("NrOfDpbs", fuNrOfDpbs);
63 l->add("DbpIdArray", fiDbpIdArray);
64 l->add("CrobActiveFlag", fiCrobActiveFlag);
65 l->add("NrOfFebsInGemA", fuFebsInGemA);
66 l->add("nFebsIdsArrayA", fnFebsIdsArrayGemA);
67 l->add("NrOfFebsInGemB", fuFebsInGemB);
68 l->add("nFebsIdsArrayB", fnFebsIdsArrayGemB);
69 l->add("NrOfFebsInRpc", fuFebsInRpc);
70 l->add("nFebsIdsArrayRpc", fnFebsIdsArrayRpc);
71 l->add("ChannelsToPadXA", fChannelsToPadXA);
72 l->add("ChannelsToPadYA", fChannelsToPadYA);
73 l->add("ChannelsToPadXB", fChannelsToPadXB);
74 l->add("ChannelsToPadYB", fChannelsToPadYB);
75 l->add("ChannelsToPadXRpc", fChannelsToPadXRpc);
76 l->add("ChannelsToPadYRpc", fChannelsToPadYRpc);
77 l->add("RealX", fRealX);
78 l->add("PadSize", fRealPadSize);
79}
80
81// -------------------------------------------------------------------------
82
83Bool_t CbmMuchUnpackPar::getParams(FairParamList* l)
84{
85
86 if (!l) return kFALSE;
87
88 if (!l->fill("NrOfDpbs", &fuNrOfDpbs)) return kFALSE;
89
91 if (!l->fill("DbpIdArray", &fiDbpIdArray)) return kFALSE;
92
94 if (!l->fill("CrobActiveFlag", &fiCrobActiveFlag)) return kFALSE;
95
96 if (!l->fill("NrOfFebsInGemA", &fuFebsInGemA)) return kFALSE;
97
99 if (!l->fill("nFebsIdsArrayA", &fnFebsIdsArrayGemA)) return kFALSE;
100
101 if (!l->fill("NrOfFebsInGemB", &fuFebsInGemB)) return kFALSE;
102
104 if (!l->fill("nFebsIdsArrayB", &fnFebsIdsArrayGemB)) return kFALSE;
105
106 if (!l->fill("NrOfFebsInRpc", &fuFebsInRpc)) return kFALSE;
107
109 if (!l->fill("nFebsIdsArrayRpc", &fnFebsIdsArrayRpc)) return kFALSE;
110
112 if (!l->fill("ChannelsToPadXA", &fChannelsToPadXA)) return kFALSE;
113
115 if (!l->fill("ChannelsToPadYA", &fChannelsToPadYA)) return kFALSE;
116
118 if (!l->fill("ChannelsToPadXB", &fChannelsToPadXB)) return kFALSE;
119
121 if (!l->fill("ChannelsToPadYB", &fChannelsToPadYB)) return kFALSE;
122
124 if (!l->fill("ChannelsToPadXRpc", &fChannelsToPadXRpc)) return kFALSE;
125
127 if (!l->fill("ChannelsToPadYRpc", &fChannelsToPadYRpc)) return kFALSE;
128
129 fRealX.Set(2232); // Number of Sectors in one GEM Module
130 if (!l->fill("RealX", &fRealX)) return kFALSE;
131
132 fRealPadSize.Set(2232); // Number of Sectors in one GEM Module
133 if (!l->fill("PadSize", &fRealPadSize)) return kFALSE;
134
135 return kTRUE;
136}
137// -------------------------------------------------------------------------
139{
140 //LOG(info) <<" uElink "<<uElink<<" kuNbElinksPerCrob "<<kuNbElinksPerCrob;
141 if (uElink < kuNbElinksPerCrob) return kiCrobMapElinkFebIdx[uElink];
142 else {
143 LOG(warning) << "CbmMuchUnpackPar::ElinkIdxToFebIdx => Index out of bound, "
144 << "Elink is " << uElink << " returning crazy value!";
145 return -1;
146 } // else of if( uElink < kuNbElinksPerCrob )
147}
148// -------------------------------------------------------------------------
149/*
150UInt_t CbmMuchUnpackPar::ElinkIdxToAsicIdxFebMuch(UInt_t uElink)
151{
152 if (uElink < kuNbElinksPerCrob) return kuCrobMapElinkFebMuch[uElink];
153 else {
154 LOG(warning) << "CbmMuchUnpackPar::ElinkIdxToAsicIdxFebMuch => Index out of bound, "
155 << "returning crazy value!";
156 return 0xFFFF;
157 } // else of if( uElink < kuNbElinksPerCrob )
158}
159*/
160// -------------------------------------------------------------------------
161UInt_t CbmMuchUnpackPar::GetDpbId(UInt_t uDpbIdx)
162{
163 if (uDpbIdx < fuNrOfDpbs) return fiDbpIdArray[uDpbIdx];
164 else {
165 LOG(warning) << "CbmMuchUnpackPar::GetDpbId => Index out of bound, "
166 << "DPB Id is " << std::hex << uDpbIdx << " returning crazy value!";
167 return 0xFFFFFFFF;
168 } // else of if( uDpbIdx < fuNrOfDpbs )
169}
170Bool_t CbmMuchUnpackPar::IsCrobActive(UInt_t uDpbIdx, UInt_t uCrobIdx)
171{
172 if (uDpbIdx < fuNrOfDpbs) {
173 if (uCrobIdx < kuNbCrobsPerDpb) return 0 < fiCrobActiveFlag[uDpbIdx * kuNbCrobsPerDpb + uCrobIdx] ? kTRUE : kFALSE;
174 else {
175 LOG(warning) << "CbmMuchUnpackPar::IsCrobActive => Crob Index out of bound, "
176 << "returning default inactive!";
177 return kFALSE;
178 } // else of if( uCrobIdx < kuNbCrobsPerDpb )
179 } // if( uDpbIdx < fuNrOfDpbs )
180 else {
181 LOG(warning) << "CbmMuchUnpackPar::IsCrobActive => Dpb Index out of bound, "
182 << "returning default inactive!";
183 return kFALSE;
184 } // else of if( uDpbIdx < fuNrOfDpbs )
185}
186Bool_t CbmMuchUnpackPar::IsFebActive(UInt_t uFebInSystIdx)
187{
188
189 if (uFebInSystIdx < GetNrOfFebs()) {
191 return kTRUE;
192 } // if( uFebInSystIdx < GetNrOfFebs() )
193 else {
194 LOG(warning) << "CbmMuchUnpackPar::IsFebActive => Feb Index out of bound, "
195 << "returning default inactive!";
196 return kFALSE;
197 } // else of if( uFebInSystIdx < GetNrOfFebs() )
198}
199Bool_t CbmMuchUnpackPar::IsFebActive(UInt_t uDpbIdx, UInt_t uCrobIdx, UInt_t uFebIdx)
200{
201 if (uDpbIdx < fuNrOfDpbs) {
202 if (uCrobIdx < kuNbCrobsPerDpb) {
203 if (uFebIdx < kuNbFebsPerCrob) {
204 UInt_t uIdx = (uDpbIdx * kuNbCrobsPerDpb + uCrobIdx) * kuNbFebsPerCrob + uFebIdx;
205 return IsFebActive(uIdx);
206 } // if( uFebIdx < kuNbFebsPerCrob )
207 else {
208 LOG(warning) << "CbmMuchUnpackPar::IsFebActive => Feb Index out of bound, "
209 << "returning default inactive!";
210 return kFALSE;
211 } // else of if( uFebIdx < kuNbCrobsPerDpb )
212 } // if( uCrobIdx < kuNbCrobsPerDpb )
213 else {
214 LOG(warning) << "CbmMuchUnpackPar::IsFebActive => Crob Index out of bound, "
215 << "returning default inactive!";
216 return kFALSE;
217 } // else of if( uCrobIdx < kuNbCrobsPerDpb )
218 } // if( uDpbIdx < fuNrOfDpbs )
219 else {
220 LOG(warning) << "CbmMuchUnpackPar::IsFebActive => Dpb Index out of bound, "
221 << "returning default inactive!";
222 return kFALSE;
223 } // else of if( uDpbIdx < fuNrOfDpbs )
224}
225
226//-----------------------Taken for new unpacking algo -----------------
227
228/*Bool_t CbmMuchUnpackPar::IsFebPulser(UInt_t uFebInSystIdx)
229{
230 if (uFebInSystIdx < GetNrOfFebs()) {
231 return (fiFebPulserFlag[uFebInSystIdx] ? kTRUE : kFALSE);
232 } // if( uFebInSystIdx < GetNrOfFebs() )
233 else {
234 LOG(warning) << "CbmMcbm2018StsPar::IsFebPulser => Feb Index out of bound, "
235 << "returning default standard FEB!";
236 return kFALSE;
237 } // else of if( uFebInSystIdx < GetNrOfFebs() )
238}
239Bool_t CbmMuchUnpackPar::IsFebPulser(UInt_t uDpbIdx, UInt_t uCrobIdx, UInt_t uFebIdx)
240{
241 if (uDpbIdx < fuNrOfDpbs) {
242 if (uCrobIdx < kuNbCrobsPerDpb) {
243 if (uFebIdx < kuNbFebsPerCrob) {
244 UInt_t uIdx = (uDpbIdx * kuNbCrobsPerDpb + uCrobIdx) * kuNbFebsPerCrob + uFebIdx;
245 return IsFebPulser(uIdx);
246 } // if( uFebIdx < kuNbFebsPerCrob )
247 else {
248 LOG(warning) << "CbmMcbm2018StsPar::IsFebPulser => Feb Index out of bound, "
249 << "returning default standard FEB!";
250 return kFALSE;
251 } // else of if( uFebIdx < kuNbCrobsPerDpb )
252 } // if( uCrobIdx < kuNbCrobsPerDpb )
253 else {
254 LOG(warning) << "CbmMcbm2018StsPar::IsFebPulser => Crob Index out of bound, "
255 << "returning default standard FEB!";
256 return kFALSE;
257 } // else of if( uCrobIdx < kuNbCrobsPerDpb )
258 } // if( uDpbIdx < fuNrOfDpbs )
259 else {
260 LOG(warning) << "CbmMcbm2018StsPar::IsFebPulser => Dpb Index out of bound, "
261 << "returning default standard FEB!";
262 return kFALSE;
263 } // else of if( uDpbIdx < fuNrOfDpbs )
264}
265
266Double_t CbmMuchUnpackPar::GetFebAdcGain(UInt_t uDpbIdx, UInt_t uCrobIdx, UInt_t uFebIdx)
267{
268 if (uDpbIdx < fuNrOfDpbs) {
269 if (uCrobIdx < kuNbCrobsPerDpb) {
270 if (uFebIdx < kuNbFebsPerCrob) {
271 UInt_t uIdx = (uDpbIdx * kuNbCrobsPerDpb + uCrobIdx) * kuNbFebsPerCrob + uFebIdx;
272 return fdFebAdcGain[uIdx];
273 } // if( uFebIdx < kuNbFebsPerCrob )
274 else {
275 LOG(warning) << "CbmMcbm2018StsPar::GetFebAdcGain => Feb Index out of bound, "
276 << "returning default value!";
277 return 0.0;
278 } // else of if( uCrobIdx < kuNbCrobsPerDpb )
279 } // if( uCrobIdx < kuNbCrobsPerDpb )
280 else {
281 LOG(warning) << "CbmMcbm2018StsPar::GetFebAdcGain => Crob Index out of bound, "
282 << "returning default value!";
283 return 0.0;
284 } // else of if( uCrobIdx < kuNbCrobsPerDpb )
285 } // if( uDpbIdx < fuNrOfDpbs )
286 else {
287 LOG(warning) << "CbmMcbm2018StsPar::GetFebAdcGain => Dpb Index out of bound, "
288 << "returning default value!";
289 return 0.0;
290 } // else of if( uDpbIdx < fuNrOfDpbs )
291}
292
293Double_t CbmMuchUnpackPar::GetFebAdcOffset(UInt_t uDpbIdx, UInt_t uCrobIdx, UInt_t uFebIdx)
294{
295 if (uDpbIdx < fuNrOfDpbs) {
296 if (uCrobIdx < kuNbCrobsPerDpb) {
297 if (uFebIdx < kuNbFebsPerCrob) {
298 UInt_t uIdx = (uDpbIdx * kuNbCrobsPerDpb + uCrobIdx) * kuNbFebsPerCrob + uFebIdx;
299 return (fdFebAdcBase[uIdx] + fdFebAdcThrGain[uIdx] * fiFebAdcThrOffs[uIdx]);
300 } // if( uFebIdx < kuNbFebsPerCrob )
301 else {
302 LOG(warning) << "CbmMcbm2018StsPar::GetFebAdcOffset => Feb Index out of bound, "
303 << "returning default value!";
304 return 0.0;
305 } // else of if( uCrobIdx < kuNbCrobsPerDpb )
306 } // if( uCrobIdx < kuNbCrobsPerDpb )
307 else {
308 LOG(warning) << "CbmMcbm2018StsPar::GetFebAdcOffset => Crob Index out of bound, "
309 << "returning default value!";
310 return 0.0;
311 } // else of if( uCrobIdx < kuNbCrobsPerDpb )
312 } // if( uDpbIdx < fuNrOfDpbs )
313 else {
314 LOG(warning) << "CbmMcbm2018StsPar::GetFebAdcOffset => Dpb Index out of bound, "
315 << "returning default value!";
316 return 0.0;
317 } // else of if( uDpbIdx < fuNrOfDpbs )
318}
319*/
320
321//---------------------------------------------------------
322
323Short_t CbmMuchUnpackPar::GetPadXA(UShort_t febid, UShort_t channelid)
324{
325 if (fChannelsToPadXA.GetSize() <= static_cast<Int_t>((febid * kuNbChanPerAsic) + channelid)) {
326 LOG(debug) << "CbmMuchUnpackPar::GetPadXA => Index out of bounds: " << ((febid * kuNbChanPerAsic) + channelid)
327 << " VS " << fChannelsToPadXA.GetSize() << " (" << febid << " and " << channelid << ")";
328 return -2;
329 } // if( fChannelsToPadXA.GetSize () <= static_cast< Int_t >( (febid*kuNbChanPerAsic)+channelid ) )
330
331
332 return fChannelsToPadXA[(febid * kuNbChanPerAsic) + channelid];
333}
334Short_t CbmMuchUnpackPar::GetPadYA(UShort_t febid, UShort_t channelid)
335{
336 if (fChannelsToPadYA.GetSize() <= static_cast<Int_t>((febid * kuNbChanPerAsic) + channelid)) {
337 LOG(debug) << "CbmMuchUnpackPar::GetPadYA => Index out of bounds: " << ((febid * kuNbChanPerAsic) + channelid)
338 << " VS " << fChannelsToPadYA.GetSize() << " (" << febid << " and " << channelid << ")";
339 return -2;
340 } // if( fChannelsToPadXA.GetSize () <= static_cast< Int_t >( (febid*kuNbChanPerAsic)+channelid ) )
341
342 return fChannelsToPadYA[(febid * kuNbChanPerAsic) + channelid];
343}
344
345Short_t CbmMuchUnpackPar::GetPadXB(UShort_t febid, UShort_t channelid)
346{
347 if (fChannelsToPadXB.GetSize() <= static_cast<Int_t>((febid * kuNbChanPerAsic) + channelid)) {
348 LOG(debug) << "CbmMuchUnpackPar::GetPadXB => Index out of bounds: " << ((febid * kuNbChanPerAsic) + channelid)
349 << " VS " << fChannelsToPadXB.GetSize() << " (" << febid << " and " << channelid << ")";
350 return -2;
351 } // if( fChannelsToPadXB.GetSize () <= static_cast< Int_t >( (febid*kuNbChanPerAsic)+channelid ) )
352
353
354 return fChannelsToPadXB[(febid * kuNbChanPerAsic) + channelid];
355}
356Short_t CbmMuchUnpackPar::GetPadYB(UShort_t febid, UShort_t channelid)
357{
358 if (fChannelsToPadYB.GetSize() <= static_cast<Int_t>((febid * kuNbChanPerAsic) + channelid)) {
359 LOG(debug) << "CbmMuchUnpackPar::GetPadYB => Index out of bounds: " << ((febid * kuNbChanPerAsic) + channelid)
360 << " VS " << fChannelsToPadYB.GetSize() << " (" << febid << " and " << channelid << ")";
361 return -2;
362 } // if( fChannelsToPadYB.GetSize () <= static_cast< Int_t >( (febid*kuNbChanPerAsic)+channelid ) )
363
364 return fChannelsToPadYB[(febid * kuNbChanPerAsic) + channelid];
365}
366
367Short_t CbmMuchUnpackPar::GetPadXRpc(UShort_t febid, UShort_t channelid)
368{
369 if (fChannelsToPadXRpc.GetSize() <= static_cast<Int_t>((febid * kuNbChanPerAsic) + channelid)) {
370 LOG(debug) << "CbmMcbm2018MuchPar::GetPadXRpc => Index out of bounds: " << ((febid * kuNbChanPerAsic) + channelid)
371 << " VS " << fChannelsToPadXRpc.GetSize() << " (" << febid << " and " << channelid << ")";
372 return -2;
373 } // if( fChannelsToPadXRpc.GetSize () <= static_cast< Int_t >( (febid*kuNbChanPerAsic)+channelid ) )
374
375
376 return fChannelsToPadXRpc[(febid * kuNbChanPerAsic) + channelid];
377}
378Short_t CbmMuchUnpackPar::GetPadYRpc(UShort_t febid, UShort_t channelid)
379{
380 if (fChannelsToPadYRpc.GetSize() <= static_cast<Int_t>((febid * kuNbChanPerAsic) + channelid)) {
381 LOG(debug) << "CbmMcbm2018MuchPar::GetPadYRpc => Index out of bounds: " << ((febid * kuNbChanPerAsic) + channelid)
382 << " VS " << fChannelsToPadYRpc.GetSize() << " (" << febid << " and " << channelid << ")";
383 return -2;
384 } // if( fChannelsToPadYRpc.GetSize () <= static_cast< Int_t >( (febid*kuNbChanPerAsic)+channelid ) )
385
386 return fChannelsToPadYRpc[(febid * kuNbChanPerAsic) + channelid];
387}
388
389
390int32_t CbmMuchUnpackPar::GetFebId(UInt_t uAsicIdx)
391{
392 if (uAsicIdx >= GetNrOfFebsInGemA() && uAsicIdx < (GetNrOfFebsInGemA() + GetNrOfFebsInRpc())) //Check
393 return fnFebsIdsArrayRpc[uAsicIdx - GetNrOfFebsInGemA()]; //Check Vikas
394 else if (uAsicIdx >= (GetNrOfFebsInGemA() + GetNrOfFebsInRpc())
395 && uAsicIdx < (GetNrOfFebsInGemA() + GetNrOfFebsInRpc() + GetNrOfFebsInGemB())) //Check
396 return fnFebsIdsArrayGemB[uAsicIdx - (GetNrOfFebsInGemA() + GetNrOfFebsInRpc())];
397 else if (uAsicIdx < GetNrOfFebsInGemA())
398 return fnFebsIdsArrayGemA[uAsicIdx];
399 else {
400 LOG(warning) << "CbmMuchUnpackPar::GetFebId => provided uAsicIdx : " << uAsicIdx
401 << " not in the range of :" << (GetNrOfFebsInGemA() + GetNrOfFebsInRpc() + GetNrOfFebsInGemB())
402 << "Returning large value -2";
403 return -2;
404 }
405}
406
407//GetModule() is not used in unpacker
408UInt_t CbmMuchUnpackPar::GetModule(UInt_t uAsicIdx)
409{
410 if (uAsicIdx >= GetNrOfFebsInGemA()) {
411 //if ((uAsicIdx % GetNrOfFebsInGemA()) < GetNrOfFebsInGemB()) return 1;
412 if ((uAsicIdx % GetNrOfFebsInGemA()) < GetNrOfFebsInRpc()) return 1;
413 else
414 return 2;
415 } // if(uAsicIdx >= GetNrOfFebsInGemA())
416 else
417 return 0;
418}
419
420Double_t CbmMuchUnpackPar::GetRealX(Int_t SectorIndex)
421{
422
423 //LOG(info)<<" fChannelsToPadX.GetSize() "<<fChannelsToPadX.GetSize();
424 if (SectorIndex < 0 || SectorIndex <= 97) {
425 LOG(debug) << "CbmMuchUnpackPar::GetRealX => Index out of bounds: ";
426 return -2;
427 } // if( fChannelsToPadY.GetSize () <= (febid*kuNbChanPerAsic)+channelid )
428
429 return fRealX[SectorIndex];
430}
431
432Double_t CbmMuchUnpackPar::GetRealPadSize(Int_t SectorIndex)
433{
434
435 //LOG(info)<<" fChannelsToPadX.GetSize() "<<fChannelsToPadX.GetSize();
436 if (SectorIndex < 0 || SectorIndex <= 97) {
437 LOG(debug) << "CbmMuchUnpackPar::GetRealX => Index out of bounds: ";
438 return -2;
439 } // if( fChannelsToPadY.GetSize () <= (febid*kuNbChanPerAsic)+channelid )
440
441 return fRealPadSize[SectorIndex];
442}
443
444Double_t CbmMuchUnpackPar::GetRealX(Int_t Channel, Int_t Sector)
445{
446 Int_t PadIndex = Channel + 97 * Sector;
447 if (Channel < 0 || Sector < 0) return -2;
448 if (fRealX.GetSize() <= PadIndex) {
449 LOG(info) << "CbmMuchUnpackPar::GetRealX => Index out of bounds: " << Channel << " " << Sector << " " << PadIndex;
450 return -1;
451 } // if( fRealX.Size() <= PadIndex )
452
453 return fRealX[PadIndex];
454}
455Double_t CbmMuchUnpackPar::GetRealPadSize(Int_t Channel, Int_t Sector)
456{
457 Int_t PadIndex = Channel + 97 * Sector;
458 if (Channel < 0 || Sector < 0) return -2;
459 if (fRealPadSize.GetSize() <= PadIndex) {
460 LOG(info) << "CbmMuchUnpackPar::GetRealPadSize => Index out of bounds: " << Channel << " " << Sector << " "
461 << PadIndex;
462 return -1;
463 } // if( fRealPadSize.Size() <= PadIndex )
464
465 return fRealPadSize[PadIndex];
466}
467
ClassImp(CbmConverterManager)
Short_t GetPadXA(UShort_t febid, UShort_t channelid)
static const UInt_t kuNbFebsPerCrob
UInt_t GetModule(UInt_t)
void putParams(FairParamList *)
Short_t GetPadYA(UShort_t febid, UShort_t channelid)
Short_t GetPadXB(UShort_t febid, UShort_t channelid)
UInt_t fuNrOfDpbs
Map from eLink index to ASIC index within CROB ( 0 to kuNbFebsPerCrob * kuNbAsicPerFeb )
Short_t GetPadYRpc(UShort_t febid, UShort_t channelid)
static const UInt_t kuNbCrobsPerDpb
Constants.
virtual void clear()
Short_t GetPadYB(UShort_t febid, UShort_t channelid)
int32_t GetFebId(UInt_t)
Int_t ElinkIdxToFebIdx(UInt_t uElink)
Convert from eLink index to FEB Connection ( 0 to kuNbFebsPerCrob)
static const UInt_t kuNbChanPerAsic
Bool_t getParams(FairParamList *)
Short_t GetPadXRpc(UShort_t febid, UShort_t channelid)
const Int_t kiCrobMapElinkFebIdx[kuNbElinksPerCrob]
Double_t GetRealX(Int_t)
Double_t GetRealPadSize(Int_t)
Bool_t IsFebActive(UInt_t uFebInSystIdx)
static const UInt_t kuNbElinksPerCrob
CbmMuchUnpackPar(const char *name="CbmMuchUnpackPar", const char *title="Much parameters", const char *context="Default")
Bool_t IsCrobActive(UInt_t uDpbIdx, UInt_t uCrobIdx)
UInt_t GetDpbId(UInt_t uDpbIdx)
Hash for CbmL1LinkKey.