LCOV - code coverage report
Current view: top level - HLT/BASE/util - AliHLTLoaderPublisherComponent.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 1 1 100.0 %
Date: 2016-06-14 17:26:59 Functions: 1 8 12.5 %

          Line data    Source code
       1             : //-*- Mode: C++ -*-
       2             : // @(#) $Id$
       3             : 
       4             : #ifndef ALIHLTLOADERPUBLISHERCOMPONENT_H
       5             : #define ALIHLTLOADERPUBLISHERCOMPONENT_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   AliHLTLoaderPublisherComponent.h
      11             :     @author Matthias Richter
      12             :     @date   
      13             :     @brief  A general tree publisher component for the AliLoader.
      14             : */
      15             : 
      16             : #include "AliHLTOfflineDataSource.h"
      17             : 
      18             : class AliLoader;
      19             : 
      20             : /**
      21             :  * @class AliHLTLoaderPublisherComponent
      22             :  * A general tree publisher component for the AliLoader.
      23             :  * 
      24             :  * <h2>General properties:</h2>
      25             :  *
      26             :  * Component ID: \b AliLoaderPublisher                                  <br>
      27             :  * Library: \b libAliHLTUtil.so                                         <br>
      28             :  * Input Data Types: none                                               <br>
      29             :  * Output Data Types: according to parameter, suggested types:          <br>
      30             :  * \li ::kAliHLTDataTypeAliTreeD for the digit tree
      31             :  * \li ::kAliHLTDataTypeAliTreeR for the cluster tree
      32             :  * , see @ref alihlt_component_datatypes                                <br>
      33             :  *
      34             :  * <h2>Mandatory arguments:</h2>
      35             :  * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
      36             :  * \li -loader       <i> loader name      </i>
      37             :  *      e.g. <tt> -loader TPCLoader </tt>
      38             :  *
      39             :  * <h2>Optional arguments:</h2>
      40             :  * \li -tree         <i> tree name </i> : digits (default), clusters     
      41             :  *      e.g. <tt> -tree digits </tt>
      42             :  * \li -verbose<br>
      43             :  *      print out some more info messages, mainly for the sake of tutorials
      44             :  * \li -datatype     <i> datatype   dataorigin </i> <br>
      45             :  *      data type ID and origin, e.g. <tt>-datatype 'ALITREED' 'TPC ' </tt>
      46             :  * \li -dataspec     <i> specification </i> <br>
      47             :  *      data specification treated as decimal number or hex number if
      48             :  *      prepended by '0x'
      49             :  *
      50             :  * <h2>Configuration:</h2>
      51             :  * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
      52             :  * no configuration
      53             :  *
      54             :  * <h2>Default CDB entries:</h2>
      55             :  * The component loads no CDB entries.
      56             :  *
      57             :  * <h2>Performance:</h2>
      58             :  * The component does not process any event data.
      59             :  *
      60             :  * <h2>Memory consumption:</h2>
      61             :  * The component does not process any event data.
      62             :  *
      63             :  * <h2>Output size:</h2>
      64             :  * According to the available data. The component is an AliHLTDataSource
      65             :  * and inteded to be used in the AliHLTSystem framework only. The component
      66             :  * implements the standard AliHLTSystem adaptive buffer allocation. 
      67             :  *
      68             :  *
      69             :  * @ingroup alihlt_util_components
      70             :  */
      71             : class AliHLTLoaderPublisherComponent : public AliHLTOfflineDataSource {
      72             :  public:
      73             :   /** standard constructor */
      74             :   AliHLTLoaderPublisherComponent();
      75             :   /** destructor */
      76             :   virtual ~AliHLTLoaderPublisherComponent();
      77             : 
      78             :   /**
      79             :    * Get the id of the component.
      80             :    * Each component is identified by a unique id.
      81             :    * The function is pure virtual and must be implemented by the child class.
      82             :    * @return component id (string)
      83             :    */
      84             :   const char* GetComponentID();
      85             : 
      86             :   /**
      87             :    * Get the output data type of the component.
      88             :    * The function is pure virtual and must be implemented by the child class.
      89             :    * @return output data type
      90             :    */
      91             :   AliHLTComponentDataType GetOutputDataType();
      92             : 
      93             :   /**
      94             :    * Get a ratio by how much the data volume is shrinked or enhanced.
      95             :    * The function is pure virtual and must be implemented by the child class.
      96             :    * @param constBase        <i>return</i>: additive part, independent of the
      97             :    *                                   input data volume  
      98             :    * @param inputMultiplier  <i>return</i>: multiplication ratio
      99             :    * @return values in the reference variables
     100             :    */
     101             :   void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier );
     102             : 
     103             :   /**
     104             :    * Spawn function.
     105             :    * Each component must implement a spawn function to create a new instance of 
     106             :    * the class. Basically the function must return <i>new <b>my_class_name</b></i>.
     107             :    * @return new class instance
     108             :    */
     109             :   virtual AliHLTComponent* Spawn();
     110             : 
     111             :  protected:
     112             :   /**
     113             :    * Init method.
     114             :    */
     115             :   int DoInit( int argc, const char** argv );
     116             : 
     117             :   /**
     118             :    * Deinit method.
     119             :    */
     120             :   int DoDeinit();
     121             : 
     122             :   /**
     123             :    * Data source method.
     124             :    * @param evtData       event data structure
     125             :    * @param trigData      trigger data structure
     126             :    * @return
     127             :    */
     128             :   int GetEvent(const AliHLTComponentEventData& evtData,
     129             :                AliHLTComponentTriggerData& trigData);
     130             : 
     131             :   using AliHLTOfflineDataSource::GetEvent;
     132             : 
     133             :  private:
     134             :   /** copy constructor prohibited */
     135             :   AliHLTLoaderPublisherComponent(const AliHLTLoaderPublisherComponent&);
     136             :   /** assignment operator prohibited */
     137             :   AliHLTLoaderPublisherComponent& operator=(const AliHLTLoaderPublisherComponent&);
     138             : 
     139             :   /**
     140             :    * Get tree of type specified in fTreeType from loader.
     141             :    */
     142             :   TTree* GetTree();
     143             : 
     144             :   /** max output block size, estimated during DoInit */
     145             :   Int_t                   fMaxSize;                                //!transient
     146             : 
     147             :   /** loader string */
     148             :   TString                 fLoaderType;                             //!transient
     149             : 
     150             :   /** tree string */
     151             :   TString                 fTreeType;                               //!transient
     152             : 
     153             :   /** be verbose: info printouts */
     154             :   Bool_t                  fVerbose;                                //!transient
     155             : 
     156             :   /** data type */
     157             :   AliHLTComponentDataType fDataType;                               //!transient
     158             : 
     159             :   /** data specification */
     160             :   AliHLTUInt32_t          fSpecification;                          //!transient
     161             : 
     162             :   /** instance of the AliLoader */
     163             :   AliLoader*              fpLoader;                                //!transient
     164             : 
     165           8 :   ClassDef(AliHLTLoaderPublisherComponent, 0);
     166             : };
     167             : 
     168             : #endif

Generated by: LCOV version 1.11