4 #ifndef ALIHLTTPCNOISEMAPCOMPONENT_H
5 #define ALIHLTTPCNOISEMAPCOMPONENT_H
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 *
11 /** @file AliHLTTPCNoiseMapComponent.h
12 @author Kalliopi Kanaki
14 @brief Component for plotting TPC data and applying noise map
17 #include "AliHLTProcessor.h"
19 //forward declarations
20 class AliHLTTPCDigitReader;
26 * @class AliHLTTPCNoiseMapComponent
28 * Implementation of the component to fill histograms with TPC output and read
29 * the noise map from HCDB by request.
31 * The component implements the interface methods of the @ref AliHLTProcessor.
32 * It reads the data pad by pad and fills histograms.
34 * The component has the following component arguments:
36 * The histograms are filled on partition level and no argument is foreseen for this.
38 * In the rare case we want to fill them per TPC side, the following 2 arguments can be used.
40 * -plot-side-a Histograms the TPC side A
42 * -plot-side-c Histograms the TPC side C
44 * -apply-noisemap Reads the noise map from the HCDB (and plots it in a histogram)
46 * It returns an AliTPCCalPad object that can be used
47 * for other plots (e.g. noise subtraction in histograms)
49 * It makes use of the class AliHLTTPCNoise (see header for usage).
51 * -reset-histograms Resets histograms
56 class AliHLTTPCNoiseMapComponent : public AliHLTProcessor {
60 /** standard constructor */
61 AliHLTTPCNoiseMapComponent();
63 virtual ~AliHLTTPCNoiseMapComponent();
65 // Public functions to implement AliHLTComponent's interface.
66 // These functions are required for the registration process
68 /** interface function, see AliHLTComponent for description */
69 const char* GetComponentID();
70 /** interface function, see AliHLTComponent for description */
71 void GetInputDataTypes( vector<AliHLTComponentDataType>& list);
72 /** interface function, see AliHLTComponent for description */
73 AliHLTComponentDataType GetOutputDataType();
74 /** interface function, see AliHLTComponent for description */
75 int GetOutputDataTypes(AliHLTComponentDataTypeList& tgtList);
76 /** interface function, see AliHLTComponent for description */
77 virtual void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier );
78 /** interface function, see AliHLTComponent for description */
79 AliHLTComponent* Spawn();
80 /** function for acting on the saving and cleaning histograms, after they are filled */
81 void MakeHistosPublic();
85 // Protected functions to implement AliHLTComponent's interface.
86 // These functions provide initialization as well as the actual processing capabilities of the component.
88 int DoInit( int argc, const char** argv );
90 int DoEvent( const AliHLTComponentEventData& evtData, AliHLTComponentTriggerData& trigData );
91 int Reconfigure(const char* cdbEntry, const char* chainId);
93 using AliHLTProcessor::DoEvent;
97 int Configure(const char* arguments);
99 /** copy constructor prohibited */
100 AliHLTTPCNoiseMapComponent(const AliHLTTPCNoiseMapComponent&);
102 /** assignment operator prohibited */
103 AliHLTTPCNoiseMapComponent& operator=(const AliHLTTPCNoiseMapComponent&);
105 void ResetHistograms();
107 AliHLTUInt32_t fSpecification; //!transient
109 Bool_t fPlotSideA; //!transient
110 Bool_t fPlotSideC; //!transient
111 Bool_t fApplyNoiseMap; //!transient
112 Bool_t fResetHistograms;//!transient
113 Bool_t fIsPacked; //!transient
114 Bool_t fIsUnpacked; //!transient
116 Int_t fCurrentSlice; //!transient
117 Int_t fCurrentPartition; //!transient
118 Int_t fCurrentRow; //!transient
120 TH1 *fHistSignal; //!transient
121 TH2 *fHistMaxSignal; //!transient
122 TH2 *fHistTotSignal; //!transient
123 TH2 *fHistPadRMS; //!transient
124 TH2 *fHistCDBMap; //!transient
125 TH2 *fHistSideA; //!transient
126 TH2 *fHistSideC; //!transient
128 ClassDef(AliHLTTPCNoiseMapComponent, 3)