fixing clang issues
[u/mrichter/AliRoot.git] / HLT / TPCLib / tracking-ca / AliHLTTPCCATrackerComponent.h
CommitLineData
cf471b1e 1//-*- Mode: C++ -*-
2// @(#) $Id$
ce565086 3// ************************************************************************
fbb9b71b 4// This file is property of and copyright by the ALICE HLT Project *
ce565086 5// ALICE Experiment at CERN, All rights reserved. *
6// See cxx source for full Copyright notice *
7// *
8//*************************************************************************
cf471b1e 9
10#ifndef ALIHLTTPCCATRACKERCOMPONENT_H
11#define ALIHLTTPCCATRACKERCOMPONENT_H
12
13#include "AliHLTProcessor.h"
57a4102f 14#include "AliHLTComponentBenchmark.h"
cf471b1e 15
b22af1bf 16class AliHLTTPCCATrackerFramework;
17class AliHLTTPCCASliceOutput;
e01a1f52 18class AliHLTTPCCAClusterData;
1cc7250e 19struct AliHLTTPCSpacePointData;
cf471b1e 20
21/**
22 * @class AliHLTTPCCATrackerComponent
23 * The Cellular Automaton tracker component.
24 */
25class AliHLTTPCCATrackerComponent : public AliHLTProcessor
4c256004 26{
fbb9b71b 27 public:
28 /** standard constructor */
29 AliHLTTPCCATrackerComponent();
30
31 /** dummy copy constructor, defined according to effective C++ style */
32 AliHLTTPCCATrackerComponent( const AliHLTTPCCATrackerComponent& );
33
34 /** dummy assignment op, but defined according to effective C++ style */
35 AliHLTTPCCATrackerComponent& operator=( const AliHLTTPCCATrackerComponent& );
36
37 /** standard destructor */
38 virtual ~AliHLTTPCCATrackerComponent();
39
40 // Public functions to implement AliHLTComponent's interface.
41 // These functions are required for the registration process
42
4acc2401 43 /** @see component interface @ref AliHLTComponent::GetComponentID */
fbb9b71b 44 const char* GetComponentID() ;
45
46 /** @see component interface @ref AliHLTComponent::GetInputDataTypes */
47 void GetInputDataTypes( vector<AliHLTComponentDataType>& list ) ;
48
49 /** @see component interface @ref AliHLTComponent::GetOutputDataType */
50 AliHLTComponentDataType GetOutputDataType() ;
51
52 /** @see component interface @ref AliHLTComponent::GetOutputDataSize */
53 virtual void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier ) ;
54
55 /** @see component interface @ref AliHLTComponent::Spawn */
56 AliHLTComponent* Spawn() ;
57
58 protected:
59
60 // Protected functions to implement AliHLTComponent's interface.
61 // These functions provide initialization as well as the actual processing
62 // capabilities of the component.
63
64 /** @see component interface @ref AliHLTComponent::DoInit */
65 int DoInit( int argc, const char** argv );
66
67 /** @see component interface @ref AliHLTComponent::DoDeinit */
68 int DoDeinit();
69
70 /** reconfigure **/
71 int Reconfigure( const char* cdbEntry, const char* chainId );
72
73 /** @see component interface @ref AliHLTProcessor::DoEvent */
74 int DoEvent( const AliHLTComponentEventData& evtData, const AliHLTComponentBlockData* blocks,
4acc2401 75 AliHLTComponentTriggerData& trigData, AliHLTUInt8_t* outputPtr,
76 AliHLTUInt32_t& size, vector<AliHLTComponentBlockData>& outputBlocks );
fbb9b71b 77
78 private:
79
e01a1f52 80 static const int fgkNSlices = 36; //* N slices
81
fbb9b71b 82 /** the tracker object */
e01a1f52 83 AliHLTTPCCATrackerFramework* fTracker; //! transient
84 AliHLTTPCCAClusterData* fClusterData; //Storage classes for cluser data in slice
85 AliHLTTPCCASliceOutput* fSliceOutput[fgkNSlices]; //Pointers to slice tracker output structures
86
87 //The following parameters are maintained for compatibility to be able to change the component
88 //such to process less than all 36 slices. Currently, fMinSlice is always 0 and fSliceCount is 36
89 int fMinSlice; //minimum slice number to be processed
90 int fSliceCount; //Number of slices to be processed
fbb9b71b 91
92 /** magnetic field */
e01a1f52 93 double fSolenoidBz; // see above
94 int fMinNTrackClusters; //* required min number of clusters on the track
95 double fMinTrackPt; //* required min Pt of tracks
96 double fClusterZCut; //* cut on cluster Z position (for noise rejection at the age of TPC)
97 double fNeighboursSearchArea; //* area in cm for the neighbour search algorithm
98 double fClusterErrorCorrectionY; // correction for the cluster errors
99 double fClusterErrorCorrectionZ; // correction for the cluster errors
f0fb467d 100
57a4102f 101 AliHLTComponentBenchmark fBenchmark; // benchmarks
e01a1f52 102 bool fAllowGPU; //* Allow this tracker to run on GPU
103 int fGPUHelperThreads; // Number of helper threads for GPU tracker, set to -1 to use default number
104 int fCPUTrackers; //Number of CPU trackers to run in addition to GPU tracker
105 bool fGlobalTracking; //Activate global tracking feature
10dd8017 106 int fGPUDeviceNum; //GPU Device to use, default -1 for auto detection
dedda6bb 107 TString fGPULibrary; //Name of the library file that provides the GPU tracker object
fbb9b71b 108
109 /** set configuration parameters **/
768b27af 110 void SetDefaultConfiguration();
111 int ReadConfigurationString( const char* arguments );
112 int ReadCDBEntry( const char* cdbEntry, const char* chainId );
e01a1f52 113 int Configure( const char* cdbEntry, const char* chainId, const char *commandLine );
114 void ConfigureSlices();
fbb9b71b 115
116 ClassDef( AliHLTTPCCATrackerComponent, 0 );
117
4c256004 118};
31649d4b 119#endif //ALIHLTTPCCATRACKERCOMPONENT_H