4 #ifndef ALIHLTOFFLINEINTERFACE_H
5 #define ALIHLTOFFLINEINTERFACE_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 */
10 /** @file AliHLTOfflineInterface.h
11 @author Matthias Richter
13 @brief the HLT interface to AliRoot
16 // see below for class documentation
18 // refer to README to build package
20 // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
30 /******************************************************************************/
33 * @class AliHLTOfflineInterface
34 * The class implements the basic interface to the AliRoot objects during
36 * It serves as a base class for offline source and sink interface components
37 * and provides access methods for the AliRunLoader, AliRawReader and AliESDEvent
38 * objects. The AliRunLoader and the AliRawReader are fixed during one run,
39 * while the AliESDEvent object will be changed from event to event.<br>
40 * \em Note: The digits and clusters trees are not available through this
41 * interface class as they are completetly detector (AliLoader) dependend.
43 * @note This class is only used for the @ref alihlt_system.
45 * @ingroup alihlt_system
47 class AliHLTOfflineInterface : public TObject {
49 /** standard constructor */
50 AliHLTOfflineInterface();
52 * @param pRunLoader pointer to AliRoot run loader
53 * @param pRawReader pointer to AliRoot raw reader
55 AliHLTOfflineInterface(AliRunLoader* pRunLoader, AliRawReader* pRawReader);
57 virtual ~AliHLTOfflineInterface();
60 * Get the AliRoot run loader.
62 AliRunLoader* GetRunLoader() const;
65 * Get the AliRoot raw reader
67 AliRawReader* GetRawReader() const;
70 * Set AliRoot ESD for the current event.
72 int SetESD(Int_t eventNo, AliESDEvent* pESD);
77 AliESDEvent* GetESD() const;
80 * Set AliRoot external params.
82 * @param runLoader the AliRoot runloader
83 * @param rawReader the AliRoot RawReader
84 * @return neg. error code if failed
86 int SetParams(AliRunLoader* runLoader, AliRawReader* rawReader);
89 * Reset AliRoot internal params.
94 * Set AliRoot external params.
95 * This method works on the global list.
96 * @param runLoader the AliRoot runloader
97 * @param rawReader the AliRoot RawReader
98 * @return neg. error code if failed
100 static int SetParamsToComponents(AliRunLoader* runLoader, AliRawReader* rawReader);
103 * Fill ESD for one event.
104 * Fill the ESD with the previously reconstructed data. It must be implmented
105 * by the child class.
106 * @param eventNo event No. \em Note: this is an internal enumeration of the
108 * @param runLoader the AliRoot runloader
109 * @param esd an AliESDEvent instance
110 * @return neg. error code if failed
112 virtual int FillESD(int eventNo, AliRunLoader* runLoader, AliESDEvent* esd)=0;
115 * Fill ESD for one event.
116 * The FillESD method of all active AliHLTOfflineDataSink's is called in
117 * order to fill the ESD with the previously reconstructed data. This method
118 * works on the global list.
119 * @param eventNo event No. \em Note: this is an internal enumeration of the
121 * @param runLoader the AliRoot runloader
122 * @param esd an AliESDEvent instance
123 * @return neg. error code if failed
125 static int FillComponentESDs(int eventNo, AliRunLoader* runLoader, AliESDEvent* esd);
128 * Reset AliRoot internal params of all active components.
129 * This method works on the global list.
131 static int ResetComponents();
135 * Register an OfflineInterface.
136 * @param me instance of AliHLTOfflineInterface
137 * @return neg. error code if failed
139 static int Register(AliHLTOfflineInterface* me);
142 * Unregister an OfflineInterface.
143 * @param me instance of AliHLTOfflineInterface
144 * @return neg. error code if failed
146 static int Unregister(AliHLTOfflineInterface* me);
149 /** copy constructor prohibited */
150 AliHLTOfflineInterface(const AliHLTOfflineInterface&);
151 /** assignment operator prohibited */
152 AliHLTOfflineInterface& operator=(const AliHLTOfflineInterface&);
154 /** global AliRoot run loader instance (for all components) */
155 static AliRunLoader* fgpRunLoader; //! transient
156 /** global AliRoot raw reader instance (for all components) */
157 static AliRawReader* fgpRawReader; //! transient
159 /** private AliRoot run loader instance */
160 AliRunLoader* fpRunLoader; //! transient
161 /** private AliRoot raw reader instance */
162 AliRawReader* fpRawReader; //! transient
163 /** AliRoot HLT ESD instance */
164 AliESDEvent* fpESD; //! transient
166 /** the list of active interfaces */
167 static AliHLTOfflineInterface* fAnchor; //! transient
169 /** next element in the list */
170 AliHLTOfflineInterface* fpNext; //! transient
172 /** the current element */
173 static AliHLTOfflineInterface* fCurrent; //! transient
175 /** number of interfaces */
176 static int fCount; //! see above
178 ClassDef(AliHLTOfflineInterface, 3);