e9aa595f9bd7b622534525f38b8cd1b35310d990
[u/mrichter/AliRoot.git] / HLT / TPCLib / AliHLTTPCSliceTrackerComponent.h
1 // XEmacs -*-C++-*-
2 // @(#) $Id$
3
4 #ifndef ALIHLTTPCSLICETRACKERCOMPONENT_H
5 #define ALIHLTTPCSLICETRACKERCOMPONENT_H
6 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
7  * See cxx source for full Copyright notice                               */
8
9 /** @file   AliHLTTPCSliceTrackerComponent.h
10     @author Timm Steinbeck, Matthias Richter
11     @date   
12     @brief  The TPC conformal mapping tracker component.
13 */
14
15 #include "AliHLTProcessor.h"
16
17 class AliHLTTPCConfMapper;
18 class AliHLTTPCVertex;
19 class AliHLTTPCInterMerger;
20
21 /**
22  * @class AliHLTTPCSliceTrackerComponent
23  * The TPC conformal mapping tracker component.
24  * 
25  * The component has the following component arguments:
26  * - disable-merger  disable merging of track segments
27  * - pp-run          parameter set for pp run
28  * - multiplicity    multiplicity to choose parameter set for
29  * - bfield          magnatic field
30  * 
31  * @ingroup alihlt_tpc
32  */
33 class AliHLTTPCSliceTrackerComponent : public AliHLTProcessor
34 {
35 public:
36   /** default constructor */
37   AliHLTTPCSliceTrackerComponent();
38   /** not a valid copy constructor, defined according to effective C++ style */
39   AliHLTTPCSliceTrackerComponent(const AliHLTTPCSliceTrackerComponent&);
40   /** not a valid assignment op, but defined according to effective C++ style */
41   AliHLTTPCSliceTrackerComponent& operator=(const AliHLTTPCSliceTrackerComponent&);
42   /** destructor */
43   virtual ~AliHLTTPCSliceTrackerComponent();
44
45   // Public functions to implement AliHLTComponent's interface.
46   // These functions are required for the registration process
47
48   /** interface function, see @ref AliHLTComponent for description */
49   const char* GetComponentID();
50   /** interface function, see @ref AliHLTComponent for description */
51   void GetInputDataTypes( vector<AliHLTComponentDataType>& list);
52   /** interface function, see @ref AliHLTComponent for description */
53   AliHLTComponentDataType GetOutputDataType();
54   /** interface function, see @ref AliHLTComponent for description */
55   virtual void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier );
56   /** interface function, see @ref AliHLTComponent for description */
57   AliHLTComponent* Spawn();
58
59 protected:
60
61   /**
62    * Set Tracker parameters
63    * Knowledge on that has been lost, so somebody has to insert more
64    * documentation.
65    */   
66   void SetTrackerParam(Int_t phiSegments=50,Int_t etaSegments=100,
67                        Int_t trackletlength=3,Int_t tracklength=5,
68                        Int_t rowscopetracklet=2,Int_t rowscopetrack=3,
69                        Double_t minPtFit=0,Double_t maxangle=1.31,
70                        Double_t goodDist=5,Double_t hitChi2Cut=10,
71                        Double_t goodHitChi2=20,Double_t trackChi2Cut=50,
72                        Int_t maxdist=50,Double_t maxphi=0.1,Double_t maxeta=0.1,
73                        bool vertexconstraint=true);
74
75   /**
76    * Set Tracker parameters
77    * Knowledge on that has been lost, so somebody has to insert more
78    * documentation.
79    */
80   void SetTrackerParam( bool doPP, int multiplicity, double bField );
81
82   /**
83    * Set default tracker parameters
84    * Knowledge on that has been lost, so somebody has to insert more
85    * documentation.
86    */
87   void SetTrackerParam1();
88
89   // Protected functions to implement AliHLTComponent's interface.
90   // These functions provide initialization as well as the actual processing
91   // capabilities of the component. 
92
93   /** interface function, see @ref AliHLTComponent for description */
94   int DoInit( int argc, const char** argv );
95   /** interface function, see @ref AliHLTComponent for description */
96   int DoDeinit();
97   /** interface function, see @ref AliHLTComponent for description */
98   int DoEvent( const AliHLTComponentEventData& evtData, const AliHLTComponentBlockData* blocks, 
99                AliHLTComponentTriggerData& trigData, AliHLTUInt8_t* outputPtr, 
100                AliHLTUInt32_t& size, vector<AliHLTComponentBlockData>& outputBlocks );
101   
102 private:
103
104   /** instance of the tracker */
105   AliHLTTPCConfMapper* fTracker;                                   //! transient
106   /** vertex object */
107   AliHLTTPCVertex* fVertex;                                        //! transient
108   /** eta range */
109   Float_t fEta[2];                                                 //  see above
110   /** switch for subsequent non-vertex tracking */
111   Bool_t fDoNonVertex;                                             //  see above
112   /** */
113   Bool_t  fDoPP;                                                   //  see above
114   /** multiplicity estimate */
115   Int_t fMultiplicity;                                             //  see above
116   /** magnetic field */
117   Double_t fBField;                                                //  see above
118
119 // BEGINN ############################################## MODIFIY JMT
120   Bool_t fnonvertextracking;   // enable NONVERTEX Tracking
121   Bool_t fmainvertextracking;  // enable MAINVERTEX Tracking
122 // END ################################################# MODIFIY JMT
123
124   /** merger object */
125   AliHLTTPCInterMerger *fpInterMerger;                             //! transient
126
127   ClassDef(AliHLTTPCSliceTrackerComponent, 0);
128
129 };
130 #endif