ROOT logo
#ifndef ALITOFFEEREADER_H
#define ALITOFFEEREADER_H

/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
 * See cxx source for full Copyright notice                               */

///////////////////////////////////////////////////////////////
//                                                           //
//   This class provides the TOF FEE reader.                 //
//                                                           //
///////////////////////////////////////////////////////////////

/* 
 * author: Roberto Preghenella (R+), Roberto.Preghenella@bo.infn.it
 */

#include "TObject.h"
//#include "AliTOFGeometry.h"

class AliTOFFEEConfig;
class AliTOFFEElightConfig;

class AliTOFFEEReader :
public TObject 
{

 public:

  AliTOFFEEReader(); // default constructor
  AliTOFFEEReader(const AliTOFFEEReader &source); // copy constructor
  AliTOFFEEReader &operator=(const AliTOFFEEReader &source); // operator =
  virtual ~AliTOFFEEReader(); // default destructor

  /* getters */
  static Int_t GetNumberOfDDLs() {return fgkNumberOfDDLs;}; // get number of DDLs
  static Int_t GetNumberOfTRMs() {return fgkNumberOfTRMs;}; // get number of TRMs
  static Int_t GetNumberOfChains() {return fgkNumberOfChains;}; // get number of chains
  static Int_t GetNumberOfTDCs() {return fgkNumberOfTDCs;}; // get number of TDCs
  static Int_t GetNumberOfChannels() {return fgkNumberOfChannels;}; // get number of channels
  static Int_t GetNumberOfIndexes() {return fgkNumberOfIndexes;}; // get number of indexes
  static Int_t GetNumberOfIndexesEO() {return fgkNumberOfIndexesEO;}; // get number of indexes EO
  AliTOFFEEConfig *GetFEEConfig() const {return fFEEConfig;}; // get FEE config
  AliTOFFEElightConfig *GetFEElightConfig() const {return fFEElightConfig;}; // get FEElight config
  Bool_t GetChannelEnabled(Int_t iIndex) const {return iIndex < GetNumberOfIndexes() ? fChannelEnabled[iIndex] : kFALSE;}; // get channel enabled
  Int_t GetMatchingWindow(Int_t iIndex) const {return iIndex < GetNumberOfIndexes() ? fMatchingWindow[iIndex] : 0;}; // get matching window
  Int_t GetLatencyWindow(Int_t iIndex) const {return iIndex < GetNumberOfIndexes() ? fLatencyWindow[iIndex] : 0;}; // get latency window
  UInt_t GetTriggerMask(Int_t iddl) const {return iddl < GetNumberOfDDLs() ? fTriggerMask[iddl] : 0;}; // get trigger mask
  UInt_t *GetTriggerMaskArray() {return fTriggerMask;}; // get trigger mask array

  /* setters */
  
  /* methods */

  /* TOFFEE methods */
  void LoadFEEConfig(const Char_t *FileName) const; // load FEE config
  void DumpFEEConfig(); // dump FEE config
  Int_t ParseFEEConfig(); // parse FEE config

  /* TOFFEElight methods */
  void LoadFEElightConfig(const Char_t *FileName) const; // load FEElight config
  void CreateFEElightConfig(const Char_t *filename); // create FEElight config
  Int_t ParseFEElightConfig(); // parse FEElight config

  void ResetChannelEnabledArray(); // reset channel enabled array
  void ResetTriggerMaskArray(); // reset trigger mask array
  void Reset(); // reset channel enabled array
  Bool_t IsChannelEnabled(Int_t iIndex) const {return GetChannelEnabled(iIndex);}; // is channel enabled
  
 private:

  /* TOFFEE */
  Bool_t IsChannelEnabled(Int_t iDDL, Int_t iTRM, Int_t iChain, Int_t iTDC, Int_t iChannel) const; // is channel enabled (from TOFFEE)
  Int_t GetMatchingWindow(Int_t iDDL, Int_t iTRM, Int_t iChain, Int_t iTDC, Int_t iChannel) const; // get matching window (from TOFFEE)

  static const Int_t fgkNumberOfDDLs = 72; // number of DDLs
  static const Int_t fgkNumberOfTRMs = 10; // number of TRMs
  static const Int_t fgkNumberOfChains = 2; // number of chains
  static const Int_t fgkNumberOfTDCs = 15; // number of TDCs
  static const Int_t fgkNumberOfChannels = 8; // number of channels
  static const Int_t fgkNumberOfIndexes = 157248; // number of indexes
  static const Int_t fgkNumberOfIndexesEO = 172800; // number of indexes EO

  AliTOFFEEConfig *fFEEConfig; // FEE config
  AliTOFFEElightConfig *fFEElightConfig; // FEElight config
  Bool_t fChannelEnabled[fgkNumberOfIndexes]; // channel enabled
  Int_t fMatchingWindow[fgkNumberOfIndexes]; // matching window
  Int_t fLatencyWindow[fgkNumberOfIndexes]; // matching window

  UInt_t fTriggerMask[fgkNumberOfDDLs]; // trigger mask

  ClassDef(AliTOFFEEReader, 2);

};

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