]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HLT/TPCLib/AliHLTTPCClusterFinderComponent.h
documentation, formatting, coding conventions
[u/mrichter/AliRoot.git] / HLT / TPCLib / AliHLTTPCClusterFinderComponent.h
index f7b7ab162cdbd430411613bcb202d06443f0dc1e..36e9f0eed5bb602b23c232ffd0ae27aba2afedee 100644 (file)
@@ -1,34 +1,81 @@
-// XEmacs -*-C++-*-
 // @(#) $Id$
 
 #ifndef ALIHLTTPCCLUSTERFINDERCOMPONENT_H
 #define ALIHLTTPCCLUSTERFINDERCOMPONENT_H
-/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
+
+/* 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                               */
 
-/* AliHLTTPCClusterFinderComponent
- */
+/** @file   AliHLTTPCClusterFinderComponent.h
+    @author Timm Steinbeck, Matthias Richter, Jochen Thaeder
+    @date   
+    @brief  The TPC cluster finder component.
+*/
+
+// see below for class documentation
+// or
+// refer to README to build package
+// or
+// visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
 
 #include "AliHLTProcessor.h"
-#include "AliHLTTPCDefinitions.h"
 
-class AliL3ClustFinderNew;
+class AliHLTTPCClusterFinder;
+class AliHLTTPCPadArray;
+class AliHLTTPCDigitReader;
 
+/**
+ * @class AliHLTTPCClusterFinderComponent
+ * Implementation of the cluster finder component.
+ * The component implements the interface methods of the @ref AliHLTProcessor.
+ * The actual cluster finding algorithm is implemented in @ref AliHLTTPCClusterFinder.
+ * The component can handle unpacked and packed data of different formats via the
+ * AliHLTTPCDigitReader implementations. Two components are registered, the
+ * TPCClusterFinderUnpacked and the TPCClusterFinderPacked. The latter one can
+ * instantiate different digit readers depending on the arguments.
+ * 
+ * The component has the following component arguments:
+ * - rawreadermode   the mode for the @ref AliHLTTPCDigitReaderRaw, use -2 if using unsorted
+ * - adc-threshold   ADC count threshold for zero suppression, if <0 the base line
+ *                   calculation and subtraction is switched off
+ * - pp-run          set parameters specific to a pp run; currently this switches
+ *                   cluster deconvolution off for pp runs (not true for unsorted reading)
+ * - unsorted        if 1 the data will be read unsorted in to a PadArray object. This should
+ *                   only be done on patch level since it use a lot of memory
+ * - patch           specify on which patch to resd the data unsorted
+ *
+ * @ingroup alihlt_tpc
+ */
 class AliHLTTPCClusterFinderComponent : public AliHLTProcessor
     {
     public:
-       AliHLTTPCClusterFinderComponent();
+        /**
+         * constructor 
+         * @param packed    whether to use the packed or unpacked reader 
+         */
+       AliHLTTPCClusterFinderComponent(bool packed);
+       /** not a valid copy constructor, defined according to effective C++ style */
+       AliHLTTPCClusterFinderComponent(const AliHLTTPCClusterFinderComponent&);
+       /** not a valid assignment op, but defined according to effective C++ style */
+       AliHLTTPCClusterFinderComponent& operator=(const AliHLTTPCClusterFinderComponent&);
+       /** destructor */
        virtual ~AliHLTTPCClusterFinderComponent();
 
        // Public functions to implement AliHLTComponent's interface.
        // These functions are required for the registration process
 
-       const char* GetComponentID();
-       void GetInputDataTypes( vector<AliHLTComponent_DataType>& list);
-       AliHLTComponent_DataType GetOutputDataType();
-       virtual void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier );
-       AliHLTComponent* Spawn();
-       
+  /** interface function, see @ref AliHLTComponent for description */
+  const char* GetComponentID();
+  /** interface function, see @ref AliHLTComponent for description */
+  void GetInputDataTypes( vector<AliHLTComponentDataType>& list);
+  /** interface function, see @ref AliHLTComponent for description */
+  AliHLTComponentDataType GetOutputDataType();
+  /** interface function, see @ref AliHLTComponent for description */
+  virtual void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier );
+  /** interface function, see @ref AliHLTComponent for description */
+  AliHLTComponent* Spawn();
+
     protected:
        
        // Protected functions to implement AliHLTComponent's interface.
@@ -37,19 +84,45 @@ class AliHLTTPCClusterFinderComponent : public AliHLTProcessor
 
        int DoInit( int argc, const char** argv );
        int DoDeinit();
-       int DoEvent( const AliHLTComponent_EventData& evtData, const AliHLTComponent_BlockData* blocks, 
-                    AliHLTComponent_TriggerData& trigData, AliHLTUInt8_t* outputPtr, 
-                    AliHLTUInt32_t& size, vector<AliHLTComponent_BlockData>& outputBlocks );
+       int DoEvent( const AliHLTComponentEventData& evtData, const AliHLTComponentBlockData* blocks, 
+                    AliHLTComponentTriggerData& trigData, AliHLTUInt8_t* outputPtr, 
+                    AliHLTUInt32_t& size, vector<AliHLTComponentBlockData>& outputBlocks );
        
     private:
+       /** the cluster finder object */
+       AliHLTTPCClusterFinder* fClusterFinder;                                      //!transient
+       /** the reader object for data decoding */
+       AliHLTTPCDigitReader* fReader;                                               //!transient
 
-       AliL3ClustFinderNew* fClusterFinder;
+       bool fClusterDeconv; //!transient
+      float fXYClusterError; //!transient
+      float fZClusterError; //!transient
+      /**
+       * switch to indicated the reader
+       * use fPackedSwitch = true for packed inputtype "gkDDLPackedRawDataType"
+       * use fPackedSwitch = false for unpacked inputtype "gkUnpackedRawDataType"
+       */
+      Int_t fPackedSwitch;                                                           // see above
+      
+      /*
+       * Reads the data the new unsorted way if true
+       *
+       */
+      Int_t fUnsorted;                                                               //!transient
 
-       bool fClusterDeconv;
-       float fXYClusterError;
-       float fZClusterError;
-       
-       ClassDef(AliHLTTPCClusterFinderComponent, 0)
+      /*
+       * Patch number to be read, currently given as component argument,
+       * will be changed later.
+       */
+      Int_t fPatch;                                                                  //!transient
+
+      /*
+       * Pointer to a PadArray object containing a double array of all the pads in
+       * the current patch.
+       */
+      AliHLTTPCPadArray * fPadArray;                                                 //!transient
+
+      ClassDef(AliHLTTPCClusterFinderComponent, 1)
 
     };
 #endif