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