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

/*$Id$*/

/// \ingroup raw
/// \class AliMUONBlockHeader
/// \brief MUON block (Crocus CRT)  header for tracker event
///
//  Author Christian Finck

#include <TObject.h>
#include <TClonesArray.h>

class AliMUONDspHeader;

class AliMUONBlockHeader : public TObject {

public:
   AliMUONBlockHeader();
   AliMUONBlockHeader(TRootIOCtor* dummy);
   AliMUONBlockHeader(const AliMUONBlockHeader &event);
   AliMUONBlockHeader& operator=(const AliMUONBlockHeader &event);

   virtual ~AliMUONBlockHeader();

   //
   // Block header
   //
           /// Return data key word for CRT header
   Int_t   GetDataKey()        const {return fDataKey;}
           /// Return total length of block structure (w/o padding word)
   Int_t   GetTotalLength()    const {return fTotalLength;}
           /// Return length of raw data
   Int_t   GetLength()         const {return fLength;}
           /// Return Dsp id
   Int_t   GetDspId()          const {return fDspId;}
           /// Return L0 trigger word
   Int_t   GetL0Trigger()      const {return fL0Trigger;}
           /// Return Bunch Crossing for mini-event id (see TDR chapter 8)
   Int_t   GetMiniEventId()    const {return fMiniEventId;}
           /// Return Event Id in bunch crossing
   Int_t   GetEventId1()       const {return fEventId1;}
           /// Return Event Id in orbit number
   Int_t   GetEventId2()       const {return fEventId2;}

           /// Return header length in word
   Int_t   GetHeaderLength()   const {return fgkHeaderLength;}
           /// Return default data key word for CRT header
   UInt_t  GetDefaultDataKey() const {return fgkDefaultDataKey;}
         /// Return  data key end word for CRT header
   UInt_t  GetDdlDataKey() const {return fgkDdlDataKey;}

           /// Set data key word for CRT header
   void    SetDataKey(Int_t d)     {fDataKey = d;}
           /// Set total length of block structure (w/o padding word)
   void    SetTotalLength(Int_t l) {fTotalLength = l;}
           /// Set length of raw data
   void    SetLength(Int_t l)      {fLength = l;}
           /// Set Dsp id
   void    SetDspId(Int_t d)       {fDspId = d;}  
           /// Set L0 trigger word
   void    SetL0Trigger(Int_t l)   {fL0Trigger = l;}
           /// Set Bunch Crossing for mini-event id (see TDR chapter 8)
   void    SetMiniEventId(Int_t e) {fMiniEventId = e;}
           /// Set Event Id in bunch crossing
   void    SetEventId1(Int_t e)    {fEventId1 = e;}
           /// Set Event Id in orbit number
   void    SetEventId2(Int_t e)    {fEventId2 = e;}
   
   
   /// Return header
   Int_t* GetHeader() {return &fDataKey;}

   void   AddDspHeader(const AliMUONDspHeader& dspHeader);

   /// get TClonesArray
   TClonesArray*      GetDspHeaderArray()  const {return fDspHeaderArray;}

   /// get entries
   Int_t              GetDspHeaderEntries() const {return fDspHeaderArray->GetEntriesFast();}

   /// get entry
   AliMUONDspHeader*  GetDspHeaderEntry(Int_t i) const {
     return (AliMUONDspHeader*)fDspHeaderArray->At(i);}

   // clear
   void Clear(Option_t* opt);

   // print out
   void Print(Option_t* /*opt*/) const;

 private:

   // block header
   Int_t     fDataKey;        ///< Data key word for CRT header 
   Int_t     fTotalLength;    ///< total length of block structure (w/o padding word)
   Int_t     fLength;         ///< length of raw data
   Int_t     fDspId;          ///< Dsp id
   Int_t     fL0Trigger;      ///< L0 trigger word
   Int_t     fMiniEventId;    ///< Bunch Crossing for mini-event id (see TDR chapter 8)
   Int_t     fEventId1;       ///< Event Id in bunch crossing
   Int_t     fEventId2;       ///< Event Id in orbit number


   static const Int_t  fgkHeaderLength;    ///< header length in word
   static const UInt_t fgkDefaultDataKey;  ///< default data key word for CRT header 
   static const UInt_t fgkDdlDataKey;      ///< data key end word for CRT header 

   TClonesArray*  fDspHeaderArray;  ///< array of block header

