]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/ITS/AliHLTITSAgent.h
added write expert option
[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 class AliHLTOUTHandlerEquId;
18
19 /**
20  * @class AliHLTITSAgent
21  * This is the agent for the AliHLTSample library.<br>
22  *
23  * The egent implements the HLTOUT handling of raw data blocks from the
24  * ITS (all of the 3 detectors). This assumes that the data blocks are sent
25  * with data type {DDL_RAW :ITS } and the equipment id as specification.
26  * The agent indicates that such a block is handled by the
27  * AliHLTOUTHandlerEquId and its default behavior.
28  *
29  * @ingroup alihlt_its
30  */
31 class AliHLTITSAgent : public AliHLTModuleAgent {
32  public:
33   /**
34    * standard constructor. The agent is automatically registered in the
35    * global agent manager
36    */
37   AliHLTITSAgent();
38   /** destructor */
39   virtual ~AliHLTITSAgent();
40
41   /**
42    * Register all configurations belonging to the sample library with the
43    * AliHLTConfigurationHandler. The agent can adapt the configurations
44    * to be registered to the current AliRoot setup by checking the
45    * runloader.
46    * @param handler   [in] the configuration handler
47    * @param rawReader [in] AliRoot RawReader instance 
48    * @param runloader [in] AliRoot runloader
49    * @return neg. error code if failed
50    */
51   int CreateConfigurations(AliHLTConfigurationHandler* handler,
52                            AliRawReader* rawReader=NULL,
53                            AliRunLoader* runloader=NULL) const;
54
55   /**
56    * Get the top configurations for local event reconstruction.
57    * A top configuration describes a processing chain. It can simply be
58    * described by the last configuration(s) in the chain. 
59    * The agent can adapt the configurations to be registered to the current
60    * AliRoot setup by checking the runloader.
61    * @param rawReader [in] AliRoot RawReader instance 
62    * @param runloader [in] AliRoot runloader
63    * @return string containing the top configurations separated by blanks
64    */
65   const char* GetReconstructionChains(AliRawReader* rawReader=NULL,
66                                       AliRunLoader* runloader=NULL) const;
67
68   /**
69    * Component libraries which the configurations of this agent depend on.
70    * @return list of component libraries as a blank-separated string.
71    */
72   const char* GetRequiredComponentLibraries() const;
73
74   /**
75    * Register components for the AliHLTSample library.
76    * @param pHandler  [in] instance of the component handler          
77    */
78   int RegisterComponents(AliHLTComponentHandler* pHandler) const;
79
80   int GetHandlerDescription(AliHLTComponentDataType dt,
81                             AliHLTUInt32_t spec,
82                             AliHLTOUTHandlerDesc& desc) const;
83   AliHLTOUTHandler* GetOutputHandler(AliHLTComponentDataType dt,
84                                      AliHLTUInt32_t spec);
85   int DeleteOutputHandler(AliHLTOUTHandler* pInstance);
86
87   AliHLTModulePreprocessor* GetPreprocessor();
88  protected:
89
90  private:
91   /** copy constructor prohibited */
92   AliHLTITSAgent(const AliHLTITSAgent&);
93   /** assignment operator prohibited */
94   AliHLTITSAgent& operator=(const AliHLTITSAgent&);
95
96   /** handler for ITS raw data in the HLTOUT stream */
97   AliHLTOUTHandlerEquId* fRawDataHandler; //!transient
98
99   /** ROOT specific member definition */
100   ClassDef(AliHLTITSAgent, 0);
101 };
102
103 #endif