ATLAS Offline Software
Toggle main menu visibility
Loading...
Searching...
No Matches
MuonSpectrometer
MuonCnv
MuonRPC_CnvTools
src
RPC_Hid2RESrcID.cxx
Go to the documentation of this file.
1
/*
2
Copyright (C) 2002-2025 CERN for the benefit of the ATLAS collaboration
3
*/
4
5
#include "
RPC_Hid2RESrcID.h
"
6
7
#include <cassert>
8
#include <stdexcept>
9
10
#include "eformat/SourceIdentifier.h"
11
12
using
eformat::helper::SourceIdentifier;
13
14
// implementation of RpcPad to RESrcID conversion.
15
// Ketevi A. Assamagan
16
// Jan-16-2003, BNL
17
18
RPC_Hid2RESrcID::RPC_Hid2RESrcID
() :
m_rpcIdHelper
(nullptr),
m_specialROBNumber
(-1) {}
19
20
RPC_Hid2RESrcID::RPC_Hid2RESrcID
(
int
specialROBNumber) :
m_rpcIdHelper
(nullptr),
m_specialROBNumber
(specialROBNumber) {}
21
22
void
RPC_Hid2RESrcID::set
(
const
RpcIdHelper
* rpdId) {
m_rpcIdHelper
= rpdId; }
23
24
// This method is used by the RDO converter only
25
uint32_t
RPC_Hid2RESrcID::getRodID
(
const
Identifier
& offlineId,
const
RpcCablingCondData
* readCdo)
const
{
26
// this method returns a RESrcID for the ROD, for a
27
// given RPC pad ID offline ID
28
29
unsigned
short
int
RODid;
30
unsigned
short
int
Iside;
31
unsigned
short
int
SLid;
32
33
if
(readCdo->
give_RODid
(offlineId, RODid) && readCdo->
give_side
(offlineId, Iside) && readCdo->
give_SLid
(offlineId, SLid)) {
34
uint8_t rodIndex = (uint8_t)RODid;
35
uint16_t side = Iside;
36
37
eformat::SubDetector detid =
38
(side == eformat::MUON_RPC_BARREL_A_SIDE) ? eformat::MUON_RPC_BARREL_A_SIDE : eformat::MUON_RPC_BARREL_C_SIDE;
39
40
SourceIdentifier sid(detid, rodIndex);
41
uint32_t rod_id = sid.code();
42
43
// TEMP FIXME temp fix for the sector 13 pulse tests ---- added fix for M3
44
if
((
m_specialROBNumber
> 0)) {
45
if
(side == 0x65 && (SLid == 23 || SLid == 24)) {
46
// rod_id=0x650001;
47
rod_id =
m_specialROBNumber
;
48
}
else
if
(side == 0x65 && SLid == 7) {
49
rod_id = 0x650001;
50
}
else
if
(side == 0x65 && SLid == 8) {
51
rod_id = 0x650002;
52
if
(
m_specialROBNumber
== 0x650001) rod_id = 0x650001;
// fix for M3 with runnumber up to 11533 (SFI)
53
}
else
{
54
rod_id = 0xffffffff;
55
}
56
}
57
58
return
rod_id;
59
}
60
61
return
0xffffffff;
62
}
63
64
uint32_t
RPC_Hid2RESrcID::getRodID
(
const
int
& side,
const
int
& slogic,
const
int
& padId,
const
RpcCablingCondData
* readCdo) {
65
// this method returns a RESrcID for the ROD, for a given RPC pad ID
66
const
RpcCablingCondData::RDOmap
& pad_map = readCdo->
give_RDOs
();
67
int
key = side * 10000 + slogic * 100 + padId;
68
auto
pPair = pad_map.find(key);
69
if
(pPair == pad_map.end()) {
70
return
0xffffffff;
71
}
72
RDOindex
index
= pPair->second;
73
uint8_t rodIndex = (uint8_t)
index
.RODid();
74
75
eformat::SubDetector detid = (side == 1) ? eformat::MUON_RPC_BARREL_A_SIDE : eformat::MUON_RPC_BARREL_C_SIDE;
76
77
SourceIdentifier sid(detid, rodIndex);
78
uint32_t rod_id = sid.code();
79
80
return
rod_id;
81
}
82
83
uint32_t
RPC_Hid2RESrcID::getRodID
(
const
int
& sector) {
84
// this method returns a RESrcID for the ROD, for a given RPC pad ID
85
uint8_t rodIndex = (uint8_t)((sector % 32) / 2);
86
int
side = (sector < 32) ? 0 : 1;
87
88
eformat::SubDetector detid = (side == 1) ? eformat::MUON_RPC_BARREL_A_SIDE : eformat::MUON_RPC_BARREL_C_SIDE;
89
90
SourceIdentifier sid(detid, rodIndex);
91
uint32_t rod_id = sid.code();
92
93
return
rod_id;
94
}
95
96
uint32_t
RPC_Hid2RESrcID::getRodID
(
const
uint16_t& side,
const
uint16_t& rodIndex) {
97
// this method returns a RESrcID for the ROD, for a given RPC pad ID
98
eformat::SubDetector detid = (side == 1) ? eformat::MUON_RPC_BARREL_A_SIDE : eformat::MUON_RPC_BARREL_C_SIDE;
99
SourceIdentifier sid(detid, rodIndex);
100
uint32_t rod_id = sid.code();
101
return
rod_id;
102
}
103
106
uint32_t
RPC_Hid2RESrcID::getRobID
(
const
uint32_t rod_id) {
return
rod_id; }
107
110
uint32_t
RPC_Hid2RESrcID::getRosID
(
const
uint32_t rob_id) {
111
// Change Module Type to ROS, moduleid = 0
112
SourceIdentifier id(rob_id);
113
SourceIdentifier id2(
id
.subdetector_id(), 0);
114
return
id2.code();
115
}
116
119
uint32_t
RPC_Hid2RESrcID::getDetID
(
const
uint32_t ros_id) {
120
// ROS to DET
121
SourceIdentifier id(ros_id);
122
SourceIdentifier id2(
id
.subdetector_id(), 0);
123
return
id2.code();
124
}
RPC_Hid2RESrcID.h
RDOindex
Definition
RDOindex.h:85
RPC_Hid2RESrcID::m_specialROBNumber
int m_specialROBNumber
Definition
RPC_Hid2RESrcID.h:38
RPC_Hid2RESrcID::getRodID
uint32_t getRodID(const Identifier &offlineId, const RpcCablingCondData *readCdo) const
Definition
RPC_Hid2RESrcID.cxx:25
RPC_Hid2RESrcID::RPC_Hid2RESrcID
RPC_Hid2RESrcID()
Definition
RPC_Hid2RESrcID.cxx:18
RPC_Hid2RESrcID::getDetID
static uint32_t getDetID(const uint32_t ros_id)
mapping SrcID from ROS to Det
Definition
RPC_Hid2RESrcID.cxx:119
RPC_Hid2RESrcID::getRosID
static uint32_t getRosID(const uint32_t rob_id)
mapping SrcID from ROB to ROS
Definition
RPC_Hid2RESrcID.cxx:110
RPC_Hid2RESrcID::getRobID
static uint32_t getRobID(const uint32_t rod_id)
mapping SrcID from ROD to ROB (called in ByteStreamCnvSvcBase/FullEventAssembler.icc)
Definition
RPC_Hid2RESrcID.cxx:106
RPC_Hid2RESrcID::m_rpcIdHelper
const RpcIdHelper * m_rpcIdHelper
Definition
RPC_Hid2RESrcID.h:36
RPC_Hid2RESrcID::set
void set(const RpcIdHelper *rpdId)
Definition
RPC_Hid2RESrcID.cxx:22
RpcCablingCondData
Definition
RpcCablingCondData.h:23
RpcCablingCondData::give_RODid
bool give_RODid(const Identifier &compactID, unsigned short int &id) const
Definition
RpcCablingCondData.cxx:29
RpcCablingCondData::RDOmap
std::map< int, RDOindex, std::less< int > > RDOmap
Definition
RpcCablingCondData.h:27
RpcCablingCondData::give_RDOs
const RDOmap & give_RDOs(void) const
Definition
RpcCablingCondData.cxx:11
RpcCablingCondData::give_side
bool give_side(const Identifier &compactID, unsigned short int &id) const
Definition
RpcCablingCondData.cxx:45
RpcCablingCondData::give_SLid
bool give_SLid(const Identifier &compactID, unsigned short int &id) const
Definition
RpcCablingCondData.cxx:61
RpcIdHelper
Definition
RpcIdHelper.h:51
Identifier
Definition
IdentifierFieldParser.cxx:14
index
Definition
index.py:1
Generated on
for ATLAS Offline Software by
1.17.0