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 ALIHLTTPCCATRACKERCOMPONENT_H
11 #define ALIHLTTPCCATRACKERCOMPONENT_H
13 #include "AliHLTProcessor.h"
14 #include "AliHLTComponentBenchmark.h"
16 class AliHLTTPCCATrackerFramework;
17 class AliHLTTPCCASliceOutput;
18 class AliHLTTPCSpacePointData;
21 * @class AliHLTTPCCATrackerComponent
22 * The Cellular Automaton tracker component.
24 class AliHLTTPCCATrackerComponent : public AliHLTProcessor
27 /** standard constructor */
28 AliHLTTPCCATrackerComponent();
30 /** dummy copy constructor, defined according to effective C++ style */
31 AliHLTTPCCATrackerComponent( const AliHLTTPCCATrackerComponent& );
33 /** dummy assignment op, but defined according to effective C++ style */
34 AliHLTTPCCATrackerComponent& operator=( const AliHLTTPCCATrackerComponent& );
36 /** standard destructor */
37 virtual ~AliHLTTPCCATrackerComponent();
39 // Public functions to implement AliHLTComponent's interface.
40 // These functions are required for the registration process
42 /** @see component interface @ref AliHLTComponent::GetComponentID */
43 const char* GetComponentID() ;
45 /** @see component interface @ref AliHLTComponent::GetInputDataTypes */
46 void GetInputDataTypes( vector<AliHLTComponentDataType>& list ) ;
48 /** @see component interface @ref AliHLTComponent::GetOutputDataType */
49 AliHLTComponentDataType GetOutputDataType() ;
51 /** @see component interface @ref AliHLTComponent::GetOutputDataSize */
52 virtual void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier ) ;
54 /** @see component interface @ref AliHLTComponent::Spawn */
55 AliHLTComponent* Spawn() ;
59 // Protected functions to implement AliHLTComponent's interface.
60 // These functions provide initialization as well as the actual processing
61 // capabilities of the component.
63 /** @see component interface @ref AliHLTComponent::DoInit */
64 int DoInit( int argc, const char** argv );
66 /** @see component interface @ref AliHLTComponent::DoDeinit */
70 int Reconfigure( const char* cdbEntry, const char* chainId );
72 /** @see component interface @ref AliHLTProcessor::DoEvent */
73 int DoEvent( const AliHLTComponentEventData& evtData, const AliHLTComponentBlockData* blocks,
74 AliHLTComponentTriggerData& trigData, AliHLTUInt8_t* outputPtr,
75 AliHLTUInt32_t& size, vector<AliHLTComponentBlockData>& outputBlocks );
79 /** the tracker object */
80 AliHLTTPCCATrackerFramework* fTracker; //! transient
83 double fSolenoidBz; // see above
84 int fMinNTrackClusters; //* required min number of clusters on the track
85 double fMinTrackPt; //* required min Pt of tracks
86 double fClusterZCut; //* cut on cluster Z position (for noise rejection at the age of TPC)
87 double fNeighboursSearchArea; //* area in cm for the neighbour search algorithm
88 double fClusterErrorCorrectionY; // correction for the cluster errors
89 double fClusterErrorCorrectionZ; // correction for the cluster errors
91 AliHLTComponentBenchmark fBenchmark; // benchmarks
92 bool fAllowGPU; //* Allow this tracker to run on GPU
93 int fGPUHelperThreads; // Number of helper threads for GPU tracker, set to -1 to use default number
94 int fCPUTrackers; //Number of CPU trackers to run in addition to GPU tracker
95 bool fGlobalTracking; //Activate global tracking feature
97 static bool CompareClusters( AliHLTTPCSpacePointData *a, AliHLTTPCSpacePointData *b );
99 /** set configuration parameters **/
100 void SetDefaultConfiguration();
101 int ReadConfigurationString( const char* arguments );
102 int ReadCDBEntry( const char* cdbEntry, const char* chainId );
103 int Configure( const char* cdbEntry, const char* chainId, const char *commandLine );
105 ClassDef( AliHLTTPCCATrackerComponent, 0 );
108 #endif //ALIHLTTPCCATRACKERCOMPONENT_H