ATLAS Offline Software
LAruA2MeV2Ntuple.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
10 #include "StoreGate/StoreGateSvc.h"
11 
12 LAruA2MeV2Ntuple::LAruA2MeV2Ntuple(const std::string& name, ISvcLocator* pSvcLocator): LArCond2NtupleBase(name, pSvcLocator) {
13  m_ntTitle="ADC to Mev Conversion";
14  m_ntpath="/NTUPLES/FILE1/ADCMEV";
15 
16 }
17 
21 
22  if (m_uA2MeVKey.empty() and m_DAC2uAKey.empty()) {
23  ATH_MSG_ERROR("Configuration problem: Both uA2MeVKey and DACuAKey are emtpy");
24  return StatusCode::FAILURE;
25  }
27 }
28 
30 = default;
31 
33  StatusCode sc;
34  NTuple::Item<long> cellIndex;
35  NTuple::Item<float> uA2MeV;
36  NTuple::Item<float> DAC2uA;
37 
38  sc=m_nt->addItem("icell",cellIndex,0,2000);
39  if (sc!=StatusCode::SUCCESS) {
40  ATH_MSG_ERROR( "addItem 'Cell Index' failed" );
41  return StatusCode::FAILURE;
42  }
43 
44  if (!m_uA2MeVKey.empty()) {
45  sc=m_nt->addItem("uAMeV",uA2MeV,-1000.,5000.);
46  if (sc!=StatusCode::SUCCESS) {
47  ATH_MSG_ERROR( "addItem 'uAMeV' failed" );
48  return StatusCode::FAILURE;
49  }
50  }
51 
52  if (!m_DAC2uAKey.empty()) {
53  sc=m_nt->addItem("DAC2uA",DAC2uA,-1000.,5000.);
54  if (sc!=StatusCode::SUCCESS) {
55  ATH_MSG_ERROR( "addItem 'DAC2uA' failed" );
56  return StatusCode::FAILURE;
57  }
58  }
59 
60  // For compatibility with existing configurations, look in the detector
61  // store first, then in conditions store.
62  const ILAruA2MeV* laruA2MeVComplete=nullptr;
63  if (!m_uA2MeVKey.empty()) {
64  laruA2MeVComplete=detStore()->tryRetrieve<ILAruA2MeV>(m_uA2MeVKey.key());
65  if (!laruA2MeVComplete) {
67  laruA2MeVComplete=*ua2MeVHdl;
68  }
69  if (!laruA2MeVComplete) {
70  ATH_MSG_ERROR("Failed to retrieve ILAruA2MeV with key "
71  << m_uA2MeVKey.key() << "from DetectorStore nor from ConditonsStore");
72  return StatusCode::FAILURE;
73  }
74  }
75 
76  const ILArDAC2uA* larDAC2uAComplete=nullptr;
77  if (!m_DAC2uAKey.empty()) {
78  larDAC2uAComplete=detStore()->tryRetrieve<ILArDAC2uA>(m_DAC2uAKey.key());
79  if (!larDAC2uAComplete) {
81  larDAC2uAComplete=*DAC2uAHdl;
82  }
83  if (!larDAC2uAComplete) {
84  ATH_MSG_ERROR("Failed to retrieve ILArDAC2uA with key "
85  << m_DAC2uAKey.key() << "from DetectorStore nor from ConditonsStore");
86  return StatusCode::FAILURE;
87  }
88  }
89 
91  const LArOnOffIdMapping* cabling=*cablingHdl;
92  if(!cabling) {
93  ATH_MSG_WARNING( "Do not have cabling object LArOnOffIdMapping" );
94  return StatusCode::FAILURE;
95  }
96 
97  unsigned cellCounter=0;
98  for (const HWIdentifier hwid: m_onlineId->channel_range()) {
99  if (cabling->isOnlineConnected(hwid)) {
100  if (laruA2MeVComplete) uA2MeV=laruA2MeVComplete->UA2MEV(hwid);
101  if (larDAC2uAComplete) DAC2uA=larDAC2uAComplete->DAC2UA(hwid);
102  fillFromIdentifier(hwid);
103  cellIndex=cellCounter;
104  sc=ntupleSvc()->writeRecord(m_nt);
105 
106  if (sc!=StatusCode::SUCCESS) {
107  ATH_MSG_ERROR( "writeRecord failed" );
108  return StatusCode::FAILURE;
109  }
110  cellCounter++;
111  }//end if connected
112  }//end loop over online ID
113 
114  ATH_MSG_INFO( "LAruA2MeV2Ntuple has finished." );
115  return StatusCode::SUCCESS;
116 }// end finalize-method.
117 
ILArDAC2uA.h
ILArDAC2uA::DAC2UA
virtual const float & DAC2UA(const HWIdentifier &id) const =0
access to DAC2UA conversion factor index by Identifier, and gain setting
ILAruA2MeV.h
ILAruA2MeV::UA2MEV
virtual const float & UA2MEV(const HWIdentifier &id) const =0
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
ILAruA2MeV
Definition: ILAruA2MeV.h:13
ReadCellNoiseFromCool.cabling
cabling
Definition: ReadCellNoiseFromCool.py:154
LAruA2MeV2Ntuple::m_uA2MeVKey
SG::ReadCondHandleKey< ILAruA2MeV > m_uA2MeVKey
Definition: LAruA2MeV2Ntuple.h:36
LAruA2MeV2Ntuple::stop
virtual StatusCode stop()
Definition: LAruA2MeV2Ntuple.cxx:32
ILArDAC2uA
Definition: ILArDAC2uA.h:13
SG::VarHandleKey::key
const std::string & key() const
Return the StoreGate ID for the referenced object.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:141
SG::VarHandleKey::empty
bool empty() const
Test if the key is blank.
Definition: AthToolSupport/AsgDataHandles/Root/VarHandleKey.cxx:150
HWIdentifier
Definition: HWIdentifier.h:13
LArCond2NtupleBase::initialize
StatusCode initialize()
Definition: LArCond2NtupleBase.cxx:33
LArCond2NtupleBase
Definition: LArCond2NtupleBase.h:32
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
AthCommonDataStore< AthCommonMsg< Algorithm > >::detStore
const ServiceHandle< StoreGateSvc > & detStore() const
The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc.
Definition: AthCommonDataStore.h:95
LAruA2MeV2Ntuple::initialize
StatusCode initialize()
Definition: LAruA2MeV2Ntuple.cxx:18
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
LArOnlineID_Base::channel_range
id_range channel_range() const
Definition: LArOnlineID_Base.cxx:1936
LArCond2NtupleBase::m_cablingKey
SG::ReadCondHandleKey< LArOnOffIdMapping > m_cablingKey
Definition: LArCond2NtupleBase.h:89
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
LArCond2NtupleBase::m_ntpath
std::string m_ntpath
Definition: LArCond2NtupleBase.h:65
LArCond2NtupleBase::m_nt
NTuple::Tuple * m_nt
Definition: LArCond2NtupleBase.h:68
LAruA2MeV2Ntuple.h
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
LAruA2MeV2Ntuple::~LAruA2MeV2Ntuple
~LAruA2MeV2Ntuple()
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
LArCond2NtupleBase::m_ntTitle
std::string m_ntTitle
Definition: LArCond2NtupleBase.h:65
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
LArCond2NtupleBase::m_onlineId
const LArOnlineID_Base * m_onlineId
Definition: LArCond2NtupleBase.h:85
LArCond2NtupleBase::fillFromIdentifier
bool fillFromIdentifier(const HWIdentifier &id)
Definition: LArCond2NtupleBase.cxx:288
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
LAruA2MeV2Ntuple::m_DAC2uAKey
SG::ReadCondHandleKey< ILArDAC2uA > m_DAC2uAKey
Definition: LAruA2MeV2Ntuple.h:37
CaloGain.h
ntupleSvc
INTupleSvc * ntupleSvc()
Definition: ServiceAccessor.h:14
SG::AllowEmpty
@ AllowEmpty
Definition: StoreGate/StoreGate/VarHandleKey.h:30
StoreGateSvc.h
LArOnlineID.h
LArOnOffIdMapping
Definition: LArOnOffIdMapping.h:20
LAruA2MeV2Ntuple::LAruA2MeV2Ntuple
LAruA2MeV2Ntuple(const std::string &name, ISvcLocator *pSvcLocator)
Definition: LAruA2MeV2Ntuple.cxx:12