]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HLT/TPCLib/AliHLTTPCClusterFinderComponent.h
The segmentations are made data member of the AliITSUGeomTGeo, will be loaded
[u/mrichter/AliRoot.git] / HLT / TPCLib / AliHLTTPCClusterFinderComponent.h
index 726647d3aef7324374426315eabd38ad2ba00f2c..49ae612bfc26253d8fc6bc2ddfcec28d972190d6 100644 (file)
@@ -1,4 +1,5 @@
-// @(#) $Id$
+//-*- Mode: C++ -*-
+// $Id$
 
 #ifndef ALIHLTTPCCLUSTERFINDERCOMPONENT_H
 #define ALIHLTTPCCLUSTERFINDERCOMPONENT_H
@@ -7,38 +8,37 @@
 //* ALICE Experiment at CERN, All rights reserved.                         *
 //* See cxx source for full Copyright notice                               *
 
-/** @file   AliHLTTPCClusterFinderComponent.h
-    @author Timm Steinbeck, Matthias Richter, Kenneth Aamodt
-    @date   
-    @brief  The TPC cluster finder component.
-*/
+/// @file   AliHLTTPCClusterFinderComponent.h
+/// @author Timm Steinbeck, Matthias Richter, Kenneth Aamodt
+/// @date   
+/// @brief  The TPC cluster finder component.
+///
 
 #include "AliHLTProcessor.h"
+#include "AliHLTComponentBenchmark.h"
 
 class AliHLTTPCClusterFinder;
 class AliHLTTPCDigitReader;
+class AliTPCTransform;
 
 /**
  * @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.
- * Two components are registered, TPCClusterFinderPacked and TPCClusterFinderDecoder.
- * TPCClusterFinderDecoder use the AliTPCRawStream class for decoding of the data, while TPCClusterFinderDecoder 
- * use the AliAltroDecoder for decoding the data.
- *
- * TPCClusterFinderDecoder is the fastest of the two, this is due to that the AliAltroDecoder
- * returns data in a bunch format. A bunch consist of consecutive signals.
- * TPCClusterFinderPacked first have to read the data one by one, which means that row, pad and
- * time signals have to be compared between each new digit, which leads to a slower alorithm. 
- * 
+ * Two components are registered, TPCClusterFinderUnpacked is for reading the HLT
+ * internal digit data format used in the simulation. TPCClusterFinder32Bit uses
+ * the AliHLTTPCDigitReader for raw data. After a phase of different decoder/raw stream
+ * implementations the CF for raw data is using the default offline raw stream for
+ * the 32bit RCU format AliAltroRawStreamV3, which also has a fall back to the 40bit
+ * AliAltroRawStream if the old RCU format is detected.
  *
  * The clusterfinder is now using the AliTPCTransform instead of the AliHLTTPCTransform for  
  * transformations from row, pad time -> x,y,z.
  *
  * <h2>General properties:</h2>
  *
- * Component ID: \b TPCClusterFinderDecoder and TPCClusterFinderPacked <br>
+ * Component ID: \b TPCClusterFinderUnpacked and TPCClusterFinder32Bit <br>
  * Library: \b libAliHLTTPC
  * Input Data Types: @ref kAliHLTDataTypeDDLRaw <br>
  * Output Data Types: @ref AliHLTTPCDefinitions::fgkClustersDataType and/or kAliHLTDataTypeHwAddr16 <br> 
@@ -77,11 +77,33 @@ class AliHLTTPCDigitReader;
  * \li nsigma-threshold <br>  
  *
  * <h2>Default CDB entries:</h2>
- * The component has two default CDB entries
- * \li <tt>TPC/Calib/PadTime0</tt>.
- * \li <tt>TPC/Calib/Parameters</tt>.
+ * The component has these default CDB entries
+ * \li <tt>GRP/GRP/Data</tt>.               
+ * \li <tt>TPC/Calib/PadTime0</tt>.         
+ * \li <tt>TPC/Calib/Parameters</tt>.       
+ * \li <tt>TPC/Calib/TimeDrift</tt>.        
+ * \li <tt>TPC/Calib/Temperature</tt>.      
+ *
+ * TODO: pad by pad gain calibration also has to be added to the clusterfinder
+ *
+ * And it also needs these below to avoid warnings during initialization and update of calibDB
+ * \li <tt>TPC/Calib/PadGainFactor</tt>.    
+ * \li <tt>TPC/Calib/TimeGain</tt>.
+ * \li <tt>TPC/Calib/GainFactorDedx</tt>.
+ * \li <tt>TPC/Calib/PadNoise</tt>.
+ * \li <tt>TPC/Calib/Pedestals</tt>.
+ * \li <tt>TPC/Calib/ClusterParam</tt>.
+ * \li <tt>TPC/Calib/AltroConfig</tt>.
+ * \li <tt>TPC/Calib/Pulser</tt>.
+ * \li <tt>TPC/Calib/CE</tt>.
+ * \li <tt>TPC/Calib/Raw</tt>.
+ * \li <tt>TPC/Calib/QA</tt>.
+ * \li <tt>TPC/Calib/Mapping</tt>.
+ * \li <tt>TPC/Calib/Goofie</tt>.
+ * \li <tt>TPC/Calib/HighVoltage</tt>.
+ * \li <tt>TPC/Calib/Ref</tt>.
  *
- * These entries are used by the AliTPCTransform class to correct for T0 and drift.
+ * These entries are used by the AliTPCTransform class to correct for T0, drift and ExB.
  * @ingroup alihlt_tpc_components
  */
 class AliHLTTPCClusterFinderComponent : public AliHLTProcessor
