LCOV - code coverage report
Current view: top level - HLT/RCU - AliHLTAltroChannelSelectorComponent.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 1 1 100.0 %
Date: 2016-06-14 17:26:59 Functions: 1 5 20.0 %

          Line data    Source code
       1             : //-*- Mode: C++ -*-
       2             : // $Id$
       3             : 
       4             : #ifndef ALIHLTALTROCHANNELSELECTORCOMPONENT_H
       5             : #define ALIHLTALTROCHANNELSELECTORCOMPONENT_H
       6             : //* This file is property of and copyright by the ALICE HLT Project        * 
       7             : //* ALICE Experiment at CERN, All rights reserved.                         *
       8             : //* See cxx source for full Copyright notice                               *
       9             : 
      10             : /// @file   AliHLTAltroChannelSelectorComponent.h
      11             : /// @author Matthias Richter
      12             : /// @date   
      13             : /// @brief  A filter/selective readout component for Altro data.
      14             : ///
      15             : 
      16             : // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt   
      17             : 
      18             : #include "AliHLTProcessor.h"
      19             : 
      20             : class TH1F;
      21             : 
      22             : /**
      23             :  * @class AliHLTAltroChannelSelectorComponent
      24             :  * A selector component for ALTRO Raw data. The component subscribes
      25             :  * to the RAW data {***:DDL_RAW }, and produces the same raw data block
      26             :  * with only the selected ALTRO channels.                               <br>
      27             :  * Three different modes are supported:
      28             :  * - -signal-threshold                                                  <br>
      29             :  *   the average of all signals in the channel is calculated and it is
      30             :  *   selected when the maximum signal exceeds average+threshold
      31             :  * - -rms-threshold                                                     <br>
      32             :  *   the implemented logic needs to be checked, never been used
      33             :  * - list of channels to select. 
      34             :  *   The list must be of identical specification as the RAW data and of
      35             :  *   data type {***:HWADDR16}: 16 bit hardware addresses
      36             :  *
      37             :  *
      38             :  * The AliAltroRawStreamV3 is used as input decoder to read and scan the
      39             :  * Altro Raw data.
      40             :  * 
      41             :  * <h2>General properties:</h2>
      42             :  *
      43             :  * Component ID: \b AltroChannelSelector                                <br>
      44             :  * Library: \b libAliHLTRCU                                             <br>
      45             :  * Input Data Types: kAliHLTDataTypeDDLRaw, kAliHLTDataTypeHwAddr16     <br>
      46             :  * Output Data Types: kAliHLTDataTypeDDLRaw                             <br>
      47             :  *
      48             :  * Mandatory arguments: <br>
      49             :  * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
      50             :  *
      51             :  * Optional arguments: <br>
      52             :  * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
      53             :  * \li -keep-corrupted
      54             :  *     keep corrupted channels, by default ignored
      55             :  * \li -talkative
      56             :  *     be a bit more verbose, prints out statistics message and warnings
      57             :  * \li -start-timebin <i> bin </i>
      58             :  *     all time bins below will be ignored    
      59             :  * \li -end-timebin <i> bin </i>
      60             :  *     all time bins above will be ignored    
      61             :  * \li -signal-threshold <i> adc_counts </i>
      62             :  *     the average will be calculated from all bins between start and end,
      63             :  *     a channel is considered active if the maximum is bigger than averge
      64             :  *     plus threshold
      65             :  * \li -rms-threshold <i> sigma </i>
      66             :  *
      67             :  * @ingroup alihlt_rcu_components
      68             :  */
      69             : class AliHLTAltroChannelSelectorComponent : public AliHLTProcessor {
      70             :  public:
      71             :   /** default constructor */
      72             :   AliHLTAltroChannelSelectorComponent();
      73             :   /** destructor */
      74             :   virtual ~AliHLTAltroChannelSelectorComponent();
      75             : 
      76             :   // interface functions: property getters
      77             :   const char* GetComponentID();
      78             :   void GetInputDataTypes(AliHLTComponentDataTypeList& list);
      79             :   AliHLTComponentDataType GetOutputDataType();
      80             :   void GetOutputDataSize(unsigned long& constBase, double& inputMultiplier);
      81             :   AliHLTComponent* Spawn();
      82             : 
      83             :  protected:
      84             :   // interface functions: processing
      85             :   int DoInit(int argc, const char** argv);
      86             :   int DoDeinit();
      87             :   int DoEvent(const AliHLTComponentEventData& evtData,
      88             :               const AliHLTComponentBlockData* blocks, 
      89             :               AliHLTComponentTriggerData& trigData,
      90             :               AliHLTUInt8_t* outputPtr, 
      91             :               AliHLTUInt32_t& size,
      92             :               AliHLTComponentBlockDataList& outputBlocks );
      93             : 
      94             :  
      95             :  private:
      96             :   /** copy constructor prohibited */
      97             :   AliHLTAltroChannelSelectorComponent(const AliHLTAltroChannelSelectorComponent&);
      98             :   /** assignment operator prohibited */
      99             :   AliHLTAltroChannelSelectorComponent& operator=(const AliHLTAltroChannelSelectorComponent&);
     100             : 
     101             :   /** skip corrupted channels */
     102             :   bool fSkipCorrupted; //!transient
     103             : 
     104             :   /** more verbose output */
     105             :   bool fTalkative; //!transient
     106             : 
     107             :   unsigned int fStartTimeBin; //!transient
     108             :   unsigned int fEndTimeBin; //!transient
     109             :   unsigned int fSignalThreshold; //!transient
     110             :   float fRMSThreshold; //!transient
     111             :   bool fMakeHistogram; //!transient
     112             :   
     113             :   TH1F *fhThreshold;//! Histgram of the "threshold value" 
     114             :   TH1F *fhRMS;//! Histgrams of the "RMS value"
     115             : 
     116           6 :   ClassDef(AliHLTAltroChannelSelectorComponent, 0);
     117             : };
     118             : 
     119             : #endif

Generated by: LCOV version 1.11