3 #ifndef ALIHLTSAMPLEESDANALYSISCOMPONENT_H
4 #define ALIHLTSAMPLEESDANALYSISCOMPONENT_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 AliHLTSampleESDAnalysisComponent.h
11 // @author Matthias Richter
13 // @brief A sample processing component for ESD analysis.
14 // @ingroup alihlt_tutorial
16 #include "AliHLTProcessor.h"
19 * @class AliHLTSampleESDAnalysisComponent
20 * An example how to implement an HLT ESD analysis component.
21 * The class features the AliHLTComponent interface for HLT processing
22 * components. The interface allows to run such components in either
23 * the (sequential) AliSimulation/AliReconstruction framework or the
24 * parallel HLT online processing framework.
26 * An example to run the component can be found in macro sampleEsdAnalysis.C
27 * in the folder HLT/exa.
29 * Component fetches the ESD from the input objects, loops over tracks and
30 * publishes the tracks in a TObjArray of AliESDtrack.
32 * <h2>General properties:</h2>
34 * Component ID: \b Sample-ESDAnalysis <br>
35 * Library: \b libAliHLTSample.so <br>
36 * Input Data Types: @ref kAliHLTDataTypeESDObject <br>
37 * Output Data Types: @ref kAliHLTDataTypeTObjArray|kAliHLTDataOriginSample
38 * {ROOTOBAR:SMPL} <br>
40 * <h2>Mandatory arguments:</h2>
41 * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
42 * Argument scan is implemented in the function ScanConfigurationArgument().
43 * see @ref alihltcomponent-initialization-ocdb.
44 * Please provide specific descriptions and implementations.
45 * \li -mandatory1 <i> teststring </i> <br>
46 * an argument with one parameter
48 * <h2>Optional arguments:</h2>
49 * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
50 * \li -optional1 <i> teststring </i> <br>
51 * an argument with one parameter
53 * an argument without parameters
55 * <h2>Configuration:</h2>
56 * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
58 * <h2>Default CDB entries:</h2>
59 * The component has just one default CDB entry in
60 * <tt>HLT/ConfigSample/SampleESDAnalysis</tt>.
61 * It does not load any configuration from the global <tt>ConfigHLT</tt>
63 * \li -TObjString object holding a string with the configuration parameters
66 * <h2>Performance:</h2>
67 * The component does not any event data processing.
69 * <h2>Memory consumption:</h2>
70 * The component does not any event data processing.
72 * <h2>Output size:</h2>
73 * The component has no output data.
76 * @ingroup alihlt_tutorial
78 class AliHLTSampleESDAnalysisComponent : public AliHLTProcessor {
80 AliHLTSampleESDAnalysisComponent();
81 virtual ~AliHLTSampleESDAnalysisComponent();
83 // AliHLTComponent interface functions
84 const char* GetComponentID();
85 void GetInputDataTypes( vector<AliHLTComponentDataType>& list);
86 AliHLTComponentDataType GetOutputDataType();
87 void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier );
88 void GetOCDBObjectDescription( TMap* const targetMap);
90 // Spawn function, return new class instance
91 AliHLTComponent* Spawn();
94 // AliHLTComponent interface functions
95 int DoInit( int argc, const char** argv );
97 int DoEvent( const AliHLTComponentEventData& evtData, AliHLTComponentTriggerData& trigData);
98 int ScanConfigurationArgument(int argc, const char** argv);
99 int Reconfigure(const char* cdbEntry, const char* chainId);
100 int ReadPreprocessorValues(const char* modules);
102 using AliHLTProcessor::DoEvent;
105 /** copy constructor prohibited */
106 AliHLTSampleESDAnalysisComponent(const AliHLTSampleESDAnalysisComponent&);
107 /** assignment operator prohibited */
108 AliHLTSampleESDAnalysisComponent& operator=(const AliHLTSampleESDAnalysisComponent&);
110 ClassDef(AliHLTSampleESDAnalysisComponent, 0)