]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HLT/TPCLib/AliHLTTPCAgent.h
Cleaning up ClassDef. Should have the version == 0 for the algorithmic classes like...
[u/mrichter/AliRoot.git] / HLT / TPCLib / AliHLTTPCAgent.h
index 402b119db45dbf807e699bf01ba2b39e1003e1fc..d40d5c4ff9ba9c5b73655c096c6b2cdca9764dba 100644 (file)
@@ -1,17 +1,22 @@
-// @(#) $Id$
+//-*- Mode: C++ -*-
+// $Id$
 
 #ifndef ALIHLTTPCAGENT_H
 #define ALIHLTTPCAGENT_H
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
- * See cxx source for full Copyright notice                               */
+//* This file is property of and copyright by the ALICE HLT Project        * 
+//* ALICE Experiment at CERN, All rights reserved.                         *
+//* See cxx source for full Copyright notice                               *
 
-/** @file   AliHLTTPCAgent.h
-    @author Matthias Richter
-    @date   
-    @brief  Agent of the libAliHLTTPC library
-*/
+/ @file   AliHLTTPCAgent.h
+//  @author Matthias Richter
+//  @date   
+//  @brief  Agent of the libAliHLTTPC library
+//  @note
 
 #include "AliHLTModuleAgent.h"
+#include "AliHLTOUTHandlerEquId.h"
+
+class AliHLTOUTHandlerChain;
 
 /**
  * @class AliHLTTPCAgent
@@ -35,6 +40,7 @@ class AliHLTTPCAgent : public AliHLTModuleAgent {
    * to be registered to the current AliRoot setup by checking the
    * runloader.
    * @param handler      the configuration handler
+   * @param rawReader    AliRawReader instance
    * @param runloader    AliRoot runloader
    * @return neg. error code if failed
    */
@@ -48,6 +54,7 @@ class AliHLTTPCAgent : public AliHLTModuleAgent {
    * described by the last configuration(s) in the chain. 
    * The agent can adapt the configurations to be registered to the current
    * AliRoot setup by checking the runloader.
+   * @param rawReader    AliRawReader instance
    * @param runloader    AliRoot runloader
    * @return number of configurations, neg. error code if failed
    */
@@ -60,9 +67,77 @@ class AliHLTTPCAgent : public AliHLTModuleAgent {
    */
   const char* GetRequiredComponentLibraries() const;
 
+  /**
+   * Register components for the AliHLTTPC library.
+   * @param pHandler  [in] instance of the component handler          
+   */
+  int RegisterComponents(AliHLTComponentHandler* pHandler) const;
+
+  /**
+   * Get handler decription for TPC data in the HLTOUT data stream.
+   * @param dt        [in] data type of the block
+   * @param spec      [in] specification of the block
+   * @param desc      [out] handler description
+   * @return 1 if the agent can provide a handler, 0 if not
+   */
+  int GetHandlerDescription(AliHLTComponentDataType dt,
+                           AliHLTUInt32_t spec,
+                           AliHLTOUTHandlerDesc& desc) const;
+
+  /**
+   * Get specific handler for TPC data in the HLTOUT data stream.
+   * @param dt        [in] data type of the block
+   * @param spec      [in] specification of the block
+   * @return pointer to handler
+   */
+  AliHLTOUTHandler* GetOutputHandler(AliHLTComponentDataType dt,
+                                    AliHLTUInt32_t spec);
+
+  /**
+   * Delete an HLTOUT handler.
+   * @param pInstance      pointer to handler
+   */
+  int DeleteOutputHandler(AliHLTOUTHandler* pInstance);
+
+  /**
+   * The handler for TPC RAW data in the HLTOUT stream.
+   */
+  class AliHLTTPCRawDataHandler : public AliHLTOUTHandlerEquId {
+  public:
+    /** constructor */
+    AliHLTTPCRawDataHandler();
+    /** destructor */
+    ~AliHLTTPCRawDataHandler();
+
+    /**
+     * Process a data block.
+     * Decode specification and return equipment id of the data block.
+     * The data itsself i untouched.
+     * @return equipment id the block should be used for.
+     */
+    int ProcessData(AliHLTOUT* pData);
+
+  private:
+
+  };
+
  protected:
 
  private:
+  /** copy constructor prohibited */
+  AliHLTTPCAgent(const AliHLTTPCAgent&);
+  /** assignment operator prohibited */
+  AliHLTTPCAgent& operator=(const AliHLTTPCAgent&);
+
+  /** handler for TPC raw data in the HLTOUT stream */
+  AliHLTTPCRawDataHandler* fRawDataHandler; //!transient
+
+  /** afterburner for {'TRAKSEGS':'TPC '} in the HLTOUT stream */
+  AliHLTOUTHandlerChain* fTracksegsDataHandler; //! transient
+
+  /// handler for {'CLUSTERS':'TPC '}
+  AliHLTOUTHandlerChain* fClustersDataHandler; //! transient
+
   ClassDef(AliHLTTPCAgent, 0);
 };