ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
MuonSpectrometer
MuonCnv
MuonCSC_CnvTools
src
CscRdoContByteStreamTool.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2024 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#include "
CscRdoContByteStreamTool.h
"
6
7
8
9
#include "
AthenaKernel/CLASS_DEF.h
"
10
#include "
CscROD_Encoder.h
"
11
#include "
MuonRDO/CscRawDataContainer.h
"
12
#include <map>
13
// contructor
14
Muon::CscRdoContByteStreamTool::CscRdoContByteStreamTool
(
const
std::string&
type
,
const
std::string& name,
const
IInterface* parent) :
15
base_class(
type
, name, parent) {
16
declareProperty(
"RODVersion"
,
m_rodVersion
= 0x0200);
17
declareProperty(
"IsCosmicData"
,
m_isCosmic
=
false
);
18
declareProperty(
"IsOldCosmicData"
,
m_isOldCosmic
=
false
);
19
}
20
21
// initialize
22
StatusCode
Muon::CscRdoContByteStreamTool::initialize
() {
23
ATH_CHECK
(AthAlgTool::initialize());
24
ATH_MSG_DEBUG
(
"Muon::CscRdoContByteStreamTool::initialize()"
);
25
26
// get the cabling service
27
ATH_CHECK
(
m_cabling
.retrieve());
28
ATH_CHECK
(
m_idHelperSvc
.retrieve());
29
30
ATH_CHECK
(
m_byteStreamCnvSvc
.retrieve());
31
32
// create CSC RDO ID to source ID mapper
33
m_hid2re
.set(
m_cabling
.get(), &
m_idHelperSvc
->cscIdHelper());
34
if
(
m_isCosmic
) {
35
m_hid2re
.set_isCosmic();
36
if
(
m_isOldCosmic
)
m_hid2re
.set_isOldCosmic();
37
}
38
return
StatusCode::SUCCESS;
39
}
40
41
// convert CSC RDO to ByteStream
42
StatusCode
Muon::CscRdoContByteStreamTool::convert
(
const
CscRawDataContainer
* cont, MsgStream& log)
const
{
43
// Get the event assembler
44
FullEventAssembler<CSC_Hid2RESrcID>
* fea =
nullptr
;
45
ATH_CHECK
(
m_byteStreamCnvSvc
->getFullEventAssembler(fea,
"CscRdoContByteStream"
));
46
47
fea->
idMap
().set(
m_cabling
.get(), &
m_idHelperSvc
->cscIdHelper());
48
if
(
m_cabling
->nROD() == 16)
49
fea->
setRodMinorVersion
(0x400);
50
else
51
fea->
setRodMinorVersion
(
m_rodVersion
);
52
53
StatusCode
sc
= StatusCode::SUCCESS;
54
55
FullEventAssembler<CSC_Hid2RESrcID>::RODDATA
* theROD;
56
57
// a map for ROD ID onto Encoder
58
std::map<uint32_t, CscROD_Encoder> mapEncoder;
59
61
CscRawDataContainer::const_iterator
it_col = cont->
begin
();
62
CscRawDataContainer::const_iterator
it_col_end = cont->
end
();
63
64
bool
first =
true
;
65
for
(; it_col != it_col_end; ++it_col) {
67
if
(first && !(*it_col)->empty()) {
68
first =
false
;
69
uint32_t eventType = (*it_col)->eventType();
70
fea->
setDetEvtType
(eventType);
71
}
72
73
// get ROD ID
74
const
uint32_t rodId =
m_hid2re
.getRodID(*it_col);
75
76
// map the RDO onto Encoder
77
mapEncoder[rodId].setRdo(*it_col);
78
mapEncoder[rodId].setIdHelper(&
m_idHelperSvc
->cscIdHelper());
79
}
80
81
// loop over map and fill all ROD Data Blocks
82
std::map<uint32_t, CscROD_Encoder>::iterator it_map = mapEncoder.begin();
83
std::map<uint32_t, CscROD_Encoder>::iterator it_map_end = mapEncoder.end();
84
for
(; it_map != it_map_end; ++it_map) {
85
// get ROD data address
86
theROD = fea->
getRodData
((*it_map).first);
87
88
// fill ROD data
89
sc
= ((*it_map).second).fillROD(*theROD, log);
90
if
(
sc
.isFailure())
return
StatusCode::RECOVERABLE;
91
}
92
93
return
sc
;
94
}
ATH_CHECK
#define ATH_CHECK
Evaluate an expression and check for errors.
Definition
AthCheckMacros.h:40
ATH_MSG_DEBUG
#define ATH_MSG_DEBUG(x)
Definition
AthMsgStreamMacros.h:29
CLASS_DEF.h
macros to associate a CLID to a type
CscROD_Encoder.h
CscRawDataContainer.h
CscRdoContByteStreamTool.h
sc
static Double_t sc
Definition
LArPhysWaveHECTool.cxx:37
CscRawDataContainer
This container provides access to collections of CSC RDOs and a mechanism for recording them.
Definition
CscRawDataContainer.h:23
FullEventAssembler
Template class for assembling a full atlas raw event from subfragments.
Definition
FullEventAssembler.h:38
FullEventAssembler::setRodMinorVersion
void setRodMinorVersion(uint16_t m)
change the ROD minor version
FullEventAssembler::setDetEvtType
void setDetEvtType(uint32_t m)
change Detector Event Type
FullEventAssembler::RODDATA
std::vector< uint32_t > RODDATA
ROD data as a vector of unsigned int.
Definition
FullEventAssembler.h:52
FullEventAssembler::getRodData
RODDATA * getRodData(uint32_t id)
get a block of ROD data
FullEventAssembler::idMap
IDMAP_t & idMap()
Return reference to IDMAP.
IdentifiableContainerMT::const_iterator
Definition
IdentifiableContainerMT.h:82
IdentifiableContainerMT::end
const_iterator end() const
return const_iterator for end of container
Definition
IdentifiableContainerMT.h:248
IdentifiableContainerMT::begin
const_iterator begin() const
return const_iterator for first entry
Definition
IdentifiableContainerMT.h:242
Muon::CscRdoContByteStreamTool::m_rodVersion
uint16_t m_rodVersion
Definition
CscRdoContByteStreamTool.h:55
Muon::CscRdoContByteStreamTool::m_idHelperSvc
ServiceHandle< Muon::IMuonIdHelperSvc > m_idHelperSvc
Definition
CscRdoContByteStreamTool.h:49
Muon::CscRdoContByteStreamTool::convert
virtual StatusCode convert(const CscRawDataContainer *cont, MsgStream &log) const override
Definition
CscRdoContByteStreamTool.cxx:42
Muon::CscRdoContByteStreamTool::m_isOldCosmic
bool m_isOldCosmic
Definition
CscRdoContByteStreamTool.h:57
Muon::CscRdoContByteStreamTool::m_byteStreamCnvSvc
ServiceHandle< IByteStreamCnvSvc > m_byteStreamCnvSvc
Definition
CscRdoContByteStreamTool.h:51
Muon::CscRdoContByteStreamTool::m_cabling
ServiceHandle< CSCcablingSvc > m_cabling
Definition
CscRdoContByteStreamTool.h:53
Muon::CscRdoContByteStreamTool::CscRdoContByteStreamTool
CscRdoContByteStreamTool(const std::string &type, const std::string &name, const IInterface *parent)
constructor
Definition
CscRdoContByteStreamTool.cxx:14
Muon::CscRdoContByteStreamTool::m_hid2re
CSC_Hid2RESrcID m_hid2re
Definition
CscRdoContByteStreamTool.h:48
Muon::CscRdoContByteStreamTool::initialize
virtual StatusCode initialize() override
Definition
CscRdoContByteStreamTool.cxx:22
Muon::CscRdoContByteStreamTool::m_isCosmic
bool m_isCosmic
Definition
CscRdoContByteStreamTool.h:56
type
Generated on
for ATLAS Offline Software by
1.17.0