LCOV - code coverage report
Current view: top level - HLT/BASE/util - AliHLTRootFileWriterComponent.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             : 
       4             : #ifndef ALIHLTROOTFILEWRITERCOMPONENT_H
       5             : #define ALIHLTROOTFILEWRITERCOMPONENT_H
       6             : //* This file is property of and copyright by the                          * 
       7             : //* ALICE Experiment at CERN, All rights reserved.                         *
       8             : //* See cxx source for full Copyright notice                               *
       9             : 
      10             : /// @file   AliHLTRootFileWriterComponent.h
      11             : /// @author Matthias Richter
      12             : /// @date   
      13             : /// @brief  Base class for writer components to store data in a ROOT file
      14             : ///
      15             : 
      16             : #include "AliHLTFileWriter.h"
      17             : 
      18             : class TFile;
      19             : 
      20             : /**
      21             :  * @class AliHLTRootFileWriterComponent
      22             :  * The RootFileWriter provides a stand alone component to write incoming
      23             :  * TObject like structures into a Root file. Furthermore it provides a
      24             :  * base class for customized writers.
      25             :  * By default, the \em -concatenate-blocks option of the AliHLTFileWriter
      26             :  * is set. If you want to accumulate all events in the same file set the
      27             :  * -concatenate-events option as well. In that case the \em -overwrite
      28             :  * option might be a good choice in order to avoid multiple keys for the
      29             :  * same object in the root file.
      30             :  *
      31             :  * All non-root object data blocks are just ignored.
      32             :  *
      33             :  * <h2>General properties:</h2>
      34             :  *
      35             :  * Component ID: \b ROOTFileWriter                                      <br>
      36             :  * Library: \b libAliHLTUtil.so                                         <br>
      37             :  * Input Data Types: ::kAliHLTAnyDataType                               <br>
      38             :  * Output Data Types: none                                              <br>
      39             :  *
      40             :  * <h2>Mandatory arguments:</h2>
      41             :  * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
      42             :  *      
      43             :  * <h2>Optional arguments:</h2>
      44             :  * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
      45             :  * See AliHLTFileWriter for full list of arguments.
      46             :  * \li -overwrite <br>
      47             :  *      write objects with the TObject::kOverwrite flag and avoid multiple
      48             :  *      keys in the file
      49             :  *
      50             :  *
      51             :  * <h2>Configuration:</h2>
      52             :  * <!-- NOTE: ignore the \li. <i> and </i>: it's just doxygen formatting -->
      53             :  * Configuration by component arguments.
      54             :  *
      55             :  * <h2>Default CDB entries:</h2>
      56             :  * The component loads no CDB entries.
      57             :  *
      58             :  * <h2>Performance:</h2>
      59             :  * The component does not process any event data.
      60             :  *
      61             :  * <h2>Memory consumption:</h2>
      62             :  * The component does not process any event data.
      63             :  *
      64             :  * <h2>Output size:</h2>
      65             :  * No data published (AliHLTDataSink).
      66             :  *
      67             :  * @ingroup alihlt_util_components
      68             :  */
      69             : class AliHLTRootFileWriterComponent : public AliHLTFileWriter
      70             : {
      71             :  public:
      72             :   /** standard constructor */
      73             :   AliHLTRootFileWriterComponent();
      74             :   /** destructor */
      75             :   virtual ~AliHLTRootFileWriterComponent();
      76             : 
      77             :   /**
      78             :    * The id of the component.
      79             :    * @return component id (string)
      80             :    */
      81         672 :   virtual const char* GetComponentID() {return "ROOTFileWriter";};
      82             : 
      83             :   /**
      84             :    * Spawn function.
      85             :    * @return new class instance
      86             :    */
      87           0 :   virtual AliHLTComponent* Spawn() {return new AliHLTRootFileWriterComponent;}
      88             : 
      89             :  protected:
      90             :   // interface functions
      91             :   int InitWriter();
      92             :   int CloseWriter();
      93             : 
      94             :   /**
      95             :    * Data processing method for the component.
      96             :    * The function can be overloaded by specific ROOT file writer
      97             :    * components. The RootFileWriter processes only TObject like data
      98             :    * structures of the input blocks and uses the
      99             :    * @ref alihltcomponent-high-level-interface. Despite of that it implements
     100             :    * the lox-level DumpEvent method in order to allow child classes to use the
     101             :    * low-level method.
     102             :    * @param evtData       event data structure
     103             :    * @param blocks        input data block descriptors
     104             :    * @param trigData      trigger data structure
     105             :    */
     106             :   virtual int DumpEvent( const AliHLTComponentEventData& evtData,
     107             :                          const AliHLTComponentBlockData* blocks, 
     108             :                          AliHLTComponentTriggerData& trigData );
     109             :   
     110             :   using AliHLTFileWriter::DumpEvent;
     111             : 
     112             :   /**
     113             :    * Scan one argument and adjacent parameters.
     114             :    * \b IMPORTANT: if  overloaded by child class, call this function
     115             :    * as the default from the cutomized switch, e.g.
     116             :    * <pre>
     117             :    * </pre>
     118             :    * @param argc           size of the argument array
     119             :    * @param argv           agument array for component initialization
     120             :    * @return number of processed members of the argv <br>
     121             :    *         -EINVAL unknown argument <br>
     122             :    *         -EPROTO parameter for argument missing <br>
     123             :    */
     124             :   virtual int ScanArgument(int argc, const char** argv);
     125             : 
     126             :   /**
     127             :    * Write ROOT object to current file.
     128             :    * @param eventID    ID of the current event
     129             :    * @param pOb        pointer to ROOT object
     130             :    * @return neg. error code if failed
     131             :    */
     132             :   int WriteObject(const AliHLTEventID_t eventID, const TObject *pOb);
     133             : 
     134             :   /**
     135             :    * Open a ROOT file.
     136             :    * The function calls @ref AliHLTFileWriter::BuildFileName in order to
     137             :    * create a file name and opens it as a root file.
     138             :    * @param eventID    ID of the current event
     139             :    * @param blockID    ID of the current block
     140             :    * @param option     option as specified in TFile
     141             :    * @return pointer to TFile object, the called has to clean-up the object after use.
     142             :    */
     143             :   TFile* OpenFile(const AliHLTEventID_t eventID, const int blockID=-1, const char* option="recreate");
     144             : 
     145             :   /** the event ID associated with the current file */
     146             :   AliHLTEventID_t fEventID; // see above
     147             : 
     148             :   /** the name of the current file */
     149             :   TFile* fCurrentFile; //! transient value
     150             : 
     151             :   /** options for the TObject::Write function */
     152             :   Int_t fOptions; //!transient
     153             : 
     154             : private:
     155             :   /** copy constructor prohibited */
     156             :   AliHLTRootFileWriterComponent(const AliHLTRootFileWriterComponent&);
     157             :   /** assignment operator prohibited */
     158             :   AliHLTRootFileWriterComponent& operator=(const AliHLTRootFileWriterComponent&);
     159             : 
     160           8 :   ClassDef(AliHLTRootFileWriterComponent, 1) // ROOT file writer component
     161             : };
     162             : #endif

Generated by: LCOV version 1.11