ATLAS Offline Software
Loading...
Searching...
No Matches
TgcRdoContByteStreamTool.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2021 CERN for the benefit of the ATLAS collaboration
3*/
4
6
7#include <map>
8
9#include "TgcROD_Encoder.h"
11
12#include "GaudiKernel/MsgStream.h"
13
14// contructor
16(const std::string& type, const std::string& name, const IInterface* parent)
17 : base_class(type,name,parent)
18{
19 declareInterface<Muon::ITGC_RDOtoByteStreamTool>(this);
20}
21
22
23// destructor
25= default;
26
27
28// initialize
30{
31 // create TGC RDO ID to source ID mapper
32 m_hid2re = std::make_unique<TGC_Hid2RESrcID>();
33
34 ATH_CHECK( m_byteStreamCnvSvc.retrieve() );
35
36 return StatusCode::SUCCESS;
37}
38
39
40// finalize
42{
43 return AthAlgTool::finalize();
44}
45
46
47// convert TGC RDO to ByteStream
49{
50 // Get the event assembler
52 ATH_CHECK( m_byteStreamCnvSvc->getFullEventAssembler (fea,
53 "TgcRdoContByteStream") );
54
55 // event assembler
57
58 // a map for ROD ID onto Encoder
59 std::map<uint32_t, TgcROD_Encoder> mapEncoder;
60
61 // loop over RDO
62 TgcRdoContainer::const_iterator it_col = cont->begin();
63 TgcRdoContainer::const_iterator it_col_end = cont->end();
64 for(; it_col != it_col_end; ++it_col)
65 {
66 // get ROD ID
67 const uint32_t rodId = m_hid2re->getRodID(*it_col);
68
69 // map the RDO onto Encoder
70 mapEncoder[rodId].setRdo(*it_col);
71 }
72
73 // loop over map and fill all ROD Data Blocks
74 std::map<uint32_t,TgcROD_Encoder>::iterator it_map = mapEncoder.begin();
75 std::map<uint32_t,TgcROD_Encoder>::iterator it_map_end = mapEncoder.end();
76 for(; it_map != it_map_end; ++it_map)
77 {
78 // get ROD data address
79 theROD = fea->getRodData((*it_map).first);
80
81 // fill ROD data
82 ((*it_map).second).fillROD( *theROD ) ;
83 }
84
85 return StatusCode::SUCCESS;
86}
#define ATH_CHECK
Evaluate an expression and check for errors.
Template class for assembling a full atlas raw event from subfragments.
std::vector< uint32_t > RODDATA
ROD data as a vector of unsigned int.
RODDATA * getRodData(uint32_t id)
get a block of ROD data
const_iterator end() const
return const_iterator for end of container
const_iterator begin() const
return const_iterator for first entry
virtual StatusCode finalize() override
Finalizer.
virtual StatusCode initialize() override
Initializer.
TgcRdoContByteStreamTool(const std::string &type, const std::string &name, const IInterface *parent)
Constructor.
std::unique_ptr< TGC_Hid2RESrcID > m_hid2re
ServiceHandle< IByteStreamCnvSvc > m_byteStreamCnvSvc
virtual ~TgcRdoContByteStreamTool()
Destructor.
virtual StatusCode convert(const TgcRdoContainer *cont) const override
Convert RDO container to Byte Stream.