Always delete TObjArrays created by TString::Tokenize (Ruben)
[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(TRootIOCtor* dummy);
24    AliMUONBlockHeader(const AliMUONBlockHeader &event);
25    AliMUONBlockHeader& operator=(const AliMUONBlockHeader &event);
26
27    virtual ~AliMUONBlockHeader();
28
29    //
30    // Block header
31    //
32            /// Return data key word for CRT header
33    Int_t   GetDataKey()        const {return fDataKey;}
34            /// Return total length of block structure (w/o padding word)
35    Int_t   GetTotalLength()    const {return fTotalLength;}
36            /// Return length of raw data
37    Int_t   GetLength()         const {return fLength;}
38            /// Return Dsp id
39    Int_t   GetDspId()          const {return fDspId;}
40            /// Return L0 trigger word
41    Int_t   GetL0Trigger()      const {return fL0Trigger;}
42            /// Return Bunch Crossing for mini-event id (see TDR chapter 8)
43    Int_t   GetMiniEventId()    const {return fMiniEventId;}
44            /// Return Event Id in bunch crossing
45    Int_t   GetEventId1()       const {return fEventId1;}
46            /// Return Event Id in orbit number
47    Int_t   GetEventId2()       const {return fEventId2;}
48
49            /// Return header length in word
50    Int_t   GetHeaderLength()   const {return fgkHeaderLength;}
51            /// Return default data key word for CRT header
52    UInt_t  GetDefaultDataKey() const {return fgkDefaultDataKey;}
53          /// Return  data key end word for CRT header
54    UInt_t  GetDdlDataKey() const {return fgkDdlDataKey;}
55
56            /// Set data key word for CRT header
57    void    SetDataKey(Int_t d)     {fDataKey = d;}
58            /// Set total length of block structure (w/o padding word)
59    void    SetTotalLength(Int_t l) {fTotalLength = l;}
60            /// Set length of raw data
61    void    SetLength(Int_t l)      {fLength = l;}
62            /// Set Dsp id
63    void    SetDspId(Int_t d)       {fDspId = d;}  
64            /// Set L0 trigger word
65    void    SetL0Trigger(Int_t l)   {fL0Trigger = l;}
66            /// Set Bunch Crossing for mini-event id (see TDR chapter 8)
67    void    SetMiniEventId(Int_t e) {fMiniEventId = e;}
68            /// Set Event Id in bunch crossing
69    void    SetEventId1(Int_t e)    {fEventId1 = e;}
70            /// Set Event Id in orbit number
71    void    SetEventId2(Int_t e)    {fEventId2 = e;}
72    
73    
74    /// Return header
75    Int_t* GetHeader() {return &fDataKey;}
76
77    void   AddDspHeader(const AliMUONDspHeader& dspHeader);
78
79    /// get TClonesArray
80    TClonesArray*      GetDspHeaderArray()  const {return fDspHeaderArray;}
81
82    /// get entries
83    Int_t              GetDspHeaderEntries() const {return fDspHeaderArray->GetEntriesFast();}
84
85    /// get entry
86    AliMUONDspHeader*  GetDspHeaderEntry(Int_t i) const {
87      return (AliMUONDspHeader*)fDspHeaderArray->At(i);}
88
89    // clear
90    void Clear(Option_t* opt);
91
92    // print out
93    void Print(Option_t* /*opt*/) const;
94
95  private:
96
97    // block header
98    Int_t     fDataKey;        ///< Data key word for CRT header 
99    Int_t     fTotalLength;    ///< total length of block structure (w/o padding word)
100    Int_t     fLength;         ///< length of raw data
101    Int_t     fDspId;          ///< Dsp id
102    Int_t     fL0Trigger;      ///< L0 trigger word
103    Int_t     fMiniEventId;    ///< Bunch Crossing for mini-event id (see TDR chapter 8)
104    Int_t     fEventId1;       ///< Event Id in bunch crossing
105    Int_t     fEventId2;       ///< Event Id in orbit number
106
107
108    static const Int_t  fgkHeaderLength;    ///< header length in word
109    static const UInt_t fgkDefaultDataKey;  ///< default data key word for CRT header 
110    static const UInt_t fgkDdlDataKey;      ///< data key end word for CRT header 
111
112    TClonesArray*  fDspHeaderArray;  ///< array of block header
113
114    ClassDef(AliMUONBlockHeader,3)  // MUON block header for Tracker event
115 };
116 #endif