X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=HLT%2FTPCLib%2FAliHLTTPCClusterFinderComponent.h;h=014fe1bdcc668e49ac493573a229274d779b2e8a;hb=5f5e4514dcc89e0d39c0bd095ef49fad5792cbed;hp=86e9a3b8734a7e9a5101a1a04eeaee5ccb06cbc5;hpb=a1dbf058e04d5734c3635b3e82db982b26c94123;p=u%2Fmrichter%2FAliRoot.git
diff --git a/HLT/TPCLib/AliHLTTPCClusterFinderComponent.h b/HLT/TPCLib/AliHLTTPCClusterFinderComponent.h
index 86e9a3b8734..014fe1bdcc6 100644
--- a/HLT/TPCLib/AliHLTTPCClusterFinderComponent.h
+++ b/HLT/TPCLib/AliHLTTPCClusterFinderComponent.h
@@ -3,26 +3,19 @@
#ifndef ALIHLTTPCCLUSTERFINDERCOMPONENT_H
#define ALIHLTTPCCLUSTERFINDERCOMPONENT_H
-/* 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 */
+//* 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 AliHLTTPCClusterFinderComponent.h
- @author Timm Steinbeck, Matthias Richter, Jochen Thaeder
+ @author Timm Steinbeck, Matthias Richter, Kenneth Aamodt
@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"
class AliHLTTPCClusterFinder;
-class AliHLTTPCPadArray;
class AliHLTTPCDigitReader;
/**
@@ -30,46 +23,131 @@ class AliHLTTPCDigitReader;
* 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.
+ * 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.
*
- * 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
+ * The clusterfinder is now using the AliTPCTransform instead of the AliHLTTPCTransform for
+ * transformations from row, pad time -> x,y,z.
+ *
+ *
General properties:
+ *
+ * Component ID: \b TPCClusterFinderDecoder and TPCClusterFinderPacked
+ * Library: \b libAliHLTTPC
+ * Input Data Types: @ref kAliHLTDataTypeDDLRaw
+ * Output Data Types: @ref AliHLTTPCDefinitions::fgkClustersDataType and/or kAliHLTDataTypeHwAddr16
+ *
+ *
+ * Mandatory arguments:
+ *
+ *
+ * Optional arguments:
+ *
+ * \li -deconvolute-time
+ * Turns on deconvolution in the time direction.
+ * \li -deconvolute-pad
+ * Turns on deconvolution in the pad direction.
+ * \li -timebins
+ * Sets the number of timebins (446 for simulated data, and 1024 for real data) Default:1024
+ * \li -first-timebin
+ * First timebin taken into consideration when reading the data.
+ * \li -last-timebin
+ * Last timebin taken into consideration when reading the data.
+ * \li -sorted
+ * Switch off unsorted reading of data. Equivalent to the old argument unsorted 0.
+ * \li -active-pads
+ * Switch off unsorted reading of data. Equivalent to the old argument unsorted 0.
+ * \li -occupancy-limit
+ * Set the occupancy limit for the sorted clusterfinding.
+ *
+ *
+ * Obsolete arguments:
+ * \li occupancy-limit
+ * \li rawreadermode
+ * \li pp-run
+ * \li adc-threshold
+ * \li oldrcuformat
+ * \li unsorted
+ * \li nsigma-threshold
+ *
+ * Default CDB entries:
+ * The component has these default CDB entries
+ * \li GRP/GRP/Data.
+ * \li TPC/Calib/PadTime0.
+ * \li TPC/Calib/Parameters.
+ * \li TPC/Calib/TimeDrift.
+ * \li TPC/Calib/Temperature.
+ *
+ * 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 TPC/Calib/PadGainFactor.
+ * \li TPC/Calib/TimeGain.
+ * \li TPC/Calib/GainFactorDedx.
+ * \li TPC/Calib/PadNoise.
+ * \li TPC/Calib/Pedestals.
+ * \li TPC/Calib/ClusterParam.
+ * \li TPC/Calib/AltroConfig.
+ * \li TPC/Calib/Pulser.
+ * \li TPC/Calib/CE.
+ * \li TPC/Calib/Raw.
+ * \li TPC/Calib/QA.
+ * \li TPC/Calib/Mapping.
+ * \li TPC/Calib/Goofie.
+ * \li TPC/Calib/HighVoltage.
+ * \li TPC/Calib/Ref.
+ *
+ * These entries are used by the AliTPCTransform class to correct for T0, drift and ExB.
+ * @ingroup alihlt_tpc_components
*/
class AliHLTTPCClusterFinderComponent : public AliHLTProcessor
{
public:
+ /**
+ * Defines for the cluster finder type.
+ * The cluster finders can work on different formats of input data,
+ * the AliHLTTPCDigitReader interface provides a transparent way to
+ * read the data.
+ */
+ enum {
+ /** real data, offline AliAltroRawStream used for data decoding */
+ kClusterFinderPacked,
+ /** Unpacked data of format AliHLTTPCUnpackedRawData */
+ kClusterFinderUnpacked,
+ /** real data, fast AliAltroDecoder used for data decoding */
+ kClusterFinderDecoder,
+ /** real data, offline altro decoder 32 bit format*/
+ kClusterFinder32Bit
+ };
+
/**
* constructor
- * @param packed whether to use the packed or unpacked reader
+ * @param mode input type see e.g. @ref kClusterFinderUnpacked
*/
- AliHLTTPCClusterFinderComponent(bool packed);
+ AliHLTTPCClusterFinderComponent(int mode);
/** destructor */
virtual ~AliHLTTPCClusterFinderComponent();
// Public functions to implement AliHLTComponent's interface.
// These functions are required for the registration process
- /** interface function, see @ref AliHLTComponent for description */
+ /** interface function, see AliHLTComponent for description */
const char* GetComponentID();
- /** interface function, see @ref AliHLTComponent for description */
+ /** interface function, see AliHLTComponent for description */
void GetInputDataTypes( vector& list);
- /** interface function, see @ref AliHLTComponent for description */
+ /** interface function, see AliHLTComponent for description */
AliHLTComponentDataType GetOutputDataType();
- /** interface function, see @ref AliHLTComponent for description */
+ /** interface function, see AliHLTComponent for description */
+ int GetOutputDataTypes(AliHLTComponentDataTypeList& tgtList);
+ /** interface function, see AliHLTComponent for description */
virtual void GetOutputDataSize( unsigned long& constBase, double& inputMultiplier );
- /** interface function, see @ref AliHLTComponent for description */
+ /** interface function, see AliHLTComponent for description */
AliHLTComponent* Spawn();
protected:
@@ -83,8 +161,15 @@ class AliHLTTPCClusterFinderComponent : public AliHLTProcessor
int DoEvent( const AliHLTComponentEventData& evtData, const AliHLTComponentBlockData* blocks,
AliHLTComponentTriggerData& trigData, AliHLTUInt8_t* outputPtr,
AliHLTUInt32_t& size, vector& outputBlocks );
+ int Configure(const char* arguments);
+ int ScanConfigurationArgument(int argc, const char** argv);
+ int Reconfigure(const char* cdbEntry, const char* chainId);
+ using AliHLTProcessor::DoEvent;
+
private:
+ /** standard constructor prohibited */
+ AliHLTTPCClusterFinderComponent();
/** copy constructor prohibited */
AliHLTTPCClusterFinderComponent(const AliHLTTPCClusterFinderComponent&);
/** assignment operator prohibited */
@@ -94,35 +179,58 @@ class AliHLTTPCClusterFinderComponent : public AliHLTProcessor
/** the reader object for data decoding */
AliHLTTPCDigitReader* fReader; //!transient
- 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
+ /** flag to deconvolute in time direction */
+ Bool_t fDeconvTime; //!transient
+
+ /** flag to deconvolute in pad direction */
+ Bool_t fDeconvPad; //!transient
+ /** flag to switch on/off deconvolution in pad and time directions (used by sorted clusterfinding method) */
+ bool fClusterDeconv; //!transient
+ /** Error in xy of cluster */
+ float fXYClusterError; //!transient
+ /** Error in Z direction of cluster */
+ float fZClusterError; //!transient
+ /**
+ * switch to indicated the reader
+ * use fModeSwitch = 0 for packed inputtype "gkDDLPackedRawDataType"
+ * use fModeSwitch = 1 for unpacked inputtype "gkUnpackedRawDataType"
+ * use fModeSwitch = 2 for packed inputtype "gkDDLPackedRawDataType" with new digit reader
+ * use fModeSwitch = 3 for packed inputtype "gkDDLPackedRawDataType" with 32bit digit reader
+ */
+ Int_t fModeSwitch; // see above
- /*
- * Reads the data the new unsorted way if true
- *
- */
- Int_t fUnsorted; //!transient
-
- /*
- * 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)
-
- };
+ /*
+ * Reads the data the new unsorted way if true
+ *
+ */
+ Int_t fUnsorted; //!transient
+
+ /*
+ * Patch number to be read, currently given as component argument,
+ * will be changed later.
+ */
+ Int_t fPatch; //!transient
+
+ /*
+ * Switch to specify if one ship out a list of active pads (pads conected to a cluster).
+ */
+ Int_t fGetActivePads; //!transient
+
+ /** First timebin taken into account when reading the data */
+ Int_t fFirstTimeBin; //!transient
+
+ /** Last timebin taken in to account when reading the data */
+ Int_t fLastTimeBin; //!transient
+
+ Bool_t fDoMC; // flag to provide MC labels
+ Bool_t fReleaseMemory; // flag to release the memory after each event
+ /// the default configuration entry for this component
+ static const char* fgkOCDBEntryPacked; //!transient
+ static const char* fgkOCDBEntryUnpacked; //!transient
+ static const char* fgkOCDBEntryDecoder; //!transient
+ static const char* fgkOCDBEntry32Bit; //!transient
+
+ ClassDef(AliHLTTPCClusterFinderComponent, 8)
+
+};
#endif