LCOV - code coverage report
Current view: top level - HLT/BASE/util - AliHLTRootFileStreamerComponent.h (source / functions) Hit Total Coverage
Test: coverage.info Lines: 2 3 66.7 %
Date: 2016-06-14 17:26:59 Functions: 2 7 28.6 %

          Line data    Source code
       1             : // -*- Mode: C++ -*-
       2             : // $Id$
       3             : #ifndef ALIHLTROOTFILESTREAMERCOMPONENT_H
       4             : #define ALIHLTROOTFILESTREAMERCOMPONENT_H
       5             : //* This file is property of and copyright by the                          * 
       6             : //* ALICE Experiment at CERN, All rights reserved.                         *
       7             : //* See cxx source for full Copyright notice                               *
       8             : 
       9             : /// @file   AliHLTRootFileStreamerComponent.h
      10             : /// @author Matthias Richter
      11             : /// @date   
      12             : /// @brief  Save objects in a ROOT memory file
      13             : ///
      14             : 
      15             : #include "AliHLTProcessor.h"
      16             : 
      17             : /**
      18             :  * @class AliHLTRootFileStreamerComponent
      19             :  * The RootFileStreamer provides a stand alone component to write incoming
      20             :  * TObject like structures into a ROOT memory file. A ROOT memory file is
      21             :  * a ROOT file stored in memory instead on disk (AliHLTMemoryFile) The file
      22             :  * is published via the output stream. On the receiver side the file can
      23             :  * be directly written to disk and appears like a normal root file.
      24             :  *
      25             :  * <h2>General properties:</h2>
      26             :  *
      27             :  * Component ID: \b ROOTFileStreamer                                    <br>
      28             :  * Library: \b libAliHLTUtil.so                                         <br>
      29             :  * Input Data Types: ::kAliHLTAnyDataType                               <br>
      30             :  * Output Data Types: according to component arguments,
      31             :  *                    ::kAliHLTVoidDataType by default                  <br>
      32             :  *
      33             :  * <h2>Mandatory arguments:</h2>
      34             :  * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
      35             :  *      
      36             :  * <h2>Optional arguments:</h2>
      37             :  * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
      38             :  * \li -datatype     <i> datatype   dataorigin </i> <br>
      39             :  *      data type ID and origin, e.g. <tt>-datatype CLUSTERS TPC </tt>
      40             :  * \li -dataspec     <i> specification </i> <br>
      41             :  *      data specification treated as decimal number or hex number if
      42             :  *      prepended by '0x'
      43             :  *
      44             :  * <h2>Configuration:</h2>
      45             :  * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
      46             :  * Configuration by component arguments.
      47             :  *
      48             :  * <h2>Default CDB entries:</h2>
      49             :  * The component loads no CDB entries.
      50             :  *
      51             :  * <h2>Performance:</h2>
      52             :  * The component does not process any event data.
      53             :  *
      54             :  * <h2>Memory consumption:</h2>
      55             :  * The component does not process any event data.
      56             :  *
      57             :  * <h2>Output size:</h2>
      58             :  * No data published (AliHLTDataSink).
      59             :  *
      60             :  * @ingroup alihlt_util_components
      61             :  */
      62             : class AliHLTRootFileStreamerComponent : public AliHLTProcessor
      63             : {
      64             :  public:
      65             :   /** standard constructor */
      66             :   AliHLTRootFileStreamerComponent();
      67             :   /** destructor */
      68             :   virtual ~AliHLTRootFileStreamerComponent();
      69             : 
      70             :   /**
      71             :    * The id of the component.
      72             :    * @return component id (string)
      73             :    */
      74         678 :   const char* GetComponentID() {return "ROOTFileStreamer";};
      75             : 
      76             :   /**
      77             :    * Spawn function.
      78             :    * @return new class instance
      79             :    */
      80           0 :   AliHLTComponent* Spawn() {return new AliHLTRootFileStreamerComponent;}
      81             : 
      82             :   /**
      83             :    * Get the input data types of the component.
      84             :    * The function is pure virtual and must be implemented by the child class.
      85             :    * @return list of data types in the vector reference
      86             :    */
      87             :   void GetInputDataTypes( vector<AliHLTComponentDataType>& );
      88             : 
      89             :   /**
      90             :    * Get the output data type of the component.
      91             :    * The function is pure virtual and must be implemented by the child class.
      92             :    * @return output data type
      93             :    */
      94             :   AliHLTComponentDataType GetOutputDataType();
      95             : 
      96             :   /**
      97             :    * Get a ratio by how much the data volume is shrinked or enhanced.
      98             :    * The function is pure virtual and must be implemented by the child class.
      99             :    * @param constBase        <i>return</i>: additive part, independent of the
     100             :    *                                   input data volume  
     101             :    * @param inputMultiplier  <i>return</i>: multiplication ratio
     102             :    * @return values in the reference variables
     103             :    */
     104             :   void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier );
     105             : 
     106             :  protected:
     107             :   /**
     108             :    * Internal initialization.
     109             :    * @see @ref AliHLTComponent::DoInit for description and parameters
     110             :    */
     111             :   virtual int DoInit( int argc, const char** argv );
     112             : 
     113             :   /**
     114             :    * The high-level data processing method.
     115             :    * All incoming objects are saved into a ROOT file in memory.
     116             :    * @param evtData       event data structure
     117             :    * @param trigData      trigger data structure
     118             :    * @return neg. error code if failed
     119             :    */
     120             :   int DoEvent( const AliHLTComponentEventData& evtData, AliHLTComponentTriggerData& trigData);
     121             :   
     122             :   using AliHLTProcessor::DoEvent;
     123             : 
     124             :  private:
     125             :   /** copy constructor prohibited */
     126             :   AliHLTRootFileStreamerComponent(const AliHLTRootFileStreamerComponent&);
     127             :   /** assignment operator prohibited */
     128             :   AliHLTRootFileStreamerComponent& operator=(const AliHLTRootFileStreamerComponent&);
     129             : 
     130             :   /** data type */
     131             :   AliHLTComponentDataType fDataType;                               // see above
     132             :   /** data specification */
     133             :   AliHLTUInt32_t          fSpecification;                          // see above
     134             : 
     135           8 :   ClassDef(AliHLTRootFileStreamerComponent, 0)
     136             : };
     137             : #endif

Generated by: LCOV version 1.11