ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
LArCalorimeter
LArCalibTools
src
CaloCondBlob2Ntuple.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 "
LArCalibTools/CaloCondBlob2Ntuple.h
"
6
#include "
CaloIdentifier/CaloGain.h
"
7
#include "
CaloIdentifier/CaloCell_ID.h
"
8
#include "
LArIdentifier/LArOnlineID.h
"
9
#include "
StoreGate/StoreGateSvc.h
"
10
#include "
CaloCondBlobObjs/CaloCondBlobFlt.h
"
11
#include "
AthenaPoolUtilities/AthenaAttributeList.h
"
12
13
CaloCondBlob2Ntuple::CaloCondBlob2Ntuple
(
const
std::string& name, ISvcLocator* pSvcLocator):
14
LArCond2NtupleBase
(name, pSvcLocator) {
15
declareProperty
(
"Folder"
,
m_folder
);
16
17
m_ntTitle
=
"CaloCondBlob"
;
18
m_ntpath
=
"/NTUPLES/FILE1/CaloCondBlob"
;
19
20
21
}
22
23
CaloCondBlob2Ntuple::~CaloCondBlob2Ntuple
()
24
=
default
;
25
26
StatusCode
CaloCondBlob2Ntuple::stop
() {
27
StatusCode
sc
;
28
29
// NTuple::Array<float> values;
30
// NTuple::Item<long> nValues;
31
32
// sc=m_nt->addItem("nvalues",nValues,0,1000);
33
// if (sc!=StatusCode::SUCCESS)
34
// {ATH_MSG_ERROR( "addItem 'nvalues' failed" );
35
// return StatusCode::FAILURE;
36
// }
37
38
// sc=m_nt->addItem("values",nValues,values);
39
// if (sc!=StatusCode::SUCCESS)
40
// {ATH_MSG_ERROR( "addItem 'values' failed" );
41
// return StatusCode::FAILURE;
42
// }
43
44
45
NTuple::Item<float> value;
46
sc
=
m_nt
->addItem(
"value"
,value,0,100);
47
if
(
sc
!=StatusCode::SUCCESS) {
48
ATH_MSG_ERROR
(
"addItem 'values' failed"
);
49
return
StatusCode::FAILURE;
50
}
51
52
const
AthenaAttributeList
* attrList=
nullptr
;
53
sc
=
detStore
()->retrieve(attrList,
m_folder
);
54
if
(
sc
.isFailure()) {
55
ATH_MSG_ERROR
(
"Failed to retrieve AthenaAttributeList with key "
<<
m_folder
);
56
return
sc
;
57
}
58
59
const
coral::Blob& blob = (*attrList)[
"CaloCondBlob16M"
].data<coral::Blob>();
60
if
(blob.size()<3) {
61
ATH_MSG_INFO
(
"Found empty blob, nothing to do"
);
62
return
StatusCode::SUCCESS;
63
}
64
65
std::unique_ptr<const CaloCondBlobFlt> condBlob (
CaloCondBlobFlt::getInstance
(blob));
66
ATH_MSG_INFO
(
"Database folder has values for "
<< condBlob->getNChans() <<
" channels and "
<< condBlob->getNGains() <<
" gains."
);
67
68
69
const
CaloCell_ID
* caloCellId;
70
sc
=
m_detStore
->retrieve(caloCellId,
"CaloCell_ID"
);
71
if
(
sc
.isFailure()) {
72
ATH_MSG_ERROR
(
"Could not get CaloCellID helper !"
);
73
return
StatusCode::FAILURE;
74
}
75
76
SG::ReadCondHandle<LArOnOffIdMapping>
cablingHdl{
m_cablingKey
};
77
const
LArOnOffIdMapping
* cabling=*cablingHdl;
78
if
(!cabling) {
79
ATH_MSG_WARNING
(
"Do not have cabling object LArOnOffIdMapping"
);
80
return
StatusCode::FAILURE;
81
}
82
83
const
unsigned
nChans=condBlob->getNChans();
84
//const usnigend nGains=condBlob->getNGains();
85
86
87
for
(
unsigned
h
=0;
h
<nChans;++
h
) {
88
//add here loop over gains
89
//const Identifier id=caloCellId->cell_id(h);
90
const
HWIdentifier
hwid=cabling->createSignalChannelIDFromHash(
h
);
91
fillFromIdentifier
(hwid);
92
value= condBlob->getData(
h
,0,0);
93
94
sc
=
ntupleSvc
()->writeRecord(
m_nt
);
95
if
(
sc
!=StatusCode::SUCCESS) {
96
ATH_MSG_ERROR
(
"writeRecord failed"
);
97
return
StatusCode::FAILURE;
98
}
99
}
//end loop over hash ids
100
101
ATH_MSG_INFO
(
"CaloCondBlob2Ntuple has finished."
);
102
return
StatusCode::SUCCESS;
103
}
// end finalize-method.
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition
AthMsgStreamMacros.h:33
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition
AthMsgStreamMacros.h:31
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition
AthMsgStreamMacros.h:32
AthenaAttributeList.h
CaloCell_ID.h
CaloCondBlob2Ntuple.h
CaloCondBlobFlt.h
CaloGain.h
LArOnlineID.h
sc
static Double_t sc
Definition
LArPhysWaveHECTool.cxx:37
ntupleSvc
INTupleSvc * ntupleSvc()
Definition
ServiceAccessor.h:14
StoreGateSvc.h
AthCommonAlgorithm< Gaudi::Algorithm >::declareProperty
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
Definition
AthCommonDataStore.h:145
AthCommonAlgorithm< Gaudi::Algorithm >::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
Definition
AthCommonDataStore.h:95
h
Header file for AthHistogramAlgorithm.
AthenaAttributeList
An AttributeList represents a logical row of attributes in a metadata table.
Definition
PersistentDataModel/PersistentDataModel/AthenaAttributeList.h:46
CaloCell_ID
Helper class for offline cell identifiers.
Definition
CaloCell_ID.h:34
CaloCondBlob2Ntuple::CaloCondBlob2Ntuple
CaloCondBlob2Ntuple(const std::string &name, ISvcLocator *pSvcLocator)
Definition
CaloCondBlob2Ntuple.cxx:13
CaloCondBlob2Ntuple::stop
StatusCode stop()
Definition
CaloCondBlob2Ntuple.cxx:26
CaloCondBlob2Ntuple::m_folder
std::string m_folder
Definition
CaloCondBlob2Ntuple.h:21
CaloCondBlob2Ntuple::~CaloCondBlob2Ntuple
~CaloCondBlob2Ntuple()
CaloCondBlobFlt::getInstance
static CaloCondBlobFlt * getInstance(coral::Blob &blob)
Returns a pointer to a non-const CaloCondBlobFlt.
Definition
CaloCondBlobFlt.cxx:12
HWIdentifier
Definition
HWIdentifier.h:13
LArCond2NtupleBase::m_detStore
StoreGateSvc * m_detStore
Definition
LArCond2NtupleBase.h:84
LArCond2NtupleBase::m_ntTitle
std::string m_ntTitle
Definition
LArCond2NtupleBase.h:68
LArCond2NtupleBase::m_nt
NTuple::Tuple * m_nt
Definition
LArCond2NtupleBase.h:71
LArCond2NtupleBase::m_cablingKey
SG::ReadCondHandleKey< LArOnOffIdMapping > m_cablingKey
Definition
LArCond2NtupleBase.h:92
LArCond2NtupleBase::m_ntpath
std::string m_ntpath
Definition
LArCond2NtupleBase.h:68
LArCond2NtupleBase::fillFromIdentifier
bool fillFromIdentifier(const HWIdentifier &id)
Definition
LArCond2NtupleBase.cxx:290
LArCond2NtupleBase::LArCond2NtupleBase
LArCond2NtupleBase(const std::string &name, ISvcLocator *pSvcLocator)
Definition
LArCond2NtupleBase.cxx:15
LArOnOffIdMapping
Definition
LArOnOffIdMapping.h:20
SG::ReadCondHandle
Definition
ReadCondHandle.h:40
Generated on
for ATLAS Offline Software by
1.17.0