]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/TPCLib/AliHLTTPCGlobalMergerComponent.h
coding conventions and documentation
[u/mrichter/AliRoot.git] / HLT / TPCLib / AliHLTTPCGlobalMergerComponent.h
1 // XEmacs -*-C++-*-
2 // @(#) $Id$
3
4 #ifndef ALIHLTTPCGLOBALMERGERCOMPONENT_H
5 #define ALIHLTTPCGLOBALMERGERCOMPONENT_H
6 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
7  * See cxx source for full Copyright notice                               */
8
9 /** @file   AliHLTTPCGlobalMergerComponent.h
10     @author Timm Steinbeck, Matthias Richter
11     @date   
12     @brief  HLT TPC global merger component.
13 */
14
15 #include "AliHLTProcessor.h"
16
17 class AliHLTTPCGlobalMerger;
18 class AliHLTTPCVertex;
19
20 /**
21  * @class AliHLTTPCGlobalMergerComponent
22  * The TPC global merger component
23  * The component is the interface to the AliHLTGlobalMerger processing
24  * class.
25  */
26 class AliHLTTPCGlobalMergerComponent : public AliHLTProcessor
27     {
28     public:
29       /** standard constructor */
30       AliHLTTPCGlobalMergerComponent();
31       /** not a valid copy constructor, defined according to effective C++ style */
32       AliHLTTPCGlobalMergerComponent(const AliHLTTPCGlobalMergerComponent&);
33       /** not a valid assignment op, but defined according to effective C++ style */
34       AliHLTTPCGlobalMergerComponent& operator=(const AliHLTTPCGlobalMergerComponent&);
35       /** standard destructor */
36       virtual ~AliHLTTPCGlobalMergerComponent();
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       /**
59        * Set the parameters
60        */
61         void SetMergerParameters(Double_t maxy=2.0,Double_t maxz=3.0,Double_t maxkappa=0.003,
62                                  Double_t maxpsi=0.1,Double_t maxtgl=0.05);
63
64         // Protected functions to implement AliHLTComponent's interface.
65         // These functions provide initialization as well as the actual processing
66         // capabilities of the component. 
67
68
69       /** @see component interface @ref AliHLTComponent::DoInit */
70         int DoInit( int argc, const char** argv );
71
72       /** @see component interface @ref AliHLTComponent::DoDeinit */
73         int DoDeinit();
74
75       /** @see component interface @ref AliHLTProcessor::DoEvent */
76         int DoEvent( const AliHLTComponentEventData& evtData, const AliHLTComponentBlockData* blocks, 
77                      AliHLTComponentTriggerData& trigData, AliHLTUInt8_t* outputPtr, 
78                      AliHLTUInt32_t& size, vector<AliHLTComponentBlockData>& outputBlocks );
79         
80     private:
81
82       /** the global merger object */
83       AliHLTTPCGlobalMerger* fGlobalMerger; //!
84       /** the vertexer object */
85       AliHLTTPCVertex* fVertex; //!
86
87       struct SliceData {
88         /** slice no */
89         int fSlice;                                                // see above
90         /** block descriptor for the vertex data block */
91         const AliHLTComponentBlockData* fVertexBlock;              //! transient
92         /** index of the vertex data block */
93         unsigned fVertexBlockIndex;                                // see above
94         /** block descriptor for the tracklet data block */
95         const AliHLTComponentBlockData* fTrackletBlock;            //! transient
96         /** index of the tracklet data block */
97         unsigned fTrackletBlockIndex;                              // see above
98       };
99
100         ClassDef(AliHLTTPCGlobalMergerComponent, 0)
101
102     };
103 #endif