]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HLT/PHOS/AliHLTPHOSClusterizer.h
- fixing bug in cluster analyser
[u/mrichter/AliRoot.git] / HLT / PHOS / AliHLTPHOSClusterizer.h
index 9036c2baa5d6b25b8f6be93145c83f8fbcfa4ff3..59791f5ac3498874dcf4b6ee37b7bbe04f88c33a 100644 (file)
@@ -1,3 +1,6 @@
+//-*- 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
@@ -55,7 +55,8 @@ class AliPHOSRecoParam;
  *
  * @ingroup alihlt_phos
  */
-class AliHLTPHOSClusterizer : public AliHLTPHOSBase
+//class AliHLTPHOSClusterizer : public AliHLTPHOSBase
+class AliHLTPHOSClusterizer : public AliHLTLogging
 {
   
 public:
@@ -68,20 +69,20 @@ 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
   }
@@ -97,12 +98,8 @@ public:
   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; }
@@ -113,35 +110,16 @@ public:
   /** 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
@@ -150,10 +128,23 @@ public:
    */
   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
 
@@ -163,37 +154,22 @@ private:
   /** 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