42 edm::LogError(
"L1T|EMTF") <<
"Payload size in 'RPC Data Record' is different than expected";
46 for (
unsigned int i = 0;
i < 4;
i++) {
49 edm::LogError(
"L1T|EMTF") <<
"Payload[" << i <<
"] has more than 16 bits in 'RPC Data Record'";
61 edm::LogError(
"L1T|EMTF") <<
"Format identifier bits in RPCa are incorrect";
65 edm::LogError(
"L1T|EMTF") <<
"Format identifier bits in RPCb are incorrect";
69 edm::LogError(
"L1T|EMTF") <<
"Format identifier bits in RPCc are incorrect";
73 edm::LogError(
"L1T|EMTF") <<
"Format identifier bits in RPCd are incorrect";
99 sector = (link != 0 ? evt_sector : (evt_sector == 1 ? 6 : evt_sector - 1));
100 subsector = (link != 0 ? link : 6);
101 neighbor = (link == 0 ? 1 : 0);
102 segment = (word % 2);
105 station = (word < 2 ? 1 : 2);
107 }
else if (frame == 1) {
109 ring = (word < 2 ? 2 : 3);
110 }
else if (frame == 2) {
112 ring = (word < 2 ? 2 : 3);
139 int iOut = res->size() - 1;
168 int _station, _ring, _sector, _subsector, _neighbor, _segment;
175 (res->at(iOut)).PtrEventHeader()->Sector(),
181 int _sector_rpc = (_subsector < 5) ? _sector : (_sector % 6) + 1;
183 int _subsector_rpc = ((_subsector + 1) % 6) + 1;
185 int _chamber = (_sector_rpc - 1) * 6 + _subsector_rpc;
187 int _subsector_csc = (_station != 1) ? 0 : ((_chamber % 6 > 2) ? 1 : 2);
202 ImportRPC(Hit_, RPC_, (res->at(iOut)).PtrEventHeader()->Endcap(), (res->at(iOut)).PtrEventHeader()->Sector());
209 bool exact_duplicate =
false;
210 for (
auto const& iHit : *res_hit) {
211 if (Hit_.
BX() == iHit.BX() && Hit_.
Endcap() == iHit.Endcap() && Hit_.
Station() == iHit.Station() &&
212 Hit_.
Chamber() == iHit.Chamber()) {
213 if ((iHit.Is_CSC() == 1 && iHit.Ring() == 2) ||
214 (iHit.Is_RPC() == 1)) {
215 if (Hit_.
Neighbor() == iHit.Neighbor()) {
217 if (iHit.Is_RPC() == 1 && iHit.Ring() == Hit_.
Ring() && iHit.Theta_fp() == Hit_.
Theta_fp() &&
218 iHit.Phi_fp() == Hit_.
Phi_fp()) {
219 exact_duplicate =
true;
227 edm::LogWarning(
"L1T|EMTF") <<
"EMTF unpacked duplicate CPPF digis: BX " << Hit_.
BX() <<
", endcap "
229 <<
", neighbor " << Hit_.
Neighbor() <<
", ring " << Hit_.
Ring() <<
", chamber "
231 << Hit_.
Phi_fp() / 4 << std::endl;
233 (res->at(iOut)).push_RPC(RPC_);
234 if (!exact_duplicate)
235 res_hit->push_back(Hit_);
236 if (!exact_duplicate)
void set_subsector_RPC(int bits)
void set_neighbor(int bits)
const std::vector< uint32_t > & payload() const
void set_stub_num(int bits)
void set_station(int bits)
void convert_RPC_location(int &station, int &ring, int §or, int &subsector, int &neighbor, int &segment, const int evt_sector, const int frame, const int word, const int link)
bool unpack(const Block &block, UnpackerCollections *coll) override
Log< level::Error, false > LogError
void ImportRPC(EMTFHit &_hit, const l1t::emtf::RPC _RPC, const int _endcap, const int _evt_sector)
void set_bt_segment(int bits)
CPPFDigi CreateCPPFDigi() const
std::vector< EMTFHit > EMTFHitCollection
std::vector< EMTFDaqOut > EMTFDaqOutCollection
void set_pc_segment(int bits)
void set_fs_segment(int bits)
void set_sector_RPC(int bits)
void set_sector(int bits)
#define DEFINE_L1T_UNPACKER(type)
void set_rpc_bxn(int bits)
uint16_t GetHexBits(uint16_t word, uint16_t lowBit, uint16_t highBit)
Log< level::Warning, false > LogWarning
void set_chamber(int bits)
virtual int checkFormat(const Block &block)
void set_subsector(int bits)
std::vector< CPPFDigi > CPPFDigiCollection