1a646c83df5b1221e74e00911cd45d7213c57887
[u/mrichter/AliRoot.git] / HLT / TPCLib / offline / AliHLTTPCOfflineClustererComponent.h
1 //-*- Mode: C++ -*-
2 // $Id$
3 #ifndef ALIHLTTPCOFFLINECLUSTERFINDERCOMPONENT_H
4 #define ALIHLTTPCOFFLINECLUSTERFINDERCOMPONENT_H
5
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   AliHLTTPCOfflineClustererComponent.h
11     @author Matthias Richter
12     @date   
13     @brief  Wrapper component to the TPC offline cluster finder
14 */
15
16 #include "AliHLTProcessor.h"
17 class AliTPCRecoParam;
18 class AliTPCParam;
19 class AliTPCclustererMI;
20 class AliRawReaderMemory;
21
22 /**
23  * @class AliHLTTPCOfflineClustererComponent
24  * Wrapper component to the TPC offline cluster finder.
25  *
26  * The component interfaces the AliTPCclustererMI of the TPC offline code
27  * to the online HLT. The component expects raw data as input and publishes
28  * a full TreeR containing the cluster information.
29  *
30  * <h2>General properties:</h2>
31  *
32  * Component ID: \b TPCOfflineCF <br>
33  * Library: \b libAliHLTTPC.so     <br>
34  * Input Data Types: @ref kAliHLTDataTypeDDLRaw|kAliHLTDataOriginTPC <br>
35  * Output Data Types: @ref kAliHLTDataTypeAliTreeR|kAliHLTDataOriginTPC <br>
36  *
37  * <h2>Mandatory arguments:</h2>
38  * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
39  *
40  * <h2>Optional arguments:</h2>
41  * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
42  *
43  * <h2>Configuration:</h2>
44  * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
45  *
46  * <h2>Default CDB entries:</h2>
47  * - so far the component does not load any configuration object
48  *
49  * <h2>Performance:</h2>
50  * To be determined.
51  *
52  * <h2>Memory consumption:</h2>
53  * To be determined.
54  *
55  * <h2>Output size:</h2>
56  * To be determined.
57  *
58  * @ingroup alihlt_tpc_components
59  */
60 class AliHLTTPCOfflineClustererComponent : public AliHLTProcessor {
61 public:
62   AliHLTTPCOfflineClustererComponent();
63   virtual ~AliHLTTPCOfflineClustererComponent();
64
65   // AliHLTComponent interface functions
66   const char* GetComponentID();
67   void GetInputDataTypes( vector<AliHLTComponentDataType>& list);
68   AliHLTComponentDataType GetOutputDataType();
69   void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier );
70
71   // Spawn function, return new class instance
72   AliHLTComponent* Spawn();
73
74  protected:
75   // AliHLTComponent interface functions
76   int DoInit( int argc, const char** argv );
77   int DoDeinit();
78   int DoEvent( const AliHLTComponentEventData& evtData, AliHLTComponentTriggerData& trigData);
79   int Reconfigure(const char* cdbEntry, const char* chainId);
80
81   using AliHLTProcessor::DoEvent;
82
83 private:
84   /** copy constructor prohibited */
85   AliHLTTPCOfflineClustererComponent(const AliHLTTPCOfflineClustererComponent&);
86   /** assignment operator prohibited */
87   AliHLTTPCOfflineClustererComponent& operator=(const AliHLTTPCOfflineClustererComponent&);
88
89   /**
90    * Run the clusterer and PushBack the clusters with the given specification.
91    * @param outspec    data specification of the output block
92    */
93   int RunClusterer(AliHLTUInt32_t outspec);
94
95   /**
96    * Configure the component.
97    * Parse a string for the configuration arguments and set the component
98    * properties.
99    */
100   int Configure(const char* arguments);
101
102   unsigned fOutputPercentage; //! Output volume in percentage of the input
103   string fGeometryFileName;  //! Geometry file with full path
104
105   AliTPCRecoParam *fTPCRecoParam; //! TPC reco params
106   AliTPCParam *fTPCGeomParam; //! TPC geometry params
107
108   AliRawReaderMemory *fRawReader; //! Memory reader
109   AliTPCclustererMI *fClusterer;  //! TPC clusterer
110
111   ClassDef(AliHLTTPCOfflineClustererComponent, 1)
112 };
113 #endif