ROOT logo
/////////////////////////////////////////////////////////////////////
// Author: Henrik Tydesjo                                          //
//                                                                 //
// This class is used to store information on generated Fast-OR    //
// signals. 1200 bits, one per pixel chip.                         //
//                                                                 //
/////////////////////////////////////////////////////////////////////

#include "AliITSFOSignalsSPD.h"

ClassImp(AliITSFOSignalsSPD)

AliITSFOSignalsSPD::AliITSFOSignalsSPD() :
  TObject(), fSignals(1200)
{
  // default constructor
}
//______________________________________________________________________
AliITSFOSignalsSPD::~AliITSFOSignalsSPD() {}
//______________________________________________________________________
AliITSFOSignalsSPD::AliITSFOSignalsSPD(const AliITSFOSignalsSPD& fo):
  TObject(), fSignals(fo.fSignals)
{
  // copy constructor
}
//______________________________________________________________________
AliITSFOSignalsSPD& AliITSFOSignalsSPD::operator=(const AliITSFOSignalsSPD& fo) {
  // assignment operator
  if (this!=&fo) {
    fSignals = fo.fSignals;
  }
  return *this;
}
//______________________________________________________________________
void AliITSFOSignalsSPD::SetSignal(UInt_t eq, UInt_t hs, UInt_t chip, Bool_t setVal) {
  // Set 0 or 1 for a specific chip
  fSignals.SetBitNumber(GetChipKey(eq,hs,chip),setVal);
}
//______________________________________________________________________
Bool_t AliITSFOSignalsSPD::GetSignal(UInt_t eq, UInt_t hs, UInt_t chip) const {
  // check if a specific chip has a signal
  return fSignals.TestBitNumber(GetChipKey(eq,hs,chip));
}
//______________________________________________________________________
Bool_t AliITSFOSignalsSPD::GetNextSignal(Int_t& eq, Int_t& hs, Int_t& chip) const {
  // Returns true if a signal was found (start looking after the bit number
  // corresponding to the input parameters eq,hs,chip).
  // If either of eq,hs,chip < 0 , start from beginning of TBits array.
  // See example of usage in DumpSignals method.
  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() {
  // print a list of the chips which have a signal
  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 {
  // translates eq,hs,chip numbers into one integer key (0-1199)
  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 {
  // translates a chip key back into eq,hs,chip numbers
  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:1
 AliITSFOSignalsSPD.cxx:2
 AliITSFOSignalsSPD.cxx:3
 AliITSFOSignalsSPD.cxx:4
 AliITSFOSignalsSPD.cxx:5
 AliITSFOSignalsSPD.cxx:6
 AliITSFOSignalsSPD.cxx:7
 AliITSFOSignalsSPD.cxx:8
 AliITSFOSignalsSPD.cxx:9
 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