ROOT logo
#ifndef ALITRDDIGITSMANAGER_H
#define ALITRDDIGITSMANAGER_H

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

/* $Id$ */

/////////////////////////////////////////////////////////////
//  Manages the TRD digits                                 //
/////////////////////////////////////////////////////////////

#include <TObject.h>

class TFile;
class TTree;
class TBranch;  
class AliTRDdigit;
class AliTRDSignalIndex;
class AliTRDarrayADC;  
class AliTRDarraySignal; 
class AliTRDarrayDictionary;
class AliTRDdigitsParam;

class AliTRDdigitsManager : public TObject {

 public:

  enum { kNDict = 3 };

  AliTRDdigitsManager(Bool_t rawRec = kFALSE);  //if true digitsmanager uses only one entry in the TObjectArrays
  AliTRDdigitsManager(const AliTRDdigitsManager &m);
  virtual ~AliTRDdigitsManager();
  AliTRDdigitsManager &operator=(const AliTRDdigitsManager &m);

  virtual void                Copy(TObject &m) const;

  virtual void                CreateArrays();
  void                        ClearArrays(Int_t det);
  virtual Bool_t              BuildIndexes(Int_t det);

  virtual Bool_t              MakeBranch(TTree * const tree);
  virtual Bool_t              ReadDigits(TTree * consttree);
  virtual Bool_t              WriteDigits();

  virtual void                SetEvent(Int_t evt)             { fEvent           = evt;  };
  virtual void                SetSDigits(Int_t v = 1)         { fHasSDigits      = v;    };
  virtual void                SetUseDictionaries(Bool_t kval) { fUseDictionaries = kval; };

  virtual Bool_t              UsesDictionaries() const        { return fUseDictionaries; };
  virtual Bool_t              HasSDigits() const              { return fHasSDigits;      };
  static  Int_t               NDict()                         { return fgkNDict;         }; 

  virtual TObjArray          *GetDigits() const               { return fDigits;          };  
  virtual TObjArray          *GetDictionary(Int_t i) const    { return fDict[i];         }; 

  AliTRDdigit                *GetDigit(Int_t row, Int_t col, Int_t time, Int_t det) const;
  Int_t                       GetTrack(Int_t track, Int_t row, Int_t col, Int_t time, Int_t det) const;
  
  AliTRDarrayADC             *GetDigits(Int_t det)  const;
  AliTRDarraySignal          *GetSDigits(Int_t det) const;    
  AliTRDarrayDictionary      *GetDictionary(Int_t det, Int_t i) const;  
  AliTRDdigitsParam          *GetDigitsParam() const          { return fDigitsParam;     };
  AliTRDSignalIndex          *GetIndexes(Int_t det);
  TObjArray                  *GetIndexes() const              { return fSignalIndexes;   };

  void                        RemoveDigits(Int_t det);
  void                        RemoveDictionaries(Int_t det);
  void                        RemoveIndexes(Int_t det);
  void                        ClearIndexes(Int_t det);
  
  Int_t                       GetTrack(Int_t track, const AliTRDdigit * const digit) const;
  Short_t                     GetDigitAmp(Int_t row, Int_t col, Int_t time, Int_t det) const;
  UChar_t                     GetPadStatus(Int_t row, Int_t col, Int_t time, Int_t det) const;

  Bool_t                      LoadArrayDigits();
  Bool_t                      LoadArrayDict();
  Bool_t                      LoadDigitsParam();
  Bool_t                      StoreArrayDigits();
  Bool_t                      StoreArrayDict();
  Bool_t                      StoreDigitsParam();

 protected:
  
  static const Int_t  fgkNDict;            //  Number of track dictionary arrays
  Int_t               fEvent;              //  Event number
  TTree              *fTree;               //! Tree for the digits arrays
  TObjArray          *fDigits;             //  Digits data array               
  TObjArray          *fDict[kNDict];       //  Track dictionary data array   
  Bool_t              fHasSDigits;         //  Switch for the summable digits
  TObjArray          *fSignalIndexes;      //  Provides access to the active pads and tbins
  Bool_t              fUseDictionaries;    //  Use dictionaries or not (case of real data)
  Int_t               fDets;               //  No of Detectors
  Bool_t              fRawRec;             //  Reconstruct from raw files? If its kTRUE then the TObjArrays have only one entry.
  AliTRDdigitsParam  *fDigitsParam;        //  Parameters of the digits

  ClassDef(AliTRDdigitsManager,8)          //  Manages the TRD digits

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