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

///////////////////////////////////////////////////////////////////////////////
///
/// This is a class for reading the CTP (trigger) DDL raw data
/// The format of the raw data is taken form the trigger TDR
///
///////////////////////////////////////////////////////////////////////////////

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

class AliRawReader;
class AliTriggerIR;

class AliCTPRawStream: public TObject {
  public :
    AliCTPRawStream(AliRawReader* rawReader);
    virtual ~AliCTPRawStream();


    virtual void             Reset();
    virtual Bool_t           Next();

    UInt_t    GetOrbitID() const { return fOrbit; }
    UShort_t  GetBCID()    const { return fBC; }

    UInt_t    GetL0Inputs() const { return fL0TriggerInputs; }
    UInt_t    GetL1Inputs() const { return fL1TriggerInputs; }
    UShort_t  GetL2Inputs() const { return fL2TriggerInputs; }

    ULong64_t GetClassMask()   const { return fClassMask; }  // Provide the trigger class mask
    ULong64_t GetClassMaskNext50()   const { return fClassMaskNext50; }  // Provide the trigger class mask
    UChar_t   GetClusterMask() const { return fClusterMask; }// Provide the trigger cluster mask
    Bool_t    GetPayloadRun1(UChar_t* data);
    Bool_t    GetPayloadRun2(UChar_t* data);

    Int_t     GetNIRs() const { return fIRArray.GetEntriesFast(); }
    const TClonesArray &GetAllIRs() const { return fIRArray; }
    const AliTriggerIR *GetIR(Int_t index) const { return (const AliTriggerIR*)fIRArray.UncheckedAt(index); }


  protected:
    AliCTPRawStream(const AliCTPRawStream& stream);
    AliCTPRawStream& operator = (const AliCTPRawStream& stream);

  private:
    TClonesArray     fIRArray;     // array with trigger interaction records

    UInt_t           fOrbit;       // orbit ID as sent by CTP
    UShort_t         fBC;          // bunch-crossing number as sent by CTP

    UInt_t           fL0TriggerInputs; // L0 trigger inputs (24 bits)
    UInt_t           fL1TriggerInputs; // L1 trigger inputs (24 bits)
    UShort_t         fL2TriggerInputs; // L2 trigger inputs (12 bits)

    ULong64_t        fClassMask;   // trigger class mask
    ULong64_t        fClassMaskNext50;   // trigger class mask
    UChar_t          fClusterMask; // trigger cluster mask

    AliRawReader*    fRawReader;   // object for reading the raw data

    ClassDef(AliCTPRawStream, 0)   // class for reading CTP DDL raw data
};

#endif
 AliCTPRawStream.h:1
 AliCTPRawStream.h:2
 AliCTPRawStream.h:3
 AliCTPRawStream.h:4
 AliCTPRawStream.h:5
 AliCTPRawStream.h:6
 AliCTPRawStream.h:7
 AliCTPRawStream.h:8
 AliCTPRawStream.h:9
 AliCTPRawStream.h:10
 AliCTPRawStream.h:11
 AliCTPRawStream.h:12
 AliCTPRawStream.h:13
 AliCTPRawStream.h:14
 AliCTPRawStream.h:15
 AliCTPRawStream.h:16
 AliCTPRawStream.h:17
 AliCTPRawStream.h:18
 AliCTPRawStream.h:19
 AliCTPRawStream.h:20
 AliCTPRawStream.h:21
 AliCTPRawStream.h:22
 AliCTPRawStream.h:23
 AliCTPRawStream.h:24
 AliCTPRawStream.h:25
 AliCTPRawStream.h:26
 AliCTPRawStream.h:27
 AliCTPRawStream.h:28
 AliCTPRawStream.h:29
 AliCTPRawStream.h:30
 AliCTPRawStream.h:31
 AliCTPRawStream.h:32
 AliCTPRawStream.h:33
 AliCTPRawStream.h:34
 AliCTPRawStream.h:35
 AliCTPRawStream.h:36
 AliCTPRawStream.h:37
 AliCTPRawStream.h:38
 AliCTPRawStream.h:39
 AliCTPRawStream.h:40
 AliCTPRawStream.h:41
 AliCTPRawStream.h:42
 AliCTPRawStream.h:43
 AliCTPRawStream.h:44
 AliCTPRawStream.h:45
 AliCTPRawStream.h:46
 AliCTPRawStream.h:47
 AliCTPRawStream.h:48
 AliCTPRawStream.h:49
 AliCTPRawStream.h:50
 AliCTPRawStream.h:51
 AliCTPRawStream.h:52
 AliCTPRawStream.h:53
 AliCTPRawStream.h:54
 AliCTPRawStream.h:55
 AliCTPRawStream.h:56
 AliCTPRawStream.h:57
 AliCTPRawStream.h:58
 AliCTPRawStream.h:59
 AliCTPRawStream.h:60
 AliCTPRawStream.h:61
 AliCTPRawStream.h:62
 AliCTPRawStream.h:63
 AliCTPRawStream.h:64
 AliCTPRawStream.h:65
 AliCTPRawStream.h:66
 AliCTPRawStream.h:67
 AliCTPRawStream.h:68
 AliCTPRawStream.h:69