added AliFlatExternalTrackParam to HLT global library
[u/mrichter/AliRoot.git] / HLT / TPCLib / AliHLTTPCdEdxComponent.h
1 //-*- Mode: C++ -*-
2 // ************************************************************************
3 // This file is property of and copyright by the ALICE HLT Project        *
4 // ALICE Experiment at CERN, All rights reserved.                         *
5 // See cxx source for full Copyright notice                               *
6 //                                                                        *
7 //*************************************************************************
8
9 ///  @file   AliHLTTPCdEdxComponent.h
10 ///  @author Sergey Gorbunov <sergey.gorbunov@kip.uni-heidelberg.de>
11 ///  @date   June 2009
12 ///  @brief  An ITS tracker processing component for the HLT
13
14 #ifndef ALIHLTTPCDEDXCOMPONENT_H
15 #define ALIHLTTPCDEDXCOMPONENT_H
16
17 #include "AliHLTProcessor.h"
18 #include "AliHLTDataTypes.h"
19 class AliTPCclusterMI;
20
21 /**
22  * @class AliHLTTPCdEdxComponent
23  * The dEdx calculator component for the HLT TPC
24  *
25  */
26 class AliHLTTPCdEdxComponent : public AliHLTProcessor
27 {
28 public:
29   /** standard constructor */
30   AliHLTTPCdEdxComponent();
31   
32   /** dummy copy constructor, defined according to effective C++ style */
33   AliHLTTPCdEdxComponent( const AliHLTTPCdEdxComponent& );
34   
35   /** dummy assignment op, but defined according to effective C++ style */
36   AliHLTTPCdEdxComponent& operator=( const AliHLTTPCdEdxComponent& );
37   
38   /** standard destructor */
39   virtual ~AliHLTTPCdEdxComponent();
40
41   // Public functions to implement AliHLTComponent's interface.
42   // These functions are required for the registration process
43
44   /** @see component interface @ref AliHLTComponent::GetComponentID */
45   const char* GetComponentID() ;
46
47   /** @see component interface @ref AliHLTComponent::GetInputDataTypes */
48   void GetInputDataTypes( vector<AliHLTComponentDataType>& list )  ;
49
50   /** @see component interface @ref AliHLTComponent::GetOutputDataType */
51   AliHLTComponentDataType GetOutputDataType() ;
52   
53   /** @see component interface @ref AliHLTComponent::GetOutputDataSize */
54   virtual void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier ) ;
55
56   /** @see component interface @ref AliHLTComponent::Spawn */
57   AliHLTComponent* Spawn() ;
58
59 protected:
60
61   // Protected functions to implement AliHLTComponent's interface.
62   // These functions provide initialization as well as the actual processing
63   // capabilities of the component.
64
65   /** @see component interface @ref AliHLTComponent::DoInit */
66   int DoInit( int argc, const char** argv );
67
68   /** @see component interface @ref AliHLTComponent::DoDeinit */
69   int DoDeinit();
70
71   /** reconfigure **/
72   int Reconfigure( const char* cdbEntry, const char* chainId );
73
74   /** @see component interface @ref AliHLTProcessor::DoEvent */
75   int DoEvent( const AliHLTComponentEventData& evtData, const AliHLTComponentBlockData* blocks,
76                AliHLTComponentTriggerData& trigData, AliHLTUInt8_t* outputPtr,
77                AliHLTUInt32_t& size, vector<AliHLTComponentBlockData>& outputBlocks );
78
79   private:
80
81     /** magnetic field */
82     double fSolenoidBz;                                            // see above
83     double fStatTime; //* total time for DoEvent() [s]   
84     Long_t    fStatNEvents;  //* number of reconstructed events
85   static const Int_t fkNPatches = 36*6; // number of patches in TPC
86   AliTPCclusterMI *fPatchClusters[fkNPatches]; //! arrays of cluster data for each TPC patch
87   Int_t fNPatchClusters[fkNPatches]; //! N of clusters for each TPC patch
88
89     /** set configuration parameters **/
90     void SetDefaultConfiguration();
91     int ReadConfigurationString(  const char* arguments );
92     int ReadCDBEntry( const char* cdbEntry, const char* chainId );
93     int Configure( const char* cdbEntry, const char* chainId, const char *commandLine  );
94
95     ClassDef( AliHLTTPCdEdxComponent, 0 );
96
97 };
98 #endif