]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/BASE/util/AliHLTEsdCollectorComponent.h
- singleton functionality added for component and configuration handler
[u/mrichter/AliRoot.git] / HLT / BASE / util / AliHLTEsdCollectorComponent.h
1 // -*- Mode: C++ -*-
2 // $Id$
3
4 #ifndef ALIHLTESDCOLLECTORCOMPONENT_H
5 #define ALIHLTESDCOLLECTORCOMPONENT_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   AliHLTEsdCollectorComponent.h
11     @author Matthias Richter
12     @date   
13     @brief  Collect ESDs of multiple events and write toi file
14 */
15
16 #include "AliHLTFileWriter.h"
17
18 class AliHLTEsdManager;
19
20 /**
21  * @class AliHLTEsdCollectorComponent
22  * The EsdCollector component merges ESDs from multiple events into one
23  * ESD file per origin using the AliHLTEsdManager class.
24  * \b Note: The component just merges ESDs of the same type/origin from
25  * multiple events into one file. It does not implement merging of ESDs
26  * from one event but several origins.
27  *
28  * <h2>General properties:</h2>
29  *
30  * Component ID: \b EsdCollector                                      <br>
31  * Library: \b libAliHLTUtil.so                                       <br>
32  * Input Data Types: kAliHLTDataTypeESDObject, kAliHLTDataTypeESDTree <br>
33  * Output Data Types: none                                            <br>
34  *
35  * <h2>Mandatory arguments:</h2>
36  * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
37  *
38  * <h2>Optional arguments:</h2>
39  * The only AliHLTFileWriter argument of relevance is the \em -directory
40  * argument. See AliHLTFileWriter for full list of arguments.
41  *
42  * <h2>Configuration:</h2>
43  * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
44  * Configuration by component arguments.
45  *
46  * <h2>Default CDB entries:</h2>
47  * The component loads no CDB entries.
48  *
49  * <h2>Performance:</h2>
50  * The component does not process any event data.
51  *
52  * <h2>Memory consumption:</h2>
53  * The component does not process any event data.
54  *
55  * <h2>Output size:</h2>
56  * No data published (AliHLTDataSink).
57  *
58  * @ingroup alihlt_util_components
59  */
60 class AliHLTEsdCollectorComponent : public AliHLTFileWriter
61 {
62  public:
63   /** standard constructor */
64   AliHLTEsdCollectorComponent();
65   /** destructor */
66   virtual ~AliHLTEsdCollectorComponent();
67
68   /**
69    * The id of the component.
70    * @return component id (string)
71    */
72   const char* GetComponentID() {return "EsdCollector";};
73
74   /**
75    * Spawn function.
76    * @return new class instance
77    */
78   AliHLTComponent* Spawn() {return new AliHLTEsdCollectorComponent;}
79
80  protected:
81   // interface functions
82   int InitWriter();
83   int CloseWriter();
84   int DumpEvent( const AliHLTComponentEventData& evtData,
85                  const AliHLTComponentBlockData* blocks, 
86                  AliHLTComponentTriggerData& trigData );
87   
88   using AliHLTFileWriter::DumpEvent;
89   int ScanArgument(int argc, const char** argv);
90
91 private:
92   /** copy constructor prohibited */
93   AliHLTEsdCollectorComponent(const AliHLTEsdCollectorComponent&);
94   /** assignment operator prohibited */
95   AliHLTEsdCollectorComponent& operator=(const AliHLTEsdCollectorComponent&);
96
97   /** the ESD manager instance writes the ESDs */
98   AliHLTEsdManager* fpManager; //! transient
99
100   ClassDef(AliHLTEsdCollectorComponent, 0)
101 };
102 #endif