4 #ifndef ALIHLTDATASOURCE_H
5 #define ALIHLTDATASOURCE_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 AliHLTDataSource.h
11 @author Matthias Richter
13 @brief Base class declaration for HLT data source components.
14 @note The class is used in Offline (AliRoot) context
17 // see below for class documentation
19 // refer to README to build package
21 // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
23 #include "AliHLTComponent.h"
26 * @class AliHLTDataSource
27 * Base class of HLT data source components.
28 * The class provides a common interface for the implementation of HLT data
29 * source components. The child class must implement the functions:
30 * - @ref DoInit (optional)
31 * - @ref DoDeinit (optional)
33 * - @ref GetComponentID
34 * - @ref GetOutputDataType
35 * - @ref GetOutputDataSize
38 * @ingroup alihlt_component
40 class AliHLTDataSource : public AliHLTComponent {
42 /** standard constructor */
44 /** standard destructor */
45 virtual ~AliHLTDataSource();
48 * Event processing function.
49 * The method is called by the framework to process one event. After
50 * preparation of data structures. The call is redirected to GetEvent.
51 * @return neg. error code if failed <br>
52 * -ENOSPC output buffer too small
54 int DoProcessing( const AliHLTComponentEventData& evtData,
55 const AliHLTComponentBlockData* blocks,
56 AliHLTComponentTriggerData& trigData,
57 AliHLTUInt8_t* outputPtr,
59 vector<AliHLTComponentBlockData>& outputBlocks,
60 AliHLTComponentEventDoneData*& edd );
62 // Information member functions for registration.
65 * Return @ref AliHLTComponent::kSource type as component type.
66 * @return component type id
68 TComponentType GetComponentType() { return AliHLTComponent::kSource;}
71 * Default implementation for all data sources.
72 * There are no input data types.
74 void GetInputDataTypes( vector<AliHLTComponentDataType>& list);
79 * The low-level data processing method for the component.
80 * This is the custom processing method and can be overloaded by
82 * @param evtData event data structure
83 * @param trigData trigger data structure
84 * @param outputPtr pointer to target buffer
85 * @param size <i>input</i>: size of target buffer
86 * <i>output</i>:size of produced data
87 * @param outputBlocks list to receive output block descriptors
88 * @return neg. error code if failed
90 virtual int GetEvent( const AliHLTComponentEventData& evtData,
91 AliHLTComponentTriggerData& trigData,
92 AliHLTUInt8_t* outputPtr,
94 vector<AliHLTComponentBlockData>& outputBlocks );
97 * The high-level data processing method.
98 * This is the default processing method; the method is called
99 * if no low level @ref GetEvent method is overloaded by the component.
100 * @param evtData event data structure
101 * @param trigData trigger data structure
102 * @return neg. error code if failed
104 virtual int GetEvent( const AliHLTComponentEventData& evtData, AliHLTComponentTriggerData& trigData);
108 ClassDef(AliHLTDataSource, 3)