]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/TPCLib/AliHLTTPCGlobalMergerComponent.h
TPCNoiseMapComponent included into build (Kelly)
[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 // see below for class documentation
16 // or
17 // refer to README to build package
18 // or
19 // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
20
21 #include "AliHLTProcessor.h"
22
23 class AliHLTTPCGlobalMerger;
24 class AliHLTTPCVertex;
25
26 /**
27  * @class AliHLTTPCGlobalMergerComponent
28  * The TPC global merger component
29  * The component is the interface to the AliHLTGlobalMerger processing
30  * class.
31  *
32  * @ingroup alihlt_tpc_components
33  */
34 class AliHLTTPCGlobalMergerComponent : public AliHLTProcessor
35     {
36     public:
37       /** standard constructor */
38       AliHLTTPCGlobalMergerComponent();
39       /** standard destructor */
40       virtual ~AliHLTTPCGlobalMergerComponent();
41
42         // Public functions to implement AliHLTComponent's interface.
43         // These functions are required for the registration process
44
45       /** @see component interface @ref AliHLTComponent::GetComponentID */
46         const char* GetComponentID();
47       
48       /** @see component interface @ref AliHLTComponent::GetInputDataTypes */
49         void GetInputDataTypes(AliHLTComponentDataTypeList& list);
50
51       /** @see component interface @ref AliHLTComponent::GetOutputDataType */
52         AliHLTComponentDataType GetOutputDataType();
53
54       /** @see component interface @ref AliHLTComponent::GetOutputDataSize */
55         virtual void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier );
56
57       /** @see component interface @ref AliHLTComponent::Spawn */
58         AliHLTComponent* Spawn();
59
60     protected:
61         
62       /**
63        * Set the parameters
64        */
65         void SetMergerParameters(Double_t maxy=2.0,Double_t maxz=3.0,Double_t maxkappa=0.003,
66                                  Double_t maxpsi=0.1,Double_t maxtgl=0.05);
67
68         // Protected functions to implement AliHLTComponent's interface.
69         // These functions provide initialization as well as the actual processing
70         // capabilities of the component. 
71
72
73       /** @see component interface @ref AliHLTComponent::DoInit */
74         int DoInit( int argc, const char** argv );
75
76       /** @see component interface @ref AliHLTComponent::DoDeinit */
77         int DoDeinit();
78
79       /** @see component interface @ref AliHLTProcessor::DoEvent */
80         int DoEvent( const AliHLTComponentEventData& evtData, const AliHLTComponentBlockData* blocks, 
81                      AliHLTComponentTriggerData& trigData, AliHLTUInt8_t* outputPtr, 
82                      AliHLTUInt32_t& size, AliHLTComponentBlockDataList& outputBlocks );
83
84         using AliHLTProcessor::DoEvent;
85         
86     private:
87       /** copy constructor prohibited */
88       AliHLTTPCGlobalMergerComponent(const AliHLTTPCGlobalMergerComponent&);
89       /** assignment operator prohibited */
90       AliHLTTPCGlobalMergerComponent& operator=(const AliHLTTPCGlobalMergerComponent&);
91
92       /** the global merger object */
93       AliHLTTPCGlobalMerger* fGlobalMerger; //!
94       /** the vertexer object */
95       AliHLTTPCVertex* fVertex; //!
96
97       struct SliceData {
98         /** slice no */
99         int fSlice;                                                // see above
100         /** block descriptor for the vertex data block */
101         const AliHLTComponentBlockData* fVertexBlock;              //! transient
102         /** index of the vertex data block */
103         unsigned fVertexBlockIndex;                                // see above
104         /** block descriptor for the tracklet data block */
105         const AliHLTComponentBlockData* fTrackletBlock;            //! transient
106         /** index of the tracklet data block */
107         unsigned fTrackletBlockIndex;                              // see above
108       };
109
110         ClassDef(AliHLTTPCGlobalMergerComponent, 0)
111
112     };
113 #endif