ATLAS Offline Software
Loading...
Searching...
No Matches
LArCalibDigitContByteStreamCnv.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2026 CERN for the benefit of the ATLAS collaboration
3*/
4
7
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_byteStreamCnvSvc("ByteStreamCnvSvc", name()),
31 m_calibLineMappingKey ("LArCalibLineMap"),
32 m_onOffIdMappingKey ("LArOnOffIdMap")
33{}
34
37
41
42
43StatusCode
45{
46 ATH_CHECK( AthConstConverter::initialize() );
47
48 if ( m_rdpSvc.retrieve().isFailure()) {
49 ATH_MSG_WARNING( " Can't get ByteStreamInputSvc interface Reading of ByteStream Data not possible. " );
50 }
51
52 ATH_CHECK( m_byteStreamCnvSvc.retrieve() );
53
54 ATH_CHECK( m_tool.retrieve() );
55 ATH_CHECK( m_calibLineMappingKey.initialize() );
56 ATH_CHECK( m_onOffIdMappingKey.initialize() );
57
58 return StatusCode::SUCCESS;
59}
60
61StatusCode
62LArCalibDigitContByteStreamCnv::createObjConst(IOpaqueAddress* pAddr, DataObject*& pObj) const
63{//Convert Digits from ByteStream to StoreGate
64 ATH_MSG_VERBOSE( "Executing CreateObj method for LArCalibDigitContainer " );
65
66 if (!m_rdpSvc) {
67 ATH_MSG_ERROR( " ROBDataProviderSvc not loaded. Can't read ByteStream." );
68 return StatusCode::FAILURE;
69 }
70
71 ByteStreamAddress* pRE_Addr{};
72 ATH_CHECK( (pRE_Addr = dynamic_cast<ByteStreamAddress*>(pAddr)) != nullptr );
73
74 const EventContext& ctx = pRE_Addr->getEventContext();
75 const RawEvent* re = m_rdpSvc->getEvent(ctx);
76 if (!re) {
77 ATH_MSG_ERROR( "Could not get raw event from ByteStreamInputSvc" );
78 return StatusCode::FAILURE;
79 }
80 const std::string& key = *(pAddr->par()); // Get key used in the StoreGateSvc::retrieve function
81 // get gain an pass to convert function.
82 // get gain and pass to convert function.
83 CaloGain::CaloGain gain=CaloGain::LARNGAIN; //At this place, LARNGAINS means Automatic gain.
84 if (key=="HIGH")
86 else if (key=="MEDIUM")
88 else if (key=="LOW")
90 // Convert the RawEvent to LArCalibDigitContainer
91 ATH_MSG_DEBUG( "Converting LArCalibDigits (from ByteStream). key=" << key << " ,gain=" << gain );
92
95 if (!*calibLineMapping || !*onOffIdMapping) {
96 ATH_MSG_ERROR ("Cannot access mappings");
97 return StatusCode::FAILURE;
98 }
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
112StatusCode
113LArCalibDigitContByteStreamCnv::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
118 ATH_CHECK( m_byteStreamCnvSvc->getFullEventAssembler(fea,"LAr") );
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}
const boost::regex re(r_e)
#define ATH_CHECK
Evaluate an expression and check for errors.
#define ATH_MSG_ERROR(x)
#define ATH_MSG_VERBOSE(x)
#define ATH_MSG_WARNING(x)
#define ATH_MSG_DEBUG(x)
uint32_t CLID
The Class ID type.
static Double_t sc
Helper tool for conversion of raw data classes to/from LArByteStream.
OFFLINE_FRAGMENTS_NAMESPACE::FullEventFragment RawEvent
data type for reading raw event
Definition RawEvent.h:37
convert to and from a SG storable
AthConstConverter(long storage_type, const CLID &class_type, ISvcLocator *svc, const std::string &name)
const std::string & name() const
IOpaqueAddress for ByteStreamCnvSvc, with ROB ids.
const EventContext & getEventContext() const
Template class for assembling a full atlas raw event from subfragments.
virtual StatusCode createRepConst(DataObject *pObj, IOpaqueAddress *&pAddr) const override
Convert the transient object to the requested representation.
SG::ReadCondHandleKey< LArOnOffIdMapping > m_onOffIdMappingKey
ServiceHandle< IByteStreamCnvSvc > m_byteStreamCnvSvc
SG::ReadCondHandleKey< LArCalibLineMapping > m_calibLineMappingKey
ServiceHandle< IROBDataProviderSvc > m_rdpSvc
virtual StatusCode createObjConst(IOpaqueAddress *pAddr, DataObject *&pObj) const override
Create the transient representation of an object.
Container class for LArCalibDigit.
@ LARMEDIUMGAIN
Definition CaloGain.h:18
@ LARLOWGAIN
Definition CaloGain.h:18
@ LARNGAIN
Definition CaloGain.h:19
@ LARHIGHGAIN
Definition CaloGain.h:18
bool fromStorable(DataObject *pDObj, T *&pTrans, bool quiet=false, IRegisterTransient *irt=0, bool isConst=true)
DataObject * asStorable(SG::DataObjectSharedPtr< T > pObject)