4 #ifndef ALIRAWREADERHLT_H
5 #define ALIRAWREADERHLT_H
6 //* This file is property of and copyright by the ALICE HLT Project *
7 //* ALICE Experiment at CERN, All rights reserved. *
8 //* See cxx source for full Copyright notice *
10 /** @file AliRawReaderHLT.h
11 @author Matthias Richter
13 @brief AliRawReader implementation which replaces original input of
14 detectors with the appropriate HLT output. */
16 // see below for class documentation
18 // refer to README to build package
20 // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
22 #include "AliHLTDataTypes.h"
23 #include "AliRawReader.h" // RAW, base class
28 class AliHLTOUTHandler;
31 * @class AliRawReaderHLT
32 * Handler of HLTOUT data for AliRawReader input.
34 class AliRawReaderHLT : public AliRawReader {
37 AliRawReaderHLT(AliRawReader* pParentReader, const char* options=NULL);
39 virtual ~AliRawReaderHLT();
41 // interface methods of AliRawReader
42 void Select(Int_t detectorID,
43 Int_t minDDLID = -1, Int_t maxDDLID = -1);
44 // void Select(const char *detectorName,
45 // Int_t minDDLID = -1, Int_t maxDDLID = -1);
47 using AliRawReader::Select;
49 void SelectEquipment(Int_t equipmentType,
50 Int_t minEquipmentId = -1,
51 Int_t maxEquipmentId = -1);
52 void SkipInvalid(Bool_t skip = kTRUE);
53 void SelectEvents(Int_t type);
55 UInt_t GetType() const;
56 UInt_t GetRunNumber() const;
57 const UInt_t* GetEventId() const;
58 const UInt_t* GetTriggerPattern() const;
59 const UInt_t* GetDetectorPattern() const;
60 const UInt_t* GetAttributes() const;
61 const UInt_t* GetSubEventAttributes() const;
62 UInt_t GetLDCId() const;
63 UInt_t GetGDCId() const;
64 UInt_t GetTimestamp() const;
66 const UInt_t* GetEquipmentAttributes() const;
67 Int_t GetEquipmentElementSize() const;
68 Int_t GetEquipmentHeaderSize() const;
70 Int_t GetEquipmentSize() const;
71 Int_t GetEquipmentType() const;
72 Int_t GetEquipmentId() const;
74 Bool_t ReadNextData(UChar_t*& data);
75 Bool_t ReadNextInt(UInt_t& data);
76 Bool_t ReadNextShort(UShort_t& data);
77 Bool_t ReadNextChar(UChar_t& data);
78 Bool_t ReadNext(UChar_t* data, Int_t size);
83 Bool_t RewindEvents();
88 /** standard constructor prohibited */
90 /** copy constructor prohibited */
91 AliRawReaderHLT(const AliRawReaderHLT&);
92 /** assignment operator prohibited */
93 AliRawReaderHLT& operator=(const AliRawReaderHLT&);
97 * Set the ids for the specified detectors in the detector
98 * list. Currently, no other options are available.
100 int ScanOptions(const char* options);
103 * Read the next data block from the HLT stream
105 Bool_t ReadNextHLTData();
108 * Check if a ddlid is part of the ones which are selected for
111 Bool_t IsHLTInput(int ddlid);
114 AliRawReader* fpParentReader; //!transient
117 TString fOptions; //!transient
119 /** current data set, either extracted from the HLT stream or parent raw reader */
120 const AliHLTUInt8_t* fpData; // !transient
122 /** size of the current data set */
123 int fDataSize; // !transient
125 /** current stream offset in the data set */
126 int fOffset; // !transient
128 /** equipment id of the current data set, >0 indicates data set from HLT stream */
129 int fEquipmentId; // !transient
131 /** indicates the availibility of data from the HLT stream */
132 bool fbHaveHLTData; // !transient
134 /** list of detectors for which data will be taken from HLT stream */
135 vector<int> fDetectors; // !transient
137 /** instance of the HLTOUT handler */
138 AliHLTOUT* fpHLTOUT; // !transient
140 /** instance of the data handler providing the current data buffer */
141 AliHLTOUTHandler* fpDataHandler; // !transient
143 ClassDef(AliRawReaderHLT, 2)
146 #define ALIHLTREC_LIBRARY "libHLTrec.so"
147 #define ALIHLTREC_LIBRARY_VERSION 0
148 #define ALIRAWREADERHLT_CREATE_INSTANCE "AliRawReaderHLTCreateInstance"
153 typedef AliRawReader* (*AliRawReaderHLTCreateInstance_t)(AliRawReader* pParentReader, const char* options);
156 * Create an instance of the AliRawReader class
158 AliRawReader* AliRawReaderHLTCreateInstance(AliRawReader* pParentReader, const char* options);