Additional protection for the raw-data reading. Getter to the raw-data payload (Chris...
[u/mrichter/AliRoot.git] / MUON / AliMUONRawStreamTracker.h
1 #ifndef ALIMUONRAWSTREAMTRACKER_H
2 #define ALIMUONRAWSTREAMTRACKER_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /*$Id$*/
7
8 /// \ingroup base
9 /// \class AliMUONRawStreamTracker
10 /// \brief Class for reading MUON raw digits
11 ///
12 //  Author: Christian Finck
13
14 #include <TObject.h>
15 #include "AliMUONPayloadTracker.h"
16
17 class AliRawReader;
18 class AliMUONDDLTracker;
19
20
21 class AliMUONRawStreamTracker: public TObject {
22   public :
23     AliMUONRawStreamTracker();
24     AliMUONRawStreamTracker(AliRawReader* rawReader);
25     virtual ~AliMUONRawStreamTracker();
26
27     virtual Bool_t   Next();
28     virtual Bool_t   NextDDL();
29
30     /// Return maximum number of DDL in DATE file
31     Int_t GetMaxDDL()   const {return fMaxDDL;}
32     /// Return maximum number of block per DDL in DATE file
33     Int_t GetMaxBlock() const {return  fPayload->GetMaxBlock();}
34     /// Return maximum number of Dsp per block in DATE file
35     Int_t GetMaxDsp()   const {return  fPayload->GetMaxDsp();}
36     /// Return maximum number of Buspatch per Dsp in DATE file
37     Int_t GetMaxBus()   const {return  fPayload->GetMaxBus();}
38
39     // check input before assigment
40     void SetMaxDDL(Int_t ddl);
41     void SetMaxBlock(Int_t blk);
42
43     /// Set maximum number of Dsp per block in DATE file
44     /// does not check, done via BusPatchManager
45     void SetMaxDsp(Int_t dsp) {fPayload->SetMaxDsp(dsp);}
46     /// Set maximum number of Buspatch per Dsp in DATE file
47     /// does not check, done via BusPatchManager
48     void SetMaxBus(Int_t bus) {fPayload->SetMaxBus(bus);}
49
50     /// Set object for reading the raw data
51     void SetReader(AliRawReader* rawReader) {fRawReader = rawReader;}
52
53     /// Return pointer for DDL
54     AliMUONDDLTracker*      GetDDLTracker() const {return fPayload->GetDDLTracker();}
55
56     /// Return pointer for payload
57     AliMUONPayloadTracker*  GetPayLoad()    const {return fPayload;}
58
59     /// Return number of DDL
60     Int_t                   GetDDL()        const {return fDDL - 1;}
61
62   private :
63     /// Not implemented
64     AliMUONRawStreamTracker(const AliMUONRawStreamTracker& stream);
65     /// Not implemented
66     AliMUONRawStreamTracker& operator = (const AliMUONRawStreamTracker& stream);
67
68     AliRawReader*    fRawReader;    ///< object for reading the raw data
69  
70     Int_t  fDDL;          ///< number of DDL
71     Int_t  fBusPatchId;   ///< entry of buspatch structure
72     Int_t  fDspId;        ///< entry of Dsp header
73     Int_t  fBlkId;        ///< entry of Block header
74
75     Bool_t fNextDDL;      ///< flag for next DDL to be read
76
77     Int_t  fMaxDDL;       ///< maximum number of DDL in DATE file
78
79     AliMUONPayloadTracker* fPayload; ///< pointer to payload decoder
80
81     ClassDef(AliMUONRawStreamTracker, 2)    // base class for reading MUON raw digits
82 };
83
84 #endif