ROOT logo
#ifndef ALIITSUSUZE02_H
#define ALIITSUSUZE02_H

#include <Riostream.h>
#include <TMatrixF.h>
#include <TH1F.h>

//*******************************************************************
//
//  Simulation of the SUZE02 readout
//  Origin: Serhiy.Senuykov@cern.ch
//  (see macros/ScanDigitsSuze02*.C for an example of use)
//
//*******************************************************************

class AliITSUSuze02{
  public:
  AliITSUSuze02(Int_t Nrows, Int_t Ncols);
  AliITSUSuze02(const AliITSUSuze02& suze);
  AliITSUSuze02 &operator=(const AliITSUSuze02& suze);
  virtual ~AliITSUSuze02();
  
  void SetEncodingWindowSize(Int_t Wrows, Int_t Wcols);
  void SetQuotas(Int_t q32, Int_t qHalfFSBB, Int_t qFSBB);
  //void InitHistos(); 
  void AddDigit(Int_t row, Int_t col);
  void Process(TH1F* OverflowCodes, TH1F* NDigitsPerEncodingWindowDist, Bool_t Verbose=kFALSE); 
  //void Process(Bool_t Verbose=kFALSE); 
       
  void GetResults();  
  Int_t GetNDigitsEncoded() {return fNDigitsEncoded;}
  Int_t GetNEncodedWindows() {return fNEncodedWindows;} 
  Int_t GetNDigitsLost() {return fNDigitsLost;}
  Int_t GetNLostWindows() {return fNLostWindows;}    
  
  Int_t GetDataSize() {return fDataSizePerChip;}  
  
  Int_t GetNWindowsPer32colsMin() {return fNWindowsPer32colsMin;}
  Int_t GetNWindowsPerHalfFSBBMin() {return fNWindowsPerHalfFSBBMin;}
  Int_t GetNWindowsPerFSBBMin() {return fNWindowsPerFSBBMin;}
  
  void ResetChip();
  
  private:         
  static const Int_t kNumberOfFSBB=3; 
  static const Int_t kNumberOfHalfFSBB=2;
  
  //matrix to be processed by Suze02   
  Int_t fNRowsChip;
  Int_t fNColsChip;
  TMatrixF* fChip; 
               
  //Suze02 parameters
  Int_t fTestColumnSize;   //Number of rows of the encoding window
  Int_t fTestRowSize;   //Number of columns of the encoding window
  
  //Suze02 quotas
  Int_t fNWindowsPer32colsMax;
  Int_t fNWindowsPerHalfFSBBMax;
  Int_t fNWindowsPerFSBBMax;
  
  //results    
  Int_t fNDigitsEncoded; 
  Int_t fNEncodedWindows;
  
  Int_t fNDigitsLost;
  Int_t fNLostWindows;
  
  //TH1F* fOverflowCodes;
  //TH1F* fNDigitsPerEncodingWindowDist;
  
  Int_t fDataSizePerChip;
  
  Int_t fNWindowsPer32colsMin;
  Int_t fNWindowsPerHalfFSBBMin;
  Int_t fNWindowsPerFSBBMin;

  ClassDef(AliITSUSuze02,1)
};

#endif
 AliITSUSuze02.h:1
 AliITSUSuze02.h:2
 AliITSUSuze02.h:3
 AliITSUSuze02.h:4
 AliITSUSuze02.h:5
 AliITSUSuze02.h:6
 AliITSUSuze02.h:7
 AliITSUSuze02.h:8
 AliITSUSuze02.h:9
 AliITSUSuze02.h:10
 AliITSUSuze02.h:11
 AliITSUSuze02.h:12
 AliITSUSuze02.h:13
 AliITSUSuze02.h:14
 AliITSUSuze02.h:15
 AliITSUSuze02.h:16
 AliITSUSuze02.h:17
 AliITSUSuze02.h:18
 AliITSUSuze02.h:19
 AliITSUSuze02.h:20
 AliITSUSuze02.h:21
 AliITSUSuze02.h:22
 AliITSUSuze02.h:23
 AliITSUSuze02.h:24
 AliITSUSuze02.h:25
 AliITSUSuze02.h:26
 AliITSUSuze02.h:27
 AliITSUSuze02.h:28
 AliITSUSuze02.h:29
 AliITSUSuze02.h:30
 AliITSUSuze02.h:31
 AliITSUSuze02.h:32
 AliITSUSuze02.h:33
 AliITSUSuze02.h:34
 AliITSUSuze02.h:35
 AliITSUSuze02.h:36
 AliITSUSuze02.h:37
 AliITSUSuze02.h:38
 AliITSUSuze02.h:39
 AliITSUSuze02.h:40
 AliITSUSuze02.h:41
 AliITSUSuze02.h:42
 AliITSUSuze02.h:43
 AliITSUSuze02.h:44
 AliITSUSuze02.h:45
 AliITSUSuze02.h:46
 AliITSUSuze02.h:47
 AliITSUSuze02.h:48
 AliITSUSuze02.h:49
 AliITSUSuze02.h:50
 AliITSUSuze02.h:51
 AliITSUSuze02.h:52
 AliITSUSuze02.h:53
 AliITSUSuze02.h:54
 AliITSUSuze02.h:55
 AliITSUSuze02.h:56
 AliITSUSuze02.h:57
 AliITSUSuze02.h:58
 AliITSUSuze02.h:59
 AliITSUSuze02.h:60
 AliITSUSuze02.h:61
 AliITSUSuze02.h:62
 AliITSUSuze02.h:63
 AliITSUSuze02.h:64
 AliITSUSuze02.h:65
 AliITSUSuze02.h:66
 AliITSUSuze02.h:67
 AliITSUSuze02.h:68
 AliITSUSuze02.h:69
 AliITSUSuze02.h:70
 AliITSUSuze02.h:71
 AliITSUSuze02.h:72
 AliITSUSuze02.h:73
 AliITSUSuze02.h:74
 AliITSUSuze02.h:75
 AliITSUSuze02.h:76
 AliITSUSuze02.h:77
 AliITSUSuze02.h:78
 AliITSUSuze02.h:79
 AliITSUSuze02.h:80
 AliITSUSuze02.h:81