3 // ************************************************************************
4 // This file is property of and copyright by the ALICE HLT Project *
5 // ALICE Experiment at CERN, All rights reserved. *
6 // See cxx source for full Copyright notice *
8 //*************************************************************************
10 #ifndef ALIHLTTPTRACKMCMARKERCOMPONENT_H
11 #define ALIHLTTPTRACKMCMARKERCOMPONENT_H
13 /// @file AliHLTTPCTrackMCMarkerComponent.h
14 /// @author Matthias Kretz
16 /// @brief Marker component for TPC cluster mc labels.
19 #include "AliHLTProcessor.h"
20 class AliHLTTPCClusterMCData;
23 * @class AliHLTTPCTrackMCMarkerComponent
24 * Assigns MC labels to the TPC tracks
26 class AliHLTTPCTrackMCMarkerComponent : public AliHLTProcessor
30 * Constructs a AliHLTTPCTrackMCMarkerComponent.
32 AliHLTTPCTrackMCMarkerComponent();
35 * Destructs the AliHLTTPCTrackMCMarkerComponent
37 virtual ~AliHLTTPCTrackMCMarkerComponent() {};
39 // Public functions to implement AliHLTComponent's interface.
40 // These functions are required for the registration process
43 * @copydoc AliHLTComponent::GetComponentID
45 const char *GetComponentID();
48 * @copydoc AliHLTComponent::GetInputDataTypes
50 void GetInputDataTypes( AliHLTComponentDataTypeList &list );
53 * @copydoc AliHLTComponent::GetOutputDataType
55 AliHLTComponentDataType GetOutputDataType();
58 * @copydoc AliHLTComponent::GetOutputDataSize
60 virtual void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier );
63 * @copydoc AliHLTComponent::Spawn
65 AliHLTComponent *Spawn();
69 // Protected functions to implement AliHLTComponent's interface.
70 // These functions provide initialization as well as the actual processing
71 // capabilities of the component.
74 * @copydoc AliHLTComponent::DoInit
76 int DoInit( int argc, const char **argv );
79 * @copydoc AliHLTComponent::DoDeinit
84 int Reconfigure( const char* cdbEntry, const char* chainId );
87 * @copydoc @ref AliHLTProcessor::DoEvent
89 int DoEvent( const AliHLTComponentEventData &evtData, const AliHLTComponentBlockData *blocks,
90 AliHLTComponentTriggerData &trigData, AliHLTUInt8_t *outputPtr,
91 AliHLTUInt32_t &size, AliHLTComponentBlockDataList &outputBlocks );
93 using AliHLTProcessor::DoEvent;
97 static AliHLTTPCTrackMCMarkerComponent fgAliHLTTPCTrackMCMarkerComponent;
100 AliHLTTPCTrackMCMarkerComponent( const AliHLTTPCTrackMCMarkerComponent & );
101 AliHLTTPCTrackMCMarkerComponent &operator=( const AliHLTTPCTrackMCMarkerComponent & );
103 /** set configuration parameters **/
104 void SetDefaultConfiguration();
105 int ReadConfigurationString( const char* arguments );
106 int ReadCDBEntry( const char* cdbEntry, const char* chainId );
107 int Configure( const char* cdbEntry, const char* chainId, const char *commandLine );
110 * Get MC label for a track
111 * @param hits array of track hit Id's
112 * @param nHits n of hits
113 * @return neg. -1 if failed
115 int GetTrackMCLabel( unsigned int *hits, int nHits );
117 /** array of pointers to cluster MC labels **/
119 AliHLTTPCClusterMCData *fClusterLabels[36*6]; //! cluster MC labels for each TPC patch
121 ClassDef( AliHLTTPCTrackMCMarkerComponent, 0 )