#ifndef ALIHLTSPACEPOINTCONTAINER_H
#define ALIHLTSPACEPOINTCONTAINER_H
#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;
class AliHLTSpacePointContainer : public TObject, public AliHLTLogging
{
public:
AliHLTSpacePointContainer();
AliHLTSpacePointContainer(const AliHLTSpacePointContainer&);
AliHLTSpacePointContainer& operator=(const AliHLTSpacePointContainer&);
~AliHLTSpacePointContainer();
struct AliHLTSpacePointProperties {
AliHLTSpacePointProperties(AliHLTUInt32_t id=~(AliHLTUInt32_t)0, int trackid=-1) : fId(id), fTrackId(trackid) {}
AliHLTUInt32_t fId;
int fTrackId;
};
typedef AliHLTIndexGrid<float, AliHLTSpacePointProperties> AliHLTSpacePointPropertyGrid;
typedef AliHLTIndexGrid<float, AliHLTUInt32_t> AliHLTSpacePointGrid;
virtual int AddInputBlock(const AliHLTComponentBlockData* pDesc)=0;
virtual int PopulateAccessGrid(AliHLTSpacePointPropertyGrid* , AliHLTUInt32_t ) const {return -ENOSYS;}
virtual const AliHLTSpacePointPropertyGrid* GetSpacePointPropertyGrid(AliHLTUInt32_t ) const {return NULL;}
virtual int SetSpacePointPropertyGrid(AliHLTUInt32_t , AliHLTSpacePointPropertyGrid* ) {return -ENOSYS;}
virtual int PopulateAccessGrid(AliHLTSpacePointGrid* , AliHLTUInt32_t ) const {return -ENOSYS;}
virtual const AliHLTSpacePointGrid* GetAccessGrid(AliHLTUInt32_t ) const {return NULL;}
virtual int SetAccessGrid(AliHLTUInt32_t , AliHLTSpacePointGrid* ) {return -ENOSYS;}
virtual int GetNumberOfSpacePoints() const;
virtual bool Check(AliHLTUInt32_t clusterID) const;
virtual int GetClusterIDs(vector<AliHLTUInt32_t>& tgt) const = 0;
virtual const vector<AliHLTUInt32_t>* GetClusterIDs(AliHLTUInt32_t ) {return NULL;}
virtual float GetX(AliHLTUInt32_t clusterID) const = 0;
virtual float GetXWidth(AliHLTUInt32_t clusterID) const = 0;
virtual float GetY(AliHLTUInt32_t clusterID) const = 0;
virtual float GetYWidth(AliHLTUInt32_t clusterID) const = 0;
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 ) const {return 0.0;}
virtual float GetPhi(AliHLTUInt32_t ) const {return 0.0;}
virtual AliHLTSpacePointContainer* SelectByMask(AliHLTUInt32_t mask, bool bAlloc=false) const;
virtual AliHLTSpacePointContainer* SelectByTrack(int trackId, bool bAlloc=false) const;
virtual AliHLTSpacePointContainer* SelectByMC(int mcId, bool bAlloc=false) const;
virtual AliHLTSpacePointContainer* UsedClusters(bool bAlloc=false) const;
virtual AliHLTSpacePointContainer* UnusedClusters(bool bAlloc=false) const;
int MarkUsed(AliHLTUInt32_t clusterID) {return MarkUsed(&clusterID, sizeof(clusterID));}
virtual int MarkUsed(const AliHLTUInt32_t* clusterIDs, int arraySize);
int SetTrackID(int trackID, AliHLTUInt32_t clusterID) {
return SetTrackID(trackID, &clusterID, sizeof(clusterID));
}
virtual int SetTrackID(int trackID, const AliHLTUInt32_t* clusterIDs, int arraySize);
virtual int GetTrackID(AliHLTUInt32_t ) const {return -1;}
int SetMCID(int mcID, AliHLTUInt32_t clusterID) {
return SetMCID(mcID, &clusterID, sizeof(clusterID));
}
virtual int SetMCID(int clusterID, const AliHLTUInt32_t* clusterIDs, int arraySize);
virtual int Write(AliHLTUInt8_t* outputPtr, AliHLTUInt32_t size,
vector<AliHLTComponentBlockData>& outputBlocks,
AliHLTDataDeflater* ,
const char* option="") const {
return Write(outputPtr, size, outputBlocks, option);
}
virtual int Write(AliHLTUInt8_t* , AliHLTUInt32_t ,
vector<AliHLTComponentBlockData>& ,
const char* ="") const {return 0;}
int AddInputBlock(const char* filename, AliHLTComponentDataType dt, unsigned specification);
int AddInputBlocks(const char* filenames, AliHLTComponentDataType dt);
AliHLTUInt8_t* Alloc(int size);
virtual void Clear(Option_t * ="");
virtual void Print(Option_t *option="") const;
virtual void Print(ostream& out, Option_t *option="") const;
void Draw(Option_t *option);
TH1* DrawProjection(const char* plane) const {
vector<AliHLTUInt32_t> selection;
return DrawProjection(plane, selection);
}
TH1* DrawProjection(const char* plane, AliHLTUInt32_t specification) const {
vector<AliHLTUInt32_t> selection; selection.push_back(specification);
return DrawProjection(plane, selection);
}
TH1* DrawProjection(const char* plane, const vector<AliHLTUInt32_t>& selection) const;
TTree* FillTree(const char* name, const char* title="");
protected:
private:
vector<TArrayC*> fBuffers;
ClassDef(AliHLTSpacePointContainer, 0)
};
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
AliHLTSpacePointContainer.h:1 AliHLTSpacePointContainer.h:2 AliHLTSpacePointContainer.h:3 AliHLTSpacePointContainer.h:4 AliHLTSpacePointContainer.h:5 AliHLTSpacePointContainer.h:6 AliHLTSpacePointContainer.h:7 AliHLTSpacePointContainer.h:8 AliHLTSpacePointContainer.h:9 AliHLTSpacePointContainer.h:10 AliHLTSpacePointContainer.h:11 AliHLTSpacePointContainer.h:12 AliHLTSpacePointContainer.h:13 AliHLTSpacePointContainer.h:14 AliHLTSpacePointContainer.h:15 AliHLTSpacePointContainer.h:16 AliHLTSpacePointContainer.h:17 AliHLTSpacePointContainer.h:18 AliHLTSpacePointContainer.h:19 AliHLTSpacePointContainer.h:20 AliHLTSpacePointContainer.h:21 AliHLTSpacePointContainer.h:22 AliHLTSpacePointContainer.h:23 AliHLTSpacePointContainer.h:24 AliHLTSpacePointContainer.h:25 AliHLTSpacePointContainer.h:26 AliHLTSpacePointContainer.h:27 AliHLTSpacePointContainer.h:28 AliHLTSpacePointContainer.h:29 AliHLTSpacePointContainer.h:30 AliHLTSpacePointContainer.h:31 AliHLTSpacePointContainer.h:32 AliHLTSpacePointContainer.h:33 AliHLTSpacePointContainer.h:34 AliHLTSpacePointContainer.h:35 AliHLTSpacePointContainer.h:36 AliHLTSpacePointContainer.h:37 AliHLTSpacePointContainer.h:38 AliHLTSpacePointContainer.h:39 AliHLTSpacePointContainer.h:40 AliHLTSpacePointContainer.h:41 AliHLTSpacePointContainer.h:42 AliHLTSpacePointContainer.h:43 AliHLTSpacePointContainer.h:44 AliHLTSpacePointContainer.h:45 AliHLTSpacePointContainer.h:46 AliHLTSpacePointContainer.h:47 AliHLTSpacePointContainer.h:48 AliHLTSpacePointContainer.h:49 AliHLTSpacePointContainer.h:50 AliHLTSpacePointContainer.h:51 AliHLTSpacePointContainer.h:52 AliHLTSpacePointContainer.h:53 AliHLTSpacePointContainer.h:54 AliHLTSpacePointContainer.h:55 AliHLTSpacePointContainer.h:56 AliHLTSpacePointContainer.h:57 AliHLTSpacePointContainer.h:58 AliHLTSpacePointContainer.h:59 AliHLTSpacePointContainer.h:60 AliHLTSpacePointContainer.h:61 AliHLTSpacePointContainer.h:62 AliHLTSpacePointContainer.h:63 AliHLTSpacePointContainer.h:64 AliHLTSpacePointContainer.h:65 AliHLTSpacePointContainer.h:66 AliHLTSpacePointContainer.h:67 AliHLTSpacePointContainer.h:68 AliHLTSpacePointContainer.h:69 AliHLTSpacePointContainer.h:70 AliHLTSpacePointContainer.h:71 AliHLTSpacePointContainer.h:72 AliHLTSpacePointContainer.h:73 AliHLTSpacePointContainer.h:74 AliHLTSpacePointContainer.h:75 AliHLTSpacePointContainer.h:76 AliHLTSpacePointContainer.h:77 AliHLTSpacePointContainer.h:78 AliHLTSpacePointContainer.h:79 AliHLTSpacePointContainer.h:80 AliHLTSpacePointContainer.h:81 AliHLTSpacePointContainer.h:82 AliHLTSpacePointContainer.h:83 AliHLTSpacePointContainer.h:84 AliHLTSpacePointContainer.h:85 AliHLTSpacePointContainer.h:86 AliHLTSpacePointContainer.h:87 AliHLTSpacePointContainer.h:88 AliHLTSpacePointContainer.h:89 AliHLTSpacePointContainer.h:90 AliHLTSpacePointContainer.h:91 AliHLTSpacePointContainer.h:92 AliHLTSpacePointContainer.h:93 AliHLTSpacePointContainer.h:94 AliHLTSpacePointContainer.h:95 AliHLTSpacePointContainer.h:96 AliHLTSpacePointContainer.h:97 AliHLTSpacePointContainer.h:98 AliHLTSpacePointContainer.h:99 AliHLTSpacePointContainer.h:100 AliHLTSpacePointContainer.h:101 AliHLTSpacePointContainer.h:102 AliHLTSpacePointContainer.h:103 AliHLTSpacePointContainer.h:104 AliHLTSpacePointContainer.h:105 AliHLTSpacePointContainer.h:106 AliHLTSpacePointContainer.h:107 AliHLTSpacePointContainer.h:108 AliHLTSpacePointContainer.h:109 AliHLTSpacePointContainer.h:110 AliHLTSpacePointContainer.h:111 AliHLTSpacePointContainer.h:112 AliHLTSpacePointContainer.h:113 AliHLTSpacePointContainer.h:114 AliHLTSpacePointContainer.h:115 AliHLTSpacePointContainer.h:116 AliHLTSpacePointContainer.h:117 AliHLTSpacePointContainer.h:118 AliHLTSpacePointContainer.h:119 AliHLTSpacePointContainer.h:120 AliHLTSpacePointContainer.h:121 AliHLTSpacePointContainer.h:122 AliHLTSpacePointContainer.h:123 AliHLTSpacePointContainer.h:124 AliHLTSpacePointContainer.h:125 AliHLTSpacePointContainer.h:126 AliHLTSpacePointContainer.h:127 AliHLTSpacePointContainer.h:128 AliHLTSpacePointContainer.h:129 AliHLTSpacePointContainer.h:130 AliHLTSpacePointContainer.h:131 AliHLTSpacePointContainer.h:132 AliHLTSpacePointContainer.h:133 AliHLTSpacePointContainer.h:134 AliHLTSpacePointContainer.h:135 AliHLTSpacePointContainer.h:136 AliHLTSpacePointContainer.h:137 AliHLTSpacePointContainer.h:138 AliHLTSpacePointContainer.h:139 AliHLTSpacePointContainer.h:140 AliHLTSpacePointContainer.h:141 AliHLTSpacePointContainer.h:142 AliHLTSpacePointContainer.h:143 AliHLTSpacePointContainer.h:144 AliHLTSpacePointContainer.h:145 AliHLTSpacePointContainer.h:146 AliHLTSpacePointContainer.h:147 AliHLTSpacePointContainer.h:148 AliHLTSpacePointContainer.h:149 AliHLTSpacePointContainer.h:150 AliHLTSpacePointContainer.h:151 AliHLTSpacePointContainer.h:152 AliHLTSpacePointContainer.h:153 AliHLTSpacePointContainer.h:154 AliHLTSpacePointContainer.h:155 AliHLTSpacePointContainer.h:156 AliHLTSpacePointContainer.h:157 AliHLTSpacePointContainer.h:158 AliHLTSpacePointContainer.h:159 AliHLTSpacePointContainer.h:160 AliHLTSpacePointContainer.h:161 AliHLTSpacePointContainer.h:162 AliHLTSpacePointContainer.h:163 AliHLTSpacePointContainer.h:164 AliHLTSpacePointContainer.h:165 AliHLTSpacePointContainer.h:166 AliHLTSpacePointContainer.h:167 AliHLTSpacePointContainer.h:168 AliHLTSpacePointContainer.h:169 AliHLTSpacePointContainer.h:170 AliHLTSpacePointContainer.h:171 AliHLTSpacePointContainer.h:172 AliHLTSpacePointContainer.h:173 AliHLTSpacePointContainer.h:174 AliHLTSpacePointContainer.h:175 AliHLTSpacePointContainer.h:176 AliHLTSpacePointContainer.h:177