Fixes for Coverity warnings (M. van Leeuwen)
[u/mrichter/AliRoot.git] / ITS / AliITSFOSignalsSPD.cxx
CommitLineData
ad7f2bfa 1/////////////////////////////////////////////////////////////////////
2// Author: Henrik Tydesjo //
3// //
4// This class is used to store information on generated Fast-OR //
5// signals. 1200 bits, one per pixel chip. //
6// //
7/////////////////////////////////////////////////////////////////////
8
9#include "AliITSFOSignalsSPD.h"
10
11ClassImp(AliITSFOSignalsSPD)
12
13AliITSFOSignalsSPD::AliITSFOSignalsSPD() :
14 TObject(), fSignals(1200)
15{
16 // default constructor
17}
18//______________________________________________________________________
19AliITSFOSignalsSPD::~AliITSFOSignalsSPD() {}
20//______________________________________________________________________
21AliITSFOSignalsSPD::AliITSFOSignalsSPD(const AliITSFOSignalsSPD& fo):
22 TObject(), fSignals(fo.fSignals)
23{
24 // copy constructor
25}
26//______________________________________________________________________
27AliITSFOSignalsSPD& AliITSFOSignalsSPD::operator=(const AliITSFOSignalsSPD& fo) {
28 // assignment operator
29 if (this!=&fo) {
30 fSignals = fo.fSignals;
31 }
32 return *this;
33}
34//______________________________________________________________________
35void AliITSFOSignalsSPD::SetSignal(UInt_t eq, UInt_t hs, UInt_t chip, Bool_t setVal) {
36 // Set 0 or 1 for a specific chip
37 fSignals.SetBitNumber(GetChipKey(eq,hs,chip),setVal);
38}
39//______________________________________________________________________
40Bool_t AliITSFOSignalsSPD::GetSignal(UInt_t eq, UInt_t hs, UInt_t chip) const {
41 // check if a specific chip has a signal
42 return fSignals.TestBitNumber(GetChipKey(eq,hs,chip));
43}
44//______________________________________________________________________
45Bool_t AliITSFOSignalsSPD::GetNextSignal(Int_t& eq, Int_t& hs, Int_t& chip) const {
46 // Returns true if a signal was found (start looking after the bit number
47 // corresponding to the input parameters eq,hs,chip).
48 // If either of eq,hs,chip < 0 , start from beginning of TBits array.
49 // See example of usage in DumpSignals method.
50 UInt_t searchIndex;
51 if (eq<0 || hs<0 || chip<0) searchIndex = 0;
52 else searchIndex = GetChipKey(eq, hs, chip) + 1;
53 UInt_t nextIndex = fSignals.FirstSetBit(searchIndex);
54 if (nextIndex==1200) return kFALSE;
55 GetChipFromKey(nextIndex, eq, hs, chip);
56 return kTRUE;
57}
58//__________________________________________________________________________________
59void AliITSFOSignalsSPD::DumpSignals() {
60 // print a list of the chips which have a signal
61 printf("These chips (given in eq,hs,chip) have a signal:\n");
62 UInt_t nrSignals=0;
63 Int_t eq = -1;
64 Int_t hs = -1;
65 Int_t chip = -1;
66 while (GetNextSignal(eq,hs,chip)) {
67 printf("%d,%d,%d\n",eq,hs,chip);
68 nrSignals++;
69 }
70 printf("In total %d signals.\n",nrSignals);
71}
72//______________________________________________________________________
73UInt_t AliITSFOSignalsSPD::GetChipKey(Int_t eq, Int_t hs, Int_t chip) const {
74 // translates eq,hs,chip numbers into one integer key (0-1199)
75 if (eq>=20 || eq<0 || hs>=6 || hs<0 || chip>=10 || chip<0) {
76 Error("AliITSFOSignalsSPD::GetChipKey", "eq,hs,chip = %d,%d,%d out of range",eq,hs,chip);
77 return 0;
78 }
79 return eq*60 + hs*10 + chip;
80}
81//__________________________________________________________________________________
82void AliITSFOSignalsSPD::GetChipFromKey(UInt_t key, Int_t& eq, Int_t& hs, Int_t& chip) const {
83 // translates a chip key back into eq,hs,chip numbers
84 if (key>=1200) {
85 Error("AliITSFOSignalsSPD::GetChipFromKey", "key = %d out of range", key);
86 return;
87 }
88 eq = key/60;
89 hs = (key%60)/10;
90 chip = key%10;
91}