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
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.
34 * @ingroup alihlt_homer
36 class AliHLTHOMERBlockDesc : public TObject {
41 * ---------------------------------------------------------------------------------
42 * Constructor / Destructor
43 * ---------------------------------------------------------------------------------
46 /** standard constructor */
47 AliHLTHOMERBlockDesc();
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
56 AliHLTHOMERBlockDesc( void * data, ULong_t size, TString origin, TString dataType, ULong_t specification );
59 virtual ~AliHLTHOMERBlockDesc();
62 * ---------------------------------------------------------------------------------
63 * Data Handling - Setter - public
64 * ---------------------------------------------------------------------------------
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
74 void SetBlock( void * data, ULong_t size, TString origin, TString dataType, ULong_t specification );
77 * ---------------------------------------------------------------------------------
78 * TObject Handling - public
79 * ---------------------------------------------------------------------------------
82 /** Returns if block contains a TObject
83 * @return Returns kTRUE if block contains a TObject, kFALSE otherwise.
85 Bool_t IsTObject() { return fIsTObject;}
87 /** Returns Pointer to TObject */
88 TObject* GetTObject() { return fTObject; }
91 * ---------------------------------------------------------------------------------
92 * Data Handling - Getter - public
93 * ---------------------------------------------------------------------------------
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.
99 Bool_t IsRawData() { return fIsRawData;}
101 /** Get pointer to data
102 * @return Pointer to data
104 void* GetData() { return fData; }
107 * @return Size of data
109 ULong_t GetSize() { return fSize; }
111 /** Get detector of this block
112 * @return Detector name
114 TString GetDetector() { return fDetector; }
116 /** Get HLT data type of this block
117 * @return HLT data type
119 TString GetDataType() { return fDataType; }
121 /** Get HLT specification of this block
122 * @return HLT specification
124 ULong_t GetSpecification() { return fSpecification; }
126 /** Get class name of this block
129 TString GetClassName() { return fClassName; }
131 /** Get sub detector of this block
132 * @return subdetector
134 TString GetSubDetector() { return fSubDetector; }
136 /** Get sub sub detector of this block
137 * @return subsubdetector
139 TString GetSubSubDetector() { return fSubSubDetector; }
141 /** Returns kTRUE if HLT specification indicates a subdetector range
142 * @return kTRUE if subdetector range
144 Bool_t HasSubDetectorRange() { return fHasSubDetectorRange; }
146 /** Returns kTRUE if HLT specification indicates a subsubdetector range
147 * @return kTRUE if subsubdetector range
149 Bool_t HasSubSubDetectorRange() { return fHasSubSubDetectorRange; }
153 /** copy constructor prohibited */
154 AliHLTHOMERBlockDesc(const AliHLTHOMERBlockDesc&);
156 /** assignment operator prohibited */
157 AliHLTHOMERBlockDesc& operator=(const AliHLTHOMERBlockDesc&);
159 /** Set all additional members*/
160 void SetBlockParameters();
162 /** Checks if Block contains a TObject.
163 * If so, set fIsTObject to kTRUE, otherwise kFALSE
166 Bool_t CheckIfTObject();
168 /** Checks if Block contains a TObject raw data.
169 * If so, set fIsRawData to kTRUE, otherwise kFALSE
172 Bool_t CheckIfRawData();
175 * ---------------------------------------------------------------------------------
177 * ---------------------------------------------------------------------------------
180 /** Pointer to data of the block */
181 void* fData; //! transient
184 ULong_t fSize; // see above
186 /** States if block contains a TObject */
187 Bool_t fIsTObject; // see above
189 /** States if block contains a raw data */
190 Bool_t fIsRawData; // see above
192 /** AliHTMessage object containg a TObject */
193 AliHLTMessage* fMessage; //! transient
195 /** TObject extracted out of @see AliHLTMessage */
196 TObject* fTObject; //! transient
198 /** Class Name of the block */
199 TString fClassName; // see above
201 /** Detector Name, e.g. PHOS */
202 TString fDetector; // see above
204 /** SubDetector Name e.g. MODULE */
205 TString fSubDetector; // see above
207 /** SubSubDetector Name e.g. PARTITION */
208 TString fSubSubDetector; // see above
210 /** HLT Specification */
211 ULong_t fSpecification; // see above
214 TString fDataType; // see above
216 /** States id block has a subdetector range */
217 Bool_t fHasSubDetectorRange; // see above
219 /** States id block has a subsubdetector range */
220 Bool_t fHasSubSubDetectorRange; // see above
222 ClassDef( AliHLTHOMERBlockDesc, 0 )