]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/trigger/AliHLTTriggerAgent.h
including the CTPData to the input objects of the HLTGlobalTriggerDecision
[u/mrichter/AliRoot.git] / HLT / trigger / AliHLTTriggerAgent.h
1 // $Id$
2
3 #ifndef ALIHLTTRIGGERAGENT_H
4 #define ALIHLTTRIGGERAGENT_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   AliHLTTriggerAgent.h
10     @author Matthias Richter
11     @date   
12     @brief  Agent of the libAliHLTTrigger library
13 */
14
15 #include "AliHLTModuleAgent.h"
16 #include "AliHLTOUTHandler.h"
17
18 class AliESDEvent;
19 class TArrayC;
20
21 /**
22  * @class AliHLTTriggerAgent
23  * This is the agent for the AliHLTTrigger library.
24  *
25  * @ingroup alihlt_system
26  */
27 class AliHLTTriggerAgent : public AliHLTModuleAgent {
28  public:
29   /**
30    * standard constructor. The agent is automatically registered in the
31    * global agent manager
32    */
33   AliHLTTriggerAgent();
34   /** destructor */
35   virtual ~AliHLTTriggerAgent();
36
37   int RegisterComponents(AliHLTComponentHandler* pHandler) const;
38
39   /**
40    * Inherited from AliHLTModuleAgent
41    * Register all configurations belonging to this module with the
42    * AliHLTConfigurationHandler. The agent can adapt the configurations
43    * to be registered to the current AliRoot setup by checking the
44    * runloader.
45    * @param handler      the configuration handler
46    * @param rawReader    AliRawReader instance
47    * @param runloader    AliRoot runloader
48    * @return neg. error code if failed
49    */
50   int CreateConfigurations(AliHLTConfigurationHandler* handler,
51                            AliRawReader* rawReader=NULL,
52                            AliRunLoader* runloader=NULL) const;
53
54   /**
55    * Inherited from AliHLTModuleAgent
56    * Get the top configurations belonging to this module.
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    AliRawReader instance
62    * @param runloader    AliRoot runloader
63    * @return number of configurations, neg. error code if failed
64    */
65   const char* GetReconstructionChains(AliRawReader* rawReader=NULL,
66                                       AliRunLoader* runloader=NULL) const;
67
68   /**
69    * Inherited from AliHLTModuleAgent
70    * Component libraries which the configurations of this agent depend on.
71    * @return list of component libraries as a blank-separated string.
72    */
73   const char* GetRequiredComponentLibraries() const;
74
75   int GetHandlerDescription(AliHLTComponentDataType dt,
76                             AliHLTUInt32_t spec,
77                             AliHLTOUTHandlerDesc& desc) const;
78
79   AliHLTOUTHandler* GetOutputHandler(AliHLTComponentDataType dt, AliHLTUInt32_t spec);
80
81   int DeleteOutputHandler(AliHLTOUTHandler* pInstance);
82
83   /**
84    * The handler for trigger decision blocks in the HLTOUT stream.
85    */
86   class AliHLTTriggerDecisionHandler : public AliHLTOUTHandler {
87   public:
88     /** constructor */
89     AliHLTTriggerDecisionHandler();
90     /** destructor */
91     ~AliHLTTriggerDecisionHandler();
92
93     /**
94      * Process a data block.
95      * Decode specification and return equipment id of the data block.
96      * The data itsself i untouched.
97      * @return equipment id the block should be used for.
98      */
99     int ProcessData(AliHLTOUT* pData);
100
101     /** inherited from AliHLTOUTHandler */
102     int GetProcessedData(const AliHLTUInt8_t* &pData);
103
104     /** inherited from AliHLTOUTHandler */
105     int ReleaseProcessedData(const AliHLTUInt8_t* pData, int size);
106
107   private:
108     /** copy constructor forbidden */
109     AliHLTTriggerDecisionHandler(const AliHLTTriggerDecisionHandler&);
110     /** assignment operator forbidden */
111     AliHLTTriggerDecisionHandler& operator=(const AliHLTTriggerDecisionHandler&);
112
113     AliESDEvent* fESD; //!
114     TArrayC* fpData;  //!
115     int fSize; //!
116   };
117  protected:
118
119  private:
120   /** copy constructor prohibited */
121   AliHLTTriggerAgent(const AliHLTTriggerAgent&);
122   /** assignment operator prohibited */
123   AliHLTTriggerAgent& operator=(const AliHLTTriggerAgent&);
124
125   /** handler for trigger decision blocks */
126   AliHLTTriggerDecisionHandler* fTriggerDecisionHandler; //!
127
128   ClassDef(AliHLTTriggerAgent, 1);
129 };
130
131 #endif