]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/TPCLib/AliHLTTPCTrackMCMarkerComponent.h
Bug fix: AliHLTComponent::ConfigureFromArgumentString
[u/mrichter/AliRoot.git] / HLT / TPCLib / AliHLTTPCTrackMCMarkerComponent.h
1 //-*- Mode: C++ -*-
2 // $Id$
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                               *
7 //                                                                        *
8 //*************************************************************************
9
10 #ifndef ALIHLTTPTRACKMCMARKERCOMPONENT_H
11 #define ALIHLTTPTRACKMCMARKERCOMPONENT_H
12
13 /// @file   AliHLTTPCTrackMCMarkerComponent.h
14 /// @author Matthias Kretz
15 /// @date
16 /// @brief  Marker component for TPC cluster mc labels.
17 ///
18
19 #include "AliHLTProcessor.h"
20 class AliHLTTPCClusterMCData;
21
22 /**
23  * @class AliHLTTPCTrackMCMarkerComponent
24  * Assigns MC labels to the TPC tracks 
25  */
26 class AliHLTTPCTrackMCMarkerComponent : public AliHLTProcessor
27 {
28   public:
29     /**
30      * Constructs a AliHLTTPCTrackMCMarkerComponent.
31      */
32     AliHLTTPCTrackMCMarkerComponent();
33
34     /**
35      * Destructs the AliHLTTPCTrackMCMarkerComponent
36      */
37     virtual ~AliHLTTPCTrackMCMarkerComponent() {};
38
39     // Public functions to implement AliHLTComponent's interface.
40     // These functions are required for the registration process
41
42     /**
43      * @copydoc AliHLTComponent::GetComponentID
44      */
45     const char *GetComponentID();
46
47     /**
48      * @copydoc AliHLTComponent::GetInputDataTypes
49      */
50     void GetInputDataTypes( AliHLTComponentDataTypeList &list );
51
52     /**
53      * @copydoc AliHLTComponent::GetOutputDataType
54      */
55     AliHLTComponentDataType GetOutputDataType();
56
57     /**
58      * @copydoc AliHLTComponent::GetOutputDataSize
59      */
60     virtual void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier );
61
62     /**
63      * @copydoc AliHLTComponent::Spawn
64      */
65     AliHLTComponent *Spawn();
66
67   protected:
68
69     // Protected functions to implement AliHLTComponent's interface.
70     // These functions provide initialization as well as the actual processing
71     // capabilities of the component.
72
73     /**
74      * @copydoc AliHLTComponent::DoInit
75      */
76     int DoInit( int argc, const char **argv );
77
78     /**
79      * @copydoc AliHLTComponent::DoDeinit
80      */
81     int DoDeinit();
82
83     /** reconfigure **/
84     int Reconfigure( const char* cdbEntry, const char* chainId );
85
86     /**
87      * @copydoc @ref AliHLTProcessor::DoEvent
88      */
89     int DoEvent( const AliHLTComponentEventData &evtData, const AliHLTComponentBlockData *blocks,
90                  AliHLTComponentTriggerData &trigData, AliHLTUInt8_t *outputPtr,
91                  AliHLTUInt32_t &size, AliHLTComponentBlockDataList &outputBlocks );
92
93     using AliHLTProcessor::DoEvent;
94
95   private:
96
97     static AliHLTTPCTrackMCMarkerComponent fgAliHLTTPCTrackMCMarkerComponent;
98
99     // disable copy
100     AliHLTTPCTrackMCMarkerComponent( const AliHLTTPCTrackMCMarkerComponent & );
101     AliHLTTPCTrackMCMarkerComponent &operator=( const AliHLTTPCTrackMCMarkerComponent & );
102
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 );
108
109     /**
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
114      */
115     int GetTrackMCLabel( unsigned int *hits, int nHits );
116
117     /** array of pointers to cluster MC labels **/
118
119     AliHLTTPCClusterMCData *fClusterLabels[36*6]; //! cluster MC labels for each TPC patch
120
121     ClassDef( AliHLTTPCTrackMCMarkerComponent, 0 )
122 };
123
124 #endif