]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HLT/TPCLib/AliHLTTPCClusterFinder.h
incremented library version
[u/mrichter/AliRoot.git] / HLT / TPCLib / AliHLTTPCClusterFinder.h
index c7494def705b87c85801771eb27030ada3d0b258..c72de532c359591237ec24eb53ed685407d4207d 100644 (file)
@@ -1,11 +1,28 @@
 // @(#) $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;
 
@@ -24,14 +41,56 @@ class AliHLTTPCClusterFinder : public AliHLTLogging {
     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
@@ -48,7 +107,9 @@ class AliHLTTPCClusterFinder : public AliHLTLogging {
   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
@@ -56,43 +117,14 @@ class AliHLTTPCClusterFinder : public AliHLTLogging {
   
   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