ATLAS Offline Software
LArCalibDigitContByteStreamCnv.cxx
Go to the documentation of this file.
1 /*
2  Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3 */
4 
7 
12 #include "ByteStreamData/RawEvent.h"
13 
17 
20 
21 //STL-Stuff
22 #include <map>
23 #include <iostream>
24 
25 
27  AthConstConverter(storageType(), classID(),svcloc,"LArCalibDigitContByteStreamCnv"),
28  m_tool("LArRawDataContByteStreamTool"),
29  m_rdpSvc("ROBDataProviderSvc", name()),
30  m_byteStreamEventAccess("ByteStreamCnvSvc", name()),
31  m_byteStreamCnvSvc(nullptr),
32  m_calibLineMappingKey ("LArCalibLineMap"),
33  m_onOffIdMappingKey ("LArOnOffIdMap")
34 {}
35 
37 }
38 
41 }
42 
43 
46 {
48 
49  if ( m_rdpSvc.retrieve().isFailure()) {
50  ATH_MSG_WARNING( " Can't get ByteStreamInputSvc interface Reading of ByteStream Data not possible. " );
51  }
52 
53  ATH_CHECK( m_byteStreamEventAccess.retrieve() );
55 
56  ATH_CHECK( m_tool.retrieve() );
59 
60  return StatusCode::SUCCESS;
61 }
62 
64 LArCalibDigitContByteStreamCnv::createObjConst(IOpaqueAddress* pAddr, DataObject*& pObj) const
65 {//Convert Digits from ByteStream to StoreGate
66  ATH_MSG_VERBOSE( "Executing CreateObj method for LArCalibDigitContainer " );
67 
68  if (!m_rdpSvc) {
69  ATH_MSG_ERROR( " ROBDataProviderSvc not loaded. Can't read ByteStream." );
70  return StatusCode::FAILURE;
71  }
72  ByteStreamAddress *pRE_Addr;
73  pRE_Addr = dynamic_cast<ByteStreamAddress*>(pAddr); //Cast from OpaqueAddress to ByteStreamAddress
74  if (!pRE_Addr) {
75  ATH_MSG_ERROR( "dynamic_cast of OpaqueAdress to ByteStreamAddress failed!" );
76  return StatusCode::FAILURE;
77  }
78 
79  const RawEvent* re = m_rdpSvc->getEvent();
80  if (!re) {
81  ATH_MSG_ERROR( "Could not get raw event from ByteStreamInputSvc" );
82  return StatusCode::FAILURE;
83  }
84  const std::string& key = *(pAddr->par()); // Get key used in the StoreGateSvc::retrieve function
85  // get gain an pass to convert function.
86  // get gain and pass to convert function.
87  CaloGain::CaloGain gain=CaloGain::LARNGAIN; //At this place, LARNGAINS means Automatic gain.
88  if (key=="HIGH")
90  else if (key=="MEDIUM")
92  else if (key=="LOW")
94  // Convert the RawEvent to LArCalibDigitContainer
95  ATH_MSG_DEBUG( "Converting LArCalibDigits (from ByteStream). key=" << key << " ,gain=" << gain );
96 
99 
100  LArCalibDigitContainer *CalibDigitContainer=new LArCalibDigitContainer;
101  StatusCode sc=m_tool->convert(re,CalibDigitContainer,gain,
102  **calibLineMapping,
103  **onOffIdMapping);
104  if (sc!=StatusCode::SUCCESS) {
105  ATH_MSG_WARNING( "Conversion tool returned an error. LArCalibDigitContainer might be empty." );
106  }
107 
108  pObj = SG::asStorable(CalibDigitContainer) ;
109  return StatusCode::SUCCESS;
110 }
111 
112 StatusCode
113 LArCalibDigitContByteStreamCnv::createRepConst(DataObject* pObj, IOpaqueAddress*& pAddr) const
114 {// convert LArDigits from StoreGate into ByteStream
115  ATH_MSG_VERBOSE( "Execute CreateRep method of LArCalibDigitContainer " );
116  // Get Full Event Assembler
119 
120  LArCalibDigitContainer* CalibDigitContainer=0;
121  if (!SG::fromStorable (pObj, CalibDigitContainer) || !CalibDigitContainer) {
122  ATH_MSG_ERROR( "Cannot get LArCalibDigitContainer for DataObject. Key=" << pObj->registry()->name() );
123  return StatusCode::FAILURE;
124  }
125 
126  std::string nm = pObj->registry()->name();
127  pAddr = new ByteStreamAddress(classID(),nm,"");
128 
129  ATH_CHECK( m_tool->WriteLArCalibDigits(CalibDigitContainer, *fea) );
130 
131  return StatusCode::SUCCESS;
132 }
LArCalibDigitContByteStreamCnv::classID
static const CLID & classID()
Definition: LArCalibDigitContByteStreamCnv.cxx:39
LArCalibDigitContainer.h
LArCalibDigitContByteStreamCnv::initialize
virtual StatusCode initialize() override
Definition: LArCalibDigitContByteStreamCnv.cxx:45
SG::ReadCondHandle
Definition: ReadCondHandle.h:44
FullEventAssembler
Template class for assembling a full atlas raw event from subfragments.
Definition: FullEventAssembler.h:40
SG::fromStorable
bool fromStorable(DataObject *pDObj, T *&pTrans, bool quiet=false, IRegisterTransient *irt=0, bool isConst=true)
Definition: StorableConversions.h:180
StorableConversions.h
convert to and from a SG storable
LArCalibDigitContByteStreamCnv::createObjConst
virtual StatusCode createObjConst(IOpaqueAddress *pAddr, DataObject *&pObj) const override
Create the transient representation of an object.
Definition: LArCalibDigitContByteStreamCnv.cxx:64
initialize
void initialize()
Definition: run_EoverP.cxx:894
LArCalibDigitContByteStreamCnv::m_rdpSvc
ServiceHandle< IROBDataProviderSvc > m_rdpSvc
Definition: LArCalibDigitContByteStreamCnv.h:57
CaloCondBlobAlgs_fillNoiseFromASCII.gain
gain
Definition: CaloCondBlobAlgs_fillNoiseFromASCII.py:110
RawEvent
OFFLINE_FRAGMENTS_NAMESPACE::FullEventFragment RawEvent
data type for reading raw event
Definition: RawEvent.h:37
LArRawDataContByteStreamTool.h
Helper tool for conversion of raw data classes to/from LArByteStream.
SG::asStorable
DataObject * asStorable(T *pObject)
Definition: StorableConversions.h:158
LArCalibDigitContByteStreamCnv::m_calibLineMappingKey
SG::ReadCondHandleKey< LArCalibLineMapping > m_calibLineMappingKey
Definition: LArCalibDigitContByteStreamCnv.h:60
LArCalibDigitContByteStreamCnv.h
LArCalibDigitContByteStreamCnv::m_tool
ToolHandle< BYTESTREAMTOOL > m_tool
Definition: LArCalibDigitContByteStreamCnv.h:56
ATH_MSG_VERBOSE
#define ATH_MSG_VERBOSE(x)
Definition: AthMsgStreamMacros.h:28
AthConstConverter
Gaudi converter base class with const interfaces.
Definition: AthConstConverter.h:33
CaloGain::LARNGAIN
@ LARNGAIN
Definition: CaloGain.h:19
ReadCondHandle.h
AthenaPoolTestRead.sc
sc
Definition: AthenaPoolTestRead.py:27
LArCalibDigitContByteStreamCnv::createRepConst
virtual StatusCode createRepConst(DataObject *pObj, IOpaqueAddress *&pAddr) const override
Convert the transient object to the requested representation.
Definition: LArCalibDigitContByteStreamCnv.cxx:113
ClassID_traits::ID
static const CLID & ID()
the CLID of T
Definition: Control/AthenaKernel/AthenaKernel/ClassID_traits.h:50
LArCalibDigitContainer
Container class for LArCalibDigit.
Definition: LArCalibDigitContainer.h:19
ByteStreamCnvSvc
Gaudi Conversion Service class for ByteStream Persistency.
Definition: ByteStreamCnvSvc.h:34
LArOnOffIdMapping.h
ATH_MSG_ERROR
#define ATH_MSG_ERROR(x)
Definition: AthMsgStreamMacros.h:33
LArCalibDigitContByteStreamCnv::m_byteStreamCnvSvc
ByteStreamCnvSvc * m_byteStreamCnvSvc
Definition: LArCalibDigitContByteStreamCnv.h:59
RawEvent.h
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
ByteStreamAddress
IOpaqueAddress for ByteStreamCnvSvc, with ROB ids.
Definition: ByteStreamAddress.h:28
ATH_CHECK
#define ATH_CHECK
Definition: AthCheckMacros.h:40
ByteStreamAddress.h
ByteStreamCnvSvc.h
CLID
uint32_t CLID
The Class ID type.
Definition: Event/xAOD/xAODCore/xAODCore/ClassID_traits.h:47
LArCalibDigitContByteStreamCnv::LArCalibDigitContByteStreamCnv
LArCalibDigitContByteStreamCnv(ISvcLocator *svcloc)
Definition: LArCalibDigitContByteStreamCnv.cxx:26
name
std::string name
Definition: Control/AthContainers/Root/debug.cxx:195
SG::CondHandleKey::initialize
StatusCode initialize(bool used=true)
CaloGain::LARHIGHGAIN
@ LARHIGHGAIN
Definition: CaloGain.h:18
CaloGain::CaloGain
CaloGain
Definition: CaloGain.h:11
CaloGain::LARMEDIUMGAIN
@ LARMEDIUMGAIN
Definition: CaloGain.h:18
CalibCoolCompareRT.nm
nm
Definition: CalibCoolCompareRT.py:110
ATH_MSG_WARNING
#define ATH_MSG_WARNING(x)
Definition: AthMsgStreamMacros.h:32
re
const boost::regex re(r_e)
LArCalibDigitContByteStreamCnv::~LArCalibDigitContByteStreamCnv
virtual ~LArCalibDigitContByteStreamCnv()
Definition: LArCalibDigitContByteStreamCnv.cxx:36
ByteStreamCnvSvcBase.h
ByteStreamCnvSvc::getFullEventAssembler
StatusCode getFullEventAssembler(T *&t, const std::string &nm)
Access to FullEventAssembler.
Definition: ByteStreamCnvSvc.h:121
CaloGain::LARLOWGAIN
@ LARLOWGAIN
Definition: CaloGain.h:18
LArCalibLineMapping.h
LArCalibDigitContByteStreamCnv::m_onOffIdMappingKey
SG::ReadCondHandleKey< LArOnOffIdMapping > m_onOffIdMappingKey
Definition: LArCalibDigitContByteStreamCnv.h:61
LArCalibDigitContByteStreamCnv::m_byteStreamEventAccess
ServiceHandle< IByteStreamEventAccess > m_byteStreamEventAccess
Definition: LArCalibDigitContByteStreamCnv.h:58
IROBDataProviderSvc.h
mapkey::key
key
Definition: TElectronEfficiencyCorrectionTool.cxx:37