LCOV - code coverage report
Current view: top level - HLT/BASE - AliHLTCalibrationProcessor.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             : #ifndef ALIHLTCALIBRATIONPROCESSOR_H
       4             : #define ALIHLTCALIBRATIONPROCESSOR_H
       5             : /* This file is property of and copyright by the ALICE HLT Project        * 
       6             :  * ALICE Experiment at CERN, All rights reserved.                         *
       7             :  * See cxx source for full Copyright notice                               */
       8             : 
       9             : /**
      10             :  * Class takes care of handling and shipping of freshly produced calibration
      11             :  * data. this data will be shipped to the FXS of the HLT
      12             :  *
      13             :  * @file   AliHLTCalibrationProcessor.h
      14             :  * @author Jochen Thaeder, Sebastian Bablok
      15             :  * @date 
      16             :  * @brief  Base class of HLT calibration components.
      17             :  */
      18             : 
      19             : #include "AliHLTProcessor.h"
      20             : #include "AliHLTMessage.h"
      21             : #include "AliHLTDataTypes.h"
      22             : 
      23             : class AliHLTReadoutList;
      24             : 
      25             : /**
      26             :  * @class AliHLTCalibrationProcessor
      27             :  * Base class of HLT calibration components.
      28             :  * The class provides a common interface for the implementation of HLT
      29             :  * calibration components. It takes care of handling and shipping of 
      30             :  * produced calibration data to the FXS of the HLT. The child class must 
      31             :  * implement the functions:
      32             :  * - @ref InitCalibration (optional)
      33             :  * - @ref ScanArgument (optional)
      34             :  * - @ref DeinitCalibration (optional)
      35             :  * - @ref ProcessCalibration
      36             :  * - @ref ShipDataToFXS
      37             :  * - @ref GetComponentID
      38             :  * - @ref GetInputDataTypes
      39             :  * - @ref GetOutputDataType
      40             :  * - @ref GetOutputDataSize
      41             :  * - @ref Spawn
      42             : 
      43             :  * @ingroup alihlt_component
      44             :  */
      45             : class AliHLTCalibrationProcessor : public AliHLTProcessor {
      46             :   
      47             :  public: 
      48             :   /** standard constructor */
      49             :   AliHLTCalibrationProcessor();
      50             : 
      51             :   /** standard destructor */
      52             :   virtual ~AliHLTCalibrationProcessor();
      53             : 
      54             :  protected:
      55             : 
      56             :   /*
      57             :    * ######################## PushToFXS #####################
      58             :    */
      59             : 
      60             :   /**
      61             :    * Insert an object into the output. FXS header will be inserted before the root object.
      62             :    * @param pObject     pointer to root object
      63             :    * @param pDetector   4 byte Detector identifier
      64             :    * @param pFileID     name of the file to which the data shall be stored
      65             :    * @param pDDLList    pointer to ReadoutList ( class @ref AliHLTReadoutList) of
      66             :    *                    participating DDLs. Have to be set or unset with @ref
      67             :    *                    AliHLTComponent::EnableDDLBit() and @ref AliHLTComponent::DisableDDLBit(). 
      68             :    *                    Will be filled automatically if not supplied by the component.
      69             :    * @return neg. error code if failed 
      70             :    */
      71             :   Int_t PushToFXS(const TObject* pObject, const char* pDetector, const char* pFileID, const AliHLTReadoutList* pDDLList);
      72             : 
      73             :   /**
      74             :    * Insert an object into the output. FXS header will be inserted before the root object.
      75             :    * @param pBuffer     pointer to buffer
      76             :    * @param iSize       size of the buffer
      77             :    * @param pDetector   4 byte Detector identifier
      78             :    * @param pFileID     name of the file to which the data shall be stored
      79             :    * @param pDDLList    pointer to ReadoutList ( class @ref AliHLTReadoutList) of
      80             :    *                    participating DDLs. Have to be set or unset with @ref
      81             :    *                    AliHLTComponent::EnableDDLBit() and @ref AliHLTComponent::DisableDDLBit().
      82             :    *                    Will be filled automatically if not supplied by the component.
      83             :    * @return neg. error code if failed 
      84             :    */
      85             :    Int_t PushToFXS(void* pBuffer, int iSize, const char* pDetector, const char* pFileID, const AliHLTReadoutList* pDDLList);
      86             : 
      87             :   /** Constants  */ 
      88             :   static const AliHLTUInt32_t fgkFXSProtocolHeaderSize;
      89             :   static const AliHLTUInt32_t fgkFXSProtocolHeaderVersion;
      90             : 
      91             :   /*
      92             :    * ######################## ProcessCalibaration #####################
      93             :    */
      94             : 
      95             :   /**
      96             :    * The low-level data processing method for the component,
      97             :    * called for every data event. This is the custom processing 
      98             :    * method and can be overloaded by the component.
      99             :    * @param [in] evtData       event data structure
     100             :    * @param [in] blocks        input data block descriptors
     101             :    * @param [in] trigData         trigger data structure
     102             :    * @param [in] outputPtr        pointer to target buffer
     103             :    * @param [in,out] size         <i>input</i>: size of target buffer
     104             :    *                      <i>output</i>:size of produced data
     105             :    * @param [in] outputBlocks  list to receive output block descriptors
     106             :    * @return neg. error code if failed
     107             :    */
     108             :   virtual Int_t ProcessCalibration(const AliHLTComponent_EventData& evtData,
     109             :                           const AliHLTComponent_BlockData* blocks,
     110             :                           AliHLTComponent_TriggerData& trigData, AliHLTUInt8_t* outputPtr,
     111             :                           AliHLTUInt32_t& size,
     112             :                           vector<AliHLTComponent_BlockData>& outputBlocks);
     113             :  
     114             :   /**  
     115             :    * The high-level data processing method for the component,
     116             :    * called for every data event. This is the custom processing 
     117             :    * method and can be overloaded by the component.
     118             :    * This is the default processing method; the method is called
     119             :    * if no low level @ref ProcessCalibration method is overloaded by the component.
     120             :    * @param evtData       event data structure
     121             :    * @param trigData      trigger data structure
     122             :    * @return neg. error code if failed
     123             :    */
     124             :   virtual Int_t ProcessCalibration( const AliHLTComponentEventData& evtData, AliHLTComponentTriggerData& trigData);
     125             : 
     126             :   /*
     127             :    * ######################## ShipDataToFXS #####################
     128             :    */
     129             : 
     130             :   /**
     131             :    * The low-level data processing method for the component,
     132             :    * called for the END_OF_RUN event. This is the custom processing 
     133             :    * method and can be overloaded by the component.
     134             :    * @param [in] evtData       event data structure
     135             :    * @param [in] blocks        input data block descriptors
     136             :    * @param [in] trigData         trigger data structure
     137             :    * @param [in] outputPtr        pointer to target buffer
     138             :    * @param [in,out] size         <i>input</i>: size of target buffer
     139             :    *                      <i>output</i>:size of produced data
     140             :    * @param [in] outputBlocks  list to receive output block descriptors
     141             :    * @return neg. error code if failed
     142             :    */
     143             :   virtual Int_t ShipDataToFXS(const AliHLTComponent_EventData& evtData,
     144             :                           const AliHLTComponent_BlockData* blocks,
     145             :                           AliHLTComponent_TriggerData& trigData, AliHLTUInt8_t* outputPtr,
     146             :                           AliHLTUInt32_t& size,
     147             :                           vector<AliHLTComponent_BlockData>& outputBlocks);
     148             :  
     149             :   /**  
     150             :    * The high-level data processing method for the component,
     151             :    * called for the END_OF_RUN event. This is the custom processing 
     152             :    * method and can be overloaded by the component.
     153             :    * This is the default processing method; the method is called
     154             :    * if no low level @ref ShipDataToFXS method is overloaded by the component.
     155             :    * @param evtData       event data structure
     156             :    * @param trigData      trigger data structure
     157             :    * @return neg. error code if failed
     158             :    */
     159             :   virtual Int_t ShipDataToFXS( const AliHLTComponentEventData& evtData, AliHLTComponentTriggerData& trigData);
     160             : 
     161             :  private:
     162             : 
     163             :   /*
     164             :    * ######################## InitCalibration #####################
     165             :    */
     166             : 
     167             :   /**
     168             :    * Internal initialization method, which is not available for child classes. InitCalibration is the
     169             :    * corresponding function for classes derived from AliHLTCalibrationProcessor.
     170             :    */
     171             :   Int_t DoInit( int argc, const char** argv );
     172             : 
     173             :   /**
     174             :    * Default method for the internal initialization.
     175             :    * The method is called by @ref DoInit.
     176             :    * This class can be overridden by the child class.
     177             :    */
     178             :   virtual Int_t InitCalibration();
     179             : 
     180             :   /**
     181             :    * Scan one argument and adjacent parameters.
     182             :    * Can be overloaded by child classes in order to add additional arguments
     183             :    * beyond the standard arguments of the calibration processor. The method is called
     184             :    * whenever a non-standard argument is recognized. Make sure to return 
     185             :    * <tt> -EPROTO </tt> if the argument is not recognized be the child.
     186             :    * @param argc           size of the argument array
     187             :    * @param argv           agument array for component initialization
     188             :    * @return number of processed members of the argv <br>
     189             :    *         -EINVAL unknown argument <br>
     190             :    *         -EPROTO parameter for argument missing <br>
     191             :    */
     192             :   virtual Int_t ScanArgument(int argc, const char** argv);
     193             : 
     194             :   /*
     195             :    * ######################## DeinitCalibration #####################
     196             :    */
     197             : 
     198             :   /**
     199             :    * Internal deinitialization method, which is not available for child classes. DeinitCalibration is the
     200             :    * corresponding function for classes derived from AliHLTCalibrationProcessor.
     201             :    */
     202             :   Int_t DoDeinit();
     203             : 
     204             :   /**
     205             :    * Default method for the internal clean-up.
     206             :    * The method is called by @ref DoDeinit.
     207             :    * This class can be overridden by the child class.
     208             :    */
     209             :   virtual Int_t DeinitCalibration();
     210             : 
     211             :   /*
     212             :    * ######################## DoEvent #####################
     213             :    */
     214             :   
     215             :   /**
     216             :    * The low-level data processing method for the component.
     217             :    * It decides wether to call @ref ProcessCalibration or @ref ShipDataToFXS
     218             :    * according to the event type - END_OF_RUN / DATA / CALIBRATION
     219             :    * If commandline paramater  "-eventmodulo x"is given and x > 0, data will 
     220             :    * be also shipped to the FXS with this modulo.
     221             :    * @param [in] evtData       event data structure
     222             :    * @param [in] blocks        input data block descriptors
     223             :    * @param [in] trigData         trigger data structure
     224             :    * @param [in] outputPtr        pointer to target buffer
     225             :    * @param [in,out] size         <i>input</i>: size of target buffer
     226             :    *                      <i>output</i>:size of produced data
     227             :    * @param [in] outputBlocks  list to receive output block descriptors
     228             :    * @return neg. error code if failed
     229             :    */
     230             :   Int_t DoEvent( const AliHLTComponentEventData& evtData,
     231             :                  const AliHLTComponentBlockData* blocks, 
     232             :                        AliHLTComponentTriggerData& trigData,
     233             :                        AliHLTUInt8_t* outputPtr, 
     234             :                        AliHLTUInt32_t& size,
     235             :                        vector<AliHLTComponentBlockData>& outputBlocks );
     236             : 
     237             :   using AliHLTProcessor::DoEvent;
     238             :   
     239             :   /*
     240             :    * ######################## CreateFXSHeader #####################
     241             :    */
     242             : 
     243             :   /**
     244             :    * Insert an object into the output. FXS header will be inserted before the root object.
     245             :    * @param pHeader     pointer to AliHLTFXSHeader
     246             :    * @param pDetector   4 byte Detector identifier
     247             :    * @param pFileID     name of the file to which the data shall be stored
     248             :    * @param pDDLList    pointer to ReadoutList ( class @ref AliHLTReadoutList) of
     249             :    *                    participating DDLs. Will be filled automatically if not 
     250             :    *                    supplied by the component.
     251             :    * @return neg. error code if failed 
     252             :    */
     253             :   Int_t CreateFXSHeader( AliHLTFXSHeader &pHeader, const char* pDetector, const char* pFileID, const AliHLTReadoutList* pDDLList );
     254             : 
     255             :   /*
     256             :    * ######################## Members #####################
     257             :    */
     258             : 
     259             :   /** 
     260             :    * Event modulo, when Data should shipped to FXS additionally.
     261             :    * Default is 0, eventmodulo is deactivated.
     262             :    */
     263             :   Int_t fEventModulo;                                  // see above
     264             : 
     265             :   /** 
     266             :    * if kTrue corrupt events will be passed through,
     267             :    * if kFalse (default) they will be filtered
     268             :    */
     269             :   Bool_t fUseCorruptEvents;                            // see above
     270             : 
     271             :   /** Event counter */
     272             :   Int_t fEventCounter;                                 // see above
     273             : 
     274             :   /** 
     275             :    * Bit Array of participating DDL Numbers.
     276             :    * Scheme: every 4 Bits of each Byte convert digit 
     277             :    * (0 - F), before writing to FXS Header
     278             :    */
     279             :   //Char_t fDDLNumber[gkAliHLTFXSHeaderfDDLNumberSize];// see above
     280             :   Char_t fDDLNumber[64];                               // see above
     281             : 
     282             :   /** Dummy in order to cope with RC 11 */
     283             :   Int_t fDummy;                                        // see above
     284             : 
     285         126 :   ClassDef(AliHLTCalibrationProcessor, 0)
     286             : 
     287             : };
     288             : 
     289             : #endif // ALIHLTCALIBRATIONPROCESSOR_H

Generated by: LCOV version 1.11