3 #ifndef ALIHLTSPACEPOINTCONTAINER_H
4 #define ALIHLTSPACEPOINTCONTAINER_H
5 //* This file is property of and copyright by the ALICE HLT Project *
6 //* ALICE Experiment at CERN, All rights reserved. *
7 //* See cxx source for full Copyright notice *
9 /// @file AliHLTSpacePointContainer.h
10 /// @author Matthias Richter
12 /// @brief Base helper class for handling of HLT space point data blocks
17 #include "AliHLTLogging.h"
18 #include "AliHLTDataTypes.h"
19 #include "AliHLTStdIncludes.h"
25 * @class AliHLTSpacePointContainer
26 * Base class of helper classes for space point data blocks.
27 * The class implements a couple of interface methods to be commonly used
28 * for space point data blocks.
30 * @ingroup alihlt_base
32 class AliHLTSpacePointContainer : public TObject, public AliHLTLogging
35 /// standard constructor
36 AliHLTSpacePointContainer();
38 AliHLTSpacePointContainer(const AliHLTSpacePointContainer&);
39 /// assignment operator
40 AliHLTSpacePointContainer& operator=(const AliHLTSpacePointContainer&);
43 ~AliHLTSpacePointContainer();
45 /// add input block to the collection
46 virtual int AddInputBlock(const AliHLTComponentBlockData* pDesc)=0;
48 virtual int GetNumberOfSpacePoints() const;
49 virtual bool Check(AliHLTUInt32_t clusterID) const;
50 virtual int GetClusterIDs(vector<AliHLTUInt32_t>& tgt) const = 0;
51 virtual float GetX(AliHLTUInt32_t clusterID) const = 0;
52 virtual float GetXWidth(AliHLTUInt32_t clusterID) const = 0;
53 virtual float GetY(AliHLTUInt32_t clusterID) const = 0;
54 virtual float GetYWidth(AliHLTUInt32_t clusterID) const = 0;
55 virtual float GetZ(AliHLTUInt32_t clusterID) const = 0;
56 virtual float GetZWidth(AliHLTUInt32_t clusterID) const = 0;
57 virtual float GetCharge(AliHLTUInt32_t clusterID) const = 0;
58 virtual float GetPhi(AliHLTUInt32_t /*clusterID*/) const {return 0.0;}
60 /// create a collection of clusters for a specific track
61 virtual AliHLTSpacePointContainer* SelectByTrack(int trackId, bool bAlloc=false) const;
63 /// create a collection of clusters for a specific MC track
64 virtual AliHLTSpacePointContainer* SelectByMC(int mcId, bool bAlloc=false) const;
66 /// create a collection of all used clusters
67 virtual AliHLTSpacePointContainer* UsedClusters(bool bAlloc=false) const;
69 /// create a collection of all unused clusters
70 virtual AliHLTSpacePointContainer* UnusedClusters(bool bAlloc=false) const;
72 int MarkUsed(AliHLTUInt32_t clusterID) {return MarkUsed(&clusterID, sizeof(clusterID));}
73 virtual int MarkUsed(const AliHLTUInt32_t* clusterIDs, int arraySize);
75 int SetTrackID(int trackID, AliHLTUInt32_t clusterID) {
76 return SetTrackID(trackID, &clusterID, sizeof(clusterID));
78 virtual int SetTrackID(int trackID, const AliHLTUInt32_t* clusterIDs, int arraySize);
80 virtual int GetTrackID(AliHLTUInt32_t /*clusterID*/) const {return -1;}
82 int SetMCID(int mcID, AliHLTUInt32_t clusterID) {
83 return SetMCID(mcID, &clusterID, sizeof(clusterID));
85 virtual int SetMCID(int clusterID, const AliHLTUInt32_t* clusterIDs, int arraySize);
87 /// add input block from file to collection
88 int AddInputBlock(const char* filename, AliHLTComponentDataType dt, unsigned specification);
90 /// add input block from list of blank separated files to collection
91 int AddInputBlocks(const char* filenames, AliHLTComponentDataType dt);
93 /// alloc memory for a space point data block
94 AliHLTUInt8_t* Alloc(int size);
96 /// inherited from TObject: clear the object and reset pointer references
97 virtual void Clear(Option_t * /*option*/ ="");
99 /// inherited from TObject
100 virtual void Print(Option_t *option="") const;
102 virtual void Print(ostream& out, Option_t *option="") const;
104 void Draw(Option_t *option);
106 TH1* DrawProjection(const char* plane) const {
107 vector<AliHLTUInt32_t> selection; // empty list -> no selection
108 return DrawProjection(plane, selection);
111 TH1* DrawProjection(const char* plane, AliHLTUInt32_t specification) const {
112 vector<AliHLTUInt32_t> selection; selection.push_back(specification);
113 return DrawProjection(plane, selection);
116 TH1* DrawProjection(const char* plane, const vector<AliHLTUInt32_t>& selection) const;
121 vector<TArrayC*> fBuffers; //! buffers of loaded files
123 ClassDef(AliHLTSpacePointContainer, 0)
126 ostream& operator<<(ostream &out, const AliHLTSpacePointContainer& c);