//-*- Mode: C++ -*-
// $Id$
#ifndef ALIHLTTRDPREPROCESSORCOMPONENT_H
#define ALIHLTTRDPREPROCESSORCOMPONENT_H
//* This file is property of and copyright by the ALICE HLT/TRD Project *
//* ALICE Experiment at CERN, All rights reserved. *
//* See cxx source for full Copyright notice */
/// @file AliHLTTRDPreprocessorComponent.h
/// @author Felix Rettig, Stefan Kirsch
/// @date 2012-08-16
/// @brief A FEP-level pre-processing component for TRD tracking/trigger data
/// @ingroup alihlt_trd_components
#include "AliHLTProcessor.h"
class AliRawReaderMemory;
class TTree;
class AliTRDdigitsManager;
class AliTRDrawStream;
class AliTRDonlineTrackingDataContainer;
class TH1F;
class TH1I;
class TH2I;
class TH2F;
/**
* @class AliHLTTRDPreprocessorComponent
* Component fetches raw data input objects in DDL format and extracts tracklets and GTU tracks.
* It also instantiates a RawReader in order to be used with some reconstruction.
*
* More information and examples can be found here (relative to $ALICE_ROOT):
*
* -- HLT/BASE/AliHLTComponent.h/.cxx, HLT/BASE/AliHLTProcessor.h/.cxx
* Interface definition and description
* -- HLT/SampleLib: example implementations of components
*
*
*
General properties:
*
* Component ID: \b TRDPreprocessorComponent
* Library: \b libAliHLTTRD.so
* Input Data Types: @ref kAliHLTDataTypeDDLRaw|kAliHLTDataOriginTRD
* Output Data Types: @ref kAliHLTTrackDataTypeID|kAliHLTDataOriginTRD
*
* Mandatory arguments:
* none
*
* Optional arguments:
* none
*
* Configuration:
* none
*
* Default CDB entries:
* none
*
* Performance:
* minmal
*
* Memory consumption:
* don't know yet
*
* Output size:
* not very much
*
* @ingroup The component has no output data.
*/
class AliHLTTRDPreprocessorComponent : public AliHLTProcessor {
public:
AliHLTTRDPreprocessorComponent();
virtual ~AliHLTTRDPreprocessorComponent();
// AliHLTComponent interface functions
const char* GetComponentID();
void GetInputDataTypes( vector& list);
AliHLTComponentDataType GetOutputDataType();
int GetOutputDataTypes(AliHLTComponentDataTypeList& tgtList);
void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier );
void GetOCDBObjectDescription( TMap* const targetMap);
// Spawn function, return new class instance
AliHLTComponent* Spawn();
protected:
// AliHLTComponent interface functions
int DoInit( int argc, const char** argv );
int DoDeinit();
int DoEvent( const AliHLTComponentEventData& evtData, AliHLTComponentTriggerData& trigData);
int ScanConfigurationArgument(int argc, const char** argv);
int Reconfigure(const char* cdbEntry, const char* chainId);
int ReadPreprocessorValues(const char* modules);
using AliHLTProcessor::DoEvent;
private:
/** copy constructor prohibited */
AliHLTTRDPreprocessorComponent(const AliHLTTRDPreprocessorComponent&);
/** assignment operator prohibited */
AliHLTTRDPreprocessorComponent& operator=(const AliHLTTRDPreprocessorComponent&);
void DbgLog(const char* prefix, ...);
// general
static const AliHLTEventID_t fgkInvalidEventId = 18446744073709551615llu;
UShort_t fDebugLevel; //! set debug checks/output level, 0: debug off
AliHLTEventID_t fEventId; //! event ID
// trd specific data
TClonesArray* fTrackletArray; //! internal tracklet array
TClonesArray *fGtuTrackArray; //! internal track array
// rawreader instance
AliRawReaderMemory* fRawReaderMem; //! TRD raw reader memory instance
AliTRDdigitsManager *fDigitsManagerTrd; //! TRD digits manager instance
AliTRDrawStream* fRawReaderTrd; //! TRD raw stream instance
AliTRDonlineTrackingDataContainer* fTrackingData; //! internal tracking data container
ClassDef(AliHLTTRDPreprocessorComponent, 0)
};
#endif