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);
107 }
else if (
frame == 1) {
110 }
else if (
frame == 2) {
126 bool run3_DAQ_format =
130 int nTPs = run3_DAQ_format ? 2 : 1;
144 for (
int i = 1;
i <= nTPs;
i++) {
149 int iOut =
res->size() - 1;
162 if (run3_DAQ_format) {
202 int _station, _ring, _sector, _subsector, _neighbor, _segment;
209 (
res->at(iOut)).PtrEventHeader()->Sector(),
215 int _sector_rpc = (_subsector < 5) ? _sector : (_sector % 6) + 1;
217 int _subsector_rpc = ((_subsector + 1) % 6) + 1;
219 int _chamber = (_sector_rpc - 1) * 6 + _subsector_rpc;
221 int _subsector_csc = (_station != 1) ? 0 : ((_chamber % 6 > 2) ? 1 : 2);
236 ImportRPC(Hit_, RPC_, (
res->at(iOut)).PtrEventHeader()->Endcap(), (
res->at(iOut)).PtrEventHeader()->Sector());
243 bool exact_duplicate =
false;
244 for (
auto const& iHit : *res_hit) {
245 if (Hit_.
BX() == iHit.BX() && Hit_.
Endcap() == iHit.Endcap() && Hit_.
Station() == iHit.Station() &&
246 Hit_.
Chamber() == iHit.Chamber()) {
247 if ((iHit.Is_CSC() == 1 && iHit.Ring() == 2) ||
248 (iHit.Is_RPC() == 1)) {
249 if (Hit_.
Neighbor() == iHit.Neighbor()) {
251 if (iHit.Is_RPC() == 1 && iHit.Ring() == Hit_.
Ring() && iHit.Theta_fp() == Hit_.
Theta_fp() &&
252 iHit.Phi_fp() == Hit_.
Phi_fp()) {
253 exact_duplicate =
true;
261 if (Hit_.
BX() > 3
or Hit_.
BX() < -3) {
262 edm::LogWarning(
"L1T|EMTF") <<
"EMTF unpacked CPPF digis with out-of-range BX! BX " << Hit_.
BX()
263 <<
", endcap " << Hit_.
Endcap() <<
", station " << Hit_.
Station() <<
", sector " 266 <<
", phi " << Hit_.
Phi_fp() / 4 << std::endl;
271 edm::LogWarning(
"L1T|EMTF") <<
"EMTF unpacked duplicate CPPF digis: BX " << Hit_.
BX() <<
", endcap " 272 << Hit_.
Endcap() <<
", station " << Hit_.
Station() <<
", sector " 275 <<
", phi " << Hit_.
Phi_fp() / 4 << std::endl;
277 (
res->at(iOut)).push_RPC(RPC_);
278 if (!exact_duplicate)
279 res_hit->push_back(Hit_);
280 if (!exact_duplicate)
void set_subsector_RPC(int bits)
void set_neighbor(int bits)
unsigned int getAlgoVersion()
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)
CPPFDigi CreateCPPFDigi() const
void set_bt_segment(int bits)
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
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