]>
Commit | Line | Data |
---|---|---|
dafa46c6 | 1 | // $Id$ |
2 | ||
3 | #ifndef ALIHLTITSAGENT_H | |
4 | #define ALIHLTITSAGENT_H | |
5 | //* This file is property of and copyright by the ALICE HLT Project * | |
6 | //* ALICE Experiment at CERN, All rights reserved. * | |
7 | //* See cxx source for full Copyright notice * | |
8 | ||
9 | /** @file AliHLTITSAgent.h | |
10 | @author Matthias Richter | |
11 | @date 25.08.2008 | |
12 | @brief Agent of the libAliHLTITS library | |
13 | */ | |
14 | ||
15 | #include "AliHLTModuleAgent.h" | |
16 | ||
6b87e199 | 17 | // raw data handler of HLTOUT data |
18 | #include "AliHLTOUTHandlerEquId.h" | |
dafa46c6 | 19 | |
20 | /** | |
21 | * @class AliHLTITSAgent | |
22 | * This is the agent for the AliHLTSample library.<br> | |
23 | * | |
6b87e199 | 24 | * The agent implements the HLTOUT handling of raw data blocks from the |
25 | * ITS SDD. | |
26 | * This assumes that the data blocks are sent with data type | |
27 | * {DDL_RAW :ISDD} and the bit set in the specification corresponding. | |
28 | * to detector DDL id. | |
29 | * An HLTOUT handler is implemented to extract the equipment id from | |
30 | * the specification. | |
dafa46c6 | 31 | * |
32 | * @ingroup alihlt_its | |
33 | */ | |
34 | class AliHLTITSAgent : public AliHLTModuleAgent { | |
35 | public: | |
36 | /** | |
37 | * standard constructor. The agent is automatically registered in the | |
38 | * global agent manager | |
39 | */ | |
40 | AliHLTITSAgent(); | |
41 | /** destructor */ | |
42 | virtual ~AliHLTITSAgent(); | |
43 | ||
44 | /** | |
68315dc4 | 45 | * Inherited from AliHLTModuleAgent |
46 | * Register all configurations belonging to this module with the | |
dafa46c6 | 47 | * AliHLTConfigurationHandler. The agent can adapt the configurations |
48 | * to be registered to the current AliRoot setup by checking the | |
49 | * runloader. | |
68315dc4 | 50 | * @param handler the configuration handler |
51 | * @param rawReader AliRawReader instance | |
52 | * @param runloader AliRoot runloader | |
dafa46c6 | 53 | * @return neg. error code if failed |
54 | */ | |
55 | int CreateConfigurations(AliHLTConfigurationHandler* handler, | |
56 | AliRawReader* rawReader=NULL, | |
57 | AliRunLoader* runloader=NULL) const; | |
58 | ||
59 | /** | |
68315dc4 | 60 | * Inherited from AliHLTModuleAgent |
61 | * Get the top configurations belonging to this module. | |
dafa46c6 | 62 | * A top configuration describes a processing chain. It can simply be |
63 | * described by the last configuration(s) in the chain. | |
64 | * The agent can adapt the configurations to be registered to the current | |
65 | * AliRoot setup by checking the runloader. | |
68315dc4 | 66 | * @param rawReader AliRawReader instance |
67 | * @param runloader AliRoot runloader | |
68 | * @return number of configurations, neg. error code if failed | |
dafa46c6 | 69 | */ |
70 | const char* GetReconstructionChains(AliRawReader* rawReader=NULL, | |
71 | AliRunLoader* runloader=NULL) const; | |
72 | ||
73 | /** | |
68315dc4 | 74 | * Inherited from AliHLTModuleAgent |
dafa46c6 | 75 | * Component libraries which the configurations of this agent depend on. |
76 | * @return list of component libraries as a blank-separated string. | |
77 | */ | |
78 | const char* GetRequiredComponentLibraries() const; | |
79 | ||
80 | /** | |
68315dc4 | 81 | * Inherited from AliHLTModuleAgent |
dafa46c6 | 82 | * Register components for the AliHLTSample library. |
83 | * @param pHandler [in] instance of the component handler | |
84 | */ | |
85 | int RegisterComponents(AliHLTComponentHandler* pHandler) const; | |
86 | ||
68315dc4 | 87 | /** |
88 | * Inherited from AliHLTModuleAgent | |
89 | * Return HLTOUT handler description for a certain data block in the | |
90 | * HLTOUT payload. | |
91 | * @return 1 if module provides a handler | |
92 | */ | |
dafa46c6 | 93 | int GetHandlerDescription(AliHLTComponentDataType dt, |
94 | AliHLTUInt32_t spec, | |
95 | AliHLTOUTHandlerDesc& desc) const; | |
68315dc4 | 96 | |
97 | /** | |
98 | * Inherited from AliHLTModuleAgent | |
99 | * Create HLTOUT handler for a certain data block in the | |
100 | * HLTOUT payload. The same handler can be returned multiple | |
101 | * times, even for different data types. The framework will | |
102 | * handle this. | |
103 | * @return pointer to handler | |
104 | */ | |
dafa46c6 | 105 | AliHLTOUTHandler* GetOutputHandler(AliHLTComponentDataType dt, |
106 | AliHLTUInt32_t spec); | |
68315dc4 | 107 | |
108 | /** | |
109 | * Inherited from AliHLTModuleAgent | |
110 | * Delete the instance of the handler. This is only called once | |
111 | * even if the same handler has been issued multiple times | |
112 | */ | |
dafa46c6 | 113 | int DeleteOutputHandler(AliHLTOUTHandler* pInstance); |
114 | ||
115 | AliHLTModulePreprocessor* GetPreprocessor(); | |
6b87e199 | 116 | |
117 | class AliHLTOUTSDDRawDataHandler: public AliHLTOUTHandlerEquId { | |
118 | public: | |
119 | AliHLTOUTSDDRawDataHandler() {} | |
120 | ~AliHLTOUTSDDRawDataHandler() {} | |
121 | int ProcessData(AliHLTOUT* pData); | |
122 | private: | |
123 | }; | |
124 | ||
68315dc4 | 125 | /** |
126 | * Create configurations for all CFs for the ITS subdetectors | |
127 | * Get the necessary information from AliDAQ using the detector id. | |
128 | * @param pHandler Instance of the configuration handler | |
129 | * @param detectorId Id of the detector as specified in AliDAQ | |
130 | * @param output Target string to receive the configurations | |
131 | * @return neg. error code f failed | |
132 | */ | |
133 | int CreateCFConfigurations(AliHLTConfigurationHandler* pHandler, int detectorId, TString& output) const; | |
134 | ||
dafa46c6 | 135 | protected: |
136 | ||
137 | private: | |
68315dc4 | 138 | |
dafa46c6 | 139 | /** copy constructor prohibited */ |
140 | AliHLTITSAgent(const AliHLTITSAgent&); | |
141 | /** assignment operator prohibited */ | |
142 | AliHLTITSAgent& operator=(const AliHLTITSAgent&); | |
143 | ||
144 | /** handler for ITS raw data in the HLTOUT stream */ | |
145 | AliHLTOUTHandlerEquId* fRawDataHandler; //!transient | |
146 | ||
147 | /** ROOT specific member definition */ | |
148 | ClassDef(AliHLTITSAgent, 0); | |
149 | }; | |
150 | ||
151 | #endif |