84700e0bdfb7427c3e8bb50b81f924a31fa62a22
[u/mrichter/AliRoot.git] / HLT / rec / AliHLTReconstructor.h
1 // @(#) $Id$
2
3 #ifndef ALIHLTRECONSTRUCTOR_H
4 #define ALIHLTRECONSTRUCTOR_H
5 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
6  * See cxx source for full Copyright notice                               */
7
8 #include "AliReconstructor.h"
9
10 class AliHLTSystem;
11 class AliRawReader;
12 class AliESDEvent;
13
14 /**
15  * @class AliHLTReconstructor
16  * AliHLTReconstructor AliRoot event reconstruction plugin for the HLT.
17  * The AliHLTReconstructor holds an instance of the @ref AliHLTSystem
18  * steering class. The actual reconstruction depends on the loaded component
19  * libraries. Each library must implement a module agent (@ref AliHLTModuleAgent)
20  * in order to provide information on the supported features and the
21  * configurations to be run.
22  *
23  * The default component libraries which are loaded through the initialization
24  * are determined by the @ref kHLTDefaultLibs array. The library loading can
25  * be overridden by an option to the AliHLTReconstructor through the
26  * <tt>SetOption</tt> method of <tt>AliReconstruction</tt>, e.g.
27  * <pre>
28  * AliReconstruction rec;
29  * rec.SetOption("HLT", "libAliHLTSample.so");
30  * </pre>
31  * will only load <tt>libAliHLTSample.so</tt>
32  * 
33  * Optional arguments:<br>
34  * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formating -->
35  * \li loglevel=<i>level</i><br>
36  *     level can be a hex number encoding the @ref AliHLTComponentLogSeverity
37  * \li alilog=off <br>
38  *     disables the logging of HLT log messages through <tt>AliLog</tt> <br>
39  *
40  * For further information on the AliRoot reconstruction refer to the AliRoot
41  * documentation, namely <tt>AliReconstruction</tt>.
42  */
43 class AliHLTReconstructor: public AliReconstructor {
44 public:
45   AliHLTReconstructor();
46   /** destructor */
47   virtual ~AliHLTReconstructor();
48
49   /** init the reconstructor */
50   void Init();
51
52   /**
53    * This Reconstructor function is not applicable for the AliHLTReconstructor
54    * as it gets a detector specific digits tree. But HLT processes all detectors.
55    * Furthermore it's purely simulated data. <br>
56    * The function forwards to the default bahavior of AliReconstructor but gives
57    * a warning if there were options set, i.e. the user runs customized
58    * reconstruction.
59    */
60   void Reconstruct(TTree* digitsTree, TTree* clustersTree) const;
61
62   /**
63    * Reconstruction from RAW data.
64    * The rawReader holds data for all detectors and this version of Reconstruct
65    * is thus applicable for the HLT. The clustersTree is just ignored.
66    */
67   void Reconstruct(AliRawReader* rawReader, TTree* clustersTree) const;
68
69   /**
70    * This function is purely for simulated data and not applicable for HLT.
71    * HLT reconstruction on simulated data is processed at the end of
72    * simulation. <br>
73    * The function forwards to the default bahavior of AliReconstructor but gives
74    * a warning if there were options set, i.e. the user runs customized
75    * reconstruction.
76    */
77   void FillESD(TTree* digitsTree, TTree* clustersTree, AliESDEvent* esd) const;
78
79   /**
80    * Fill the ESD from RAW data.
81    * This is the main entry for HLT reconstruction of RAW data. It performs both
82    * the analysis by the defined chains and the filling of the ESD.
83    */
84   void FillESD(AliRawReader* rawReader, TTree* clustersTree, AliESDEvent* esd) const;
85
86 private:
87   /** copy constructor prohibited */
88   AliHLTReconstructor(const AliHLTReconstructor& src);
89   /** assignment operator prohibited */
90   AliHLTReconstructor& operator=(const AliHLTReconstructor& src);
91
92   AliHLTSystem* fpSystem; //! HLT steering object
93
94   ClassDef(AliHLTReconstructor, 3)   // class for the HLT reconstruction
95 };
96
97 typedef AliHLTReconstructor AliL3Reconstructor; // for backward compatibility
98
99 #endif