d3b0ba37f9a9a5828dcad722088e2cbf8d23f280
[u/mrichter/AliRoot.git] / HLT / TPCLib / AliHLTTPCNoiseMapComponent.h
1 // -*- Mode: C++ -*-
2 // $Id$
3
4 #ifndef ALIHLTTPCNOISEMAPCOMPONENT_H
5 #define ALIHLTTPCNOISEMAPCOMPONENT_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   AliHLTTPCNoiseMapComponent.h
12     @author Kalliopi Kanaki
13     @date   
14     @brief  Component for Noise Map
15 */
16
17 // see below for class documentation
18 // or
19 // refer to README to build package
20 // or
21 // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
22
23 #include "AliHLTProcessor.h"
24
25 //forward declarations
26 class AliHLTTPCDigitReader;
27 class TH2;
28
29 /**
30  * @class AliHLTTPCNoiseMapComponent
31  * Implementation of the component to fill histograms with TPC noise by request.
32  * The component implements the interface methods of the @ref AliHLTProcessor.
33  * It reads the data pad by pad and fills histograms. The output is unpacked and 
34  * sent to the clulsterfinder.
35  * 
36  * The component has the following component arguments:
37  * - adc-threshold   ADC count threshold for zero suppression.
38  *
39  * - rms-threshold   RMS threshold for zero suppression.
40  *          
41  * - first-timebin   The first timebin for zero suppression
42  *
43  * - last-timebin    The last timebin for zero suppression
44  *
45  * - occupancy-limit Minimum number of timebins with signal
46  *
47  * - sort-pads Flag to switch on pad sorting(needed by the SORTED clusterfinder)
48  *
49  * @ingroup alihlt_tpc
50  */
51 class AliHLTTPCNoiseMapComponent : public AliHLTProcessor {
52     
53    public:
54    
55    /** standard constructor */    
56    AliHLTTPCNoiseMapComponent();           
57    /** destructor */
58    virtual ~AliHLTTPCNoiseMapComponent();
59
60
61       // Public functions to implement AliHLTComponent's interface.
62       // These functions are required for the registration process
63       
64       /** interface function, see @ref AliHLTComponent for description */
65       const char* GetComponentID();                                                          
66       /** interface function, see @ref AliHLTComponent for description */
67       void GetInputDataTypes( vector<AliHLTComponentDataType>& list);                        
68       /** interface function, see @ref AliHLTComponent for description */
69       AliHLTComponentDataType GetOutputDataType();                                           
70       /** interface function, see @ref AliHLTComponent for description */
71       int GetOutputDataTypes(AliHLTComponentDataTypeList& tgtList);                        
72       /** interface function, see @ref AliHLTComponent for description */
73       virtual void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier ); 
74       /** interface function, see @ref AliHLTComponent for description */
75       AliHLTComponent* Spawn();                                                            
76       /** function for acting on the saving and cleaning histograms, after they are filled */
77       void SaveAndResetHistograms();
78   
79    protected:
80         
81       // Protected functions to implement AliHLTComponent's interface.
82       // These functions provide initialization as well as the actual processing capabilities of the component. 
83
84       int DoInit( int argc, const char** argv );
85       int DoDeinit();
86       int DoEvent( const AliHLTComponentEventData& evtData, const AliHLTComponentBlockData* blocks, 
87                    AliHLTComponentTriggerData& trigData, AliHLTUInt8_t* outputPtr, 
88                    AliHLTUInt32_t& size, vector<AliHLTComponentBlockData>& outputBlocks );
89       int Reconfigure(const char* cdbEntry, const char* chainId);
90
91       using AliHLTProcessor::DoEvent;
92
93    private:
94    
95       int Configure(const char* arguments);
96           
97       /** copy constructor prohibited */
98       AliHLTTPCNoiseMapComponent(const AliHLTTPCNoiseMapComponent&);
99
100       /** assignment operator prohibited */
101       AliHLTTPCNoiseMapComponent& operator=(const AliHLTTPCNoiseMapComponent&);
102
103       /** the reader object for data decoding */
104       AliHLTUInt32_t fSpecification;  //!transient
105       //AliHLTUInt8_t fMinPartition;    //!transient
106       //AliHLTUInt8_t fMaxPartition;    //!transient
107
108       Bool_t fNoiseMap;    //!transient
109       Bool_t fIsPacked;    //!transient   
110       Bool_t fIsUnpacked;  //!transient
111       
112       Int_t  fCurrentPartition; //!transient
113       Int_t  fCurrentRow;       //!transient
114       Int_t  rowOffset;         //!transient
115       
116       TH2 *fHistSideC; //!transient    
117
118       ClassDef(AliHLTTPCNoiseMapComponent, 0)
119     };
120
121 #endif