ATLAS Offline Software
Loading...
Searching...
No Matches
LArRampBlob.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2017 CERN for the benefit of the ATLAS collaboration
3*/
4
7#include "CoralBase/Blob.h"
8
13
16
17
18void LArRampBlob::readBlob(const CondAttrListCollection* attrList, MsgStream& msg) {
20 m_nPoints=0;
21 m_pRamp.clear();
22
23 if (!attrList) return;
24
27
28 m_pRamp.resize(attrList->size());
29 msg << MSG::DEBUG << "Found data for " << attrList->size() << " gains." << endmsg;
30
31 int blobSize=0;
32
33 for(;gainIt!=gainIt_e;++gainIt) {
34 const unsigned gain=gainIt->first;
35 if (gain>=attrList->size() || gain>2) {
36 msg << MSG::ERROR << "Found unexpected COOL-channel (=gain) number:" << gain << endmsg;
37 return; //ERROR
38 }
39 const coral::AttributeList& attr=gainIt->second;
40 const coral::Blob& rampBlob = attr["RampVec"].data<coral::Blob>();
41 if (blobSize==0) blobSize=rampBlob.size();
42 if (m_nPoints==0) m_nPoints=attr["nPoints"].data<unsigned>();
43
44 //Sanity checks:
45 if (blobSize!=rampBlob.size()) {
46 msg << MSG::ERROR << "Unequal blob size (" << blobSize << "/"
47 << rampBlob.size() << ")" <<endmsg;
48 return;
49 }
50 if (m_nPoints!=attr["nPoints"].data<unsigned>()) {
51 msg << MSG::ERROR << "Unequal polynom degree (" << m_nPoints << "/"
52 << attr["nPoints"].data<unsigned>() << ")" << endmsg;
53 return;
54 }
55
56 m_pRamp[gain]=static_cast<const float*>(rampBlob.startingAddress());
57 }// end loop over COOL channels
58
59
60 if (m_nPoints==0) {
61 msg << MSG::ERROR << "Number of points is zero!" << endmsg;
62 return;
63 }
64 m_nChannels=blobSize/(sizeof(float)*m_nPoints);
65 msg << MSG::DEBUG << "Found data for " << m_nChannels << endmsg;
66 return;
67}
68
#define endmsg
This file defines the class for a collection of AttributeLists where each one is associated with a ch...
char data[hepevt_bytes_allocation_ATLAS]
Definition HepEvt.cxx:11
This class is a collection of AttributeLists where each one is associated with a channel number.
const_iterator end() const
const_iterator begin() const
Access to Chan/AttributeList pairs via iterators.
size_type size() const
number of Chan/AttributeList pairs
ChanAttrListMap::const_iterator const_iterator
void readBlob(const CondAttrListCollection *attrList, MsgStream &msg)
unsigned m_nPoints
Definition LArRampBlob.h:38
std::vector< const float * > m_pRamp
Definition LArRampBlob.h:41
unsigned m_nChannels
Definition LArRampBlob.h:37
MsgStream & msg
Definition testRead.cxx:32