CbmRoot
Loading...
Searching...
No Matches
CbmCosy2019HodoPar.cxx
Go to the documentation of this file.
1/* Copyright (C) 2019-2021 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
2 SPDX-License-Identifier: GPL-3.0-only
3 Authors: Pierre-Alain Loizeau, Florian Uhlig [committer] */
4
5// -------------------------------------------------------------------------
6// ----- CbmCosy2019HodoPar source file -----
7// ----- Created 31/07/19 by P.-A. Loizeau -----
8// -------------------------------------------------------------------------
9
10#include "CbmCosy2019HodoPar.h"
11
12#include "FairDetParIo.h"
13#include "FairParIo.h"
14#include "FairParamList.h"
15#include <Logger.h>
16
17#include "TMath.h"
18#include "TString.h"
19
20using namespace std;
21
22// ----- Standard constructor ------------------------------------------
23CbmCosy2019HodoPar::CbmCosy2019HodoPar(const char* name, const char* title, const char* context)
24 : FairParGenericSet(name, title, context)
25 , fuNbModules(0)
26 , fiModAddress()
27 , fdModCenterPosX()
28 , fdModCenterPosY()
29 , fiModSwapXY()
30 , fiModInvertX()
31 , fiModInvertY()
32 , fuNrOfDpbs(0)
33 , fiDbpIdArray()
34 , fiCrobActiveFlag()
35 , fiFebModuleIdx()
36 , fdFebAdcGain()
37 , fdFebAdcBase()
38 , fdFebAdcThrGain()
39 , fiFebAdcThrOffs()
40{
41 detName = "Hodo";
42}
43// -------------------------------------------------------------------------
44
45
46// ----- Destructor ----------------------------------------------------
48// -------------------------------------------------------------------------
49
50
51// ----- Public method clear -------------------------------------------
53{
54 status = kFALSE;
55 resetInputVersions();
56}
57// -------------------------------------------------------------------------
58
59// -------------------------------------------------------------------------
60
61void CbmCosy2019HodoPar::putParams(FairParamList* l)
62{
63 if (!l) return;
64
65 l->add("NbModules", fuNbModules);
66 l->add("ModAddress", fiModAddress);
67 l->add("ModCenterPosX", fdModCenterPosX);
68 l->add("ModCenterPosY", fdModCenterPosY);
69 l->add("ModSwapXY", fiModSwapXY);
70 l->add("ModInvertX", fiModInvertX);
71 l->add("ModInvertY", fiModInvertY);
72
73 l->add("NrOfDpbs", fuNrOfDpbs);
74 l->add("DbpIdArray", fiDbpIdArray);
75 l->add("CrobActiveFlag", fiCrobActiveFlag);
76
77 l->add("FebModuleIdx", fiFebModuleIdx);
78 l->add("FebAdcGain", fdFebAdcGain);
79 l->add("FebAdcBase", fdFebAdcBase);
80 l->add("FebAdcThrGain", fdFebAdcThrGain);
81 l->add("FebAdcThrOffs", fiFebAdcThrOffs);
82}
83
84// -------------------------------------------------------------------------
85
86Bool_t CbmCosy2019HodoPar::getParams(FairParamList* l)
87{
88
89 if (!l) return kFALSE;
90
91 if (!l->fill("NbModules", &fuNbModules)) return kFALSE;
92
99 if (!l->fill("ModAddress", &fiModAddress)) return kFALSE;
100 if (!l->fill("ModCenterPosX", &fdModCenterPosX)) return kFALSE;
101 if (!l->fill("ModCenterPosY", &fdModCenterPosY)) return kFALSE;
102 if (!l->fill("ModSwapXY", &fiModSwapXY)) return kFALSE;
103 if (!l->fill("ModInvertX", &fiModInvertX)) return kFALSE;
104 if (!l->fill("ModInvertY", &fiModInvertY)) return kFALSE;
105
106 if (!l->fill("NrOfDpbs", &fuNrOfDpbs)) return kFALSE;
107
109 if (!l->fill("DbpIdArray", &fiDbpIdArray)) return kFALSE;
110
112 if (!l->fill("CrobActiveFlag", &fiCrobActiveFlag)) return kFALSE;
113
119 if (!l->fill("FebModuleIdx", &fiFebModuleIdx)) return kFALSE;
120 if (!l->fill("FebAdcGain", &fdFebAdcGain)) return kFALSE;
121 if (!l->fill("FebAdcBase", &fdFebAdcBase)) return kFALSE;
122 if (!l->fill("FebAdcThrGain", &fdFebAdcThrGain)) return kFALSE;
123 if (!l->fill("FebAdcThrOffs", &fiFebAdcThrOffs)) return kFALSE;
124
125 return kTRUE;
126}
127// -------------------------------------------------------------------------
129{
130 //LOG(info) <<" uElink "<<uElink<<" kuNbElinksPerCrob "<<kuNbElinksPerCrob;
131 if (uElink < kuNbElinksPerCrob) return kiCrobMapElinkFebIdx[uElink];
132 else {
133 LOG(warning) << "CbmCosy2019HodoPar::ElinkIdxToFebIdx => Index out of bound, "
134 << "returning crazy value!";
135 return -1;
136 } // else of if( uElink < kuNbElinksPerCrob )
137}
138// -------------------------------------------------------------------------
140{
141 if (uElink < kuNbElinksPerCrob) return kuCrobMapElinkFebMuch[uElink];
142 else {
143 LOG(warning) << "CbmCosy2019HodoPar::ElinkIdxToAsicIdxFebMuch => Index out of bound, "
144 << "returning crazy value!";
145 return 0xFFFF;
146 } // else of if( uElink < kuNbElinksPerCrob )
147}
148// -------------------------------------------------------------------------
150{
151 if (uChan < kuNbChanPerAsic) return kuChannelToFiberMap[uChan];
152 else {
153 LOG(warning) << "CbmCosy2019HodoPar::ChannelToFiber => Index out of bound, "
154 << "returning crazy value!";
155 return 0xFFFF;
156 } // else of if( uChan < kuNbChanPerAsic )
157}
159{
160 if (uChan < kuNbChanPerAsic) return kuChannelToPixelMap[uChan];
161 else {
162 LOG(warning) << "CbmCosy2019HodoPar::ChannelToPixel => Index out of bound, "
163 << "returning crazy value!";
164 return 0xFFFF;
165 } // else of if( uChan < kuNbChanPerAsic )
166}
168{
169 if (uChan < kuNbChanPerAsic) return kuChannelToPlaneMap[uChan];
170 else {
171 LOG(warning) << "CbmCosy2019HodoPar::ChannelToAxis => Index out of bound, "
172 << "returning crazy value!";
173 return 0xFFFF;
174 } // else of if( uChan < kuNbChanPerAsic )
175}
176// -------------------------------------------------------------------------
178{
179 if (uModuleIdx < fuNbModules) return kTRUE;
180 else {
181 LOG(warning) << "CbmCosy2019HodoPar::CheckModuleIndex => Index out of bound!";
182 return kFALSE;
183 } // else of if( uModuleIdx < fuNbModules )
184}
186{
187 if (uModuleIdx < fuNbModules) return fiModAddress[uModuleIdx];
188 else {
189 LOG(warning) << "CbmCosy2019HodoPar::GetModuleAddress => Index out of bound, "
190 << "returning crazy value!";
191 return 0xFFFFFFFF;
192 } // else of if( uModuleIdx < fuNbModules )
193}
195{
196 if (uModuleIdx < fuNbModules) return fdModCenterPosX[uModuleIdx];
197 else {
198 LOG(warning) << "CbmCosy2019HodoPar::GetModuleCenterPosX => Index out of bound, "
199 << "returning crazy value!";
200 return 3.844e11; // Fly to the Moon!
201 } // else of if( uModuleIdx < fuNbModules )
202}
204{
205 if (uModuleIdx < fuNbModules) return fdModCenterPosY[uModuleIdx];
206 else {
207 LOG(warning) << "CbmCosy2019HodoPar::GetModuleCenterPosY => Index out of bound, "
208 << "returning crazy value!";
209 return 3.844e11; // Fly to the Moon!
210 } // else of if( uModuleIdx < fuNbModules )
211}
212Bool_t CbmCosy2019HodoPar::GetModuleSwapXY(UInt_t uModuleIdx)
213{
214 if (uModuleIdx < fuNbModules) return fiModSwapXY[uModuleIdx];
215 else {
216 LOG(warning) << "CbmCosy2019HodoPar::GetModuleSwapXY => Index out of bound, "
217 << "returning false!";
218 return kFALSE; // Fly to the Moon!
219 } // else of if( uModuleIdx < fuNbModules )
220}
222{
223 if (uModuleIdx < fuNbModules) return fiModInvertX[uModuleIdx];
224 else {
225 LOG(warning) << "CbmCosy2019HodoPar::GetModuleInvertX => Index out of bound, "
226 << "returning false!";
227 return kFALSE; // Fly to the Moon!
228 } // else of if( uModuleIdx < fuNbModules )
229}
231{
232 if (uModuleIdx < fuNbModules) return fiModInvertY[uModuleIdx];
233 else {
234 LOG(warning) << "CbmCosy2019HodoPar::GetModuleInvertY => Index out of bound, "
235 << "returning false!";
236 return kFALSE; // Fly to the Moon!
237 } // else of if( uModuleIdx < fuNbModules )
238}
239// -------------------------------------------------------------------------
240UInt_t CbmCosy2019HodoPar::GetDpbId(UInt_t uDpbIdx)
241{
242 if (uDpbIdx < fuNrOfDpbs) return fiDbpIdArray[uDpbIdx];
243 else {
244 LOG(warning) << "CbmCosy2019HodoPar::GetDpbId => Index out of bound, "
245 << "returning crazy value!";
246 return 0xFFFFFFFF;
247 } // else of if( uDpbIdx < fuNrOfDpbs )
248}
249Bool_t CbmCosy2019HodoPar::IsCrobActive(UInt_t uDpbIdx, UInt_t uCrobIdx)
250{
251 if (uDpbIdx < fuNrOfDpbs) {
252 if (uCrobIdx < kuNbCrobsPerDpb) return 0 < fiCrobActiveFlag[uDpbIdx * kuNbCrobsPerDpb + uCrobIdx] ? kTRUE : kFALSE;
253 else {
254 LOG(warning) << "CbmCosy2019HodoPar::IsCrobActive => Crob Index out of bound, "
255 << "returning default inactive!";
256 return kFALSE;
257 } // else of if( uCrobIdx < kuNbCrobsPerDpb )
258 } // if( uDpbIdx < fuNrOfDpbs )
259 else {
260 LOG(warning) << "CbmCosy2019HodoPar::IsCrobActive => Dpb Index out of bound, "
261 << "returning default inactive!";
262 return kFALSE;
263 } // else of if( uDpbIdx < fuNrOfDpbs )
264}
265Bool_t CbmCosy2019HodoPar::IsFebActive(UInt_t uFebInSystIdx)
266{
267
268 if (uFebInSystIdx < GetNrOfFebs()) {
269 return (-1 == fiFebModuleIdx[uFebInSystIdx] ? kFALSE : kTRUE);
270 } // if( uFebInSystIdx < GetNrOfFebs() )
271 else {
272 LOG(warning) << "CbmCosy2019HodoPar::IsFebActive => Feb Index out of bound, "
273 << "returning default inactive!";
274 return kFALSE;
275 } // else of if( uFebInSystIdx < GetNrOfFebs() )
276}
277Bool_t CbmCosy2019HodoPar::IsFebActive(UInt_t uDpbIdx, UInt_t uCrobIdx, UInt_t uFebIdx)
278{
279 if (uDpbIdx < fuNrOfDpbs) {
280 if (uCrobIdx < kuNbCrobsPerDpb) {
281 if (uFebIdx < kuNbFebsPerCrob) {
282 UInt_t uIdx = (uDpbIdx * kuNbCrobsPerDpb + uCrobIdx) * kuNbFebsPerCrob + uFebIdx;
283 return IsFebActive(uIdx);
284 } // if( uFebIdx < kuNbFebsPerCrob )
285 else {
286 LOG(warning) << "CbmCosy2019HodoPar::IsFebActive => Feb Index out of bound, "
287 << "returning default inactive!";
288 return kFALSE;
289 } // else of if( uFebIdx < kuNbCrobsPerDpb )
290 } // if( uCrobIdx < kuNbCrobsPerDpb )
291 else {
292 LOG(warning) << "CbmCosy2019HodoPar::IsFebActive => Crob Index out of bound, "
293 << "returning default inactive!";
294 return kFALSE;
295 } // else of if( uCrobIdx < kuNbCrobsPerDpb )
296 } // if( uDpbIdx < fuNrOfDpbs )
297 else {
298 LOG(warning) << "CbmCosy2019HodoPar::IsFebActive => Dpb Index out of bound, "
299 << "returning default inactive!";
300 return kFALSE;
301 } // else of if( uDpbIdx < fuNrOfDpbs )
302}
303Int_t CbmCosy2019HodoPar::GetFebModuleIdx(UInt_t uDpbIdx, UInt_t uCrobIdx, UInt_t uFebIdx)
304{
305 if (uDpbIdx < fuNrOfDpbs) {
306 if (uCrobIdx < kuNbCrobsPerDpb) {
307 if (uFebIdx < kuNbFebsPerCrob) {
308 UInt_t uIdx = (uDpbIdx * kuNbCrobsPerDpb + uCrobIdx) * kuNbFebsPerCrob + uFebIdx;
309 return fiFebModuleIdx[uIdx];
310 } // if( uFebIdx < kuNbFebsPerCrob )
311 else {
312 LOG(warning) << "CbmCosy2019HodoPar::GetFebModuleIdx => Feb Index out of bound, "
313 << "returning default inactive!";
314 return -1;
315 } // else of if( uCrobIdx < kuNbCrobsPerDpb )
316 } // if( uCrobIdx < kuNbCrobsPerDpb )
317 else {
318 LOG(warning) << "CbmCosy2019HodoPar::GetFebModuleIdx => Crob Index out of bound, "
319 << "returning default inactive!";
320 return -1;
321 } // else of if( uCrobIdx < kuNbCrobsPerDpb )
322 } // if( uDpbIdx < fuNrOfDpbs )
323 else {
324 LOG(warning) << "CbmCosy2019HodoPar::GetFebModuleIdx => Dpb Index out of bound, "
325 << "returning default inactive!";
326 return -1;
327 } // else of if( uDpbIdx < fuNrOfDpbs )
328}
329Double_t CbmCosy2019HodoPar::GetFebAdcGain(UInt_t uDpbIdx, UInt_t uCrobIdx, UInt_t uFebIdx)
330{
331 if (uDpbIdx < fuNrOfDpbs) {
332 if (uCrobIdx < kuNbCrobsPerDpb) {
333 if (uFebIdx < kuNbFebsPerCrob) {
334 UInt_t uIdx = (uDpbIdx * kuNbCrobsPerDpb + uCrobIdx) * kuNbFebsPerCrob + uFebIdx;
335 return fdFebAdcGain[uIdx];
336 } // if( uFebIdx < kuNbFebsPerCrob )
337 else {
338 LOG(warning) << "CbmCosy2019HodoPar::GetFebAdcGain => Feb Index out of bound, "
339 << "returning default value!";
340 return 0.0;
341 } // else of if( uCrobIdx < kuNbCrobsPerDpb )
342 } // if( uCrobIdx < kuNbCrobsPerDpb )
343 else {
344 LOG(warning) << "CbmCosy2019HodoPar::GetFebAdcGain => Crob Index out of bound, "
345 << "returning default value!";
346 return 0.0;
347 } // else of if( uCrobIdx < kuNbCrobsPerDpb )
348 } // if( uDpbIdx < fuNrOfDpbs )
349 else {
350 LOG(warning) << "CbmCosy2019HodoPar::GetFebAdcGain => Dpb Index out of bound, "
351 << "returning default value!";
352 return 0.0;
353 } // else of if( uDpbIdx < fuNrOfDpbs )
354}
355Double_t CbmCosy2019HodoPar::GetFebAdcOffset(UInt_t uDpbIdx, UInt_t uCrobIdx, UInt_t uFebIdx)
356{
357 if (uDpbIdx < fuNrOfDpbs) {
358 if (uCrobIdx < kuNbCrobsPerDpb) {
359 if (uFebIdx < kuNbFebsPerCrob) {
360 UInt_t uIdx = (uDpbIdx * kuNbCrobsPerDpb + uCrobIdx) * kuNbFebsPerCrob + uFebIdx;
361 return (fdFebAdcBase[uIdx] + fdFebAdcThrGain[uIdx] * fiFebAdcThrOffs[uIdx]);
362 } // if( uFebIdx < kuNbFebsPerCrob )
363 else {
364 LOG(warning) << "CbmCosy2019HodoPar::GetFebAdcOffset => Feb Index out of bound, "
365 << "returning default value!";
366 return 0.0;
367 } // else of if( uCrobIdx < kuNbCrobsPerDpb )
368 } // if( uCrobIdx < kuNbCrobsPerDpb )
369 else {
370 LOG(warning) << "CbmCosy2019HodoPar::GetFebAdcOffset => Crob Index out of bound, "
371 << "returning default value!";
372 return 0.0;
373 } // else of if( uCrobIdx < kuNbCrobsPerDpb )
374 } // if( uDpbIdx < fuNrOfDpbs )
375 else {
376 LOG(warning) << "CbmCosy2019HodoPar::GetFebAdcOffset => Dpb Index out of bound, "
377 << "returning default value!";
378 return 0.0;
379 } // else of if( uDpbIdx < fuNrOfDpbs )
380}
381Double_t CbmCosy2019HodoPar::GetFebAdcBase(UInt_t uDpbIdx, UInt_t uCrobIdx, UInt_t uFebIdx)
382{
383 if (uDpbIdx < fuNrOfDpbs) {
384 if (uCrobIdx < kuNbCrobsPerDpb) {
385 if (uFebIdx < kuNbFebsPerCrob) {
386 UInt_t uIdx = (uDpbIdx * kuNbCrobsPerDpb + uCrobIdx) * kuNbFebsPerCrob + uFebIdx;
387 return fdFebAdcBase[uIdx];
388 } // if( uFebIdx < kuNbFebsPerCrob )
389 else {
390 LOG(warning) << "CbmCosy2019HodoPar::GetFebAdcBase => Feb Index out of bound, "
391 << "returning default value!";
392 return 0.0;
393 } // else of if( uCrobIdx < kuNbCrobsPerDpb )
394 } // if( uCrobIdx < kuNbCrobsPerDpb )
395 else {
396 LOG(warning) << "CbmCosy2019HodoPar::GetFebAdcBase => Crob Index out of bound, "
397 << "returning default value!";
398 return 0.0;
399 } // else of if( uCrobIdx < kuNbCrobsPerDpb )
400 } // if( uDpbIdx < fuNrOfDpbs )
401 else {
402 LOG(warning) << "CbmCosy2019HodoPar::GetFebAdcBase => Dpb Index out of bound, "
403 << "returning default value!";
404 return 0.0;
405 } // else of if( uDpbIdx < fuNrOfDpbs )
406}
407Double_t CbmCosy2019HodoPar::GetFebAdcThrGain(UInt_t uDpbIdx, UInt_t uCrobIdx, UInt_t uFebIdx)
408{
409 if (uDpbIdx < fuNrOfDpbs) {
410 if (uCrobIdx < kuNbCrobsPerDpb) {
411 if (uFebIdx < kuNbFebsPerCrob) {
412 UInt_t uIdx = (uDpbIdx * kuNbCrobsPerDpb + uCrobIdx) * kuNbFebsPerCrob + uFebIdx;
413 return fdFebAdcThrGain[uIdx];
414 } // if( uFebIdx < kuNbFebsPerCrob )
415 else {
416 LOG(warning) << "CbmCosy2019HodoPar::GetFebAdcThrGain => Feb Index out of bound, "
417 << "returning default value!";
418 return 0.0;
419 } // else of if( uCrobIdx < kuNbCrobsPerDpb )
420 } // if( uCrobIdx < kuNbCrobsPerDpb )
421 else {
422 LOG(warning) << "CbmCosy2019HodoPar::GetFebAdcThrGain => Crob Index out of bound, "
423 << "returning default value!";
424 return 0.0;
425 } // else of if( uCrobIdx < kuNbCrobsPerDpb )
426 } // if( uDpbIdx < fuNrOfDpbs )
427 else {
428 LOG(warning) << "CbmCosy2019HodoPar::GetFebAdcThrGain => Dpb Index out of bound, "
429 << "returning default value!";
430 return 0.0;
431 } // else of if( uDpbIdx < fuNrOfDpbs )
432}
433Int_t CbmCosy2019HodoPar::GetFebAdcThrOffs(UInt_t uDpbIdx, UInt_t uCrobIdx, UInt_t uFebIdx)
434{
435 if (uDpbIdx < fuNrOfDpbs) {
436 if (uCrobIdx < kuNbCrobsPerDpb) {
437 if (uFebIdx < kuNbFebsPerCrob) {
438 UInt_t uIdx = (uDpbIdx * kuNbCrobsPerDpb + uCrobIdx) * kuNbFebsPerCrob + uFebIdx;
439 return fiFebAdcThrOffs[uIdx];
440 } // if( uFebIdx < kuNbFebsPerCrob )
441 else {
442 LOG(warning) << "CbmCosy2019HodoPar::GetFebAdcThrOffs => Feb Index out of bound, "
443 << "returning default value!";
444 return 0;
445 } // else of if( uCrobIdx < kuNbCrobsPerDpb )
446 } // if( uCrobIdx < kuNbCrobsPerDpb )
447 else {
448 LOG(warning) << "CbmCosy2019HodoPar::GetFebAdcThrOffs => Crob Index out of bound, "
449 << "returning default value!";
450 return 0;
451 } // else of if( uCrobIdx < kuNbCrobsPerDpb )
452 } // if( uDpbIdx < fuNrOfDpbs )
453 else {
454 LOG(warning) << "CbmCosy2019HodoPar::GetFebAdcThrOffs => Dpb Index out of bound, "
455 << "returning default value!";
456 return 0;
457 } // else of if( uDpbIdx < fuNrOfDpbs )
458}
459// -------------------------------------------------------------------------
460UInt_t CbmCosy2019HodoPar::GetChannelInModule(UInt_t uModuleIdx, UInt_t uChan)
461{
462 if (uModuleIdx < fuNbModules || uChan < kuNbChanPerAsic) {
463 UInt_t uAxis = ChannelToAxis(uChan);
464 UInt_t uChanInAxis = ChannelToFiber(uChan);
465
467 if (uAxis ? GetModuleInvertY(uModuleIdx) : GetModuleInvertX(uModuleIdx)) {
468 uChanInAxis = kuNbFiberPerAxis - uChanInAxis - 1;
469 } // if( uAxis ? GetModuleInvertY( uModuleIdx ) : GetModuleInvertX( uModuleIdx ) )
470
472 if (GetModuleSwapXY(uModuleIdx)) { uAxis = !uAxis; } // if( GetModuleSwapXY( uModuleIdx ) )
473
474 return uChanInAxis + uAxis * kuNbFiberPerAxis;
475 } // if( uModuleIdx < fuNbModules || uChan < kuNbChanPerAsic )
476 else {
477 LOG(warning) << "CbmCosy2019HodoPar::GetChannelInModule => Index out of bound, "
478 << "returning crazy value!";
479 return 0xFFFF;
480 } // else of if( uModuleIdx < fuNbModules || uChan < kuNbChanPerAsic )
481}
482// -------------------------------------------------------------------------
483
ClassImp(CbmConverterManager)
UInt_t GetChannelInModule(UInt_t uModuleIdx, UInt_t uChan)
UInt_t fuNbModules
Map from channel index to Hodoscope Axis (X or Y)
Int_t ElinkIdxToFebIdx(UInt_t uElink)
Double_t GetFebAdcBase(UInt_t uDpbIdx, UInt_t uCrobIdx, UInt_t uFebIdx)
Int_t GetFebModuleIdx(UInt_t uDpbIdx, UInt_t uCrobIdx, UInt_t uFebIdx)
void putParams(FairParamList *)
Int_t GetFebAdcThrOffs(UInt_t uDpbIdx, UInt_t uCrobIdx, UInt_t uFebIdx)
Bool_t GetModuleSwapXY(UInt_t uModuleIdx)
UInt_t GetModuleAddress(UInt_t uModuleIdx)
const UInt_t kuChannelToPlaneMap[kuNbChanPerAsic]
Map from channel index to PMT pixel.
CbmCosy2019HodoPar(const char *name="CbmCosy2019HodoPar", const char *title="Much parameters", const char *context="Default")
static const UInt_t kuNbCrobsPerDpb
Constants.
Double_t GetFebAdcOffset(UInt_t uDpbIdx, UInt_t uCrobIdx, UInt_t uFebIdx)
UInt_t ChannelToPixel(UInt_t uChan)
Bool_t CheckModuleIndex(UInt_t uModuleIdx)
const UInt_t kuCrobMapElinkFebMuch[kuNbElinksPerCrob]
Bool_t getParams(FairParamList *)
static const UInt_t kuNbFiberPerAxis
Bool_t IsFebActive(UInt_t uFebInSystIdx)
Double_t GetModuleCenterPosX(UInt_t uModuleIdx)
UInt_t ChannelToAxis(UInt_t uChan)
const UInt_t kuChannelToFiberMap[kuNbChanPerAsic]
Map from eLink index to ASIC index within CROB ( 0 to kuNbFebsPerCrob * kuNbAsicPerFeb )
Bool_t GetModuleInvertY(UInt_t uModuleIdx)
UInt_t GetDpbId(UInt_t uDpbIdx)
static const UInt_t kuNbFebsPerCrob
Double_t GetModuleCenterPosY(UInt_t uModuleIdx)
Bool_t IsCrobActive(UInt_t uDpbIdx, UInt_t uCrobIdx)
static const UInt_t kuNbElinksPerCrob
static const UInt_t kuNbChanPerAsic
UInt_t ElinkIdxToAsicIdxFebMuch(UInt_t uElink)
Double_t GetFebAdcGain(UInt_t uDpbIdx, UInt_t uCrobIdx, UInt_t uFebIdx)
UInt_t ChannelToFiber(UInt_t uChan)
const UInt_t kuChannelToPixelMap[kuNbChanPerAsic]
Map from channel index to Hodoscope Fiber.
const Int_t kiCrobMapElinkFebIdx[kuNbElinksPerCrob]
Map from eLink index to ASIC index within CROB ( 0 to kuNbFebsPerCrob * kuNbAsicPerFeb )
Bool_t GetModuleInvertX(UInt_t uModuleIdx)
Double_t GetFebAdcThrGain(UInt_t uDpbIdx, UInt_t uCrobIdx, UInt_t uFebIdx)
Hash for CbmL1LinkKey.