ATLAS Offline Software
Loading...
Searching...
No Matches
CSC_Hid2RESrcID.cxx
Go to the documentation of this file.
1/*
2 Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration
3*/
4
5#include "CSC_Hid2RESrcID.h"
6
9#include "eformat/SourceIdentifier.h"
10
11using eformat::helper::SourceIdentifier;
12
13#include <cassert>
14
17 uint16_t rodId = rdo->rodId();
18 uint16_t subDetectorId = rdo->subDetectorId();
19
20 return this->getRodID(subDetectorId, rodId);
21}
22
24uint32_t CSC_Hid2RESrcID::getRodID(uint16_t subDetectorId, uint16_t rodId) const{
25 // get Source ID
26 assert(subDetectorId == eformat::MUON_CSC_ENDCAP_C_SIDE || subDetectorId == eformat::MUON_CSC_ENDCAP_A_SIDE);
27
28 assert(m_cabling->is_rodId(rodId));
29
30 SourceIdentifier sid(static_cast<eformat::SubDetector>(subDetectorId), static_cast<uint16_t>(rodId));
31 return sid.code();
32}
33
35uint32_t CSC_Hid2RESrcID::getRodID(const Identifier& offlineId) const {
36 int eta = m_cscIdHelper->stationEta(offlineId);
37 int phi = m_cscIdHelper->stationPhi(offlineId);
38 uint16_t subDetectorId = (eta == -1) ? eformat::MUON_CSC_ENDCAP_C_SIDE : eformat::MUON_CSC_ENDCAP_A_SIDE;
39 uint16_t rodId = uint16_t(phi - 1);
40 // if(offlineId >= 0x10 && offlineId <= 0x1F) rodId = 0x10 +
41 uint16_t onlineRodId = 0x0;
42 bool check = m_cabling->onlineId(rodId, onlineRodId);
43 assert(check);
44 if (!check) onlineRodId = 0xFFFF;
45 return this->getRodID(subDetectorId, onlineRodId);
46}
47
49uint32_t CSC_Hid2RESrcID::getRobID(uint32_t rod_id) const {
50 uint32_t rob_id = rod_id;
51
53 if (rod_id == 0x0069000a)
54 rob_id = 0x0;
55 else if (rod_id == 0x0069000c)
56 rob_id = 0x1;
57 }
58
59 return rob_id;
60}
61
64 uint16_t sub_detector[] = {eformat::MUON_CSC_ENDCAP_C_SIDE, eformat::MUON_CSC_ENDCAP_A_SIDE};
65
66 m_robIDs.clear();
67
68 for (uint16_t i = 0; i < m_cabling->nSide(); ++i) {
69 uint16_t rodId = (m_cabling->nROD() == 8) ? 0 : 16;
70 // for (uint16_t rodId=0; rodId<m_cabling->nROD(); ++rodId) {
71 for (unsigned int j = 0; j < m_cabling->nROD(); ++j) {
72 uint16_t onlineRodId = 0x0;
73 bool check = m_cabling->onlineId(rodId, onlineRodId);
74 assert(check);
75 if (!check) onlineRodId = 0xFFFF;
76 uint32_t theROD = this->getRodID(sub_detector[i], onlineRodId);
77
78 if (m_isCosmic) {
79 int jj = i * 8 + rodId;
80 if (jj == 8)
81 theROD = 0x0069000a;
82 else if (jj == 9)
83 theROD = 0x0069000c;
84 }
85
86 uint32_t theROB = this->getRobID(theROD);
87
88 m_robIDs.push_back(theROB);
89 ++rodId;
90 }
91 }
92}
93
95uint32_t CSC_Hid2RESrcID::getRosID(uint32_t rob_id) const{
96 // Change Module Type to ROS, moduleid = 0
97 SourceIdentifier id(rob_id);
98 SourceIdentifier id2(id.subdetector_id(), 0);
99
100 // return Source ID
101 return id2.code();
102}
103
105uint32_t CSC_Hid2RESrcID::getDetID(uint32_t ros_id) const{
106 // ROS to DET
107 SourceIdentifier id(ros_id);
108 SourceIdentifier id2(id.subdetector_id(), 0);
109
110 // return Source ID
111 return id2.code();
112}
Scalar eta() const
pseudorapidity method
Scalar phi() const
phi method
HWIdentifier id2
std::vector< uint32_t > m_robIDs
uint32_t getRosID(uint32_t rob_id) const
Make a ROS Source ID from a ROB source ID.
CSCcablingSvc * m_cabling
const CscIdHelper * m_cscIdHelper
uint32_t getRobID(uint32_t rod_id) const
Make a ROB Source ID from a ROD source ID.
uint32_t getRodID(const CscRawDataCollection *rdo) const
Make a ROD Source ID for CSC RDO.
uint32_t getDetID(uint32_t ros_id) const
Make a SubDetector ID from ROS source ID.
void fillAllRobIds()
fill all the ROB ids
Collection of CSC Raw Hits, arranged according to CSC Detector Elements Author: Ketevi A.
uint16_t subDetectorId() const