// @(#) $Id$
-// Original: AliL3ClustFinderNew.h,v 1.13 2004/06/18 10:55:26 loizides
+// Original: AliHLTClustFinderNew.h,v 1.13 2004/06/18 10:55:26 loizides
-#ifndef AliHLTTPC_ClusterFinder
-#define AliHLTTPC_ClusterFinder
+#ifndef AliHLTTPC_CLUSTERFINDER
+#define AliHLTTPC_CLUSTERFINDER
+/* 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 AliHLTTPCClusterFinder.h
+ @author Anders Vestbo, Constantin Loizides, Jochen Thaeder
+ Kenneth Aamodt kenneth.aamodt@student.uib.no
+ @date
+ @brief Cluster Finder for the TPC
+*/
+
+// see below for class documentation
+// or
+// refer to README to build package
+// or
+// visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
-#include "AliHLTLogging.h"
+#include "AliHLTLogging.h"
+#include "AliHLTTPCPadArray.h"
class AliHLTTPCSpacePointData;
class AliHLTTPCDigitReader;
UInt_t fChargeFalling; //for deconvolution
UInt_t fLastCharge; //for deconvolution
UInt_t fLastMergedPad; //dont merge twice per pad
+ Int_t fRow; //row value
};
typedef struct AliClusterData AliClusterData; //!
+ /** standard constructor */
+ AliHLTTPCClusterFinder();
+ /** destructor */
+ virtual ~AliHLTTPCClusterFinder();
+
+ void Read(void* ptr,unsigned long size);
+
+ void InitSlice(Int_t slice,Int_t patch,Int_t firstrow, Int_t lastrow,Int_t maxpoints);
+ void InitSlice(Int_t slice,Int_t patch,Int_t maxpoints);
+ void ProcessDigits();
+
+ void SetOutputArray(AliHLTTPCSpacePointData *pt);
+ void WriteClusters(Int_t n_clusters,AliClusterData *list);
+
+ void SetXYError(Float_t f) {fXYErr=f;}
+ void SetZError(Float_t f) {fZErr=f;}
+ void SetDeconv(Bool_t f) {fDeconvPad=f; fDeconvTime=f;}
+ void SetThreshold(UInt_t i) {fThreshold=i;}
+ void SetOccupancyLimit(Float_t f) {fOccupancyLimit=f;}
+ void SetSignalThreshold(Int_t i) {fSignalThreshold=i;}
+ void SetNSigmaThreshold(Double_t d) {fNSigmaThreshold=d;}
+ void SetMatchWidth(UInt_t i) {fMatch=i;}
+ void SetSTDOutput(Bool_t f=kFALSE) {fStdout=f;}
+ void SetCalcErr(Bool_t f=kTRUE) {fCalcerr=f;}
+ void SetRawSP(Bool_t f=kFALSE) {fRawSP=f;}
+ void SetReader(AliHLTTPCDigitReader* f){fDigitReader = f;}
+ Int_t GetNumberOfClusters() const {return fNClusters;}
+
+ //----------------------------------Methods for the new unsorted way of reading data ----------
+ void SetPadArray(AliHLTTPCPadArray *padArray);
+ void ReadDataUnsorted(void* ptr,unsigned long size);
+ void FindClusters();
+ Int_t GetActivePads(AliHLTTPCPadArray::AliHLTTPCActivePads* activePads,Int_t maxActivePads);
+ void WriteClusters(Int_t nclusters,AliHLTTPCClusters *list);
+ void SetUnsorted(Int_t unsorted){fUnsorted=unsorted;}
+
private:
- AliHLTTPCSpacePointData *fSpacePointData; //!
- AliHLTTPCDigitReader *fDigitReader;
+ /** copy constructor prohibited */
+ AliHLTTPCClusterFinder(const AliHLTTPCClusterFinder&);
+ /** assignment operator prohibited */
+ AliHLTTPCClusterFinder& operator=(const AliHLTTPCClusterFinder&);
+
+ AliHLTTPCSpacePointData *fSpacePointData; //! array of space points
+ AliHLTTPCDigitReader *fDigitReader; //! reader instance
- UChar_t* fPtr; //pointer to packed block
+ UChar_t* fPtr; //! pointer to packed block
unsigned long fSize; //packed block size
Bool_t fDeconvTime; //deconv in time direction
Bool_t fDeconvPad; //deconv in pad direction
Int_t fMatch; //size of match
UInt_t fThreshold; //threshold for clusters
/** threshold for zero suppression (applied per bin) */
- Int_t fSignalThreshold;
+ Int_t fSignalThreshold;// see above
+ /** threshold for zero suppression 2007 December run */
+ Double_t fNSigmaThreshold; // see above
Int_t fNClusters; //number of found clusters
Int_t fMaxNClusters; //max. number of clusters
Float_t fXYErr; //fixed error in XY
Float_t fOccupancyLimit; // Occupancy Limit
+ AliHLTTPCPadArray * fPadArray; //! transient
+
+ Int_t fUnsorted; // enable for processing of unsorted digit data
#ifdef do_mc
void GetTrackID(Int_t pad,Int_t time,Int_t *trackID);
#endif
- public:
- /** standard constructor */
- AliHLTTPCClusterFinder();
- /** not a valid copy constructor, defined according to effective C++ style */
- AliHLTTPCClusterFinder(const AliHLTTPCClusterFinder&);
- /** not a valid assignment op, but defined according to effective C++ style */
- AliHLTTPCClusterFinder& operator=(const AliHLTTPCClusterFinder&);
- /** destructor */
- virtual ~AliHLTTPCClusterFinder();
-
- void Read(void* ptr,unsigned long size);
-
- void InitSlice(Int_t slice,Int_t patch,Int_t firstrow, Int_t lastrow,Int_t maxpoints);
- void InitSlice(Int_t slice,Int_t patch,Int_t maxpoints);
- void ProcessDigits();
-
- void SetOutputArray(AliHLTTPCSpacePointData *pt);
- void WriteClusters(Int_t n_clusters,AliClusterData *list);
-
- void SetXYError(Float_t f) {fXYErr=f;}
- void SetZError(Float_t f) {fZErr=f;}
- void SetDeconv(Bool_t f) {fDeconvPad=f; fDeconvTime=f;}
- void SetThreshold(UInt_t i) {fThreshold=i;}
- void SetOccupancyLimit(Float_t f) {fOccupancyLimit=f;}
- void SetSignalThreshold(Int_t i) {fSignalThreshold=i;}
- void SetMatchWidth(UInt_t i) {fMatch=i;}
- void SetSTDOutput(Bool_t f=kFALSE) {fStdout=f;}
- void SetCalcErr(Bool_t f=kTRUE) {fCalcerr=f;}
- void SetRawSP(Bool_t f=kFALSE) {fRawSP=f;}
- void SetReader(AliHLTTPCDigitReader* f){fDigitReader = f;}
- Int_t GetNumberOfClusters() const {return fNClusters;}
-
- ClassDef(AliHLTTPCClusterFinder,0) //Fast cluster finder
+ ClassDef(AliHLTTPCClusterFinder,2) //Fast cluster finder
};
#endif