///
#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;
/// 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;
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
}
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);
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