-// @(#) $Id$
+//-*- Mode: C++ -*-
+// $Id$
#ifndef ALIHLTTPCCLUSTERFINDERCOMPONENT_H
#define ALIHLTTPCCLUSTERFINDERCOMPONENT_H
//* 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>
* \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
* 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
};
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:
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;
/** 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
/** 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