Split: HLT/JET -> HLTANALYSIS/JET
[u/mrichter/AliRoot.git] / HLTANALYSIS / JET / AliHLTJETAgent.h
1 //-*- Mode: C++ -*-
2
3 // $Id: AliHLTJETAgent.h 28643 2008-09-09 20:43:24Z richterm $
4
5 #ifndef ALIHLTJETAGENT_H
6 #define ALIHLTJETAGENT_H
7 //* This file is property of and copyright by the ALICE HLT Project        * 
8 //* ALICE Experiment at CERN, All rights reserved.                         *
9 //* See cxx source for full Copyright notice                               *
10
11 /** @file   AliHLTJETAgent.h
12     @author Jochen Thaeder
13     @date   13.02.2009
14     @brief  Agent of the libAliHLTJET library
15 */
16
17 #include "AliHLTModuleAgent.h"
18
19 // raw data handler of HLTOUT data
20 #include "AliHLTOUTHandlerEquId.h"
21
22 /**
23  * @class AliHLTJETAgent
24  * This is the agent for the AliHLTJet library.<br>
25  *
26  * @ingroup alihlt_jet
27  */
28 class AliHLTJETAgent : public AliHLTModuleAgent {
29  public:
30   
31   /*
32    * ---------------------------------------------------------------------------------
33    *                            Constructor / Destructor
34    * ---------------------------------------------------------------------------------
35    */
36
37   /**
38    * standard constructor. The agent is automatically registered in the
39    * global agent manager
40    */
41   AliHLTJETAgent();
42   
43   /** destructor */
44   virtual ~AliHLTJETAgent();
45
46   /*
47    * ---------------------------------------------------------------------------------
48    *                            
49    * ---------------------------------------------------------------------------------
50    */
51
52   /**
53    * Register all configurations belonging to the sample library with the
54    * AliHLTConfigurationHandler. The agent can adapt the configurations
55    * to be registered to the current AliRoot setup by checking the
56    * runloader.
57    * @param handler   [in] the configuration handler
58    * @param rawReader [in] AliRoot RawReader instance 
59    * @param runloader [in] AliRoot runloader
60    * @return neg. error code if failed
61    */
62   Int_t CreateConfigurations(AliHLTConfigurationHandler* handler,
63                              AliRawReader* rawReader=NULL,
64                              AliRunLoader* runloader=NULL) const;
65
66   /**
67    * Get the top configurations for local event reconstruction.
68    * A top configuration describes a processing chain. It can simply be
69    * described by the last configuration(s) in the chain. 
70    * The agent can adapt the configurations to be registered to the current
71    * AliRoot setup by checking the runloader.
72    * @param rawReader [in] AliRoot RawReader instance 
73    * @param runloader [in] AliRoot runloader
74    * @return string containing the top configurations separated by blanks
75    */
76   const Char_t* GetReconstructionChains(AliRawReader* rawReader=NULL,
77                                         AliRunLoader* runloader=NULL) const;
78
79   /**
80    * Component libraries which the configurations of this agent depend on.
81    * @return list of component libraries as a blank-separated string.
82    */
83   const Char_t* GetRequiredComponentLibraries() const;
84
85   /**
86    * Register components for the AliHLTSample library.
87    * @param pHandler  [in] instance of the component handler          
88    */
89   Int_t RegisterComponents(AliHLTComponentHandler* pHandler) const;
90
91   /*
92    * ---------------------------------------------------------------------------------
93    *                            
94    * ---------------------------------------------------------------------------------
95    */
96
97   /**
98    *
99    */
100   AliHLTModulePreprocessor* GetPreprocessor();
101   
102   /*
103    * ---------------------------------------------------------------------------------
104    *                            
105    * ---------------------------------------------------------------------------------
106    */
107
108   /**
109    *
110    */
111   Int_t GetHandlerDescription(AliHLTComponentDataType dt,
112                               AliHLTUInt32_t spec,
113                               AliHLTOUTHandlerDesc& desc) const;
114
115   /**
116    *
117    */
118   AliHLTOUTHandler* GetOutputHandler(AliHLTComponentDataType dt,
119                                      AliHLTUInt32_t spec);
120
121   /**
122    *
123    */
124   Int_t DeleteOutputHandler(AliHLTOUTHandler* pInstance);
125
126   /*
127      class AliHLTOUTSDDRawDataHandler: public AliHLTOUTHandlerEquId {
128      public:
129      AliHLTOUTSDDRawDataHandler() {}
130      ~AliHLTOUTSDDRawDataHandler() {}
131      int ProcessData(AliHLTOUT* pData);
132      private:
133      };
134   */
135
136  protected:
137
138  private:
139
140   /*
141    * ---------------------------------------------------------------------------------
142    * Private functions to implement AliHLTComponent's interface.
143    * These functions provide initialization as well as the actual processing
144    * capabilities of the component. 
145    * ---------------------------------------------------------------------------------
146    */
147   
148   /** Copy constructor prohibited */
149   AliHLTJETAgent(const AliHLTJETAgent&);
150   
151   /** Assignment operator prohibited */
152   AliHLTJETAgent& operator=(const AliHLTJETAgent&);
153
154   /*
155    * ---------------------------------------------------------------------------------
156    *                                     Members
157    * ---------------------------------------------------------------------------------
158    */
159
160   /** Handler for JET data in the HLTOUT stream */
161   AliHLTOUTHandlerEquId* fRawDataHandler; //!transient
162
163   /** ROOT specific member definition */
164   ClassDef(AliHLTJETAgent, 0);
165 };
166
167 #endif