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