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

/*$Id$*/

/// \ingroup raw
/// \class AliMUONDarcHeader
/// \brief MUON Darc header for Trigger
///
//  Author Christian Finck

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

class AliMUONRegHeader;

class AliMUONDarcHeader : public TObject {
 
public:
   AliMUONDarcHeader();
   AliMUONDarcHeader(TRootIOCtor* dummy);
   AliMUONDarcHeader(const AliMUONDarcHeader& event);
   AliMUONDarcHeader& operator=(const AliMUONDarcHeader& event);

   virtual ~AliMUONDarcHeader();


            /// Return first word
   UInt_t   GetWord()               const {return fWord;}
            /// Return global input
   UInt_t   GetGlobalInput(Int_t n) const {return fGlobalInput[n];}
            /// Return global output
   UChar_t  GetGlobalOutput()       const {return (fGlobalOutput & 0xFF);}
            /// Return global config  
   UShort_t GetGlobalConfig()       const {return ((fGlobalOutput >> 16) & 0xFFFF);}

   //MBZ:1, phys trig:1, type:3, ,SerialNb:4,Version:8,VME trig:1, 
   //GlobalFlag:1, CTP trig:1, DAQ:1, Reg pattern:8;

            /// Return event type
   //Bool_t  GetEventType()  const {return (fWord &  0x40000000);}
   Bool_t  GetEventType() const;
            /// Return Darc type
   UChar_t GetDarcType()   const {return (UChar_t)(fWord >> 24) &  0x7;}
            /// Return serial number
   UChar_t GetSerialNb()   const {return (UChar_t)(fWord >> 20) &  0xF;}
            /// Return version
   UChar_t GetVersion()    const {return (UChar_t)(fWord >> 12) &  0xFF;}
            /// Return VME trig
   Bool_t  GetVMETrig()    const {return (fWord &  0x800);}
            /// Return global flag
   Bool_t  GetGlobalFlag() const {return (fWord &  0x400);}
            /// Return CPT trigger
   Bool_t  GetCTPTrig()    const {return (fWord &  0x200);}
            /// Return DAQ flag
   Bool_t  GetDAQFlag()    const {return (fWord &  0x100);}
            /// Return reg pattern
   UChar_t GetRegPattern() const {return (UChar_t)(fWord &  0xFF);}

           /// Set first word
   void    SetWord(UInt_t w) {fWord = w;}
           /// Set global input
   void    SetGlobalInput(UInt_t in, Int_t n) {fGlobalInput[n] = in;}
           /// Set global output
   void    SetGlobalOutput(Int_t out) {fGlobalOutput = out;}

            /// Return darc header length
   Int_t   GetDarcHeaderLength()   const {return fgkDarcHeaderLength;}
            /// Return global header length
   Int_t   GetGlobalHeaderLength() const {return fgkGlobalHeaderLength;}

            /// Return header
   UInt_t* GetHeader() {return &fWord;}
            /// Return global input
   UInt_t* GetGlobalInput()    {return &fGlobalInput[0];}

  // DARC get methods
            /// Return DARC L0 received and used
   UInt_t  GetDarcL0R()     const {return fDarcL0R;}
            /// Return DARC L1 physics
   UInt_t  GetDarcL1P()     const {return fDarcL1P;}
            /// Return DARC L1 software
   UInt_t  GetDarcL1S()     const {return fDarcL1S;}
            /// Return DARC L2 accept
   UInt_t  GetDarcL2A()     const {return fDarcL2A;}
            /// Return DARC L2 reject
   UInt_t  GetDarcL2R()     const {return fDarcL2R;}
            /// Return DARC clock
   UInt_t  GetDarcClock()   const {return fDarcClk;}
            /// Return DARC hold (dead time)
   UInt_t  GetDarcHold()    const {return fDarcHold;}
   
