ATLAS Offline Software
Loading...
Searching...
No Matches
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
11
12LAruA2MeV2Ntuple::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
90 const LArOnOffIdMapping* cabling=nullptr;
91 if(m_isSC) {
93 cabling=*cablingHdl;
94 } else {
96 cabling=*cablingHdl;
97 }
98 if(!cabling) {
99 ATH_MSG_WARNING( "Do not have cabling object LArOnOffIdMapping" );
100 return StatusCode::FAILURE;
101 }
102
103 unsigned cellCounter=0;
104 for (const HWIdentifier hwid: m_onlineId->channel_range()) {
105 if (cabling->isOnlineConnected(hwid)) {
106 if (laruA2MeVComplete) uA2MeV=laruA2MeVComplete->UA2MEV(hwid);
107 if (larDAC2uAComplete) DAC2uA=larDAC2uAComplete->DAC2UA(hwid);
108 fillFromIdentifier(hwid);
109 cellIndex=cellCounter;
110 sc=ntupleSvc()->writeRecord(m_nt);
111
112 if (sc!=StatusCode::SUCCESS) {
113 ATH_MSG_ERROR( "writeRecord failed" );
114 return StatusCode::FAILURE;
115 }
116 cellCounter++;
117 }//end if connected
118 }//end loop over online ID
119
120 ATH_MSG_INFO( "LAruA2MeV2Ntuple has finished." );
121 return StatusCode::SUCCESS;
122}// end finalize-method.
123
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_ERROR(x)
#define ATH_MSG_INFO(x)
#define ATH_MSG_WARNING(x)
static Double_t sc
INTupleSvc * ntupleSvc()
const ServiceHandle< StoreGateSvc > & detStore() const
virtual const float & DAC2UA(const HWIdentifier &id) const =0
access to DAC2UA conversion factor index by Identifier, and gain setting
virtual const float & UA2MEV(const HWIdentifier &id) const =0
Gaudi::Property< bool > m_isSC
SG::ReadCondHandleKey< LArOnOffIdMapping > m_cablingSCKey
SG::ReadCondHandleKey< LArOnOffIdMapping > m_cablingKey
const LArOnlineID_Base * m_onlineId
bool fillFromIdentifier(const HWIdentifier &id)
LArCond2NtupleBase(const std::string &name, ISvcLocator *pSvcLocator)
virtual StatusCode stop()
LAruA2MeV2Ntuple(const std::string &name, ISvcLocator *pSvcLocator)
StatusCode initialize()
SG::ReadCondHandleKey< ILAruA2MeV > m_uA2MeVKey
SG::ReadCondHandleKey< ILArDAC2uA > m_DAC2uAKey