]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/ITS/AliHLTITSAgent.h
printout removed
[u/mrichter/AliRoot.git] / HLT / ITS / AliHLTITSAgent.h
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
17 // raw data handler of HLTOUT data
18 #include "AliHLTOUTHandlerEquId.h"
19
20 /**
21  * @class AliHLTITSAgent
22  * This is the agent for the AliHLTSample library.<br>
23  *
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.
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   /**
45    * Inherited from AliHLTModuleAgent
46    * Register all configurations belonging to this module with the
47    * AliHLTConfigurationHandler. The agent can adapt the configurations
48    * to be registered to the current AliRoot setup by checking the
49    * runloader.
50    * @param handler      the configuration handler
51    * @param rawReader    AliRawReader instance
52    * @param runloader    AliRoot runloader
53    * @return neg. error code if failed
54    */
55   int CreateConfigurations(AliHLTConfigurationHandler* handler,
56                            AliRawReader* rawReader=NULL,
57                            AliRunLoader* runloader=NULL) const;
58
59   /**
60    * Inherited from AliHLTModuleAgent
61    * Get the top configurations belonging to this module.
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.
66    * @param rawReader    AliRawReader instance
67    * @param runloader    AliRoot runloader
68    * @return number of configurations, neg. error code if failed
69    */
70   const char* GetReconstructionChains(AliRawReader* rawReader=NULL,
71                                       AliRunLoader* runloader=NULL) const;
72
73   /**
74    * Inherited from AliHLTModuleAgent
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   /**
81    * Inherited from AliHLTModuleAgent
82    * Register components for the AliHLTSample library.
83    * @param pHandler  [in] instance of the component handler          
84    */
85   int RegisterComponents(AliHLTComponentHandler* pHandler) const;
86
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    */
93   int GetHandlerDescription(AliHLTComponentDataType dt,
94                             AliHLTUInt32_t spec,
95                             AliHLTOUTHandlerDesc& desc) const;
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    */
105   AliHLTOUTHandler* GetOutputHandler(AliHLTComponentDataType dt,
106                                      AliHLTUInt32_t spec);
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    */
113   int DeleteOutputHandler(AliHLTOUTHandler* pInstance);
114
115   AliHLTModulePreprocessor* GetPreprocessor();
116
117   class AliHLTOUTSDDRawDataHandler: public AliHLTOUTHandlerEquId {
118   public:
119     AliHLTOUTSDDRawDataHandler() {}
120     ~AliHLTOUTSDDRawDataHandler() {}
121     int ProcessData(AliHLTOUT* pData);
122   private:
123   };
124
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
135  protected:
136
137  private:
138
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