ATLAS Offline Software
Loading...
Searching...
No Matches
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
12
13CaloCondBlob2Ntuple::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
24= default;
25
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
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);
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.
#define ATH_MSG_ERROR(x)
#define ATH_MSG_INFO(x)
#define ATH_MSG_WARNING(x)
static Double_t sc
INTupleSvc * ntupleSvc()
Gaudi::Details::PropertyBase & declareProperty(Gaudi::Property< T, V, H > &t)
const ServiceHandle< StoreGateSvc > & detStore() const
Header file for AthHistogramAlgorithm.
An AttributeList represents a logical row of attributes in a metadata table.
Helper class for offline cell identifiers.
Definition CaloCell_ID.h:34
CaloCondBlob2Ntuple(const std::string &name, ISvcLocator *pSvcLocator)
static CaloCondBlobFlt * getInstance(coral::Blob &blob)
Returns a pointer to a non-const CaloCondBlobFlt.
StoreGateSvc * m_detStore
SG::ReadCondHandleKey< LArOnOffIdMapping > m_cablingKey
bool fillFromIdentifier(const HWIdentifier &id)
LArCond2NtupleBase(const std::string &name, ISvcLocator *pSvcLocator)