]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - HLT/BASE/AliHLTSpacePointContainer.h
HLTcalo module
[u/mrichter/AliRoot.git] / HLT / BASE / AliHLTSpacePointContainer.h
index 6376fd44746a308f9e033eee3b30bb0b052d3172..4de288e4662393bae1c3bc646adfa12b40353789 100644 (file)
 ///
 
 #include <vector>
+#include <cmath>
 #include <TObject.h>
 #include "AliHLTLogging.h"
 #include "AliHLTDataTypes.h"
 #include "AliHLTStdIncludes.h"
+#include "AliHLTIndexGrid.h"
 
+class AliHLTDataDeflater;
 class TArrayC;
 class TH1;
 class TTree;
@@ -43,8 +46,29 @@ class AliHLTSpacePointContainer : public TObject, public AliHLTLogging
   /// destructor
   ~AliHLTSpacePointContainer();
 
+  struct AliHLTSpacePointProperties {
+    AliHLTSpacePointProperties(AliHLTUInt32_t id=~(AliHLTUInt32_t)0, int trackid=-1) : fId(id), fTrackId(trackid) {}
+    AliHLTUInt32_t fId;      //! the id of the spacepoint
+    int            fTrackId; //! track the spacepoint is assigned to
+  };
+  typedef AliHLTIndexGrid<float, AliHLTSpacePointProperties> AliHLTSpacePointPropertyGrid;
+  typedef AliHLTIndexGrid<float, AliHLTUInt32_t> AliHLTSpacePointGrid;
+
+  //////////////////////////////////////////////////////////////////////////
+  //
+  // interface functions
+  //
+
   /// add input block to the collection
   virtual int AddInputBlock(const AliHLTComponentBlockData* pDesc)=0;
+  virtual int PopulateAccessGrid(AliHLTSpacePointPropertyGrid* /*pGrid*/, AliHLTUInt32_t /*mask*/) const {return -ENOSYS;}
+  virtual const AliHLTSpacePointPropertyGrid* GetSpacePointPropertyGrid(AliHLTUInt32_t /*mask*/) const {return NULL;}
+  virtual int SetSpacePointPropertyGrid(AliHLTUInt32_t /*mask*/, AliHLTSpacePointPropertyGrid* /*pGrid*/) {return -ENOSYS;}
+
+  // for backward compatibility
+  virtual int PopulateAccessGrid(AliHLTSpacePointGrid* /*pGrid*/, AliHLTUInt32_t /*mask*/) const {return -ENOSYS;}
+  virtual const AliHLTSpacePointGrid* GetAccessGrid(AliHLTUInt32_t /*mask*/) const {return NULL;}
+  virtual int SetAccessGrid(AliHLTUInt32_t /*mask*/, AliHLTSpacePointGrid* /*pGrid*/) {return -ENOSYS;}
 
   virtual int GetNumberOfSpacePoints() const;
   virtual bool Check(AliHLTUInt32_t clusterID) const;
@@ -57,6 +81,7 @@ class AliHLTSpacePointContainer : public TObject, public AliHLTLogging
   virtual float GetZ(AliHLTUInt32_t clusterID) const = 0;
   virtual float GetZWidth(AliHLTUInt32_t clusterID) const = 0;
   virtual float GetCharge(AliHLTUInt32_t clusterID) const = 0;
+  virtual float GetMaxSignal(AliHLTUInt32_t /*clusterID*/) const {return 0.0;}
   virtual float GetPhi(AliHLTUInt32_t /*clusterID*/) const {return 0.0;}
 
   /// create a collection of clusters for a space point mask
@@ -89,6 +114,19 @@ class AliHLTSpacePointContainer : public TObject, public AliHLTLogging
   }
   virtual int SetMCID(int clusterID, const AliHLTUInt32_t* clusterIDs, int arraySize);
 
+  /// write blocks to HLT component output
+  virtual int Write(AliHLTUInt8_t* outputPtr, AliHLTUInt32_t size,
+                   vector<AliHLTComponentBlockData>& outputBlocks,
+                   AliHLTDataDeflater* /*pDeflater*/,
+                   const char* option="") const {
+    return Write(outputPtr, size, outputBlocks, option);
+  }
+
+  /// write blocks to HLT component output: old function definition for backward compatibility
+  virtual int Write(AliHLTUInt8_t* /*outputPtr*/, AliHLTUInt32_t /*size*/,
+                   vector<AliHLTComponentBlockData>& /*outputBlocks*/,
+                   const char* /*option*/="") const {return 0;}
+
   /// add input block from file to collection
   int AddInputBlock(const char* filename, AliHLTComponentDataType dt, unsigned specification);
 
@@ -132,4 +170,8 @@ class AliHLTSpacePointContainer : public TObject, public AliHLTLogging
 
 ostream& operator<<(ostream &out, const AliHLTSpacePointContainer& c);
 
+ostream& operator<<(ostream &out, const AliHLTSpacePointContainer::AliHLTSpacePointProperties& p);
+
+bool operator==(const AliHLTSpacePointContainer::AliHLTSpacePointProperties& a,
+               const AliHLTSpacePointContainer::AliHLTSpacePointProperties& b);
 #endif