+//-*- Mode: C++ -*-
+// $Id$
+
/**************************************************************************
* This file is property of and copyright by the ALICE HLT Project *
* All rights reserved. *
// or
// visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
-#include "AliHLTPHOSBase.h"
-#include "AliPHOSLoader.h"
#include "AliHLTPHOSRecPointContainerStruct.h"
#include "AliHLTPHOSRecPointDataStruct.h"
#include "AliHLTPHOSDigitContainerDataStruct.h"
#include "AliHLTPHOSDigitDataStruct.h"
+#include "AliHLTLogging.h"
#include "AliPHOSGeometry.h"
-class TClonesArray;
-class AliPHOSDigit;
-class AliPHOSRecoParam;
+class AliHLTPHOSDigitReader;
/**
* @class AliHLTPHOSClusterizer
*
* @ingroup alihlt_phos
*/
-class AliHLTPHOSClusterizer : public AliHLTPHOSBase
+//class AliHLTPHOSClusterizer : public AliHLTPHOSBase
+class AliHLTPHOSClusterizer : public AliHLTLogging
{
public:
/** Copy constructor */
AliHLTPHOSClusterizer(const AliHLTPHOSClusterizer &) :
- AliHLTPHOSBase(),
+ AliHLTLogging(),
+ fRecPointDataPtr(0),
+ fDigitDataPtr(0),
+ fCurrentDigit(0),
+ fStartDigit(0),
+ fPreviousDigit(0),
fEmcClusteringThreshold(0),
fEmcMinEnergyThreshold(0),
fEmcTimeGate(0),
- fLogWeight(0),
fDigitsInCluster(0),
- fOnlineMode(true),
- fDigitArrayPtr(0),
- fEmcRecPointsPtr(0),
- fDigitPtr(0),
fDigitContainerPtr(0),
- fRecPointContainerPtr(0),
- fPHOSGeometry(0),
- fGetterPtr(0)
+ fMaxDigitIndexDiff(2*56),
+ fAvailableSize(0),
+ fDigitReader(0)
{
//Copy constructor not implemented
}
void SetDigitContainer(AliHLTPHOSDigitContainerDataStruct* digitContainerPtr)
{ fDigitContainerPtr = digitContainerPtr; }
- /** Set rec point container */
- void SetRecPointContainer(AliHLTPHOSRecPointContainerStruct *recPointContainerPtr);
-
-
- /** Set reco parameters */
- void SetRecoParameters(AliPHOSRecoParam* recoPars);
+ /** Set rec point data buffer */
+ void SetRecPointDataPtr(AliHLTPHOSRecPointDataStruct* recPointDataPtr);
/** Set emc clustering threshold */
void SetEmcClusteringThreshold(Float_t threshold) { fEmcClusteringThreshold = threshold; }
/** Set emc time gate */
void SetEmcTimeGate(Float_t gate) { fEmcTimeGate = gate; }
- /** Set log weight */
- void SetLogWeight(Float_t weight) { fLogWeight = weight; }
-
- /**
- * Set offline mode
- * @param getter pointer to an instance of AliPHOSGetter
- */
- void SetOfflineMode(AliPHOSLoader* getter);
-
/** Starts clusterization of the event */
- virtual Int_t ClusterizeEvent();
-
- /**
- * Gets an event, for offline mode
- * @param evtNr event number to get
- */
- virtual Int_t GetEvent(Int_t evtNr);
-
- /** Get number of events */
- Int_t GetNEvents();
+ virtual Int_t ClusterizeEvent(AliHLTPHOSDigitHeaderStruct *digitHeader, UInt_t availableSize, UInt_t& totSize);
/**
* For a given digit this digit scans for neighbouring digits which
* passes the threshold for inclusion in a rec point. If one is found
* it is added to the current rec point
- * @param digIndex index of the digit in the digit container
* @param recPoint pointer to the current rec point
*/
- virtual void ScanForNeighbourDigits(Int_t digIndex, AliHLTPHOSRecPointDataStruct* recPoint);
+ virtual Int_t ScanForNeighbourDigits(AliHLTPHOSRecPointDataStruct* recPoint, AliHLTPHOSDigitDataStruct *digit);
/**
* Checks if two digits are neighbours
*/
virtual Int_t AreNeighbours(AliHLTPHOSDigitDataStruct* d1, AliHLTPHOSDigitDataStruct* d2);
- /** Calculates the center of gravity of a rec point */
- virtual void CalculateCenterOfGravity();
-private:
+protected:
+
+ /** Pointer to the rec point output */
+ AliHLTPHOSRecPointDataStruct* fRecPointDataPtr; //! transient
+
+ /** Pointer to the digit output */
+ AliHLTPHOSDigitDataStruct* fDigitDataPtr; //! transient
+
+ /** Pointer to the digit output */
+ AliHLTPHOSDigitDataStruct* fCurrentDigit; //! transient
+
+ /** Pointer to the digit output */
+ AliHLTPHOSDigitDataStruct* fStartDigit; //! transient
+
+ /** Pointer to the digit output */
+ AliHLTPHOSDigitDataStruct* fPreviousDigit; //! transient
/** Energy threshold for starting a cluster for the calorimeter */
Float_t fEmcClusteringThreshold; //COMMENT
/** Maximum time difference for inclusion in a rec point */
Float_t fEmcTimeGate; //COMMENT
- /** Variable used in calculation of the center of gravity for a rec point */
- Float_t fLogWeight; //COMMENT
-
/** Counts the digits in a rec point */
Int_t fDigitsInCluster; //COMMENT
- /** Online mode flag */
- Bool_t fOnlineMode; //COMMENT
-
- /** Array of digits from one event, used in offline mode */
- TClonesArray *fDigitArrayPtr; //! transient
-
- /** Array of reconstruction points from one event, used in offline mode */
- TObjArray *fEmcRecPointsPtr; //! transient
-
- /** Pointer to digit */
- AliPHOSDigit *fDigitPtr; //! transient
-
/** Contains the digits from one event */
AliHLTPHOSDigitContainerDataStruct *fDigitContainerPtr; //! transient
- /** Contains the reconstruction points from one event */
- AliHLTPHOSRecPointContainerStruct *fRecPointContainerPtr; //! transient
+ /** Maximum difference in index to be a neighbour */
+ Int_t fMaxDigitIndexDiff; //COMMENT
- /** Instance of the PHOS geometry class */
- AliPHOSGeometry *fPHOSGeometry; //! transient
-
- /** Instance of the PHOS getter, used in offline mode */
- AliPHOSLoader *fGetterPtr; //! transient
-
- ClassDef(AliHLTPHOSClusterizer, 1);
+ /** Current available buffer size */
+ UInt_t fAvailableSize; //COMMENT
+
+ /** object reading the digit */
+ AliHLTPHOSDigitReader *fDigitReader; //COMMENT
+
+ ClassDef(AliHLTPHOSClusterizer, 0);
};
#endif