]>
Commit | Line | Data |
---|---|---|
488caaa0 | 1 | //-*- Mode: C++ -*- |
2 | // $Id$ | |
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 * | |
8 | ||
9 | /// @file AliHLTSpacePointContainer.h | |
10 | /// @author Matthias Richter | |
11 | /// @date 2011-04-29 | |
12 | /// @brief Base helper class for handling of HLT space point data blocks | |
13 | /// | |
14 | ||
15 | #include <vector> | |
16 | #include <TObject.h> | |
17 | #include "AliHLTLogging.h" | |
18 | #include "AliHLTDataTypes.h" | |
19 | #include "AliHLTStdIncludes.h" | |
20 | ||
21 | class TArrayC; | |
27d45f0c | 22 | class TH1; |
488caaa0 | 23 | |
24 | /** | |
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. | |
29 | * | |
30 | * @ingroup alihlt_base | |
31 | */ | |
32 | class AliHLTSpacePointContainer : public TObject, public AliHLTLogging | |
33 | { | |
34 | public: | |
35 | /// standard constructor | |
36 | AliHLTSpacePointContainer(); | |
37 | /// copy constructor | |
38 | AliHLTSpacePointContainer(const AliHLTSpacePointContainer&); | |
39 | /// assignment operator | |
40 | AliHLTSpacePointContainer& operator=(const AliHLTSpacePointContainer&); | |
41 | ||
42 | /// destructor | |
43 | ~AliHLTSpacePointContainer(); | |
44 | ||
45 | /// add input block to the collection | |
46 | virtual int AddInputBlock(const AliHLTComponentBlockData* pDesc)=0; | |
47 | ||
e1e03704 | 48 | virtual int GetNumberOfSpacePoints() const; |
49 | virtual bool Check(AliHLTUInt32_t clusterID) const; | |
488caaa0 | 50 | virtual int GetClusterIDs(vector<AliHLTUInt32_t>& tgt) const = 0; |
54ff4c01 | 51 | virtual const vector<AliHLTUInt32_t>* GetClusterIDs(AliHLTUInt32_t /*mask*/) {return NULL;} |
488caaa0 | 52 | virtual float GetX(AliHLTUInt32_t clusterID) const = 0; |
53 | virtual float GetXWidth(AliHLTUInt32_t clusterID) const = 0; | |
54 | virtual float GetY(AliHLTUInt32_t clusterID) const = 0; | |
55 | virtual float GetYWidth(AliHLTUInt32_t clusterID) const = 0; | |
56 | virtual float GetZ(AliHLTUInt32_t clusterID) const = 0; | |
57 | virtual float GetZWidth(AliHLTUInt32_t clusterID) const = 0; | |
58 | virtual float GetCharge(AliHLTUInt32_t clusterID) const = 0; | |
27d45f0c | 59 | virtual float GetPhi(AliHLTUInt32_t /*clusterID*/) const {return 0.0;} |
488caaa0 | 60 | |
54ff4c01 | 61 | /// create a collection of clusters for a space point mask |
62 | virtual AliHLTSpacePointContainer* SelectByMask(AliHLTUInt32_t mask, bool bAlloc=false) const; | |
63 | ||
488caaa0 | 64 | /// create a collection of clusters for a specific track |
65 | virtual AliHLTSpacePointContainer* SelectByTrack(int trackId, bool bAlloc=false) const; | |
66 | ||
67 | /// create a collection of clusters for a specific MC track | |
68 | virtual AliHLTSpacePointContainer* SelectByMC(int mcId, bool bAlloc=false) const; | |
69 | ||
70 | /// create a collection of all used clusters | |
71 | virtual AliHLTSpacePointContainer* UsedClusters(bool bAlloc=false) const; | |
72 | ||
73 | /// create a collection of all unused clusters | |
74 | virtual AliHLTSpacePointContainer* UnusedClusters(bool bAlloc=false) const; | |
75 | ||
76 | int MarkUsed(AliHLTUInt32_t clusterID) {return MarkUsed(&clusterID, sizeof(clusterID));} | |
77 | virtual int MarkUsed(const AliHLTUInt32_t* clusterIDs, int arraySize); | |
78 | ||
79 | int SetTrackID(int trackID, AliHLTUInt32_t clusterID) { | |
80 | return SetTrackID(trackID, &clusterID, sizeof(clusterID)); | |
81 | } | |
82 | virtual int SetTrackID(int trackID, const AliHLTUInt32_t* clusterIDs, int arraySize); | |
83 | ||
e1e03704 | 84 | virtual int GetTrackID(AliHLTUInt32_t /*clusterID*/) const {return -1;} |
85 | ||
488caaa0 | 86 | int SetMCID(int mcID, AliHLTUInt32_t clusterID) { |
87 | return SetMCID(mcID, &clusterID, sizeof(clusterID)); | |
88 | } | |
89 | virtual int SetMCID(int clusterID, const AliHLTUInt32_t* clusterIDs, int arraySize); | |
90 | ||
91 | /// add input block from file to collection | |
92 | int AddInputBlock(const char* filename, AliHLTComponentDataType dt, unsigned specification); | |
93 | ||
94 | /// add input block from list of blank separated files to collection | |
95 | int AddInputBlocks(const char* filenames, AliHLTComponentDataType dt); | |
96 | ||
3488f70b | 97 | /// alloc memory for a space point data block |
98 | AliHLTUInt8_t* Alloc(int size); | |
99 | ||
488caaa0 | 100 | /// inherited from TObject: clear the object and reset pointer references |
101 | virtual void Clear(Option_t * /*option*/ =""); | |
102 | ||
103 | /// inherited from TObject | |
104 | virtual void Print(Option_t *option="") const; | |
105 | ||
106 | virtual void Print(ostream& out, Option_t *option="") const; | |
107 | ||
5f195a83 | 108 | void Draw(Option_t *option); |
109 | ||
27d45f0c | 110 | TH1* DrawProjection(const char* plane) const { |
111 | vector<AliHLTUInt32_t> selection; // empty list -> no selection | |
112 | return DrawProjection(plane, selection); | |
113 | } | |
114 | ||
115 | TH1* DrawProjection(const char* plane, AliHLTUInt32_t specification) const { | |
116 | vector<AliHLTUInt32_t> selection; selection.push_back(specification); | |
117 | return DrawProjection(plane, selection); | |
118 | } | |
119 | ||
120 | TH1* DrawProjection(const char* plane, const vector<AliHLTUInt32_t>& selection) const; | |
121 | ||
488caaa0 | 122 | protected: |
123 | ||
124 | private: | |
125 | vector<TArrayC*> fBuffers; //! buffers of loaded files | |
126 | ||
127 | ClassDef(AliHLTSpacePointContainer, 0) | |
128 | }; | |
129 | ||
130 | ostream& operator<<(ostream &out, const AliHLTSpacePointContainer& c); | |
131 | ||
132 | #endif |