   // don't use setting methods but memcpy
            /// Return global L0
   UInt_t* GetGlobalScalers()  {return &fGlobalL0;}
            /// Return DARC L0 received and used
   UInt_t* GetDarcScalers()    {return &fDarcL0R;} 

   // global get methods
            /// Return global L0
   UInt_t  GetGlobalL0()      const {return fGlobalL0;}
            /// Return global clock
   UInt_t  GetGlobalClock()   const {return fGlobalClk;}
            /// Return global scaler
   const UInt_t* GetGlobalScaler()  const {return fGlobalScaler;}
            /// Return global hold (dead time)
   UInt_t  GetGlobalHold()    const {return fGlobalHold;}
            /// Return global spare
   UInt_t  GetGlobalSpare()   const {return fGlobalSpare;}

            /// Return length of global scaler in word
   Int_t GetGlobalScalerLength() const {return fgkGlobalScalerLength;}
            /// Return length of DARC scaler in word
   Int_t GetDarcScalerLength()   const {return fgkDarcScalerLength;} 

            /// Return end of darc info word
   UInt_t GetEndOfDarc()     const {return fgkEndOfDarc;} 
            /// Return end of global info word
   UInt_t GetEndOfGlobal()   const {return fgkEndOfGlobal;} 

           /// Return default type for DARC def.
   UInt_t GetDarcDefaultType()   const {return fgkDarcDefaultType;} 
          /// Return default type for DARC def.
   UInt_t GetDarcVadohrType()   const {return fgkDarcVadorhType;} 

   // set random numbers to fill variable
   void SetScalersNumbers();

   /// get TClonesArray
   TClonesArray*  GetRegHeaderArray()  const {return fRegHeaderArray;}

   /// get entries
   Int_t GetRegHeaderEntries()  const {return fRegHeaderArray->GetEntriesFast();}

   /// get entry
   AliMUONRegHeader* GetRegHeaderEntry(Int_t i) const  {
     return (AliMUONRegHeader*)fRegHeaderArray->At(i);}

   // clear
   void Clear(Option_t* opt);

 private:

   UInt_t    fWord;              ///< first word
   UInt_t    fGlobalInput[4];    ///< global input
   Int_t     fGlobalOutput;      ///< global ouput

   static const Int_t fgkDarcHeaderLength;   ///< darc header length
   static const Int_t fgkGlobalHeaderLength; ///< global header length


 // global card scalers   
   UInt_t     fGlobalL0;         ///< global L0
   UInt_t     fGlobalClk;        ///< global clock
   UInt_t     fGlobalScaler[6];  ///< global ouput
   UInt_t     fGlobalHold;       ///< global hold (dead time)
   UInt_t     fGlobalSpare;      ///< global spare
   static const Int_t      fgkGlobalScalerLength;  ///< length of global scaler in word

   // DARC Scalers
   UInt_t     fDarcL0R;       ///< DARC L0 received and used
   UInt_t     fDarcL1P;       ///< DARC L1 physics
   UInt_t     fDarcL1S;       ///< DARC L1 software
   UInt_t     fDarcL2A;       ///< DARC L2 accept
   UInt_t     fDarcL2R;       ///< DARC L2 reject
   UInt_t     fDarcClk;       ///< DARC clock
   UInt_t     fDarcHold;      ///< DARC hold (dead time)
   UInt_t     fDarcSpare;     ///< DARC Empty slot (for the moment)

   static const Int_t      fgkDarcScalerLength;  ///< length of DARC scaler in word

   static const UInt_t     fgkEndOfDarc;         ///< end of darc info word
   static const UInt_t     fgkEndOfGlobal;       ///< end of global info word

   static const UInt_t     fgkDarcDefaultType;   ///< default type for DARC def.
   static const UInt_t     fgkDarcVadorhType;    ///< default type for DARC vadorh


   TClonesArray* fRegHeaderArray; ///< container for regional header

