Classes moved to STEERBase.
[u/mrichter/AliRoot.git] / TRD / AliTRDdigitsManager.h
1 #ifndef ALITRDDIGITSMANAGER_H
2 #define ALITRDDIGITSMANAGER_H
3
4 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                               */
6
7 /* $Id$ */
8
9 /////////////////////////////////////////////////////////////
10 //  Manages the TRD digits                                 //
11 /////////////////////////////////////////////////////////////
12
13 #include <TObject.h>
14
15 class TFile;
16 class TTree;
17
18 class AliTRDsegmentArray;
19 class AliTRDdataArrayI;
20 class AliTRDdigit;
21 class AliTRDSignalIndex;
22
23 class AliTRDdigitsManager : public TObject {
24
25  public:
26
27   enum { kNDict = 3 };
28
29   AliTRDdigitsManager();
30   AliTRDdigitsManager(const AliTRDdigitsManager &m);
31   virtual ~AliTRDdigitsManager();
32   AliTRDdigitsManager &operator=(const AliTRDdigitsManager &m);
33
34   virtual void                CreateArrays();
35   virtual void                ResetArrays();
36   virtual void                Copy(TObject &m) const;
37
38   virtual Bool_t              MakeBranch(TTree *tree);
39           
40   virtual Bool_t              ReadDigits(TTree *tree);
41   virtual Bool_t              WriteDigits();
42
43   virtual void                SetRaw();
44   virtual void                SetEvent(Int_t evt)          { fEvent   = evt; };
45   virtual void                SetSDigits(Int_t v = 1)      { fSDigits = v;   };
46
47   virtual Bool_t              IsRaw() const                { return fIsRaw;         };
48   static  Int_t               NDict()                      { return fgkNDict;       }; 
49
50   virtual AliTRDsegmentArray *GetDigits() const            { return fDigits;        };
51   virtual AliTRDsegmentArray *GetDictionary(Int_t i) const { return fDictionary[i]; };
52
53           AliTRDdigit        *GetDigit(Int_t row, Int_t col, Int_t time, Int_t det) const;
54           Int_t               GetTrack(Int_t track, Int_t row, Int_t col
55                                      , Int_t time, Int_t det) const;
56
57           AliTRDdataArrayI   *GetDigits(Int_t det) const;
58           AliTRDdataArrayI   *GetDictionary(Int_t det, Int_t i) const;
59
60           void                RemoveDigits(Int_t det);
61           void                RemoveDictionaries(Int_t det);
62           void                ClearIndexes(Int_t det);
63
64           Int_t               GetTrack(Int_t track, AliTRDdigit *Digit) const;
65           Short_t             GetDigitAmp(Int_t row, Int_t col, Int_t time, Int_t det) const;
66
67           AliTRDSignalIndex   *GetIndexes(Int_t det);
68           TObjArray           *GetIndexes() {return fSignalIndexes;};
69   virtual Bool_t              BuildIndexes(Int_t det);
70   virtual void                SetUseDictionaries(Bool_t kval) {fUseDictionaries = kval;}
71   virtual Bool_t              UsesDictionaries() const {return fUseDictionaries;}
72
73  protected:
74
75   static const Int_t  fgkNDict;            //  Number of track dictionary arrays
76
77   Int_t               fEvent;              //  Event number
78
79   TTree              *fTree;               //! Tree for the digits arrays
80
81   AliTRDsegmentArray *fDigits;             //! Digits data array
82   AliTRDsegmentArray *fDictionary[kNDict]; //! Track dictionary data array
83
84   Bool_t              fIsRaw;              //  Flag indicating raw digits
85   Bool_t              fSDigits;            //  Switch for the summable digits
86
87   TObjArray          *fSignalIndexes;      //  Provides access to the active pads and tbins
88   Bool_t              fUseDictionaries;    //  Use dictionaries or not (case of real data)
89   ClassDef(AliTRDdigitsManager,6)          //  Manages the TRD digits
90
91 };
92
93 #endif