@@ -94,13 +116,13 @@ class AliHLTTPCClusterFinderComponent : public AliHLTProcessor
        * read the data.
        */
       enum {
-       /** real data, offline AliAltroRawStream used for data decoding */
+       // deprecated option for offline AliAltroRawStream
        kClusterFinderPacked,
-       /** Unpacked data of format AliHLTTPCUnpackedRawData */
+       // Unpacked data of format AliHLTTPCUnpackedRawData */
        kClusterFinderUnpacked,
-       /** real data, fast AliAltroDecoder used for data decoding */
+       // deprecated option for AliAltroDecoder
        kClusterFinderDecoder,
-       /** real data, offline altro decoder 32 bit format*/
+       // real data, offline altro decoder 32 bit format*/
        kClusterFinder32Bit
       };
 
@@ -127,6 +149,8 @@ class AliHLTTPCClusterFinderComponent : public AliHLTProcessor
   virtual void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier );
   /** interface function, see AliHLTComponent for description */
   AliHLTComponent* Spawn();
+  /** interface function, see @ref AliHLTComponent for description */
+  void GetOCDBObjectDescription( TMap* const targetMap);
 
     protected:
        
@@ -140,6 +164,7 @@ class AliHLTTPCClusterFinderComponent : public AliHLTProcessor
                     AliHLTComponentTriggerData& trigData, AliHLTUInt8_t* outputPtr, 
                     AliHLTUInt32_t& size, vector<AliHLTComponentBlockData>& outputBlocks );
        int Configure(const char* arguments);
+       int ScanConfigurationArgument(int argc, const char** argv);
        int Reconfigure(const char* cdbEntry, const char* chainId);
        
        using AliHLTProcessor::DoEvent;
@@ -158,6 +183,8 @@ class AliHLTTPCClusterFinderComponent : public AliHLTProcessor
 
        /** flag to deconvolute in time direction */
        Bool_t fDeconvTime;                                                          //!transient
+        /** the object to set the time stamp */
+        AliTPCTransform *fTS; //!transient
 
        /** flag to deconvolute in pad direction */
        Bool_t fDeconvPad;                                                           //!transient
@@ -199,9 +226,12 @@ class AliHLTTPCClusterFinderComponent : public AliHLTProcessor
        /** Last timebin taken in to account when reading the data */
        Int_t fLastTimeBin;                                                            //!transient
 
-       Bool_t fDoMC;
+       Bool_t fDoMC; // flag to provide MC labels
+       Bool_t fReleaseMemory; // flag to release the memory after each event
+       Bool_t fPublishRawClusters; // publish raw clusters in addition
+       AliHLTComponentBenchmark fBenchmark; // benchmark
 
-       ClassDef(AliHLTTPCClusterFinderComponent, 6)
+       ClassDef(AliHLTTPCClusterFinderComponent, 0)
 
 };
 #endif