#include "AliITSFOSignalsSPD.h"
ClassImp(AliITSFOSignalsSPD)
AliITSFOSignalsSPD::AliITSFOSignalsSPD() :
TObject(), fSignals(1200)
{
}
AliITSFOSignalsSPD::~AliITSFOSignalsSPD() {}
AliITSFOSignalsSPD::AliITSFOSignalsSPD(const AliITSFOSignalsSPD& fo):
TObject(), fSignals(fo.fSignals)
{
}
AliITSFOSignalsSPD& AliITSFOSignalsSPD::operator=(const AliITSFOSignalsSPD& fo) {
if (this!=&fo) {
fSignals = fo.fSignals;
}
return *this;
}
void AliITSFOSignalsSPD::SetSignal(UInt_t eq, UInt_t hs, UInt_t chip, Bool_t setVal) {
fSignals.SetBitNumber(GetChipKey(eq,hs,chip),setVal);
}
Bool_t AliITSFOSignalsSPD::GetSignal(UInt_t eq, UInt_t hs, UInt_t chip) const {
return fSignals.TestBitNumber(GetChipKey(eq,hs,chip));
}
Bool_t AliITSFOSignalsSPD::GetNextSignal(Int_t& eq, Int_t& hs, Int_t& chip) const {
UInt_t searchIndex;
if (eq<0 || hs<0 || chip<0) searchIndex = 0;
else searchIndex = GetChipKey(eq, hs, chip) + 1;
UInt_t nextIndex = fSignals.FirstSetBit(searchIndex);
if (nextIndex==1200) return kFALSE;
GetChipFromKey(nextIndex, eq, hs, chip);
return kTRUE;
}
void AliITSFOSignalsSPD::DumpSignals() {
printf("These chips (given in eq,hs,chip) have a signal:\n");
UInt_t nrSignals=0;
Int_t eq = -1;
Int_t hs = -1;
Int_t chip = -1;
while (GetNextSignal(eq,hs,chip)) {
printf("%d,%d,%d\n",eq,hs,chip);
nrSignals++;
}
printf("In total %d signals.\n",nrSignals);
}
UInt_t AliITSFOSignalsSPD::GetChipKey(Int_t eq, Int_t hs, Int_t chip) const {
if (eq>=20 || eq<0 || hs>=6 || hs<0 || chip>=10 || chip<0) {
Error("AliITSFOSignalsSPD::GetChipKey", "eq,hs,chip = %d,%d,%d out of range",eq,hs,chip);
return 0;
}
return eq*60 + hs*10 + chip;
}
void AliITSFOSignalsSPD::GetChipFromKey(UInt_t key, Int_t& eq, Int_t& hs, Int_t& chip) const {
if (key>=1200) {
Error("AliITSFOSignalsSPD::GetChipFromKey", "key = %d out of range", key);
return;
}
eq = key/60;
hs = (key%60)/10;
chip = key%10;
}
AliITSFOSignalsSPD.cxx:10 AliITSFOSignalsSPD.cxx:11 AliITSFOSignalsSPD.cxx:12 AliITSFOSignalsSPD.cxx:13 AliITSFOSignalsSPD.cxx:14 AliITSFOSignalsSPD.cxx:15 AliITSFOSignalsSPD.cxx:16 AliITSFOSignalsSPD.cxx:17 AliITSFOSignalsSPD.cxx:18 AliITSFOSignalsSPD.cxx:19 AliITSFOSignalsSPD.cxx:20 AliITSFOSignalsSPD.cxx:21 AliITSFOSignalsSPD.cxx:22 AliITSFOSignalsSPD.cxx:23 AliITSFOSignalsSPD.cxx:24 AliITSFOSignalsSPD.cxx:25 AliITSFOSignalsSPD.cxx:26 AliITSFOSignalsSPD.cxx:27 AliITSFOSignalsSPD.cxx:28 AliITSFOSignalsSPD.cxx:29 AliITSFOSignalsSPD.cxx:30 AliITSFOSignalsSPD.cxx:31 AliITSFOSignalsSPD.cxx:32 AliITSFOSignalsSPD.cxx:33 AliITSFOSignalsSPD.cxx:34 AliITSFOSignalsSPD.cxx:35 AliITSFOSignalsSPD.cxx:36 AliITSFOSignalsSPD.cxx:37 AliITSFOSignalsSPD.cxx:38 AliITSFOSignalsSPD.cxx:39 AliITSFOSignalsSPD.cxx:40 AliITSFOSignalsSPD.cxx:41 AliITSFOSignalsSPD.cxx:42 AliITSFOSignalsSPD.cxx:43 AliITSFOSignalsSPD.cxx:44 AliITSFOSignalsSPD.cxx:45 AliITSFOSignalsSPD.cxx:46 AliITSFOSignalsSPD.cxx:47 AliITSFOSignalsSPD.cxx:48 AliITSFOSignalsSPD.cxx:49 AliITSFOSignalsSPD.cxx:50 AliITSFOSignalsSPD.cxx:51 AliITSFOSignalsSPD.cxx:52 AliITSFOSignalsSPD.cxx:53 AliITSFOSignalsSPD.cxx:54 AliITSFOSignalsSPD.cxx:55 AliITSFOSignalsSPD.cxx:56 AliITSFOSignalsSPD.cxx:57 AliITSFOSignalsSPD.cxx:58 AliITSFOSignalsSPD.cxx:59 AliITSFOSignalsSPD.cxx:60 AliITSFOSignalsSPD.cxx:61 AliITSFOSignalsSPD.cxx:62 AliITSFOSignalsSPD.cxx:63 AliITSFOSignalsSPD.cxx:64 AliITSFOSignalsSPD.cxx:65 AliITSFOSignalsSPD.cxx:66 AliITSFOSignalsSPD.cxx:67 AliITSFOSignalsSPD.cxx:68 AliITSFOSignalsSPD.cxx:69 AliITSFOSignalsSPD.cxx:70 AliITSFOSignalsSPD.cxx:71 AliITSFOSignalsSPD.cxx:72 AliITSFOSignalsSPD.cxx:73 AliITSFOSignalsSPD.cxx:74 AliITSFOSignalsSPD.cxx:75 AliITSFOSignalsSPD.cxx:76 AliITSFOSignalsSPD.cxx:77 AliITSFOSignalsSPD.cxx:78 AliITSFOSignalsSPD.cxx:79 AliITSFOSignalsSPD.cxx:80 AliITSFOSignalsSPD.cxx:81 AliITSFOSignalsSPD.cxx:82 AliITSFOSignalsSPD.cxx:83 AliITSFOSignalsSPD.cxx:84 AliITSFOSignalsSPD.cxx:85 AliITSFOSignalsSPD.cxx:86 AliITSFOSignalsSPD.cxx:87 AliITSFOSignalsSPD.cxx:88 AliITSFOSignalsSPD.cxx:89 AliITSFOSignalsSPD.cxx:90 AliITSFOSignalsSPD.cxx:91