- a fast HLT version of the SSD clusterfinder created. The speed on pp mc is ~20kHz...
[u/mrichter/AliRoot.git] / HLT / ITS / AliHLTITSCompressRawDataSDDComponent.h
1 //-*- Mode: 
2 // $Id$
3
4 #ifndef ALIHLTITSCOMPRESSRAWDATASDDCOMPONENT_H
5 #define ALIHLTITSCOMPRESSRAWDATASDDCOMPONENT_H
6
7 //* This file is property of and copyright by the ALICE HLT Project        * 
8 //* ALICE Experiment at CERN, All rights reserved.                         *
9 //* See cxx source for full Copyright notice                               *
10
11 /** @file   AliHLTITSCompressRawDataSDDComponent.cxx
12     @author Jochen Thaeder <thaeder@kip.uni-heidelberg.de>
13     @date   
14     @brief  Component to run data compression for SDD
15 */
16
17 #include "AliHLTProcessor.h"
18
19 #include "AliRawReaderMemory.h"
20
21 #include "AliITSCompressRawDataSDD.h"
22
23 /**
24  * @class AliHLTITSCompressRawDataSDDComponent
25  * Component to run data compression for SDD
26  *
27  * @ingroup alihlt_its_components
28  */
29
30 class AliHLTITSCompressRawDataSDDComponent : public AliHLTProcessor
31 {
32  public:
33
34   /*
35    * ---------------------------------------------------------------------------------
36    *                            Constructor / Destructor
37    * ---------------------------------------------------------------------------------
38    */
39   
40   /** constructor */
41   AliHLTITSCompressRawDataSDDComponent();
42
43   /** destructor */
44   virtual ~AliHLTITSCompressRawDataSDDComponent();
45
46   /*
47    * ---------------------------------------------------------------------------------
48    * Public functions to implement AliHLTComponent's interface.
49    * These functions are required for the registration process
50    * ---------------------------------------------------------------------------------
51    */
52
53   /** interface function, see @ref AliHLTComponent for description */
54   const char* GetComponentID();
55
56   /** interface function, see @ref AliHLTComponent for description */
57    void GetInputDataTypes( vector<AliHLTComponentDataType>& list);
58
59   /** interface function, see @ref AliHLTComponent for description */
60   AliHLTComponentDataType GetOutputDataType();
61
62   /** interface function, see @ref AliHLTComponent for description */
63   virtual void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier );
64
65   /** interface function, see @ref AliHLTComponent for description */
66   AliHLTComponent* Spawn();
67
68  protected:
69         
70   /*
71    * ---------------------------------------------------------------------------------
72    * Protected functions to implement AliHLTComponent's interface.
73    * These functions provide initialization as well as the actual processing
74    * capabilities of the component. 
75    * ---------------------------------------------------------------------------------
76    */
77         
78   /** Initialization */
79   Int_t DoInit( int argc, const char** argv );
80
81   /** DeInitialization */
82   Int_t DoDeinit();
83   
84   /** EventLoop */
85   Int_t DoEvent( const AliHLTComponentEventData& evtData, const AliHLTComponentBlockData* blocks, 
86                  AliHLTComponentTriggerData& trigData, AliHLTUInt8_t* outputPtr, 
87                  AliHLTUInt32_t& size, vector<AliHLTComponentBlockData>& outputBlocks );
88
89   using AliHLTProcessor::DoEvent;
90   
91   ///////////////////////////////////////////////////////////////////////////////////
92     
93     private:
94   
95   /** copy constructor prohibited */
96   AliHLTITSCompressRawDataSDDComponent(const AliHLTITSCompressRawDataSDDComponent&);
97   /** assignment operator prohibited */
98   AliHLTITSCompressRawDataSDDComponent& operator=(const AliHLTITSCompressRawDataSDDComponent&);
99
100   /*
101    * ---------------------------------------------------------------------------------
102    *                             Members - private
103    * ---------------------------------------------------------------------------------
104    */
105
106   /** the cluster finder object */
107   AliITSCompressRawDataSDD* fDataCompressor;                 //!transient
108
109   /** the reader object for data decoding */
110   AliRawReaderMemory* fRawReader;                            //!transient
111   
112   ClassDef(AliHLTITSCompressRawDataSDDComponent, 0)
113     
114     };
115 #endif