]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/TRD/AliHLTTRDAgent.h
Update master to aliroot
[u/mrichter/AliRoot.git] / HLT / TRD / AliHLTTRDAgent.h
1 //-*- Mode: C++ -*-
2 // $Id$
3
4 #ifndef ALIHLTTRDAGENT_H
5 #define ALIHLTTRDAGENT_H
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   AliHLTTRDAgent.h
11     @author Matthias Richter
12     @date   
13     @brief  Agent of the libAliHLTTRD library
14 */
15
16 #include "AliHLTModuleAgent.h"
17 #include "AliHLTOUTHandlerEquId.h"
18
19 class AliHLTOUTHandlerChain;
20
21 /**
22  * @class AliHLTTRDAgent
23  * This is the agent for the AliHLTTRD library.
24  *
25  * @ingroup alihlt_system
26  */
27 class AliHLTTRDAgent : public AliHLTModuleAgent {
28  public:
29   /**
30    * standard constructor. The agent is automatically registered in the
31    * global agent manager
32    */
33   AliHLTTRDAgent();
34   /** destructor */
35   virtual ~AliHLTTRDAgent();
36
37   UInt_t GetDetectorMask() const;
38
39   /**
40    * Register all configurations belonging to this module with the
41    * AliHLTConfigurationHandler. The agent can adapt the configurations
42    * to be registered to the current AliRoot setup by checking the
43    * runloader.
44    * @param handler      the configuration handler
45    * @param rawReader    AliRawReader instance
46    * @param runloader    AliRoot runloader
47    * @return neg. error code if failed
48    */
49   int CreateConfigurations(AliHLTConfigurationHandler* handler,
50                            AliRawReader* rawReader=NULL,
51                            AliRunLoader* runloader=NULL) const;
52
53   /**
54    * Get the top configurations belonging to this module.
55    * A top configuration describes a processing chain. It can simply be
56    * described by the last configuration(s) in the chain. 
57    * The agent can adapt the configurations to be registered to the current
58    * AliRoot setup by checking the runloader.
59    * @param rawReader    AliRawReader instance
60    * @param runloader    AliRoot runloader
61    * @return number of configurations, neg. error code if failed
62    */
63   const char* GetReconstructionChains(AliRawReader* rawReader=NULL,
64                                       AliRunLoader* runloader=NULL) const;
65
66   /**
67    * Component libraries which the configurations of this agent depend on.
68    * @return list of component libraries as a blank-separated string.
69    */
70   const char* GetRequiredComponentLibraries() const;
71
72   /**
73    * Register components for the AliHLTTRD library.
74    * @param [in] pHandler  instance of the component handler          
75    */
76   int RegisterComponents(AliHLTComponentHandler* pHandler) const;
77
78   /**
79    * Get handler decription for TRD data in the HLTOUT data stream.
80    * @param [in]  dt        data type of the block
81    * @param [in]  spec      specification of the block
82    * @param [out] desc      handler description
83    * @return 1 if the agent can provide a handler, 0 if not
84    */
85   int GetHandlerDescription(AliHLTComponentDataType dt,
86                             AliHLTUInt32_t spec,
87                             AliHLTOUTHandlerDesc& desc) const;
88
89   /**
90    * Get specific handler for TRD data in the HLTOUT data stream.
91    * @param [in] dt        data type of the block
92    * @param [in] spec      specification of the block
93    * @return pointer to handler
94    */
95   AliHLTOUTHandler* GetOutputHandler(AliHLTComponentDataType dt,
96                                      AliHLTUInt32_t spec);
97
98   /**
99    * Delete an HLTOUT handler.
100    * @param pInstance      pointer to handler
101    */
102   int DeleteOutputHandler(AliHLTOUTHandler* pInstance);
103
104  protected:
105
106  private:
107   /** copy constructor prohibited */
108   AliHLTTRDAgent(const AliHLTTRDAgent&);
109   /** assignment operator prohibited */
110   AliHLTTRDAgent& operator=(const AliHLTTRDAgent&);
111
112   /** handler for TRD raw data in the HLTOUT stream */
113   AliHLTOUTHandlerEquId* fRawDataHandler; //!transient
114
115   ClassDef(AliHLTTRDAgent, 0);
116 };
117
118 #endif