ATLAS Offline Software
LArFEBTemp2Ntuple.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2023 CERN for the benefit of the ATLAS collaboration
3 */
4 
9 #include "GaudiKernel/IToolSvc.h"
10 
11 LArFEBTemp2Ntuple::LArFEBTemp2Ntuple(const std::string& name, ISvcLocator* pSvcLocator): LArCond2NtupleBase(name, pSvcLocator) {
12 
13  m_ntTitle="FEB Temperatures";
14  m_ntpath="/NTUPLES/FILE1/FEBTEMP";
15 
16 }
17 
19 = default;
20 
22  StatusCode sc;
23  NTuple::Item<float> temp1;
24  NTuple::Item<float> temp2;
25 
26  sc=m_nt->addItem("temp1",temp1,-1000.,5000.);
27  if (sc!=StatusCode::SUCCESS)
28  {ATH_MSG_ERROR( "addItem 'temp1' failed" );
29  return StatusCode::FAILURE;
30  }
31 
32  sc=m_nt->addItem("temp2",temp2,-1000.,5000.);
33  if (sc!=StatusCode::SUCCESS)
34  {ATH_MSG_ERROR( "addItem 'temp2' failed" );
35  return StatusCode::FAILURE;
36  }
37 
38  IToolSvc* toolSvc=nullptr;
39  sc = service( "ToolSvc",toolSvc);
40  if (sc!=StatusCode::SUCCESS) {
41  ATH_MSG_ERROR( "Unable to retrieve IToolSvc");
42  }
43 
44  ILArFEBTempTool *larFEBTempTool;
45  sc = toolSvc->retrieveTool("LArFEBTempTool", larFEBTempTool);
46  if (sc!=StatusCode::SUCCESS) {
47  ATH_MSG_ERROR( "Unable to retrieve LArFEBTempTool from ToolSvc" );
48  return StatusCode::FAILURE;
49  }
50 
51  for (const HWIdentifier hwid: m_onlineId->channel_range()) {
52  FEBTemp tv = larFEBTempTool->getFebTemp(hwid);
53  ATH_MSG_DEBUG( hwid << " " << tv.size() );
54 
55  if( !tv.empty() )
56  {
57  FEBTemp::const_iterator itb = tv.begin();
58  FEBTemp::const_iterator ite = tv.end();
59 
60  for(;itb!=ite;++itb)
61  {
62  temp1 = (*itb).first;
63  temp2 = (*itb).second;
64 
65  fillFromIdentifier(hwid);
66 
67  sc=ntupleSvc()->writeRecord(m_nt);
68 
69  if (sc!=StatusCode::SUCCESS)
70  {
71  ATH_MSG_ERROR( "writeRecord failed" );
72  return StatusCode::FAILURE;
73  }
74  }
75  }
76  }
77 
78  ATH_MSG_INFO( "LArFEBTemp2Ntuple has finished." );
79 
80  return StatusCode::SUCCESS;
81 
82 }// end finalize-method.
83 
ILArFEBTempTool
Interface for Tool to provide FEB TEMP DCS information.
Definition: ILArFEBTempTool.h:30
ATH_MSG_INFO
#define ATH_MSG_INFO(x)
Definition: AthMsgStreamMacros.h:31
LArFEBTemp2Ntuple::~LArFEBTemp2Ntuple
~LArFEBTemp2Ntuple()
LArFEBTemp2Ntuple::stop
StatusCode stop()
Definition: LArFEBTemp2Ntuple.cxx:21
HWIdentifier
Definition: HWIdentifier.h:13
LArCond2NtupleBase
Definition: LArCond2NtupleBase.h:32
FEBTemp
std::vector< std::pair< float, float > > FEBTemp
Definition: ILArFEBTempTool.h:27
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
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
EL::StatusCode
::StatusCode StatusCode
StatusCode definition for legacy code.
Definition: PhysicsAnalysis/D3PDTools/EventLoop/EventLoop/StatusCode.h:22
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition: AthMsgStreamMacros.h:29
LArCond2NtupleBase::m_ntpath
std::string m_ntpath
Definition: LArCond2NtupleBase.h:65
LArCond2NtupleBase::m_nt
NTuple::Tuple * m_nt
Definition: LArCond2NtupleBase.h:68
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
LArCond2NtupleBase::m_ntTitle
std::string m_ntTitle
Definition: LArCond2NtupleBase.h:65
LArCond2NtupleBase::m_onlineId
const LArOnlineID_Base * m_onlineId
Definition: LArCond2NtupleBase.h:85
LArCond2NtupleBase::fillFromIdentifier
bool fillFromIdentifier(const HWIdentifier &id)
Definition: LArCond2NtupleBase.cxx:288
LArFEBTemp2Ntuple::LArFEBTemp2Ntuple
LArFEBTemp2Ntuple(const std::string &name, ISvcLocator *pSvcLocator)
Definition: LArFEBTemp2Ntuple.cxx:11
ILArFEBTempTool::getFebTemp
virtual FEBTemp getFebTemp(const HWIdentifier &id)=0
LArFEBTemp2Ntuple.h
ntupleSvc
INTupleSvc * ntupleSvc()
Definition: ServiceAccessor.h:14
StoreGateSvc.h
LArOnlineID.h
ILArFEBTempTool.h