// @(#) $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
};
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();
/** 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);
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;}
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 --------------------------------
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&);
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
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