3 #ifndef ALIHLTTPCSPACEPOINTCONTAINER_H
4 #define ALIHLTTPCSPACEPOINTCONTAINER_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 AliHLTTPCSpacePointContainer.h
10 /// @author Matthias Richter
12 /// @brief Helper class for handling of HLT TPC space point data blocks
15 #include "AliHLTSpacePointContainer.h"
16 #include "AliHLTTPCClusterDataFormat.h"
17 #include "AliHLTTPCSpacePointData.h"
22 * @class AliHLTTPCSpacePointContainer
23 * Handler class for HLT TPCS space point data blocks.
27 class AliHLTTPCSpacePointContainer : public AliHLTSpacePointContainer
30 /// standard constructor
31 AliHLTTPCSpacePointContainer();
33 AliHLTTPCSpacePointContainer(const AliHLTTPCSpacePointContainer& c);
34 /// assignment operator
35 AliHLTTPCSpacePointContainer& operator=(const AliHLTTPCSpacePointContainer& c);
37 ~AliHLTTPCSpacePointContainer();
39 virtual bool Check(AliHLTUInt32_t clusterID) const;
40 virtual int GetClusterIDs(vector<AliHLTUInt32_t>& tgt) const;
41 virtual const vector<AliHLTUInt32_t>* GetClusterIDs(AliHLTUInt32_t mask);
42 virtual float GetX(AliHLTUInt32_t clusterID) const;
43 virtual float GetXWidth(AliHLTUInt32_t clusterID) const;
44 virtual float GetY(AliHLTUInt32_t clusterID) const;
45 virtual float GetYWidth(AliHLTUInt32_t clusterID) const;
46 virtual float GetZ(AliHLTUInt32_t clusterID) const;
47 virtual float GetZWidth(AliHLTUInt32_t clusterID) const;
48 virtual float GetCharge(AliHLTUInt32_t clusterID) const;
49 virtual float GetPhi(AliHLTUInt32_t clusterID) const;
51 /// add input block to the collection
52 virtual int AddInputBlock(const AliHLTComponentBlockData* pDesc);
54 /// clear the object and reset pointer references
55 virtual void Clear(Option_t * option ="");
58 virtual void Print(ostream& out, Option_t *option="") const;
60 /// create a collection of clusters for a space point mask
61 virtual AliHLTSpacePointContainer* SelectByMask(AliHLTUInt32_t mask, bool bAlloc=false) const;
63 /// create a collection of clusters for a specific track
64 virtual AliHLTSpacePointContainer* SelectByTrack(int trackId, bool bAlloc=false) const;
66 /// create a collection of clusters for a specific MC track
67 virtual AliHLTSpacePointContainer* SelectByMC(int mcId, bool bAlloc=false) const;
69 /// create a collection of all used clusters
70 virtual AliHLTSpacePointContainer* UsedClusters(bool bAlloc=false) const;
72 /// create a collection of all unused clusters
73 virtual AliHLTSpacePointContainer* UnusedClusters(bool bAlloc=false) const;
75 virtual int MarkUsed(const AliHLTUInt32_t* clusterIDs, int arraySize);
76 virtual int SetTrackID(int trackID, const AliHLTUInt32_t* clusterIDs, int arraySize);
77 virtual int GetTrackID(AliHLTUInt32_t clusterID) const;
78 virtual int SetMCID(int clusterID, const AliHLTUInt32_t* clusterIDs, int arraySize);
80 class AliHLTTPCSpacePointProperties {
82 AliHLTTPCSpacePointProperties();
83 AliHLTTPCSpacePointProperties(const AliHLTTPCSpacePointData* pCluster);
84 AliHLTTPCSpacePointProperties(const AliHLTTPCSpacePointProperties& src);
85 AliHLTTPCSpacePointProperties& operator=(const AliHLTTPCSpacePointProperties& src);
87 ~AliHLTTPCSpacePointProperties() {}
89 const AliHLTTPCSpacePointData* Data() const {return fCluster;}
90 bool IsUsed() const {return fUsed;}
91 void MarkUsed(bool used=true) {fUsed=used;}
92 int GetTrackId() const {return fTrackId;}
93 void SetTrackId(int trackId) {fTrackId=trackId;}
94 int GetMCId() const {return fMCId;}
95 void SetMCId(int mcId) {fMCId=mcId;}
97 void Print(ostream& out, Option_t *option="") const;
100 const AliHLTTPCSpacePointData* fCluster; //! transient
101 bool fUsed; //! transient
102 int fTrackId; //! track id from reconstruction
110 std::map<AliHLTUInt32_t, AliHLTTPCSpacePointProperties> fClusters; //!
112 /// map of cluster id collection for different masks
113 std::map<AliHLTUInt32_t, vector<AliHLTUInt32_t>*> fSelections; //!
115 ClassDef(AliHLTTPCSpacePointContainer, 0)
118 ostream& operator<<(ostream &out, const AliHLTTPCSpacePointContainer::AliHLTTPCSpacePointProperties& p);