06e79951ad58468ca6370a6e9cb2905bb4d32c2b
[u/mrichter/AliRoot.git] / HLT / TPCLib / tracking-ca / AliHLTTPCCATrackerComponent.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 ALIHLTTPCCATRACKERCOMPONENT_H
11 #define ALIHLTTPCCATRACKERCOMPONENT_H
12
13 #include "AliHLTProcessor.h"
14 #include "AliHLTComponentBenchmark.h"
15
16 class AliHLTTPCCATrackerFramework;
17 class AliHLTTPCCASliceOutput;
18 class AliHLTTPCSpacePointData;
19
20 /**
21  * @class AliHLTTPCCATrackerComponent
22  * The Cellular Automaton tracker component.
23  */
24 class AliHLTTPCCATrackerComponent : public AliHLTProcessor
25 {
26   public:
27     /** standard constructor */
28     AliHLTTPCCATrackerComponent();
29
30     /** dummy copy constructor, defined according to effective C++ style */
31     AliHLTTPCCATrackerComponent( const AliHLTTPCCATrackerComponent& );
32
33     /** dummy assignment op, but defined according to effective C++ style */
34     AliHLTTPCCATrackerComponent& operator=( const AliHLTTPCCATrackerComponent& );
35
36     /** standard destructor */
37     virtual ~AliHLTTPCCATrackerComponent();
38
39     // Public functions to implement AliHLTComponent's interface.
40     // These functions are required for the registration process
41
42     /** @see component interface @ref AliHLTComponent::GetComponentID */
43     const char* GetComponentID() ;
44
45     /** @see component interface @ref AliHLTComponent::GetInputDataTypes */
46     void GetInputDataTypes( vector<AliHLTComponentDataType>& list )  ;
47
48     /** @see component interface @ref AliHLTComponent::GetOutputDataType */
49     AliHLTComponentDataType GetOutputDataType() ;
50
51     /** @see component interface @ref AliHLTComponent::GetOutputDataSize */
52     virtual void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier ) ;
53
54     /** @see component interface @ref AliHLTComponent::Spawn */
55     AliHLTComponent* Spawn() ;
56
57   protected:
58
59     // Protected functions to implement AliHLTComponent's interface.
60     // These functions provide initialization as well as the actual processing
61     // capabilities of the component.
62
63     /** @see component interface @ref AliHLTComponent::DoInit */
64     int DoInit( int argc, const char** argv );
65
66     /** @see component interface @ref AliHLTComponent::DoDeinit */
67     int DoDeinit();
68
69     /** reconfigure **/
70     int Reconfigure( const char* cdbEntry, const char* chainId );
71
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 );
76
77   private:
78
79     /** the tracker object */
80     AliHLTTPCCATrackerFramework* fTracker;                                //! transient
81
82     /** magnetic field */
83     double fSolenoidBz;                                            // see above
84     int fMinNTrackClusters; //* required min number of clusters on the track
85     double fClusterZCut;  //* cut on cluster Z position (for noise rejection at the age of TPC)
86         double fNeighboursSearchArea; //* area in cm for the neighbour search algorithm
87     double fClusterErrorCorrectionY; // correction for the cluster errors
88     double fClusterErrorCorrectionZ; // correction for the cluster errors
89
90     AliHLTComponentBenchmark fBenchmark; // benchmarks
91     bool fAllowGPU;    //* Allow this tracker to run on GPU
92
93     static bool CompareClusters( AliHLTTPCSpacePointData *a, AliHLTTPCSpacePointData *b );
94
95     /** set configuration parameters **/
96     void SetDefaultConfiguration();
97     int ReadConfigurationString(  const char* arguments );
98     int ReadCDBEntry( const char* cdbEntry, const char* chainId );
99     int Configure( const char* cdbEntry, const char* chainId, const char *commandLine  );
100
101     ClassDef( AliHLTTPCCATrackerComponent, 0 );
102
103 };
104 #endif //ALIHLTTPCCATRACKERCOMPONENT_H