]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/PHOS/AliHLTPHOSRawAnalyzerComponent.h
Selectiv readout and writing to FXS (oystein)
[u/mrichter/AliRoot.git] / HLT / PHOS / AliHLTPHOSRawAnalyzerComponent.h
1 #ifndef ALIHLTPHOSRAWANALYZERCOMPONENT_H
2 #define ALIHLTPHOSRAWANALYZERCOMPONENT_H
3
4 /* Copyright(c) 2006, ALICE Experiment at CERN, All rights reserved. *
5  * See cxx source for full Copyright notice                          */
6 #include "AliHLTPHOSRcuProcessor.h"
7
8 class AliHLTPHOSRawAnalyzer;
9 class AliHLTPHOSRcuCellEnergyDataStruct;
10 class AliHLTPHOSMapper;
11 class AliHLTPHOSSanityInspector;
12 class AliAltroDecoder;      // decoder for altro payload
13 class AliAltroData;         // container for altro payload
14 class AliAltroBunch;        // container for altro bunches
15 class AliHLTPHOSDigitMaker;
16 class AliHLTPHOSDigitContainerDataStruct;
17
18 class AliHLTPHOSRawAnalyzerComponent: public AliHLTPHOSRcuProcessor
19 {
20  public:
21   AliHLTPHOSRawAnalyzerComponent();
22   virtual ~AliHLTPHOSRawAnalyzerComponent();
23   virtual int DoInit(int argc =0, const char** argv  = 0);
24   virtual int Deinit();
25   virtual const char* GetComponentID() = 0;
26   virtual void GetInputDataTypes( vector <AliHLTComponentDataType>& list);
27   virtual AliHLTComponentDataType GetOutputDataType();
28   virtual int GetOutputDataTypes(AliHLTComponentDataTypeList& list);
29   virtual void GetOutputDataSize(unsigned long& constBase, double& inputMultiplier);
30   virtual AliHLTComponent* Spawn() = 0; 
31  protected:
32   AliHLTPHOSRawAnalyzer *fAnalyzerPtr;  /**<Pointer to an analyzer object used for raw data anlysis*/ 
33
34   using AliHLTPHOSRcuProcessor::DoEvent;
35   virtual int DoEvent( const AliHLTComponentEventData& evtData, const AliHLTComponentBlockData* blocks, 
36                      AliHLTComponentTriggerData& trigData, AliHLTUInt8_t* outputPtr, 
37                      AliHLTUInt32_t& size, vector<AliHLTComponentBlockData>& outputBlocks ); 
38
39  private:
40   void Reset(AliHLTPHOSRcuCellEnergyDataStruct* cellDataPtr);
41   void ResetDataPtr(int startindex = 0, int sampleCnt = 0);
42   void SetBaselines(const char* baselineFile); 
43   void SetSelectiveReadOutThresholds(const char* filepath, Int_t nSignams);
44   Bool_t fSendChannelData;       /**<wether or not to send raw data from the component into shared memory*/
45   Double_t fTmpChannelData[ALTRO_MAX_SAMPLES];                        /**<temporary variable to store raw samples from a single altro channel*/
46   Double_t fMaxValues[N_MODULES][N_ZROWS_MOD][N_XCOLUMNS_MOD][N_GAINS]; /**<array to store cell energies*/
47
48   AliHLTPHOSRcuCellEnergyDataStruct* fOutPtr;  //comment
49   AliHLTPHOSMapper *fMapperPtr; //Mapping from harware address to geometrical address
50   AliHLTPHOSSanityInspector *fSanityInspectorPtr; //comment
51   Bool_t fUseBaselineSubtraction; //comment
52   Float_t fBaselines[N_XCOLUMNS_RCU][N_ZROWS_RCU][N_GAINS]; //comment
53
54   AliAltroDecoder *fDecoderPtr;           // decoder for altro payload
55   AliAltroData    *fAltroDataPtr;         // container for altro payload
56   AliAltroBunch   *fAltroBunchPtr;        // container for altro bunches
57
58   /** Are we pushing the cell energies (raw data) */
59   Bool_t fDoPushCellEnergies; //Added by OD
60
61   /** Are we making digits? */
62   Bool_t fDoMakeDigits;  //Added by OD
63
64   /** The digit maker */
65   AliHLTPHOSDigitMaker *fDigitMakerPtr;                    //! transient Added by OD
66
67   /** The digit containerto use for digit making */
68   AliHLTPHOSDigitContainerDataStruct *fDigitContainerPtr;  //! transient Added by OD
69
70   /** Are we doing selective read out? */
71   Bool_t fDoSelectiveReadOut;  //Added by OD
72
73   /** Threshold for selective readout ( zero suppression threshold) */
74   Float_t fSelectiveReadOutThresholds[N_XCOLUMNS_MOD][N_ZROWS_MOD][N_GAINS]; //Added by OD
75
76   /** The selected HW addresses */
77   AliHLTUInt16_t *fSelectedChannelsList;  //! transient Added by OD
78
79   /** Should we check data size? */
80   Bool_t fDoCheckDataSize;      //Added by OD
81 };
82 #endif
83