//-*- Mode: C++ -*-
// $Id$
#ifndef ALIHLTRECONSTRUCTOR_H
#define ALIHLTRECONSTRUCTOR_H
//* This file is property of and copyright by the ALICE HLT Project *
//* ALICE Experiment at CERN, All rights reserved. *
//* See cxx source for full Copyright notice *
// @file AliHLTReconstructor.h
// @author Matthias Richter
// @date
// @brief Binding class for HLT reconstruction in AliRoot
// Implements bot the interface to run HLT chains embedded into
// AliReconstruction and the unpacking and treatment of HLTOUT
#include "AliReconstructor.h"
class AliHLTSystem;
class AliRawReader;
class AliESDEvent;
class AliHLTOUT;
class AliHLTEsdManager;
class AliHLTPluginBase;
/**
* @defgroup alihlt_aliroot_reconstruction AliRoot reconstruction.
*
* @section alihlt_aliroot_reconstruction_intro General Remarks
* Like all other ALICE detectors, HLT utilizes the AliReconstruction interface
* to implement a plugin for the AliRoot reconstruction. The reconstructor can be
* used to
* -# run HLT analysis chains in the AliRoot reconstruction
* This option is mainly intended for the development and debugging cycle.
* HLT chains can be defined by means of AliHLTConfiguration and can be run either
* stand-alone or embedded into the AliReconstruction cycle.
* -# run the default analysis chains
* HLT modules can define default analysis chains to be run during AliRoot
* reconstruction.
* -# handle the HLTOUT data
* The HLT output stream contains multiple data blocks produced by the various
* components of the HLT chain. Each block might need different and even
* detector specific processing, like e.g. the processing of ESD objects or the
* handling of compressed data.
*
* @section alihlt_aliroot_reconstruction_steering Steering
* The AliHLTReconstructor provides the main interface for the reconstruction.
* The handling of the HLTOUT data is described in AliRawReaderHLT.
*
* @section alihlt_aliroot_reconstruction_examples Examples
* @subsection alihlt_aliroot_reconstruction_examples_reco Run chains
* - @ref tut_reconstruction
*
* @subsection alihlt_aliroot_reconstruction_examples_hltout Handle HLTOUT
* - @ref tut_alirawreaderhlt
*
* @ingroup alihlt_system
*/
/**
* @class AliHLTReconstructor
* AliRoot event reconstruction plug-in for the HLT.
* The AliHLTReconstructor holds an instance of the @ref AliHLTSystem
* steering class. The actual reconstruction depends on the loaded component
* libraries. Each library must implement a module agent (@ref AliHLTModuleAgent)
* in order to provide information on the supported features and the
* configurations to be run.
*
* The AliHLTReconstructor provides both the functionality to run customized
* analysis chains and the treatment of the HLTOUT data.
*
* @section sec_alihltreconstructor_options Options
* The default component libraries which are loaded through the initialization
* are determined by the @ref AliHLTSystem::fgkHLTDefaultLibs array. The library
* loading can be overridden by an option to the AliHLTReconstructor through the
* SetOption method of AliReconstruction, e.g.
*
* will only load libAliHLTSample.so
*
* Optional arguments:
*
* \li loglevel=level
* level can be a hex number encoding the @ref AliHLTComponentLogSeverity
* \li alilog=off
* disables the logging of HLT log messages through AliLog
* \li ignore-hltout
* ignore data from the HLTOUT data links
* \li ignore-ctp
* ignore CTP trigger setup
* \li esdmanager=