]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/ITS/AliHLTITSAgent.h
Fix for IsTriggerInputFired,GetFiredTriggerInputs
[u/mrichter/AliRoot.git] / HLT / ITS / AliHLTITSAgent.h
1 //-*- Mode: C++ -*-
2 // $Id$
3
4 #ifndef ALIHLTITSAGENT_H
5 #define ALIHLTITSAGENT_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   AliHLTITSAgent.h
11 //  @author Matthias Richter
12 //  @date   25.08.2008
13 //  @brief  Agent of the libAliHLTITS library
14 //  @note
15
16 #include "AliHLTModuleAgent.h"
17
18 // raw data handler of HLTOUT data
19 #include "AliHLTOUTHandlerEquId.h"
20
21 /**
22  * @class AliHLTITSAgent
23  * This is the agent for the AliHLTSample library.<br>
24  *
25  * The agent implements the HLTOUT handling of raw data blocks from the
26  * ITS SDD.
27  * This assumes that the data blocks are sent with data type
28  * {DDL_RAW :ISDD} and the bit set in the specification corresponding.
29  * to detector DDL id.
30  * An HLTOUT handler is implemented to extract the equipment id from
31  * the specification.
32  *
33  * @ingroup alihlt_its
34  */
35 class AliHLTITSAgent : public AliHLTModuleAgent {
36  public:
37   /**
38    * standard constructor. The agent is automatically registered in the
39    * global agent manager
40    */
41   AliHLTITSAgent();
42   /** destructor */
43   virtual ~AliHLTITSAgent();
44
45   /**
46    * Inherited from AliHLTModuleAgent
47    * Register all configurations belonging to this module with the
48    * AliHLTConfigurationHandler. The agent can adapt the configurations
49    * to be registered to the current AliRoot setup by checking the
50    * runloader.
51    * @param handler      the configuration handler
52    * @param rawReader    AliRawReader instance
53    * @param runloader    AliRoot runloader
54    * @return neg. error code if failed
55    */
56   int CreateConfigurations(AliHLTConfigurationHandler* handler,
57                            AliRawReader* rawReader=NULL,
58                            AliRunLoader* runloader=NULL) const;
59
60   /**
61    * Inherited from AliHLTModuleAgent
62    * Get the top configurations belonging to this module.
63    * A top configuration describes a processing chain. It can simply be
64    * described by the last configuration(s) in the chain. 
65    * The agent can adapt the configurations to be registered to the current
66    * AliRoot setup by checking the runloader.
67    * @param rawReader    AliRawReader instance
68    * @param runloader    AliRoot runloader
69    * @return number of configurations, neg. error code if failed
70    */
71   const char* GetReconstructionChains(AliRawReader* rawReader=NULL,
72                                       AliRunLoader* runloader=NULL) const;
73
74   /**
75    * Inherited from AliHLTModuleAgent
76    * Component libraries which the configurations of this agent depend on.
77    * @return list of component libraries as a blank-separated string.
78    */
79   const char* GetRequiredComponentLibraries() const;
80
81   /**
82    * Inherited from AliHLTModuleAgent
83    * Register components for the AliHLTSample library.
84    * @param pHandler  [in] instance of the component handler          
85    */
86   int RegisterComponents(AliHLTComponentHandler* pHandler) const;
87
88   /**
89    * Inherited from AliHLTModuleAgent
90    * Return HLTOUT handler description for a certain data block in the
91    * HLTOUT payload.
92    * @return 1 if module provides a handler
93    */
94   int GetHandlerDescription(AliHLTComponentDataType dt,
95                             AliHLTUInt32_t spec,
96                             AliHLTOUTHandlerDesc& desc) const;
97
98   /**
99    * Inherited from AliHLTModuleAgent
100    * Create HLTOUT handler for a certain data block in the
101    * HLTOUT payload. The same handler can be returned multiple
102    * times, even for different data types. The framework will
103    * handle this.
104    * @return pointer to handler
105    */
106   AliHLTOUTHandler* GetOutputHandler(AliHLTComponentDataType dt,
107                                      AliHLTUInt32_t spec);
108
109   /**
110    * Inherited from AliHLTModuleAgent
111    * Delete the instance of the handler. This is only called once
112    * even if the same handler has been issued multiple times
113    */
114   int DeleteOutputHandler(AliHLTOUTHandler* pInstance);
115
116   AliHLTModulePreprocessor* GetPreprocessor();
117
118   class AliHLTOUTSDDRawDataHandler: public AliHLTOUTHandlerEquId {
119   public:
120     AliHLTOUTSDDRawDataHandler() {}
121     ~AliHLTOUTSDDRawDataHandler() {}
122     int ProcessData(AliHLTOUT* pData);
123   private:
124   };
125
126   /**
127    * Create configurations for all CFs for the ITS subdetectors
128    * Get the necessary information from AliDAQ using the detector id.
129    * @param pHandler       Instance of the configuration handler 
130    * @param detectorId     Id of the detector as specified in AliDAQ
131    * @param output         Target string to receive the configurations
132    * @return neg. error code f failed
133    */
134   int CreateCFConfigurations(AliHLTConfigurationHandler* pHandler, int detectorId, TString& output) const;
135
136  protected:
137
138  private:
139
140   /** copy constructor prohibited */
141   AliHLTITSAgent(const AliHLTITSAgent&);
142   /** assignment operator prohibited */
143   AliHLTITSAgent& operator=(const AliHLTITSAgent&);
144
145   /** handler for ITS raw data in the HLTOUT stream */
146   AliHLTOUTHandlerEquId* fRawDataHandler; //!transient
147
148   /** ROOT specific member definition */
149   ClassDef(AliHLTITSAgent, 0);
150 };
151
152 #endif