- adding possibility to open an AliHLTOUTDigitReader for a specific digit file
[u/mrichter/AliRoot.git] / HLT / TPCLib / AliHLTTPCAgent.h
CommitLineData
5578cf60 1// @(#) $Id$
2
3#ifndef ALIHLTTPCAGENT_H
4#define ALIHLTTPCAGENT_H
5/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
6 * See cxx source for full Copyright notice */
7
8/** @file AliHLTTPCAgent.h
9 @author Matthias Richter
10 @date
11 @brief Agent of the libAliHLTTPC library
12*/
13
14#include "AliHLTModuleAgent.h"
626bfcc1 15#include "AliHLTOUTHandlerEquId.h"
5578cf60 16
73449074 17class AliHLTOUTHandlerChain;
18
5578cf60 19/**
20 * @class AliHLTTPCAgent
21 * This is the agent for the AliHLTTPC library.
22 *
23 * @ingroup alihlt_system
24 */
25class AliHLTTPCAgent : public AliHLTModuleAgent {
26 public:
27 /**
28 * standard constructor. The agent is automatically registered in the
29 * global agent manager
30 */
31 AliHLTTPCAgent();
32 /** destructor */
33 virtual ~AliHLTTPCAgent();
34
35 /**
36 * Register all configurations belonging to this module with the
37 * AliHLTConfigurationHandler. The agent can adapt the configurations
38 * to be registered to the current AliRoot setup by checking the
39 * runloader.
40 * @param handler the configuration handler
3a7c0444 41 * @param rawReader AliRawReader instance
5578cf60 42 * @param runloader AliRoot runloader
43 * @return neg. error code if failed
44 */
45 int CreateConfigurations(AliHLTConfigurationHandler* handler,
dee38f1b 46 AliRawReader* rawReader=NULL,
5578cf60 47 AliRunLoader* runloader=NULL) const;
48
49 /**
50 * Get the top configurations belonging to this module.
51 * A top configuration describes a processing chain. It can simply be
52 * described by the last configuration(s) in the chain.
53 * The agent can adapt the configurations to be registered to the current
54 * AliRoot setup by checking the runloader.
3a7c0444 55 * @param rawReader AliRawReader instance
5578cf60 56 * @param runloader AliRoot runloader
57 * @return number of configurations, neg. error code if failed
58 */
dee38f1b 59 const char* GetReconstructionChains(AliRawReader* rawReader=NULL,
60 AliRunLoader* runloader=NULL) const;
5578cf60 61
62 /**
63 * Component libraries which the configurations of this agent depend on.
64 * @return list of component libraries as a blank-separated string.
65 */
66 const char* GetRequiredComponentLibraries() const;
67
f3506ea2 68 /**
69 * Register components for the AliHLTTPC library.
70 * @param pHandler [in] instance of the component handler
71 */
72 int RegisterComponents(AliHLTComponentHandler* pHandler) const;
626bfcc1 73
74 /**
75 * Get handler decription for TPC data in the HLTOUT data stream.
76 * @param dt [in] data type of the block
77 * @param spec [in] specification of the block
af2ed151 78 * @param desc [out] handler description
626bfcc1 79 * @return 1 if the agent can provide a handler, 0 if not
80 */
81 int GetHandlerDescription(AliHLTComponentDataType dt,
82 AliHLTUInt32_t spec,
83 AliHLTOUTHandlerDesc& desc) const;
84
85 /**
86 * Get specific handler for TPC data in the HLTOUT data stream.
87 * @param dt [in] data type of the block
88 * @param spec [in] specification of the block
89 * @return pointer to handler
90 */
91 AliHLTOUTHandler* GetOutputHandler(AliHLTComponentDataType dt,
92 AliHLTUInt32_t spec);
93
94 /**
95 * Delete an HLTOUT handler.
96 * @param pInstance pointer to handler
97 */
98 int DeleteOutputHandler(AliHLTOUTHandler* pInstance);
99
100 /**
101 * The handler for TPC RAW data in the HLTOUT stream.
102 */
103 class AliHLTTPCRawDataHandler : public AliHLTOUTHandlerEquId {
104 public:
105 /** constructor */
106 AliHLTTPCRawDataHandler();
107 /** destructor */
108 ~AliHLTTPCRawDataHandler();
109
110 /**
111 * Process a data block.
112 * Decode specification and return equipment id of the data block.
113 * The data itsself i untouched.
114 * @return equipment id the block should be used for.
115 */
116 int ProcessData(AliHLTOUT* pData);
117
118 private:
119
120 };
121
5578cf60 122 protected:
123
124 private:
626bfcc1 125 /** copy constructor prohibited */
126 AliHLTTPCAgent(const AliHLTTPCAgent&);
127 /** assignment operator prohibited */
128 AliHLTTPCAgent& operator=(const AliHLTTPCAgent&);
129
130 /** handler for TPC raw data in the HLTOUT stream */
131 AliHLTTPCRawDataHandler* fRawDataHandler; //!transient
626bfcc1 132
73449074 133 /** afterburner for {'TRAKSEGS':'TPC '} in the HLTOUT stream */
134 AliHLTOUTHandlerChain* fTracksegsDataHandler; //! transient
135
136 ClassDef(AliHLTTPCAgent, 2);
5578cf60 137};
138
139#endif