]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/TPCLib/tracking-ca/AliHLTTPCCAGlobalMergerComponent.h
Update master to aliroot
[u/mrichter/AliRoot.git] / HLT / TPCLib / tracking-ca / AliHLTTPCCAGlobalMergerComponent.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
11 #ifndef ALIHLTTPCCAGLOBALMERGERCOMPONENT_H
12 #define ALIHLTTPCCAGLOBALMERGERCOMPONENT_H
13
14 /// @file   AliHLTTPCCAGlobalMergerComponent.h
15 /// @author Matthias Kretz
16 /// @date
17 /// @brief  HLT TPC CA global merger component.
18 ///
19
20 #include "AliHLTProcessor.h"
21 #include "AliHLTComponentBenchmark.h"
22
23 class AliHLTTPCCAMerger;
24 class AliHLTTPCGMMerger;
25
26 /**
27  * @class AliHLTTPCCAGlobalMergerComponent
28  * The TPC global merger component
29  *
30  * Interface to the global merger of the CA tracker for HLT.
31  */
32 class AliHLTTPCCAGlobalMergerComponent : public AliHLTProcessor
33 {
34   public:
35     /**
36      * Constructs a AliHLTTPCCAGlobalMergerComponent.
37      */
38     AliHLTTPCCAGlobalMergerComponent();
39
40     /**
41      * Destructs the AliHLTTPCCAGlobalMergerComponent
42      */
43     virtual ~AliHLTTPCCAGlobalMergerComponent() {};
44
45     // Public functions to implement AliHLTComponent's interface.
46     // These functions are required for the registration process
47
48     /**
49      * @copydoc AliHLTComponent::GetComponentID
50      */
51     const char *GetComponentID();
52
53     /**
54      * @copydoc AliHLTComponent::GetInputDataTypes
55      */
56     void GetInputDataTypes( AliHLTComponentDataTypeList &list );
57
58     /**
59      * @copydoc AliHLTComponent::GetOutputDataType
60      */
61     AliHLTComponentDataType GetOutputDataType();
62
63     /**
64      * @copydoc AliHLTComponent::GetOutputDataSize
65      */
66     virtual void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier );
67
68     /**
69      * @copydoc AliHLTComponent::Spawn
70      */
71     AliHLTComponent *Spawn();
72
73   protected:
74
75     // Protected functions to implement AliHLTComponent's interface.
76     // These functions provide initialization as well as the actual processing
77     // capabilities of the component.
78
79     /**
80      * @copydoc AliHLTComponent::DoInit
81      */
82     int DoInit( int argc, const char **argv );
83
84     /**
85      * @copydoc AliHLTComponent::DoDeinit
86      */
87     int DoDeinit();
88
89     /** reconfigure **/
90     int Reconfigure( const char* cdbEntry, const char* chainId );
91
92     /**
93      * @copydoc @ref AliHLTProcessor::DoEvent
94      */
95     int DoEvent( const AliHLTComponentEventData &evtData, const AliHLTComponentBlockData *blocks,
96                  AliHLTComponentTriggerData &trigData, AliHLTUInt8_t *outputPtr,
97                  AliHLTUInt32_t &size, AliHLTComponentBlockDataList &outputBlocks );
98
99     using AliHLTProcessor::DoEvent;
100
101   private:
102
103     static AliHLTTPCCAGlobalMergerComponent fgAliHLTTPCCAGlobalMergerComponent;
104
105     // disable copy
106     AliHLTTPCCAGlobalMergerComponent( const AliHLTTPCCAGlobalMergerComponent & );
107     AliHLTTPCCAGlobalMergerComponent &operator=( const AliHLTTPCCAGlobalMergerComponent & );
108
109     /** set configuration parameters **/
110     void SetDefaultConfiguration();
111     int ReadConfigurationString(  const char* arguments );
112     int ReadCDBEntry( const char* cdbEntry, const char* chainId );
113     int Configure( const char* cdbEntry, const char* chainId, const char *commandLine );
114
115     /** the global merger object */
116
117     Int_t fVersion; // which version of global merger to use
118
119     AliHLTTPCCAMerger *fGlobalMergerVersion0; //!
120     AliHLTTPCGMMerger *fGlobalMerger; //!
121
122     double fSolenoidBz;  // magnetic field
123     double fClusterErrorCorrectionY; // correction for the cluster error during pre-fit
124     double fClusterErrorCorrectionZ; // correction for the cluster error during pre-fit
125     AliHLTComponentBenchmark fBenchmark;// benchmark
126
127     ClassDef( AliHLTTPCCAGlobalMergerComponent, 0 )
128 };
129
130 #endif //ALIHLTTPCCAGLOBALMERGERCOMPONENT_H