Fixing bug in setting scaler events for trigger
[u/mrichter/AliRoot.git] / MUON / AliMUONBlockHeader.h
1 #ifndef ALIMUONBLOCKHEADER_H
2 #define ALIMUONBLOCKHEADER_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 raw
9 /// \class AliMUONBlockHeader
10 /// \brief MUON block (Crocus CRT)  header for tracker event
11 ///
12 /// \author Christian Finck
13
14 #include <TObject.h>
15 #include <TClonesArray.h>
16
17 class AliMUONDspHeader;
18
19 class AliMUONBlockHeader : public TObject {
20
21 public:
22    AliMUONBlockHeader();
23    AliMUONBlockHeader(const AliMUONBlockHeader &event);
24    AliMUONBlockHeader& operator=(const AliMUONBlockHeader &event);
25
26    virtual ~AliMUONBlockHeader();
27
28    // Block header
29    Int_t   GetDataKey()        const {return fDataKey;}
30    Int_t   GetTotalLength()    const {return fTotalLength;}
31    Int_t   GetLength()         const {return fLength;}
32    Int_t   GetDspId()          const {return fDspId;}
33    Int_t   GetL0Trigger()      const {return fL0Trigger;}
34    Int_t   GetMiniEventId()    const {return fMiniEventId;}
35    Int_t   GetEventId1()       const {return fEventId1;}
36    Int_t   GetEventId2()       const {return fEventId2;}
37
38    Int_t   GetHeaderLength()   const {return fgkHeaderLength;}
39    UInt_t  GetDefaultDataKey() const {return fgkDefaultDataKey;}
40
41    void    SetDataKey(Int_t d)     {fDataKey = d;}
42    void    SetTotalLength(Int_t l) {fTotalLength = l;}
43    void    SetLength(Int_t l)      {fLength = l;}
44    void    SetDspId(Int_t d)       {fDspId = d;}  
45    void    SetL0Trigger(Int_t l)   {fL0Trigger = l;}
46    void    SetMiniEventId(Int_t e) {fMiniEventId = e;}
47    void    SetEventId1(Int_t e)    {fEventId1 = e;}
48    void    SetEventId2(Int_t e)    {fEventId2 = e;}
49
50    Int_t* GetHeader() {return &fDataKey;}
51
52    void   AddDspHeader(const AliMUONDspHeader& dspHeader);
53
54    // get TClonesArray
55    TClonesArray*      GetDspHeaderArray()  const {return fDspHeaderArray;}
56
57    // get entries
58    Int_t              GetDspHeaderEntries() const {return fDspHeaderArray->GetEntriesFast();}
59
60    // get entry
61    AliMUONDspHeader*  GetDspHeaderEntry(Int_t i) const {
62      return (AliMUONDspHeader*)fDspHeaderArray->At(i);}
63
64    // clear
65    void Clear(Option_t* opt);
66
67  private:
68
69    // block header
70    Int_t     fDataKey;        ///< Data key word for CRT header 
71    Int_t     fTotalLength;    ///< total length of block structure (w/o padding word)
72    Int_t     fLength;         ///< length of raw data
73    Int_t     fDspId;          ///< Dsp id
74    Int_t     fL0Trigger;      ///< L0 trigger word
75    Int_t     fMiniEventId;    ///< Bunch Crossing for mini-event id (see TDR chapter 8)
76    Int_t     fEventId1;       ///< Event Id in bunch crossing
77    Int_t     fEventId2;       ///< Event Id in orbit number
78
79
80    static const Int_t fgkHeaderLength;   ///< header length in word
81    static const UInt_t fgkDefaultDataKey; ///< default data key word for CRT header 
82
83    TClonesArray*  fDspHeaderArray;  ///< array of block header
84
85    ClassDef(AliMUONBlockHeader,2)  // MUON block header for Tracker event
86 };
87 #endif