d35b47157c50070cf824eb9f0958d91540543c6e
[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 plotting TPC data and applying noise map
15 */
16
17 #include "AliHLTProcessor.h"
18
19 //forward declarations
20 class AliHLTTPCDigitReader;
21 class TH1;
22 class TH2;
23 class AliTPCCalPad;
24
25 /**
26  * @class AliHLTTPCNoiseMapComponent
27  * 
28  * Implementation of the component to fill histograms with TPC output and read
29  * the noise map from HCDB by request.
30  * 
31  * The component implements the interface methods of the @ref AliHLTProcessor.
32  * It reads the data pad by pad and fills histograms per partition
33  * 
34  * The component has the following component arguments:
35  * 
36  * -read-noisemap  Reads the noise map from the HCDB (and plots it in a histogram)
37  *
38  * It returns an AliTPCCalPad object that can be used 
39  * for other plots (e.g. noise subtraction in histograms) 
40  *
41  * It makes use of the class AliHLTTPCNoise (see header for usage).
42  *
43  * -reset-histograms Resets histograms
44  *
45  * @ingroup alihlt_tpc
46  */
47  
48 class AliHLTTPCNoiseMapComponent : public AliHLTProcessor {
49     
50    public:
51    
52    /** standard constructor */    
53    AliHLTTPCNoiseMapComponent();           
54    /** destructor */
55    virtual ~AliHLTTPCNoiseMapComponent();
56
57       // Public functions to implement AliHLTComponent's interface.
58       // These functions are required for the registration process
59       
60       /** interface function, see AliHLTComponent for description */
61       const char* GetComponentID();                                                          
62       /** interface function, see AliHLTComponent for description */
63       void GetInputDataTypes( vector<AliHLTComponentDataType>& list);                        
64       /** interface function, see AliHLTComponent for description */
65       AliHLTComponentDataType GetOutputDataType();                                           
66       /** interface function, see AliHLTComponent for description */
67       int GetOutputDataTypes(AliHLTComponentDataTypeList& tgtList);                        
68       /** interface function, see AliHLTComponent for description */
69       virtual void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier ); 
70       /** interface function, see AliHLTComponent for description */
71       AliHLTComponent* Spawn();                                                            
72       /** function for acting on the saving and cleaning histograms, after they are filled */
73       void MakeHistosPublic();
74   
75    protected:
76         
77       // Protected functions to implement AliHLTComponent's interface.
78       // These functions provide initialization as well as the actual processing capabilities of the component. 
79
80       int DoInit( int argc, const char** argv );
81       int DoDeinit();
82       int DoEvent( const AliHLTComponentEventData& evtData, AliHLTComponentTriggerData& trigData );
83       int Reconfigure(const char* cdbEntry, const char* chainId);
84
85       using AliHLTProcessor::DoEvent;
86
87    private:
88    
89       int Configure(const char* arguments);
90           
91       /** copy constructor prohibited */
92       AliHLTTPCNoiseMapComponent(const AliHLTTPCNoiseMapComponent&);
93
94       /** assignment operator prohibited */
95       AliHLTTPCNoiseMapComponent& operator=(const AliHLTTPCNoiseMapComponent&);
96       
97       void InitializeHistograms(UInt_t minSlice, UInt_t maxSlice, UInt_t minPartition, UInt_t maxPartition);
98       void ResetHistograms();
99       
100       AliHLTUInt32_t fSpecification;  //!transient
101
102       Bool_t fReadNoiseMap;    //!transient
103       Bool_t fResetHistograms; //!transient      
104       Bool_t fInitHist;        //!transient
105
106       Int_t fCurrentRow; //!transient
107       
108       TH1 *fHistSignal;     //!transient 
109      
110       TH2 *fHistSideAMaxSignal;  //!transient 
111       TH2 *fHistSideATotSignal;  //!transient 
112       TH2 *fHistSideAPadRMS;     //!transient 
113      
114       TH2 *fHistSideCMaxSignal;  //!transient 
115       TH2 *fHistSideCTotSignal;  //!transient 
116       TH2 *fHistSideCPadRMS;     //!transient 
117      
118       TH2 *fHistCDBMap;     //!transient 
119            
120       ClassDef(AliHLTTPCNoiseMapComponent, 4)
121     };
122
123 #endif