LCOV - code coverage report
Current view: top level - HLT/MUON/OfflineInterface - AliHLTMUONDigitPublisherComponent.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             : #ifndef ALIHLTMUONDIGITPUBLISHERCOMPONENT_H
       2             : #define ALIHLTMUONDIGITPUBLISHERCOMPONENT_H
       3             : /* This file is property of and copyright by the ALICE HLT Project        *
       4             :  * ALICE Experiment at CERN, All rights reserved.                         *
       5             :  * See cxx source for full Copyright notice                               */
       6             : 
       7             : // $Id: AliHLTMUONDigitPublisherComponent.h 26179 2008-05-29 22:27:27Z aszostak $
       8             : 
       9             : ///
      10             : /// @file   AliHLTMUONDigitPublisherComponent.h
      11             : /// @author Artur Szostak <artursz@iafrica.com>
      12             : /// @date   29 May 2008
      13             : /// @brief  Declaration of a component to publish MUON data from digits.
      14             : ///
      15             : 
      16             : #include "AliHLTOfflineDataSource.h"
      17             : #include "TArrayI.h"
      18             : 
      19             : #if __GNUC__ && __GNUC__ < 3
      20             : #define std
      21             : #endif
      22             : 
      23             : class AliMUONVDigitStore;
      24             : class AliMUONVTriggerStore;
      25             : class AliMpExMap;
      26             : class AliMUONMCDataInterface;
      27             : class AliMUONDataInterface;
      28             : 
      29             : /**
      30             :  * @class AliHLTMUONDigitPublisherComponent
      31             :  * The component is used to convert simulated or reconstructed digits into DDL
      32             :  * raw data streams on the fly and publish them. This is useful for running
      33             :  * dHLT simulations on digit data where the raw data files are not available.
      34             :  * The component is also used during dHLT simulation under AliSimulation where
      35             :  * we do not have access to a rawReader.<br>
      36             :  *
      37             :  * Component ID: \b MUONDigitPublisher <br>
      38             :  * Library: \b libAliHLTMUON.so  <br>
      39             :  *
      40             :  * Manditory arguments:<br>
      41             :  * \li -ddl <number> <br>
      42             :  *       Specifies which DDL to generate raw data for. <number> should be in the
      43             :  *       range [1..22], where 1..20 are for tracker DDLs and 21 or 22 is for the
      44             :  *       dimuon trigger.<br>
      45             :  *
      46             :  * Optional arguments:<br>
      47             :  * \li -ddlid <br>
      48             :  *       This is an alternative to using -ddl which allows specifying a DDL in
      49             :  *       terms of the DDL equipment IDs.<br>
      50             :  * \li -makescalars <br>
      51             :  *       If set then the scalar events will be generated for the trigger DDLs.
      52             :  *       (default is not to generate the scalars)<br>
      53             :  * \li -simdata <br>
      54             :  *       Indicates that the simulated digits should be used. (default option)<br>
      55             :  * \li -recdata <br>
      56             :  *       Indicates that the reconstructed digits tree should be used.<br>
      57             :  * \li -firstevent <number> <br>
      58             :  *      Indicates the first event number to fetch from AliRoot. The default is to
      59             :  *      start from zero and increment the event number after every GetEvent call.
      60             :  *      This mode causes the component to ignore the event number passed to it by
      61             :  *      the system and rather use an internal counter. This mode can be overriden
      62             :  *      with the -event_number_literal flag. <br>
      63             :  * \li -event_number_literal <br>
      64             :  *      This flag indicates to use the event numbers as literal indices into the
      65             :  *      AliRoot trees. This option will cause the component to ignore the -firstevent
      66             :  *      flag. <br>
      67             :  * \li -exclude_chamber <number>|<number>-<number>[,<number>|<number>-<number>,...] <br>
      68             :  *      Allows one to exclude (mask out) digits from certain chambers in the generated
      69             :  *      raw DDL stream. The chamber numbers <number> should be in the range [1..10]. <br>
      70             :  * \li -exclude_detelem <number>|<number>-<number>[,<number>|<number>-<number>,...] <br>
      71             :  *      Allows one to exclude (mask out) digits from certain detector elements in
      72             :  *      the generated raw DDL stream. The detector element ID numbers <number> should
      73             :  *      be in the range [100..1099]. <br>
      74             :  *
      75             :  * @ingroup alihlt_muon_components
      76             :  */
      77             : class AliHLTMUONDigitPublisherComponent : public AliHLTOfflineDataSource
      78             : {
      79             : public:
      80             :         AliHLTMUONDigitPublisherComponent();
      81             :         virtual ~AliHLTMUONDigitPublisherComponent();
      82             : 
      83             :         // Public functions to implement AliHLTComponent's interface.
      84             :         // These functions are required for the component registration process.
      85             : 
      86             :         virtual const char* GetComponentID();
      87             :         virtual AliHLTComponentDataType GetOutputDataType();
      88             :         virtual void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier );
      89             :         virtual AliHLTComponent* Spawn();
      90             :         
      91             : protected:
      92             :         
      93             :         // Protected functions to implement AliHLTComponent's interface.
      94             :         // These functions provide initialization as well as the actual processing
      95             :         // capabilities of the component.
      96             :         
      97             :         virtual int DoInit(int argc, const char** argv);
      98             :         virtual int DoDeinit();
      99             :         
     100             :         virtual int GetEvent(
     101             :                         const AliHLTComponentEventData& evtData,
     102             :                         AliHLTComponentTriggerData& trigData,
     103             :                         AliHLTUInt8_t* outputPtr,
     104             :                         AliHLTUInt32_t& size,
     105             :                         AliHLTComponentBlockDataList& outputBlocks
     106             :                 );
     107             :         
     108             :         using AliHLTOfflineDataSource::GetEvent;
     109             :         
     110             : private:
     111             : 
     112             :         // Do not allow copying of this class.
     113             :         AliHLTMUONDigitPublisherComponent(const AliHLTMUONDigitPublisherComponent& /*obj*/);
     114             :         AliHLTMUONDigitPublisherComponent& operator = (const AliHLTMUONDigitPublisherComponent& /*obj*/);
     115             :         
     116             :         int ParseChamberString(const char* str);
     117             :         int ParseDetElemString(const char* str);
     118             :         
     119             :         /////////////////////////////////////////////////////////////////////////////////////////
     120             :         // Methods copied from AliMUONRawWriter.
     121             :         //TODO: This is not ideal. We should have AliMUONRawWriter re-factored so that
     122             :         // we can have raw data generated into a memory resident buffer, rather than
     123             :         // always written to a file on disk, as it is now. But this will take some time
     124             :         // since people need to be convinced of this fact.
     125             :         void Digits2BusPatchMap(
     126             :                         const AliMUONVDigitStore& digitStore,
     127             :                         AliMpExMap& busPatchMap, Int_t iDDL
     128             :                 );
     129             :         
     130             :         int WriteTrackerDDL(
     131             :                         const AliMUONVDigitStore* digitStore, Int_t iDDL,
     132             :                         AliHLTUInt8_t* outBuffer, AliHLTUInt32_t& outBufferSize
     133             :                 );
     134             :         
     135             :         int WriteTriggerDDL(
     136             :                         const AliMUONVTriggerStore* triggerStore, Int_t iDDL,
     137             :                         AliHLTUInt8_t* outBuffer, AliHLTUInt32_t& outBufferSize,
     138             :                         bool scalarEvent = false
     139             :                 );
     140             :         
     141             :         static void LocalWordPacking(UInt_t &word, UInt_t locId, UInt_t locDec,
     142             :                                 UInt_t trigY, UInt_t posY, UInt_t posX,
     143             :                                 UInt_t sdevX, UInt_t devX);
     144             :         
     145             :         /////////////////////////////////////////////////////////////////////////////////////////
     146             :         
     147             :         AliHLTInt32_t fDDL;  ///< DDL number in the range [0..21]. Set to -1 for invalid/unspecified value.
     148             :         
     149             :         Int_t fCurrentEventIndex;  ///< The current event index that is to be loaded.
     150             :                                    //  -1 indicates that we should rather use the event
     151             :                                    // numbers as given by the system.
     152             :         
     153             :         bool fMakeScalars;  ///< Flag indicating if the scalars should be generated for the trigger DDLs.
     154             :         
     155             :         AliMUONMCDataInterface* fMCDataInterface; ///< Access to MUON MC-related data.
     156             :         AliMUONDataInterface* fDataInterface; ///< Access to MUON data.
     157             :         
     158             :         TArrayI fChamberExclusionList;  //! Exclusion list for tracking chambers.
     159             :         TArrayI fDetElemExclusionList;  //! Exclusion list for tracking detector elements.
     160             :         
     161           6 :         ClassDef(AliHLTMUONDigitPublisherComponent, 0)  // dHLT component for publishing DDL streams from digits on the fly.
     162             : };
     163             : 
     164             : #endif // ALIHLTMUONDIGITPUBLISHERCOMPONENT_H

Generated by: LCOV version 1.11