   ClassDef(AliMUONBlockHeader,3)  // MUON block header for Tracker event
};
#endif
 AliMUONBlockHeader.h:1
 AliMUONBlockHeader.h:2
 AliMUONBlockHeader.h:3
 AliMUONBlockHeader.h:4
 AliMUONBlockHeader.h:5
 AliMUONBlockHeader.h:6
 AliMUONBlockHeader.h:7
 AliMUONBlockHeader.h:8
 AliMUONBlockHeader.h:9
 AliMUONBlockHeader.h:10
 AliMUONBlockHeader.h:11
 AliMUONBlockHeader.h:12
 AliMUONBlockHeader.h:13
 AliMUONBlockHeader.h:14
 AliMUONBlockHeader.h:15
 AliMUONBlockHeader.h:16
 AliMUONBlockHeader.h:17
 AliMUONBlockHeader.h:18
 AliMUONBlockHeader.h:19
 AliMUONBlockHeader.h:20
 AliMUONBlockHeader.h:21
 AliMUONBlockHeader.h:22
 AliMUONBlockHeader.h:23
 AliMUONBlockHeader.h:24
 AliMUONBlockHeader.h:25
 AliMUONBlockHeader.h:26
 AliMUONBlockHeader.h:27
 AliMUONBlockHeader.h:28
 AliMUONBlockHeader.h:29
 AliMUONBlockHeader.h:30
 AliMUONBlockHeader.h:31
 AliMUONBlockHeader.h:32
 AliMUONBlockHeader.h:33
 AliMUONBlockHeader.h:34
 AliMUONBlockHeader.h:35
 AliMUONBlockHeader.h:36
 AliMUONBlockHeader.h:37
 AliMUONBlockHeader.h:38
 AliMUONBlockHeader.h:39
 AliMUONBlockHeader.h:40
 AliMUONBlockHeader.h:41
 AliMUONBlockHeader.h:42
 AliMUONBlockHeader.h:43
 AliMUONBlockHeader.h:44
 AliMUONBlockHeader.h:45
 AliMUONBlockHeader.h:46
 AliMUONBlockHeader.h:47
 AliMUONBlockHeader.h:48
 AliMUONBlockHeader.h:49
 AliMUONBlockHeader.h:50
 AliMUONBlockHeader.h:51
 AliMUONBlockHeader.h:52
 AliMUONBlockHeader.h:53
 AliMUONBlockHeader.h:54
 AliMUONBlockHeader.h:55
 AliMUONBlockHeader.h:56
 AliMUONBlockHeader.h:57
 AliMUONBlockHeader.h:58
 AliMUONBlockHeader.h:59
 AliMUONBlockHeader.h:60
 AliMUONBlockHeader.h:61
 AliMUONBlockHeader.h:62
 AliMUONBlockHeader.h:63
 AliMUONBlockHeader.h:64
 AliMUONBlockHeader.h:65
 AliMUONBlockHeader.h:66
 AliMUONBlockHeader.h:67
 AliMUONBlockHeader.h:68
 AliMUONBlockHeader.h:69
 AliMUONBlockHeader.h:70
 AliMUONBlockHeader.h:71
 AliMUONBlockHeader.h:72
 AliMUONBlockHeader.h:73
 AliMUONBlockHeader.h:74
 AliMUONBlockHeader.h:75
 AliMUONBlockHeader.h:76
 AliMUONBlockHeader.h:77
 AliMUONBlockHeader.h:78
 AliMUONBlockHeader.h:79
 AliMUONBlockHeader.h:80
 AliMUONBlockHeader.h:81
 AliMUONBlockHeader.h:82
 AliMUONBlockHeader.h:83
 AliMUONBlockHeader.h:84
 AliMUONBlockHeader.h:85
 AliMUONBlockHeader.h:86
 AliMUONBlockHeader.h:87
 AliMUONBlockHeader.h:88
 AliMUONBlockHeader.h:89
 AliMUONBlockHeader.h:90
 AliMUONBlockHeader.h:91
 AliMUONBlockHeader.h:92
 AliMUONBlockHeader.h:93
 AliMUONBlockHeader.h:94
 AliMUONBlockHeader.h:95
 AliMUONBlockHeader.h:96
 AliMUONBlockHeader.h:97
 AliMUONBlockHeader.h:98
 AliMUONBlockHeader.h:99
 AliMUONBlockHeader.h:100
 AliMUONBlockHeader.h:101
 AliMUONBlockHeader.h:102
 AliMUONBlockHeader.h:103
 AliMUONBlockHeader.h:104
 AliMUONBlockHeader.h:105
 AliMUONBlockHeader.h:106
 AliMUONBlockHeader.h:107
 AliMUONBlockHeader.h:108
 AliMUONBlockHeader.h:109
 AliMUONBlockHeader.h:110
 AliMUONBlockHeader.h:111
 AliMUONBlockHeader.h:112
 AliMUONBlockHeader.h:113
 AliMUONBlockHeader.h:114
 AliMUONBlockHeader.h:115
 AliMUONBlockHeader.h:116