ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
LArCalorimeter
LArCOOLConditions
src
LArSingleFloatBlob.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#include "
LArCOOLConditions/LArSingleFloatBlob.h
"
6
#include "
AthenaPoolUtilities/CondAttrListCollection.h
"
7
#include "CoralBase/Blob.h"
8
#include "GaudiKernel/MsgStream.h"
9
10
11
LArSingleFloatBlob::LArSingleFloatBlob
():
12
m_nChannels
(0)
13
{}
14
15
void
LArSingleFloatBlob::readBlob
(
const
CondAttrListCollection
* attrList,
const
char
* attrName, MsgStream&
msg
) {
16
m_nChannels
=0;
17
18
if
(!attrList)
return
;
19
20
CondAttrListCollection::const_iterator
gainIt=attrList->
begin
();
21
CondAttrListCollection::const_iterator
gainIt_e=attrList->
end
();
22
23
m_pValues
.resize(attrList->
size
());
24
msg
<< MSG::DEBUG <<
"Found data for "
<< attrList->
size
() <<
" gains."
<<
endmsg
;
25
26
int
blobSize=0;
//FIXME Force size to hash-max??? m_onlineHelper->channelHashMax()
27
28
for
(;gainIt!=gainIt_e;++gainIt) {
29
unsigned
gain=gainIt->first;
30
//Special case: Single-gain constant in channel 1
31
if
(gain==1 && attrList->
size
()==1) gain=0;
32
33
if
(gain>=attrList->
size
() || gain>2) {
34
msg
<< MSG::ERROR <<
"Found unexpected COOL-channel (=gain) number:"
<< gain <<
endmsg
;
35
return
;
//ERROR
36
}
37
38
const
coral::AttributeList& attr=gainIt->second;
39
const
coral::Blob& myBlob = attr[attrName].data<coral::Blob>();
40
m_pValues
[gain]=
static_cast<
const
float
*
>
(myBlob.startingAddress());
41
if
(blobSize==0) {
42
blobSize=myBlob.size();
43
}
44
else
{
45
if
(blobSize!=myBlob.size())
46
msg
<< MSG::ERROR <<
"Unequal blob size ("
<< blobSize <<
"/"
<< myBlob.size() <<
")"
<<
endmsg
;
47
}
48
}
// end loop over COOL channels
49
50
m_nChannels
=blobSize/
sizeof
(float);
51
msg
<< MSG::DEBUG <<
"Found data for "
<<
m_nChannels
<<
" Channels"
<<
endmsg
;
52
return
;
53
}
54
endmsg
#define endmsg
Definition
AnalysisConfig_Ntuple.cxx:54
CondAttrListCollection.h
This file defines the class for a collection of AttributeLists where each one is associated with a ch...
LArSingleFloatBlob.h
CondAttrListCollection
This class is a collection of AttributeLists where each one is associated with a channel number.
Definition
CondAttrListCollection.h:51
CondAttrListCollection::end
const_iterator end() const
Definition
CondAttrListCollection.h:314
CondAttrListCollection::begin
const_iterator begin() const
Access to Chan/AttributeList pairs via iterators.
Definition
CondAttrListCollection.h:308
CondAttrListCollection::size
size_type size() const
number of Chan/AttributeList pairs
Definition
CondAttrListCollection.h:321
CondAttrListCollection::const_iterator
ChanAttrListMap::const_iterator const_iterator
Definition
CondAttrListCollection.h:62
LArSingleFloatBlob::m_nChannels
unsigned m_nChannels
Definition
LArSingleFloatBlob.h:30
LArSingleFloatBlob::readBlob
void readBlob(const CondAttrListCollection *attrList, const char *attrName, MsgStream &msg)
Definition
LArSingleFloatBlob.cxx:15
LArSingleFloatBlob::LArSingleFloatBlob
LArSingleFloatBlob()
Definition
LArSingleFloatBlob.cxx:11
LArSingleFloatBlob::m_pValues
std::vector< const float * > m_pValues
Definition
LArSingleFloatBlob.h:29
msg
MsgStream & msg
Definition
testRead.cxx:32
Generated on
for ATLAS Offline Software by
1.17.0