]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/ITS/AliHLTITSAgent.h
update by Gaute:
[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    * Register all configurations belonging to the sample library with the
46    * AliHLTConfigurationHandler. The agent can adapt the configurations
47    * to be registered to the current AliRoot setup by checking the
48    * runloader.
49    * @param handler   [in] the configuration handler
50    * @param rawReader [in] AliRoot RawReader instance 
51    * @param runloader [in] AliRoot runloader
52    * @return neg. error code if failed
53    */
54   int CreateConfigurations(AliHLTConfigurationHandler* handler,
55                            AliRawReader* rawReader=NULL,
56                            AliRunLoader* runloader=NULL) const;
57
58   /**
59    * Get the top configurations for local event reconstruction.
60    * A top configuration describes a processing chain. It can simply be
61    * described by the last configuration(s) in the chain. 
62    * The agent can adapt the configurations to be registered to the current
63    * AliRoot setup by checking the runloader.
64    * @param rawReader [in] AliRoot RawReader instance 
65    * @param runloader [in] AliRoot runloader
66    * @return string containing the top configurations separated by blanks
67    */
68   const char* GetReconstructionChains(AliRawReader* rawReader=NULL,
69                                       AliRunLoader* runloader=NULL) const;
70
71   /**
72    * Component libraries which the configurations of this agent depend on.
73    * @return list of component libraries as a blank-separated string.
74    */
75   const char* GetRequiredComponentLibraries() const;
76
77   /**
78    * Register components for the AliHLTSample library.
79    * @param pHandler  [in] instance of the component handler          
80    */
81   int RegisterComponents(AliHLTComponentHandler* pHandler) const;
82
83   int GetHandlerDescription(AliHLTComponentDataType dt,
84                             AliHLTUInt32_t spec,
85                             AliHLTOUTHandlerDesc& desc) const;
86   AliHLTOUTHandler* GetOutputHandler(AliHLTComponentDataType dt,
87                                      AliHLTUInt32_t spec);
88   int DeleteOutputHandler(AliHLTOUTHandler* pInstance);
89
90   AliHLTModulePreprocessor* GetPreprocessor();
91
92   class AliHLTOUTSDDRawDataHandler: public AliHLTOUTHandlerEquId {
93   public:
94     AliHLTOUTSDDRawDataHandler() {}
95     ~AliHLTOUTSDDRawDataHandler() {}
96     int ProcessData(AliHLTOUT* pData);
97   private:
98   };
99
100  protected:
101
102  private:
103   /** copy constructor prohibited */
104   AliHLTITSAgent(const AliHLTITSAgent&);
105   /** assignment operator prohibited */
106   AliHLTITSAgent& operator=(const AliHLTITSAgent&);
107
108   /** handler for ITS raw data in the HLTOUT stream */
109   AliHLTOUTHandlerEquId* fRawDataHandler; //!transient
110
111   /** ROOT specific member definition */
112   ClassDef(AliHLTITSAgent, 0);
113 };
114
115 #endif