   ClassDef(AliMUONDarcHeader,2)  // MUON DDL Trigger
};
#endif
 AliMUONDarcHeader.h:1
 AliMUONDarcHeader.h:2
 AliMUONDarcHeader.h:3
 AliMUONDarcHeader.h:4
 AliMUONDarcHeader.h:5
 AliMUONDarcHeader.h:6
 AliMUONDarcHeader.h:7
 AliMUONDarcHeader.h:8
 AliMUONDarcHeader.h:9
 AliMUONDarcHeader.h:10
 AliMUONDarcHeader.h:11
 AliMUONDarcHeader.h:12
 AliMUONDarcHeader.h:13
 AliMUONDarcHeader.h:14
 AliMUONDarcHeader.h:15
 AliMUONDarcHeader.h:16
 AliMUONDarcHeader.h:17
 AliMUONDarcHeader.h:18
 AliMUONDarcHeader.h:19
 AliMUONDarcHeader.h:20
 AliMUONDarcHeader.h:21
 AliMUONDarcHeader.h:22
 AliMUONDarcHeader.h:23
 AliMUONDarcHeader.h:24
 AliMUONDarcHeader.h:25
 AliMUONDarcHeader.h:26
 AliMUONDarcHeader.h:27
 AliMUONDarcHeader.h:28
 AliMUONDarcHeader.h:29
 AliMUONDarcHeader.h:30
 AliMUONDarcHeader.h:31
 AliMUONDarcHeader.h:32
 AliMUONDarcHeader.h:33
 AliMUONDarcHeader.h:34
 AliMUONDarcHeader.h:35
 AliMUONDarcHeader.h:36
 AliMUONDarcHeader.h:37
 AliMUONDarcHeader.h:38
 AliMUONDarcHeader.h:39
 AliMUONDarcHeader.h:40
 AliMUONDarcHeader.h:41
 AliMUONDarcHeader.h:42
 AliMUONDarcHeader.h:43
 AliMUONDarcHeader.h:44
 AliMUONDarcHeader.h:45
 AliMUONDarcHeader.h:46
 AliMUONDarcHeader.h:47
 AliMUONDarcHeader.h:48
 AliMUONDarcHeader.h:49
 AliMUONDarcHeader.h:50
 AliMUONDarcHeader.h:51
 AliMUONDarcHeader.h:52
 AliMUONDarcHeader.h:53
 AliMUONDarcHeader.h:54
 AliMUONDarcHeader.h:55
 AliMUONDarcHeader.h:56
 AliMUONDarcHeader.h:57
 AliMUONDarcHeader.h:58
 AliMUONDarcHeader.h:59
 AliMUONDarcHeader.h:60
 AliMUONDarcHeader.h:61
 AliMUONDarcHeader.h:62
 AliMUONDarcHeader.h:63
 AliMUONDarcHeader.h:64
 AliMUONDarcHeader.h:65
 AliMUONDarcHeader.h:66
 AliMUONDarcHeader.h:67
 AliMUONDarcHeader.h:68
 AliMUONDarcHeader.h:69
 AliMUONDarcHeader.h:70
 AliMUONDarcHeader.h:71
 AliMUONDarcHeader.h:72
 AliMUONDarcHeader.h:73
 AliMUONDarcHeader.h:74
 AliMUONDarcHeader.h:75
 AliMUONDarcHeader.h:76
 AliMUONDarcHeader.h:77
 AliMUONDarcHeader.h:78
 AliMUONDarcHeader.h:79
 AliMUONDarcHeader.h:80
 AliMUONDarcHeader.h:81
 AliMUONDarcHeader.h:82
 AliMUONDarcHeader.h:83
 AliMUONDarcHeader.h:84
 AliMUONDarcHeader.h:85
 AliMUONDarcHeader.h:86
 AliMUONDarcHeader.h:87
 AliMUONDarcHeader.h:88
 AliMUONDarcHeader.h:89
 AliMUONDarcHeader.h:90
 AliMUONDarcHeader.h:91
 AliMUONDarcHeader.h:92
 AliMUONDarcHeader.h:93
 AliMUONDarcHeader.h:94
 AliMUONDarcHeader.h:95
 AliMUONDarcHeader.h:96
 AliMUONDarcHeader.h:97
 AliMUONDarcHeader.h:98
 AliMUONDarcHeader.h:99
 AliMUONDarcHeader.h:100
 AliMUONDarcHeader.h:101
 AliMUONDarcHeader.h:102
 AliMUONDarcHeader.h:103
 AliMUONDarcHeader.h:104
 AliMUONDarcHeader.h:105
 AliMUONDarcHeader.h:106
 AliMUONDarcHeader.h:107
 AliMUONDarcHeader.h:108
 AliMUONDarcHeader.h:109
 AliMUONDarcHeader.h:110
 AliMUONDarcHeader.h:111
 AliMUONDarcHeader.h:112
 AliMUONDarcHeader.h:113
 AliMUONDarcHeader.h:114
 AliMUONDarcHeader.h:115
 AliMUONDarcHeader.h:116
 AliMUONDarcHeader.h:117
 AliMUONDarcHeader.h:118
 AliMUONDarcHeader.h:119
 AliMUONDarcHeader.h:120
 AliMUONDarcHeader.h:121
 AliMUONDarcHeader.h:122
 AliMUONDarcHeader.h:123
 AliMUONDarcHeader.h:124
 AliMUONDarcHeader.h:125
 AliMUONDarcHeader.h:126
 AliMUONDarcHeader.h:127
 AliMUONDarcHeader.h:128
 AliMUONDarcHeader.h:129
 AliMUONDarcHeader.h:130
 AliMUONDarcHeader.h:131
 AliMUONDarcHeader.h:132
 AliMUONDarcHeader.h:133
 AliMUONDarcHeader.h:134
 AliMUONDarcHeader.h:135
 AliMUONDarcHeader.h:136
 AliMUONDarcHeader.h:137
 AliMUONDarcHeader.h:138
 AliMUONDarcHeader.h:139
 AliMUONDarcHeader.h:140
 AliMUONDarcHeader.h:141
 AliMUONDarcHeader.h:142
 AliMUONDarcHeader.h:143
 AliMUONDarcHeader.h:144
 AliMUONDarcHeader.h:145
 AliMUONDarcHeader.h:146
 AliMUONDarcHeader.h:147
 AliMUONDarcHeader.h:148
 AliMUONDarcHeader.h:149
 AliMUONDarcHeader.h:150
 AliMUONDarcHeader.h:151
 AliMUONDarcHeader.h:152
 AliMUONDarcHeader.h:153
 AliMUONDarcHeader.h:154
 AliMUONDarcHeader.h:155
 AliMUONDarcHeader.h:156
 AliMUONDarcHeader.h:157
 AliMUONDarcHeader.h:158
 AliMUONDarcHeader.h:159
 AliMUONDarcHeader.h:160
 AliMUONDarcHeader.h:161
 AliMUONDarcHeader.h:162
 AliMUONDarcHeader.h:163
 AliMUONDarcHeader.h:164
 AliMUONDarcHeader.h:165
 AliMUONDarcHeader.h:166
 AliMUONDarcHeader.h:167
 AliMUONDarcHeader.h:168
 AliMUONDarcHeader.h:169
 AliMUONDarcHeader.h:170
 AliMUONDarcHeader.h:171
 AliMUONDarcHeader.h:172
 AliMUONDarcHeader.h:173
 AliMUONDarcHeader.h:174
 AliMUONDarcHeader.h:175
 AliMUONDarcHeader.h:176
 AliMUONDarcHeader.h:177
 AliMUONDarcHeader.h:178
 AliMUONDarcHeader.h:179
 AliMUONDarcHeader.h:180
 AliMUONDarcHeader.h:181
 AliMUONDarcHeader.h:182
 AliMUONDarcHeader.h:183
 AliMUONDarcHeader.h:184
 AliMUONDarcHeader.h:185