ATLAS Offline Software
Loading...
Searching...
No Matches
LArAccumulatedDigitContByteStreamCnv.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
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 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(Gaudi::Hive::currentContext());
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 and pass to convert function.
86 CaloGain::CaloGain gain=CaloGain::LARNGAIN; //At this place, LARNGAINS means Automatic gain.
87 if (key=="HIGH")
89 else if (key=="MEDIUM")
91 else if (key=="LOW")
93
94 // Convert the RawEvent to LArAccumulatedDigitContainer
95 ATH_MSG_DEBUG( "Converting LArAccumulatedDigits (from ByteStream). key=" << key << " ,gain=" << gain );
97 StatusCode sc=m_tool->convert(re,DigitContainer,gain);
98 if (sc!=StatusCode::SUCCESS) {
99 ATH_MSG_WARNING( "Conversion tool returned an error. LArAccumulatedDigitContainer might be empty." );
100 }
101 pObj = SG::asStorable(DigitContainer) ;
102
103 return StatusCode::SUCCESS;
104}
105// IWS 19.07.2005
106 StatusCode
107 LArAccumulatedDigitContByteStreamCnv::createRepConst(DataObject* /*pObj*/, IOpaqueAddress*& /*pAddr*/) const
108{// convert LArAccumulatedDigits from StoreGate into ByteStream
109 ATH_MSG_ERROR( "CreateRep method of LArAccumulatedDigitContainer not implemented" );
110 return StatusCode::SUCCESS;
111}
112
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.
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