diff --git a/MuonSpectrometer/MuonCnv/MuonTGC_CnvTools/src/TgcByteStreamData.h b/MuonSpectrometer/MuonCnv/MuonTGC_CnvTools/src/TgcByteStreamData.h index b9eaf324e069725b5919bfefe9b8df44e382dfc3..fb063e87731f245a1013ffb76fbd6f2374add108 100644 --- a/MuonSpectrometer/MuonCnv/MuonTGC_CnvTools/src/TgcByteStreamData.h +++ b/MuonSpectrometer/MuonCnv/MuonTGC_CnvTools/src/TgcByteStreamData.h @@ -263,7 +263,8 @@ struct TGC_BYTESTREAM_NSL_EIFI { unsigned ei: 8; unsigned fi: 8; - unsigned fill1: 6; + unsigned chamberid: 2; + unsigned fill1: 4; unsigned bcBitmap: 2; unsigned sector: 4; unsigned fwd: 1; diff --git a/MuonSpectrometer/MuonRDO/MuonRDO/TgcL1RawData.h b/MuonSpectrometer/MuonRDO/MuonRDO/TgcL1RawData.h index 474705ead0b539503137a54d9c6f72ac6355d41a..6c0629bba8d8ad6d7327107d46025ef0d782d666 100755 --- a/MuonSpectrometer/MuonRDO/MuonRDO/TgcL1RawData.h +++ b/MuonSpectrometer/MuonRDO/MuonRDO/TgcL1RawData.h @@ -25,7 +25,11 @@ public: enum DataType { TYPE_HIPT, - TYPE_NSL, + TYPE_NSL_ROI, + TYPE_NSL_NSW, + TYPE_NSL_RPC, + TYPE_NSL_EIFI, + TYPE_NSL_TMDB, TYPE_UNKNOWN }; @@ -65,28 +69,79 @@ public: int16_t delta, uint16_t inner); - // Sector logic + // New Sector logic + // RoI TgcL1RawData(uint16_t bcTag, uint16_t subDetectorId, uint16_t srodId, uint16_t l1Id, uint16_t bcId, - bool cand3plus, bool forward, uint16_t sector, - uint16_t index, + uint16_t coinflag, bool muplus, uint16_t threshold, - bool overlap, - bool veto, uint16_t roi); + // NSW + TgcL1RawData(uint16_t bcTag, + uint16_t subDetectorId, + uint16_t srodId, + uint16_t l1Id, + uint16_t bcId, + bool forward, + uint16_t sector, + uint16_t nsweta, + uint16_t nswphi, + uint16_t nswcand, + uint16_t nswdtheta, + uint16_t nswphires, + uint16_t nswlowres, + uint16_t nswid); + +// RPC BIS78 + TgcL1RawData(uint16_t bcTag, + uint16_t subDetectorId, + uint16_t srodId, + uint16_t l1Id, + uint16_t bcId, + bool forward, + uint16_t sector, + uint16_t rpceta, + uint16_t rpcphi, + uint16_t rpcflag, + uint16_t rpcdeta, + uint16_t rpcdphi); + +// EIFI + TgcL1RawData(uint16_t bcTag, + uint16_t subDetectorId, + uint16_t srodId, + uint16_t l1Id, + uint16_t bcId, + bool forward, + uint16_t sector, + uint16_t ei, + uint16_t fi, + uint16_t cid); // chamber ID + +// TMDB + TgcL1RawData(uint16_t bcTag, + uint16_t subDetectorId, + uint16_t srodId, + uint16_t l1Id, + uint16_t bcId, + bool forward, + uint16_t sector, + uint16_t mod, + uint16_t bcid); + // Destructor virtual ~TgcL1RawData() = default; // return Information Type Hit:Coincidence bool isCoincidence() const { - return m_type == TYPE_HIPT || m_type == TYPE_NSL; + return m_type == TYPE_HIPT || m_type == TYPE_NSL_ROI; } /*********** common accessors @@ -280,14 +335,42 @@ private: bool m_strip; uint16_t m_inner; - // Sector Logic + // New Sector Logic + // RoI bool m_cand3plus; bool m_muplus; uint16_t m_threshold; bool m_overlap; bool m_veto; uint16_t m_roi; - + uint16_t m_coinflag; + + // NSW + uint16_t m_nsweta; + uint16_t m_nswphi; + uint16_t m_nswsl; + uint16_t m_nswcand; + uint16_t m_nswdtheta; + uint16_t m_nswphires; + uint16_t m_nswlowres; + uint16_t m_nswid; + + // RPC BIS78 + uint16_t m_rpceta; + uint16_t m_rpcphi; + uint16_t m_rpcflag; + uint16_t m_rpcdeta; + uint16_t m_rpcdphi; + + // EIFI + uint16_t m_ei; + uint16_t m_fi; + uint16_t m_cid; + + // TMDB + uint16_t m_tmdbmod; + uint16_t m_tmdbbcid; + }; /**Overload of << operator for MsgStream for debug output*/ diff --git a/MuonSpectrometer/MuonRDO/src/TgcL1RawData.cxx b/MuonSpectrometer/MuonRDO/src/TgcL1RawData.cxx index 774dc475fd016da242600aa02a5769a692fca628..f105f8e3a723c10f88b5df4155535758e42a323a 100755 --- a/MuonSpectrometer/MuonRDO/src/TgcL1RawData.cxx +++ b/MuonSpectrometer/MuonRDO/src/TgcL1RawData.cxx @@ -19,7 +19,7 @@ void TgcL1RawData::clear(uint16_t bcTag, m_bitpos = 0; m_tracklet = 0; m_adjacent = false; - m_type = TYPE_NSL; + m_type = TYPE_NSL_ROI; m_forward = false; m_index = 0; m_pos = 0; @@ -91,41 +91,135 @@ TgcL1RawData::TgcL1RawData(uint16_t bcTag, m_inner = inner; } -// Sector logic +// New Sector logic +// RoI TgcL1RawData::TgcL1RawData(uint16_t bcTag, uint16_t subDetectorId, uint16_t srodId, uint16_t l1Id, uint16_t bcId, - bool cand3plus, bool forward, uint16_t sector, - uint16_t index, + uint16_t coinflag, bool muplus, uint16_t threshold, - bool overlap, - bool veto, uint16_t roi) { clear(bcTag, subDetectorId, srodId, l1Id, bcId); - m_type = TYPE_NSL; - m_cand3plus = cand3plus; + m_type = TYPE_NSL_ROI; m_forward = forward; m_sector = sector; - m_index = index; + m_coinflag = coinflag; m_muplus = muplus; m_threshold = threshold; - m_overlap = overlap; - m_veto = veto; m_roi = roi; } +// NSW +TgcL1RawData::TgcL1RawData(uint16_t bcTag, + uint16_t subDetectorId, + uint16_t srodId, + uint16_t l1Id, + uint16_t bcId, + bool forward, + uint16_t sector, + uint16_t nsweta, + uint16_t nswphi, + uint16_t nswcand, + uint16_t nswdtheta, + uint16_t nswphires, + uint16_t nswlowres, + uint16_t nswid) +{ + clear(bcTag, subDetectorId, srodId, l1Id, bcId); + m_type = TYPE_NSL_NSW; + m_forward = forward; + m_sector = sector; + m_nsweta = nsweta; + m_nswphi = nswphi; + m_nswcand = nswcand; + m_nswdtheta = nswdtheta; + m_nswphires = nswphires; + m_nswlowres = nswlowres; + m_nswid = nswid; +} + +// RPC BIS78 +TgcL1RawData::TgcL1RawData(uint16_t bcTag, + uint16_t subDetectorId, + uint16_t srodId, + uint16_t l1Id, + uint16_t bcId, + bool forward, + uint16_t sector, + uint16_t rpceta, + uint16_t rpcphi, + uint16_t rpcflag, + uint16_t rpcdeta, + uint16_t rpcdphi) +{ + clear(bcTag, subDetectorId, srodId, l1Id, bcId); + m_type = TYPE_NSL_NSW; + m_forward = forward; + m_sector = sector; + m_rpceta = rpceta; + m_rpcphi = rpcphi; + m_rpcflag = rpcflag; + m_rpcdeta = rpcdeta; + m_rpcdphi = rpcdphi; +} + +// EIFI +TgcL1RawData::TgcL1RawData(uint16_t bcTag, + uint16_t subDetectorId, + uint16_t srodId, + uint16_t l1Id, + uint16_t bcId, + bool forward, + uint16_t sector, + uint16_t ei, + uint16_t fi, + uint16_t cid) +{ + clear(bcTag, subDetectorId, srodId, l1Id, bcId); + m_type = TYPE_NSL_NSW; + m_forward = forward; + m_sector = sector; + m_ei = ei; + m_fi = fi; + m_cid = cid; +} + +// TMDB +TgcL1RawData::TgcL1RawData(uint16_t bcTag, + uint16_t subDetectorId, + uint16_t srodId, + uint16_t l1Id, + uint16_t bcId, + bool forward, + uint16_t sector, + uint16_t mod, + uint16_t bcid) +{ + clear(bcTag, subDetectorId, srodId, l1Id, bcId); + m_type = TYPE_NSL_NSW; + m_forward = forward; + m_sector = sector; + m_tmdbmod = mod; + m_tmdbbcid = bcid; +} + + void TgcL1RawData::setType(uint16_t type) { switch (type) { case 3: m_type = TYPE_HIPT; break; - case 5: m_type = TYPE_NSL; break; + case 5: m_type = TYPE_NSL_ROI; break; + case 6: m_type = TYPE_NSL_NSW; break; + case 7: m_type = TYPE_NSL_RPC; break; + case 8: m_type = TYPE_NSL_EIFI; break; + case 9: m_type = TYPE_NSL_TMDB; break; default: m_type = TYPE_UNKNOWN; break; } } @@ -135,7 +229,7 @@ std::string TgcL1RawData::typeName(TgcL1RawData::DataType type) switch (type) { case TYPE_HIPT: return "High pT"; break; - case TYPE_NSL: return "New Sector Logic"; break; + case TYPE_NSL_ROI: return "TGC RoI"; break; default: return ""; } } @@ -163,11 +257,10 @@ stream& dump(stream& sl, const TgcL1RawData& data) << ", delta=" << data.delta() << ", inner=" << data.inner(); break; - case TgcL1RawData::TYPE_NSL: - sl << ", cand3plus=" << data.cand3plus() + case TgcL1RawData::TYPE_NSL_ROI: + sl << ", forward=" << data.isForward() << ", sector=" << data.sector() - << ", cand=" << data.index() << ", sign=" << data.isMuplus() << ", threshold=" << data.threshold() << ", overlap=" << data.isOverlap()