]> git.uio.no Git - u/mrichter/AliRoot.git/blame - HLT/BASE/AliHLTHOMERBlockDesc.h
more bugfixes on data type operator semantics: earlier workarounds have been cleaned now
[u/mrichter/AliRoot.git] / HLT / BASE / AliHLTHOMERBlockDesc.h
CommitLineData
155ff173 1//-*- Mode: C++ -*-
2#ifndef ALIHLTHOMERBLOCKDESC_H
3#define ALIHLTHOMERBLOCKDESC_H
4
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 AliHLTHOMERBlockDesc.h
10 @author Jochen Thaeder
11 @date
12 @brief Container for HOMER Blocks
13*/
14
15// see below for class documentation
16// or
17// refer to README to build package
18// or
19// visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
20
21class AliHLTMessage;
22
23#include "TString.h"
24#include "TObject.h"
25
26/**
27 * @class AliHLTHOMERBlockDesc
28 * This class contains the data which comes from 1 block, delivered via the
29 * HOMER interface. It used in order to fill these block in TLists. ( It has
30 * to inherit from TObject ). Further more it reads the specification of the
31 * block and classifies the data as TObject, raw data, or something else. Mainly
32 * used in the AliEVEHOMERManager, as data objects for AliEVE.
33 *
34 * @ingroup alihlt_homer
35 */
36class AliHLTHOMERBlockDesc : public TObject {
37
38public:
39
40 /*
41 * ---------------------------------------------------------------------------------
42 * Constructor / Destructor
43 * ---------------------------------------------------------------------------------
44 */
45
46 /** standard constructor */
47 AliHLTHOMERBlockDesc();
48
49 /** Constructor, set block data
50 * @param data Pointer to data
51 * @param size Size of data
52 * @param origin Detector
53 * @param dataType HLT data type
54 * @param specification HLT specification
55 */
56 AliHLTHOMERBlockDesc( void * data, ULong_t size, TString origin, TString dataType, ULong_t specification );
57
58 /** destructor */
59 virtual ~AliHLTHOMERBlockDesc();
60
61 /*
62 * ---------------------------------------------------------------------------------
63 * Data Handling - Setter - public
64 * ---------------------------------------------------------------------------------
65 */
66
67 /** Set block data
68 * @param data Pointer to data
69 * @param size Size of data
70 * @param origin Detector
71 * @param dataType HLT data type
72 * @param specification HLT specification
73 */
74 void SetBlock( void * data, ULong_t size, TString origin, TString dataType, ULong_t specification );
75
76 /*
77 * ---------------------------------------------------------------------------------
78 * TObject Handling - public
79 * ---------------------------------------------------------------------------------
80 */
81
82 /** Returns if block contains a TObject
83 * @return Returns kTRUE if block contains a TObject, kFALSE otherwise.
84 */
85 Bool_t IsTObject() { return fIsTObject;}
86
87 /** Returns Pointer to TObject */
88 TObject* GetTObject();
89
90 /*
91 * ---------------------------------------------------------------------------------
92 * Data Handling - Getter - public
93 * ---------------------------------------------------------------------------------
94 */
95
96 /** Returns if block contains a raw data, fClassName is not set in this case.
97 * @return Returns kTRUE if block contains raw data, kFALSE otherwise.
98 */
99 Bool_t IsRawData() { return fIsRawData;}
100
101 /** Get pointer to data
102 * @return Pointer to data
103 */
104 void* GetData() { return fData; }
105
106 /** Get size of data
107 * @return Size of data
108 */
109 ULong_t GetSize() { return fSize; }
110
111 /** Get detector of this block
112 * @return Detector name
113 */
114 TString GetDetector() { return fDetector; }
115
116 /** Get HLT data type of this block
117 * @return HLT data type
118 */
119 TString GetDataType() { return fDataType; }
120
121 /** Get HLT specification of this block
122 * @return HLT specification
123 */
124 ULong_t GetSpecification() { return fSpecification; }
125
126 /** Get class name of this block
127 * @return class name
128 */
129 TString GetClassName() { return fClassName; }
130
131 /** Get sub detector of this block
132 * @return subdetector
133 */
134 TString GetSubDetector() { return fSubDetector; }
135
136 /** Get sub sub detector of this block
137 * @return subsubdetector
138 */
139 TString GetSubSubDetector() { return fSubSubDetector; }
140
141 /** Returns kTRUE if HLT specification indicates a subdetector range
142 * @return kTRUE if subdetector range
143 */
144 Bool_t HasSubDetectorRange() { return fHasSubDetectorRange; }
145
146 /** Returns kTRUE if HLT specification indicates a subsubdetector range
147 * @return kTRUE if subsubdetector range
148 */
149 Bool_t HasSubSubDetectorRange() { return fHasSubSubDetectorRange; }
150
151
152private:
153 /** copy constructor prohibited */
154 AliHLTHOMERBlockDesc(const AliHLTHOMERBlockDesc&);
155
156 /** assignment operator prohibited */
157 AliHLTHOMERBlockDesc& operator=(const AliHLTHOMERBlockDesc&);
158
159 /** Set all additional members*/
160 void SetBlockParameters();
161
162 /** Checks if Block contains a TObject.
163 * If so, set fIsTObject to kTRUE, otherwise kFALSE
164 * @return fIsTObject
165 */
166 Bool_t CheckIfTObject();
167
168 /** Checks if Block contains a TObject raw data.
169 * If so, set fIsRawData to kTRUE, otherwise kFALSE
170 * @return fIsRawData
171 */
172 Bool_t CheckIfRawData();
173 /*
174 * ---------------------------------------------------------------------------------
175 * Members - private
176 * ---------------------------------------------------------------------------------
177 */
178
179 /** Pointer to data of the block */
180 void* fData; //! transient
181
182 /** Size of data */
183 ULong_t fSize; // see above
184
185 /** States if block contains a TObject */
186 Bool_t fIsTObject; // see above
187
188 /** States if block contains a raw data */
189 Bool_t fIsRawData; // see above
190
191 /** AliHTMessage object containg a TObject */
192 AliHLTMessage* fMessage; //! transient
193
194 /** Class Name of the block */
195 TString fClassName; // see above
196
197 /** Detector Name, e.g. PHOS */
198 TString fDetector; // see above
199
200 /** SubDetector Name e.g. MODULE */
201 TString fSubDetector; // see above
202
203 /** SubSubDetector Name e.g. PARTITION */
204 TString fSubSubDetector; // see above
205
206 /** HLT Specification */
207 ULong_t fSpecification; // see above
208
209 /** HLT DataType */
210 TString fDataType; // see above
211
212 /** States id block has a subdetector range */
213 Bool_t fHasSubDetectorRange; // see above
214
215 /** States id block has a subsubdetector range */
216 Bool_t fHasSubSubDetectorRange; // see above
217
218 ClassDef( AliHLTHOMERBlockDesc, 0 )
219};
220
221#endif