2 #ifndef ALIHLTHOMERBLOCKDESC_H
3 #define ALIHLTHOMERBLOCKDESC_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 AliHLTHOMERBlockDesc.h
10 @author Jochen Thaeder
12 @brief Container for HOMER Blocks
15 // see below for class documentation
17 // refer to README to build package
19 // visit http://web.ift.uib.no/~kjeks/doc/alice-hlt
26 #include "AliHLTLoggingVariadicFree.h"
29 * @class AliHLTHOMERBlockDesc
30 * This class contains the data which comes from 1 block, delivered via the
31 * HOMER interface. It used in order to fill these block in TLists. ( It has
32 * to inherit from TObject ). Further more it reads the specification of the
33 * block and classifies the data as TObject, raw data, or something else. Mainly
34 * used in the AliEVEHOMERManager, as data objects for AliEVE.
36 * @ingroup alihlt_homer
38 class AliHLTHOMERBlockDesc : public TObject, public AliHLTLogging {
43 * ---------------------------------------------------------------------------------
44 * Constructor / Destructor
45 * ---------------------------------------------------------------------------------
48 /** standard constructor */
49 AliHLTHOMERBlockDesc();
52 virtual ~AliHLTHOMERBlockDesc();
55 * ---------------------------------------------------------------------------------
56 * Data Handling - Setter - public
57 * ---------------------------------------------------------------------------------
61 * @param data Pointer to data
62 * @param size Size of data
63 * @param origin Detector
64 * @param dataType HLT data type
65 * @param specification HLT specification
67 void SetBlock( void * data, ULong_t size, TString origin, TString dataType, ULong_t specification );
70 * ---------------------------------------------------------------------------------
71 * TObject Handling - public
72 * ---------------------------------------------------------------------------------
75 /** Returns if block contains a TObject
76 * @return Returns kTRUE if block contains a TObject, kFALSE otherwise.
78 Bool_t IsTObject() { return fIsTObject;}
80 /** Returns Pointer to TObject */
81 TObject* GetTObject() { return fTObject; }
83 /** Get class name of this block
86 TString GetClassName() { return fClassName; }
89 * ---------------------------------------------------------------------------------
90 * Data Handling - Getter - public
91 * ---------------------------------------------------------------------------------
94 /** Returns if block contains a raw data, fClassName is not set in this case.
95 * @return Returns kTRUE if block contains raw data, kFALSE otherwise.
97 Bool_t IsRawData() { return fIsRawData;}
99 /** Get pointer to data
100 * @return Pointer to data
102 void* GetData() { return fData; }
105 * @return Size of data
107 ULong_t GetSize() { return fSize; }
109 /** Get name of this block
112 TString GetBlockName() { return fBlockName; }
114 /** Get detector of this block
115 * @return Detector name
117 TString GetDetector() { return fDetector; }
119 /** Get HLT data type of this block
120 * @return HLT data type
122 TString GetDataType() { return fDataType; }
124 /** Get HLT specification of this block
125 * @return HLT specification
127 ULong_t GetSpecification() { return fSpecification; }
129 /** Get sub detector of this block
130 * @return subdetector
132 Int_t GetSubDetector() { return fSubDetector; }
134 /** Get sub sub detector of this block
135 * @return subsubdetector
137 Int_t GetSubSubDetector() { return fSubSubDetector; }
139 /** Returns kTRUE if HLT specification indicates a subdetector range
140 * @return kTRUE if subdetector range
142 Bool_t HasSubDetectorRange() { return fHasSubDetectorRange; }
144 /** Returns kTRUE if HLT specification indicates a subsubdetector range
145 * @return kTRUE if subsubdetector range
147 Bool_t HasSubSubDetectorRange(){ return fHasSubSubDetectorRange; }
149 ///////////////////////////////////////////////////////////////////////////////////
153 /** copy constructor prohibited */
154 AliHLTHOMERBlockDesc(const AliHLTHOMERBlockDesc&);
156 /** assignment operator prohibited */
157 AliHLTHOMERBlockDesc& operator=(const AliHLTHOMERBlockDesc&);
160 * ---------------------------------------------------------------------------------
161 * Data Handling - private
162 * ---------------------------------------------------------------------------------
165 /** Set all additional members*/
166 void SetBlockParameters();
168 /** Checks if Block contains a TObject.
169 * If so, set fIsTObject to kTRUE, otherwise kFALSE
172 Bool_t CheckIfTObject();
174 /** Checks if Block contains a TObject raw data.
175 * If so, set fIsRawData to kTRUE, otherwise kFALSE
178 Bool_t CheckIfRawData();
181 * ---------------------------------------------------------------------------------
183 * ---------------------------------------------------------------------------------
186 // -- Block properties --
187 // ----------------------
189 /** Pointer to data of the block */
190 Char_t* fData; //! transient
193 ULong_t fSize; // see above
196 TString fBlockName; // see above
201 /** States if block contains a TObject */
202 Bool_t fIsTObject; // see above
204 /** States if block contains a raw data */
205 Bool_t fIsRawData; // see above
207 // -- TObject properties --
208 // ------------------------
210 /** AliHTMessage object containg a TObject */
211 AliHLTMessage* fMessage; //! transient
213 /** TObject extracted out of @see AliHLTMessage */
214 TObject* fTObject; //! transient
216 /** Class Name of the block */
217 TString fClassName; // see above
219 // -- Data Specifications --
220 // -------------------------
223 TString fDataType; // see above
225 /** Detector Name, e.g. PHOS */
226 TString fDetector; // see above
228 /** HLT Specification */
229 ULong_t fSpecification; // see above
231 // XXXXXXXXXXXXXXXXXXXXXXXX REMOVE IF NOT NEEDED XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
233 // -- Sub Detector Specifications --
234 // ---------------------------------
236 /** SubDetector Name e.g. MODULE */
237 Int_t fSubDetector; // see above
239 /** SubSubDetector Name e.g. PARTITION */
240 Int_t fSubSubDetector; // see above
242 /** States id block has a subdetector range */
243 Bool_t fHasSubDetectorRange; // see above
245 /** States id block has a subsubdetector range */
246 Bool_t fHasSubSubDetectorRange; // see above
248 // XXXXXXXXXXXXXXXXXXXXXXXX REMOVE IF NOT NEEDED XXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
250 ClassDef( AliHLTHOMERBlockDesc, 1 )