ATLAS Offline Software
Loading...
Searching...
No Matches
LArAccumulatedDigitContByteStreamCnv.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
9
15
16#include "GaudiKernel/MsgStream.h"
17#include "GaudiKernel/StatusCode.h"
18#include "GaudiKernel/DataObject.h"
19#include "GaudiKernel/IRegistry.h"
20
22
25
26// Tool
27#include "GaudiKernel/IToolSvc.h"
28
29//STL-Stuff
30#include <map>
31#include <iostream>
32
33
35 AthConstConverter(storageType(), classID(),svcloc,"LArAccumulatedDigitContByteStreamCnv"),
36 m_tool("LArRawDataContByteStreamTool"),
37 m_rdpSvc("ROBDataProviderSvc", name())
38{}
39
43
46
47
48StatusCode
50{
51 ATH_CHECK( AthConstConverter::initialize() );
52
53 if ( m_rdpSvc.retrieve().isFailure()) {
54 ATH_MSG_WARNING( " Can't get ByteStreamInputSvc interface Reading of ByteStream Data not possible. " );
55 }
56
57 ATH_CHECK( m_tool.retrieve() );
58
59 return StatusCode::SUCCESS;
60
61}
62
63StatusCode
64LArAccumulatedDigitContByteStreamCnv::createObjConst(IOpaqueAddress* pAddr, DataObject*& pObj) const
65{//Convert Accumulated Digits from ByteStream to StoreGate
66 ATH_MSG_VERBOSE( "Executing CreateObj method for LArAccumulatedDigitContainer ");
67
68 if (!m_rdpSvc) {
69 ATH_MSG_ERROR( " ROBDataProviderSvc not loaded. Can't read ByteStream." );
70 return StatusCode::FAILURE;
71 }
72
73 ByteStreamAddress* pRE_Addr{};
74 ATH_CHECK( (pRE_Addr = dynamic_cast<ByteStreamAddress*>(pAddr)) != nullptr );
75
76 const EventContext& ctx = pRE_Addr->getEventContext();
77 const RawEvent* re = m_rdpSvc->getEvent(ctx);
78 if (!re) {
79 ATH_MSG_ERROR( "Could not get raw event from ByteStreamInputSvc" );
80 return StatusCode::FAILURE;
81 }
82 const std::string& key = *(pAddr->par()); // Get key used in the StoreGateSvc::retrieve function
83 // get gain and pass to convert function.
84 CaloGain::CaloGain gain=CaloGain::LARNGAIN; //At this place, LARNGAINS means Automatic gain.
85 if (key=="HIGH")
87 else if (key=="MEDIUM")
89 else if (key=="LOW")
91
92 // Convert the RawEvent to LArAccumulatedDigitContainer
93 ATH_MSG_DEBUG( "Converting LArAccumulatedDigits (from ByteStream). key=" << key << " ,gain=" << gain );
95 StatusCode sc=m_tool->convert(re,DigitContainer,gain);
96 if (sc!=StatusCode::SUCCESS) {
97 ATH_MSG_WARNING( "Conversion tool returned an error. LArAccumulatedDigitContainer might be empty." );
98 }
99 pObj = SG::asStorable(DigitContainer) ;
100
101 return StatusCode::SUCCESS;
102}
103// IWS 19.07.2005
104 StatusCode
105 LArAccumulatedDigitContByteStreamCnv::createRepConst(DataObject* /*pObj*/, IOpaqueAddress*& /*pAddr*/) const
106{// convert LArAccumulatedDigits from StoreGate into ByteStream
107 ATH_MSG_ERROR( "CreateRep method of LArAccumulatedDigitContainer not implemented" );
108 return StatusCode::SUCCESS;
109}
110
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)
macros to associate a CLID to a type
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
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
virtual StatusCode createObjConst(IOpaqueAddress *pAddr, DataObject *&pObj) const override
Create the transient representation of an object.
virtual StatusCode createRepConst(DataObject *pObj, IOpaqueAddress *&pAddr) const override
Convert the transient object to the requested representation.
Container class for LArAccumulatedDigit.
@ LARMEDIUMGAIN
Definition CaloGain.h:18
@ LARLOWGAIN
Definition CaloGain.h:18
@ LARNGAIN
Definition CaloGain.h:19
@ LARHIGHGAIN
Definition CaloGain.h:18
DataObject * asStorable(SG::DataObjectSharedPtr< T > pObject)
@ VIEW_ELEMENTS
this data object is a view, it does not own its elmts