ATLAS Offline Software
Loading...
Searching...
No Matches
TileCalibDrawerBase.h
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3*/
4
5#ifndef TILECALIBBLOBOBJS_TILECALIBDRAWERBASE_H
6#define TILECALIBBLOBOBJS_TILECALIBDRAWERBASE_H
7
48
49
50#include <stdint.h>
51#include <vector>
52#include <string>
53#include <iostream>
54#include "CoralBase/Blob.h"
57
58
60 public:
62 virtual ~TileCalibDrawerBase();
63
70
73
77 virtual void clone(const TileCalibDrawerBase& other);
78
80 virtual uint16_t getType() const {return TileCalibType::BASE;}
81
83 virtual void dump() const { dumpHeader(std::cout); }
86 virtual void dump(std::ostream& stm) const {dumpHeader(stm);}
87
88 //==================================================================
89 //== Accessor methods for the header
90 //==================================================================
92 long getBlobSize() const { return m_blobSize32 * sizeof(uint32_t); }
94 long getBlobSize32() const { return m_blobSize32; }
96 uint16_t getObjType() const;
98 uint16_t getObjVersion() const;
100 uint32_t getObjSizeUint32() const;
102 uint32_t getObjSizeByte() const {return getObjSizeUint32()*sizeof(uint32_t);}
104 uint32_t getNObjs() const;
106 uint16_t getNChans() const;
108 uint16_t getNGains() const;
110 uint32_t getCommentSizeUint32() const;
112 uint32_t getCommentSizeChar() const {return getCommentSizeUint32()*sizeof(uint32_t);}
113
114 //==================================================================
115 //== Accessor methods for the comment fields
116 //==================================================================
118 std::string getAuthor() const;
120 std::string getComment() const;
122 uint64_t getTimeStamp() const;
124 std::string getDate() const;
126 std::string getFullComment() const;
127
128
129 //==================================================================
130 //== Blob field access
131 //==================================================================
134 const void* getAddress(unsigned int iEle) const;
135 void* getAddress(unsigned int iEle);
136
138 static const unsigned int m_hdrSize32 = 5;
139
140 protected:
142 TileCalibDrawerBase(const coral::Blob& blob);
143
145 TileCalibDrawerBase(coral::Blob& blob);
146
157 uint32_t createBlob(uint16_t objType,
158 uint16_t objVersion,
159 uint32_t objSizeUint32,
160 uint32_t nObjs,
161 uint16_t nChans,
162 uint16_t nGains,
163 const std::string& author="",
164 const std::string& comment="",
165 uint64_t timeStamp=0);
166
169 void dumpHeader(std::ostream& stm) const;
170
171 private:
174 coral::Blob* m_blob_nc;
176 const coral::Blob* m_blob;
178 const uint32_t* m_blobStart32;
180 const uint16_t* m_blobStart16;
182 uint64_t m_blobSize32;
185};
186
187
188//
189//_________________________________________________________
190__attribute__((always_inline)) inline uint16_t
192{
193 return m_blobStart16[0];
194}
195
196//
197//_________________________________________________________
198__attribute__((always_inline)) inline uint16_t
200{
201 return m_blobStart16[1];
202}
203
204//
205//_________________________________________________________
206__attribute__((always_inline)) inline uint32_t
208{
209 return m_blobStart32[1];
210}
211
212//
213//_________________________________________________________
214__attribute__((always_inline)) inline uint32_t
216{
217 return m_blobStart32[2];
218}
219
220//
221//_________________________________________________________
222__attribute__((always_inline)) inline uint16_t
224{
225 return m_blobStart16[6];
226}
227
228//
229//_________________________________________________________
230__attribute__((always_inline)) inline uint16_t
232{
233 return m_blobStart16[7];
234}
235
236//
237//_________________________________________________________
238__attribute__((always_inline)) inline uint32_t
240{
241 return m_blobStart32[4];
242}
243
244//
245//_________________________________________________________
246__attribute__((always_inline)) inline const void*
247TileCalibDrawerBase::getAddress(unsigned int iEle) const
248{
249 if(iEle>=getNObjs()){
250 throw TileCalib::IndexOutOfRange("TileCalibDrawerBase::getAddress", iEle, getNObjs());
251 }
252 return static_cast<const void*>( m_blobStart32 + m_hdrSize32 + getObjSizeUint32()*iEle );
253}
254
255//
256//_________________________________________________________
257__attribute__((always_inline)) inline void*
258TileCalibDrawerBase::getAddress(unsigned int iEle)
259{
260 if(iEle>=getNObjs()){
261 throw TileCalib::IndexOutOfRange("TileCalibDrawerBase::getAddress", iEle, getNObjs());
262 }
263 uint32_t* blobStart32 = static_cast<uint32_t*>(m_blob_nc->startingAddress());
264 return static_cast<void*>( blobStart32 + m_hdrSize32 + getObjSizeUint32()*iEle );
265}
266
267//
268//_________________________________________________________
269__attribute__((always_inline)) inline uint64_t
271{
272 if(!getCommentSizeUint32()) return 0;
273 return *(reinterpret_cast<const uint64_t*>(m_blobStart32 + m_hdrSize32 +
275}
276
277#endif
__attribute__((always_inline)) inline uint16_t TileCalibDrawerBase
virtual uint16_t getType() const
Returns TileCalibDrawer::BASE.
uint32_t getCommentSizeUint32() const
Returns the space occupied by the comment fields in units of uint32_t.
uint16_t getNChans() const
Returns the number of channels stored in the BLOB.
TileCalibDrawerBase & operator=(const TileCalibDrawerBase &other)
Assignment operator.
virtual void clone(const TileCalibDrawerBase &other)
Initialzes Blob with content of other Blob.
uint64_t m_blobSize32
Cache blob size in units of uint32_t.
std::string getFullComment() const
Returns a formated string build from all comment fields.
std::string getComment() const
Returns the actual comment.
uint32_t createBlob(uint16_t objType, uint16_t objVersion, uint32_t objSizeUint32, uint32_t nObjs, uint16_t nChans, uint16_t nGains, const std::string &author="", const std::string &comment="", uint64_t timeStamp=0)
(re-)creation of the referenced BLOB object.
virtual void dump(std::ostream &stm) const
Prints the BLOB header summary information.
uint16_t getObjType() const
Returns the BLOB object type.
const uint32_t * m_blobStart32
Cache blob starting address as uint_32t*.
uint16_t getNGains() const
Returns the number of gains stored for each channel.
uint64_t getTimeStamp() const
Returns the unix timestamp of the comment (seconds since 1.1.1970)
std::string getDate() const
Returns the date of the comment as string (derived from timestamp)
const coral::Blob * m_blob
Const reference to the BLOB (always there)
long getBlobSize() const
Returns the BLOB size in units of bytes.
void * getAddress(unsigned int iEle)
virtual void dump() const
Prints the BLOB header summary information to std::cout.
void dumpHeader(std::ostream &stm) const
Prints the BLOB header summary information.
virtual ~TileCalibDrawerBase()
Dtor.
TileCalibDrawerBase(const TileCalibDrawerBase &other)
Copy Ctor.
uint32_t getNObjs() const
Returns the number of data objects stored int the BLOB.
const uint16_t * m_blobStart16
Cache blob starting address as uint_16t*.
std::string getAuthor() const
Returns the comment author.
static const unsigned int m_hdrSize32
The header size in units of uint32_t.
bool m_isBlobOwner
Is this TileCalibDrawer owner of the BLOB.
uint16_t getObjVersion() const
Returns the BLOB object version.
uint32_t getObjSizeByte() const
Returns the size of a data object in units of bytes.
coral::Blob * m_blob_nc
Non-const reference to the BLOB.
long getBlobSize32() const
Returns the BLOB size in units of uint32_t.
uint32_t getObjSizeUint32() const
Returns the size of a data object in units of uint32_t.
uint32_t getCommentSizeChar() const
Returns the space occupied by the comment fields in units of chars.
const void * getAddress(unsigned int iEle) const
Returns start address of iEle-th basic unit.
@ BASE
Enum for TileCalibDrawerBase class.
setWord1 uint16_t
setEventNumber uint32_t