]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HLT/TPCLib/AliHLTTPCClusterFinder.h
minor update of documentation
[u/mrichter/AliRoot.git] / HLT / TPCLib / AliHLTTPCClusterFinder.h
index d95eeab48f86524b8e1cca64bf5b28317f630d7f..06457851223283f16e5c710c2c19ea20729372ac 100644 (file)
@@ -1,26 +1,30 @@
 // @(#) $Id$
 // Original: AliHLTClustFinderNew.h,v 1.13 2004/06/18 10:55:26 loizides 
 
-#ifndef AliHLTTPC_CLUSTERFINDER
-#define AliHLTTPC_CLUSTERFINDER
+#ifndef ALIHLTTPCCLUSTERFINDER_H
+#define ALIHLTTPCCLUSTERFINDER_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                               *
 
-/** @file   AliHLTTPCClusterFinder.h
-    @author Anders Vestbo, Constantin Loizides
-           Kenneth Aamodt kenneth.aamodt@student.uib.no
-    @brief  Cluster Finder for the TPC
-*/
+/ @file   AliHLTTPCClusterFinder.h
+//  @author Anders Vestbo, Constantin Loizides
+//         Kenneth Aamodt kenneth.aamodt@student.uib.no
+//  @brief  HLT Cluster Finder for the TPC
+//  @note
 
 #include "AliHLTLogging.h"
 #include <vector>
 #include "AliHLTTPCTransform.h"
+#include "AliHLTTPCDigitData.h"
+#include "AliHLTTPCDigitReader.h"
+#include "AliTPCRecoParam.h"
 
 class AliHLTTPCPad;
 class AliHLTTPCSpacePointData;
-class AliHLTTPCDigitReader;
 class AliHLTTPCClusters;
+class AliTPCTransform;
+class AliTPCParam;
 
 /**
  * @class AliHLTTPCClusterFinder
@@ -120,6 +124,19 @@ class AliHLTTPCClusterFinder : public AliHLTLogging {
   };
   typedef struct AliClusterData AliClusterData; //!
 
+  struct MCWeight{
+    Int_t fMCID; //!
+    Float_t fWeight; //!
+    static Bool_t CompareWeights( const MCWeight &mc1,  const MCWeight &mc2 ){ return mc1.fWeight > mc2.fWeight; }
+  };
+  typedef struct MCWeight MCWeight;
+
+  struct ClusterMCInfo{
+    MCWeight fClusterID[3]; //!
+  };
+  typedef struct ClusterMCInfo ClusterMCInfo;
+
+
   /** standard constructor */
   AliHLTTPCClusterFinder();
 
@@ -150,6 +167,9 @@ class AliHLTTPCClusterFinder : public AliHLTLogging {
   /**  Fills the hw address list */
   Int_t FillHWAddressList(AliHLTUInt16_t *hwaddlist, Int_t maxHWAddress);
 
+ /**  Fills the mc info */
+  Int_t FillOutputMCInfo(AliHLTTPCClusterFinder::ClusterMCInfo * outputMCInfo, Int_t maxNumberOfClusterMCInfo);
+
   /** Set the pointer to the outputbuffer */
   void SetOutputArray(AliHLTTPCSpacePointData *pt);
 
@@ -157,7 +177,7 @@ class AliHLTTPCClusterFinder : public AliHLTLogging {
   Int_t GetNumberOfClusters() const {return fNClusters;}
 
   /** Returns the Ocuppancy limit */
-  Float_t GetOccupancyLimit() {return fOccupancyLimit;}
+  Float_t GetOccupancyLimit() const {return fOccupancyLimit;}
   
   // setters
   void SetDeconv(Bool_t f) {fDeconvPad=f; fDeconvTime=f;}
@@ -168,6 +188,7 @@ class AliHLTTPCClusterFinder : public AliHLTLogging {
   void SetDoPadSelection(Bool_t input){fDoPadSelection=input;}
   void SetLastTimeBin(Int_t ltb){fLastTimeBin=ltb;}
   void SetFirstTimeBin(Int_t ftb){fFirstTimeBin=ftb;}
+  void SetReleaseMemory( Bool_t v ){ fReleaseMemory = v;}
   void UpdateLastTimeBin(){fLastTimeBin=AliHLTTPCTransform::GetNTimeBins();}
 
 //---------------------------------- Under this line the old sorted clusterfinder functions can be found --------------------------------
@@ -185,13 +206,23 @@ class AliHLTTPCClusterFinder : public AliHLTLogging {
   void SetCalcErr(Bool_t f=kTRUE) {fCalcerr=f;}
   void SetRawSP(Bool_t f=kFALSE) {fRawSP=f;}
   void SetReader(AliHLTTPCDigitReader* f){fDigitReader = f;}
+
+  void Set32BitFormat(Bool_t flag){f32BitFormat = flag;}
+
+  void SetDoMC(Bool_t flag){fDoMC = flag;}
   
   vector<AliHLTUInt16_t> fClustersHWAddressVector;  //! transient
   
   typedef vector<AliHLTTPCPad*> AliHLTTPCPadVector;
   
   vector<AliHLTTPCPadVector> fRowPadVector;     //! transient
+  
+  void FillMCClusterVector(vector<AliHLTTPCDigitData> *digitData);
+
+  vector<AliHLTTPCClusterFinder::MCWeight> GetClusterMCInfo() const {return fClusterMCVector;}
+
+  Bool_t UpdateCalibDB();
+
  protected: 
   /** copy constructor prohibited */
   AliHLTTPCClusterFinder(const AliHLTTPCClusterFinder&);
@@ -228,6 +259,10 @@ class AliHLTTPCClusterFinder : public AliHLTLogging {
   Bool_t fVectorInitialized;  //! flag to check if pad vector is initialized
  
   vector<AliHLTTPCClusters> fClusters;                             //! transient
+
+  vector<ClusterMCInfo> fClustersMCInfo;                           //! transient
+
+  vector<AliHLTTPCDigitData> fMCDigits;                            //! transient
   
   UInt_t* fNumberOfPadsInRow;                                      //! transient
   
@@ -245,11 +280,26 @@ class AliHLTTPCClusterFinder : public AliHLTLogging {
 
   Bool_t fChargeOfCandidatesFalling;                               //! transient
 
+  Bool_t f32BitFormat;                                             //! transient
+
+  Bool_t fDoMC;                                                    //! transient
+
+  vector<MCWeight> fClusterMCVector;                               //! transient
+
+  AliTPCTransform * fOfflineTransform;                             //! transient
+
+  AliTPCParam   *fOfflineTPCParam;                                 //! transient
+
+  AliTPCRecoParam fOfflineTPCRecoParam;                            //! transient
+
+  Float_t fTimeMeanDiff;                                           //! transient
+
+  Bool_t fReleaseMemory; //! flag to release the memory after each event
 
 #ifdef do_mc
-  void GetTrackID(Int_t pad,Int_t time,Int_t *trackID);
+  void GetTrackID(Int_t pad,Int_t time,Int_t *trackID) const;
 #endif
   
-  ClassDef(AliHLTTPCClusterFinder,6) //Fast cluster finder
+  ClassDef(AliHLTTPCClusterFinder, 0) //Fast cluster finder
 };
 #endif