]> git.uio.no Git - u/mrichter/AliRoot.git/blame - HLT/BASE/util/AliHLTOUTPublisherComponent.h
Fixing in/out tags in documentation
[u/mrichter/AliRoot.git] / HLT / BASE / util / AliHLTOUTPublisherComponent.h
CommitLineData
c1292031 1//-*- Mode: C++ -*-
2// $Id$
3
4#ifndef ALIHLTOUTPUBLISHERCOMPONENT_H
5#define ALIHLTOUTPUBLISHERCOMPONENT_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 *
9
10/** @file AliHLTOUTPublisherComponent.h
11 @author Matthias Richter
12 @date 2008-06-11
13 @brief A data publisher for data block out of the HLTOUT data
14*/
15
16#include "AliHLTOfflineDataSource.h"
17
18/**
19 * @class AliHLTOUTPublisherComponent
20 * A data publisher component for data blocks out of the HLTOUT data.
21 * All data blocks forwarded to the HLTOUT (either real or simulated),
22 * are encoded in HOMER format and stored in the HLT data links, or
23 * eventually the HLT digit file in case of simulation.
24 *
25 * This component publishes data blocks out of the HLTOUT data. To the
26 * subscribing components the data blocks seem to come directly from
27 * the producing component in the HLT analysis chain. The HLTOUT is just
28 * a transparent transport layer. Filter rules by data type and
29 * specification can be applied.
30 *
a7ad9794 31 * <h2>General properties:</h2>
c1292031 32 *
a7ad9794 33 * Component ID: \b AliHLTOUTPublisher <br>
34 * Library: \b libAliHLTUtil.so <br>
35 * Input Data Types: none <br>
36 * Output Data Types: according to parameters and content of the HLTOUT <br>
37 *
38 * <h2>Mandatory arguments:</h2>
c1292031 39 * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
40 *
a7ad9794 41 * <h2>Optional arguments:</h2>
c1292031 42 * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
a7ad9794 43 * \li -datatype <i> id origin </i> <br>
44 * e.g. <tt> -datatype 'ESD_TREE' 'TPC ' </tt> <br>
c1292031 45 * \b Note: due to the 4-character data origin it might be necessary to
a7ad9794 46 * append a blank to the detectorname, e.g. <tt>TPC -> 'TPC '</tt>
47 *
48 * \li -origin <i> origin </i> <br>
c1292031 49 * e.g. -origin 'TPC ', \b Note: the filter rule has type id 'ANY'
a7ad9794 50 *
51 * \li -typeid <i> id </i> <br>
c1292031 52 * e.g. -typeid ESD_TREE, \b Note: the filter rule has origin 'ANY'
a7ad9794 53 *
54 * \li -dataspec <i> specification </i> <br>
c1292031 55 * data specification treated as decimal number or hex number if
56 * prepended by '0x'
a7ad9794 57 *
58 * \li -verbose <br>
c1292031 59 * print out some more info messages, mainly for the sake of tutorials
60 *
a7ad9794 61 * <h2>Configuration:</h2>
62 * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
63 * Configuration by component arguments.
64 *
65 * <h2>Default CDB entries:</h2>
66 * The component loads no CDB entries.
67 *
68 * <h2>Performance:</h2>
69 * The component does not process any event data.
70 *
71 * <h2>Memory consumption:</h2>
72 * The component does not process any event data.
73 *
74 * <h2>Output size:</h2>
75 * According to the available and selected data. The component is an
76 * AliHLTDataSource and inteded to be used in the AliHLTSystem framework
77 * only. The component implements the standard AliHLTSystem adaptive
78 * buffer allocation.
79 *
80 * By default, all blocks will be published. By means of the \em -datatype,
81 * \em -origin, and \em -typeid arguments, the blocks can be selected. A list
82 * of filter rules can be built up by multiple usage of the arguments. Each
83 * time a new filter rule is added.
c1292031 84 *
a7ad9794 85 * No filtering by the data specification is applied unless then \em
86 * -specification argument is used. The specification applies to to the
87 * current filter rule, regardless of the sequence of -datatype/-specification
88 * arguments.
c1292031 89 *
a7ad9794 90 * @ingroup alihlt_util_components
c1292031 91 */
92class AliHLTOUTPublisherComponent : public AliHLTOfflineDataSource {
93 public:
94 /** standard constructor */
95 AliHLTOUTPublisherComponent();
96 /** destructor */
97 virtual ~AliHLTOUTPublisherComponent();
98
99 const char* GetComponentID();
100 AliHLTComponentDataType GetOutputDataType();
101 int GetOutputDataTypes(AliHLTComponentDataTypeList& tgtList);
102 void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier );
103 virtual AliHLTComponent* Spawn();
104
105 protected:
106 int DoInit( int argc, const char** argv );
107 int DoDeinit();
108
109 /**
110 * Data source method.
9bb806cd 111 * @param [in] evtData event data structure
112 * @param [in] trigData trigger data structure
113 * @param [in] outputPtr pointer to target buffer
114 * @param [in,out] size <i>input</i>: size of target buffer
c1292031 115 * <i>output</i>:size of produced data
9bb806cd 116 * @param [in] outputBlocks list to receive output block descriptors
c1292031 117 * @return neg. error code if failed
118 */
119 int GetEvent( const AliHLTComponentEventData& evtData,
120 AliHLTComponentTriggerData& trigData,
121 AliHLTUInt8_t* outputPtr,
122 AliHLTUInt32_t& size,
123 AliHLTComponentBlockDataList& outputBlocks );
124
125 using AliHLTOfflineDataSource::GetEvent;
126
127 protected:
128
129 private:
130 /** copy constructor prohibited */
131 AliHLTOUTPublisherComponent(const AliHLTOUTPublisherComponent&);
132 /** assignment operator prohibited */
133 AliHLTOUTPublisherComponent& operator=(const AliHLTOUTPublisherComponent&);
134
135 /** filtering rules, only the data type and specification members are use */
136 AliHLTComponentBlockDataList fFilterRules; //! transient
137
138 /** maximum output size */
139 int fMaxSize; //!
140
141 ClassDef(AliHLTOUTPublisherComponent, 0);
142};
143
144#endif