diff --git a/DataFormats/L1Scouting/interface/OrbitCollection.h b/DataFormats/L1Scouting/interface/OrbitCollection.h index d9d2c34ca75a9..3bdbf49fc850d 100644 --- a/DataFormats/L1Scouting/interface/OrbitCollection.h +++ b/DataFormats/L1Scouting/interface/OrbitCollection.h @@ -78,7 +78,7 @@ class OrbitCollection { } // get number of objects stored in a BX - int getBxSize(unsigned bx) const { + unsigned getBxSize(unsigned bx) const { if (bx >= orbitBufferSize_) { cms::Exception("OrbitCollection") << "Called getBxSize() of a bx out of the orbit range." << " BX = " << bx; diff --git a/DataFormats/L1Scouting/test/read_L1Scouting_cfg.py b/DataFormats/L1Scouting/test/read_L1Scouting_cfg.py index 3153934b8106a..feb57aaa26ae5 100644 --- a/DataFormats/L1Scouting/test/read_L1Scouting_cfg.py +++ b/DataFormats/L1Scouting/test/read_L1Scouting_cfg.py @@ -27,4 +27,4 @@ ) process.path = cms.Path(process.l1ScoutingTestAnalyzer) -process.endPath = cms.EndPath(process.out) \ No newline at end of file +process.endPath = cms.EndPath(process.out) diff --git a/DataFormats/L1ScoutingRawData/interface/SDSNumbering.h b/DataFormats/L1ScoutingRawData/interface/SDSNumbering.h index 354131e56e4ed..5e023cb43f004 100644 --- a/DataFormats/L1ScoutingRawData/interface/SDSNumbering.h +++ b/DataFormats/L1ScoutingRawData/interface/SDSNumbering.h @@ -19,6 +19,8 @@ class SDSNumbering { static constexpr int GtSDSID = 4; static constexpr int BmtfMinSDSID = 10; static constexpr int BmtfMaxSDSID = 21; + static constexpr int CaloTCPMinSDSID = 22; + static constexpr int CaloTCPMaxSDSID = 29; }; -#endif // L1ScoutingRawData_SDSNumbering_h \ No newline at end of file +#endif // L1ScoutingRawData_SDSNumbering_h diff --git a/EventFilter/L1ScoutingRawToDigi/interface/blocks.h b/EventFilter/L1ScoutingRawToDigi/interface/blocks.h index bb614e82e875a..940131fc8f942 100644 --- a/EventFilter/L1ScoutingRawToDigi/interface/blocks.h +++ b/EventFilter/L1ScoutingRawToDigi/interface/blocks.h @@ -22,8 +22,8 @@ namespace l1ScoutingRun3 { namespace demux { - // unrolled frame block - struct block { + // unrolled DMA block + struct dmaBlock { uint32_t header; uint32_t bx; uint32_t orbit; @@ -44,7 +44,27 @@ namespace l1ScoutingRun3 { uint32_t link7; uint32_t tau1[6]; }; + + struct caloObjTcpBlock { + uint32_t header; + uint32_t bx; + uint32_t orbit; + uint32_t obj[12]; + }; + + struct caloSumTcpBlock { + uint32_t bx; + uint32_t orbit; + uint32_t sum[6]; + }; + } // namespace demux + namespace bmtf { + struct block { + uint64_t stub[8]; + }; + } // namespace bmtf + } // namespace l1ScoutingRun3 #endif // L1ScoutingRawToDigi_blocks_h diff --git a/EventFilter/L1ScoutingRawToDigi/plugins/ScCALORawToDigi.cc b/EventFilter/L1ScoutingRawToDigi/plugins/ScCALORawToDigi.cc index b635d82c66375..61a6d26e26466 100644 --- a/EventFilter/L1ScoutingRawToDigi/plugins/ScCALORawToDigi.cc +++ b/EventFilter/L1ScoutingRawToDigi/plugins/ScCALORawToDigi.cc @@ -3,9 +3,11 @@ ScCaloRawToDigi::ScCaloRawToDigi(const edm::ParameterSet& iConfig) { using namespace edm; using namespace l1ScoutingRun3; - srcInputTag = iConfig.getParameter("srcInputTag"); - enableAllSums_ = iConfig.getUntrackedParameter("enableAllSums", false); + srcInputTag_ = iConfig.getParameter("srcInputTag"); + enableAllSums_ = iConfig.getParameter("enableAllSums"); debug_ = iConfig.getUntrackedParameter("debug", false); + dataSourceConfig_ = iConfig.getParameter("dataSource"); + rawToken_ = consumes(srcInputTag_); orbitBufferJets_ = std::vector>(3565); orbitBufferEGammas_ = std::vector>(3565); @@ -17,12 +19,10 @@ ScCaloRawToDigi::ScCaloRawToDigi(const edm::ParameterSet& iConfig) { nTausOrbit_ = 0; nEtSumsOrbit_ = 0; - produces().setBranchAlias("JetOrbitCollection"); - produces().setBranchAlias("TauOrbitCollection"); - produces().setBranchAlias("EGammaOrbitCollection"); - produces().setBranchAlias("BxSumsOrbitCollection"); - - rawToken = consumes(srcInputTag); + produces("Jet").setBranchAlias("JetOrbitCollection"); + produces("Tau").setBranchAlias("TauOrbitCollection"); + produces("EGamma").setBranchAlias("EGammaOrbitCollection"); + produces("EtSum").setBranchAlias("BxSumsOrbitCollection"); } ScCaloRawToDigi::~ScCaloRawToDigi(){}; @@ -32,22 +32,46 @@ void ScCaloRawToDigi::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) using namespace l1ScoutingRun3; Handle ScoutingRawDataCollection; - iEvent.getByToken(rawToken, ScoutingRawDataCollection); - - const FEDRawData& sourceRawData = ScoutingRawDataCollection->FEDData(SDSNumbering::CaloSDSID); - size_t orbitSize = sourceRawData.size(); + iEvent.getByToken(rawToken_, ScoutingRawDataCollection); std::unique_ptr unpackedJets(new JetOrbitCollection); std::unique_ptr unpackedTaus(new TauOrbitCollection); std::unique_ptr unpackedEGammas(new EGammaOrbitCollection); std::unique_ptr unpackedEtSums(new BxSumsOrbitCollection); - if ((sourceRawData.size() == 0) && debug_) { - std::cout << "No raw data for CALO source\n"; - } + // reset counters + nJetsOrbit_ = 0; + nEGammasOrbit_ = 0; + nTausOrbit_ = 0; + nEtSumsOrbit_ = 0; + + std::string dataSourceMode = dataSourceConfig_.getParameter("dataSourceMode"); + if (dataSourceMode == "DMA") { + // Packet from DMA contains all the objects + int sourceId = dataSourceConfig_.getParameter("dmaSourceId"); + if (sourceId != SDSNumbering::CaloSDSID) + edm::LogWarning("ScCaloRawToDIgi::produce") << "Provided an unexpected source ID: " << sourceId << "/" + << SDSNumbering::CaloSDSID << " [provided/expected]"; + unpackOrbitFromDMA(ScoutingRawDataCollection, sourceId); + } else if (dataSourceMode == "TCP") { + // unpack jets + jetSourceIdList_ = dataSourceConfig_.getParameter>("jetSourceIdList"); + unpackTcpData(ScoutingRawDataCollection, jetSourceIdList_, CaloObjectType::Jet); + + // unpack e/gamma + eGammaSourceIdList_ = dataSourceConfig_.getParameter>("eGammaSourceIdList"); + unpackTcpData(ScoutingRawDataCollection, eGammaSourceIdList_, CaloObjectType::EGamma); + + // unpack taus + tauSourceIdList_ = dataSourceConfig_.getParameter>("tauSourceIdList"); + unpackTcpData(ScoutingRawDataCollection, tauSourceIdList_, CaloObjectType::Tau); - // unpack current orbit and store data into the orbitBufferr - unpackOrbit(sourceRawData.data(), orbitSize); + // unpack et sums + etSumSourceIdList_ = dataSourceConfig_.getParameter>("etSumSourceIdList"); + unpackTcpData(ScoutingRawDataCollection, etSumSourceIdList_, CaloObjectType::EtSum); + } else { + throw cms::Exception("ScCaloRawToDIgi::produce") << "Unknown data source mode. Use DMA or TCP(default)."; + } // fill orbit collection and clear the Bx buffer vector unpackedJets->fillAndClear(orbitBufferJets_, nJetsOrbit_); @@ -56,28 +80,31 @@ void ScCaloRawToDigi::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) unpackedEtSums->fillAndClear(orbitBufferEtSums_, nEtSumsOrbit_); // store collections in the event - iEvent.put(std::move(unpackedJets)); - iEvent.put(std::move(unpackedTaus)); - iEvent.put(std::move(unpackedEGammas)); - iEvent.put(std::move(unpackedEtSums)); + iEvent.put(std::move(unpackedJets), "Jet"); + iEvent.put(std::move(unpackedTaus), "Tau"); + iEvent.put(std::move(unpackedEGammas), "EGamma"); + iEvent.put(std::move(unpackedEtSums), "EtSum"); } -void ScCaloRawToDigi::unpackOrbit(const unsigned char* buf, size_t len) { +void ScCaloRawToDigi::unpackOrbitFromDMA(edm::Handle& ScoutingRawDataCollection, int sourceId) { using namespace l1ScoutingRun3; - // reset counters - nJetsOrbit_ = 0; - nEGammasOrbit_ = 0; - nTausOrbit_ = 0; - nEtSumsOrbit_ = 0; + const FEDRawData& sourceRawData = ScoutingRawDataCollection->FEDData(sourceId); + if ((sourceRawData.size() == 0) && debug_) { + std::cout << "No raw data for CALO DMA source ID=" << sourceId << std::endl; + } + + // get orbit size and raw data + size_t len = sourceRawData.size(); + const unsigned char* buf = sourceRawData.data(); size_t pos = 0; while (pos < len) { - assert(pos + sizeof(demux::block) <= len); + assert(pos + sizeof(demux::dmaBlock) <= len); - demux::block* bl = (demux::block*)(buf + pos); - pos += sizeof(demux::block); + demux::dmaBlock* bl = (demux::dmaBlock*)(buf + pos); + pos += sizeof(demux::dmaBlock); assert(pos <= len); uint32_t orbit = bl->orbit & 0x7FFFFFFF; @@ -90,32 +117,32 @@ void ScCaloRawToDigi::unpackOrbit(const unsigned char* buf, size_t len) { // unpack jets from first link if (debug_) std::cout << "--- Jets link 1 ---\n"; - unpackLinkJets(bl->jet1, bx); + unpackJets(bl->jet1, bx, 6); // unpack jets from second link if (debug_) std::cout << "--- Jets link 2 ---\n"; - unpackLinkJets(bl->jet2, bx); + unpackJets(bl->jet2, bx, 6); // unpack eg from first link if (debug_) std::cout << "--- E/g link 1 ---\n"; - unpackLinkEGammas(bl->egamma1, bx); + unpackEGammas(bl->egamma1, bx, 6); // unpack eg from second link link if (debug_) std::cout << "--- E/g link 2 ---\n"; - unpackLinkEGammas(bl->egamma2, bx); + unpackEGammas(bl->egamma2, bx, 6); // unpack taus from first link if (debug_) std::cout << "--- Taus link 1 ---\n"; - unpackLinkTaus(bl->tau1, bx); + unpackTaus(bl->tau1, bx, 6); // unpack taus from second link if (debug_) std::cout << "--- Taus link 2 ---\n"; - unpackLinkTaus(bl->tau2, bx); + unpackTaus(bl->tau2, bx, 6); // unpack et sums if (debug_) @@ -125,11 +152,85 @@ void ScCaloRawToDigi::unpackOrbit(const unsigned char* buf, size_t len) { } // end of bx objects } -void ScCaloRawToDigi::unpackLinkJets(uint32_t* dataBlock, int bx) { +void ScCaloRawToDigi::unpackTcpData(edm::Handle& ScoutingRawDataCollection, + std::vector sourceList, + CaloObjectType dataType) { + using namespace l1ScoutingRun3; + for (const int& sourceId : sourceList) { + if ((sourceId < SDSNumbering::CaloTCPMinSDSID) || (sourceId > SDSNumbering::CaloTCPMaxSDSID)) { + edm::LogWarning("ScCaloRawToDIgi::unpackTCPData") + << "Source ID outside the expected range " << sourceId << "/[" << SDSNumbering::CaloTCPMinSDSID << "-" + << SDSNumbering::CaloTCPMaxSDSID << "]" + << " [provided/expected range]"; + } + const FEDRawData& sourceRawData = ScoutingRawDataCollection->FEDData(sourceId); + size_t orbitSize = sourceRawData.size(); + + if ((sourceRawData.size() == 0) && debug_) { + //std::cout << "No raw data for calo " << CaloObjTypeTxt[dataType] << ", TCP source ID=" << sourceId << std::endl; + std::cout << "No raw data for calo TCP source ID=" << sourceId << std::endl; + } + + unpackOrbitFromTCP(sourceRawData.data(), orbitSize, dataType); + } +} + +void ScCaloRawToDigi::unpackOrbitFromTCP(const unsigned char* buf, size_t len, CaloObjectType dataType) { + using namespace l1ScoutingRun3; + size_t pos = 0; + + while (pos < len) { + // frame header is present + assert(pos + 4 <= len); + + // unpack calo sums block + if (dataType == CaloObjectType::EtSum) { + demux::caloSumTcpBlock* bl = (demux::caloSumTcpBlock*)(buf + pos); + pos += sizeof(demux::caloSumTcpBlock); + assert(pos <= len); + if (debug_) + std::cout << "Sums BX -> " << bl->bx << std::endl; + unpackEtSums(bl->sum, bl->bx); + } else { + // unpack jet/eg/tau + demux::caloObjTcpBlock* bl = (demux::caloObjTcpBlock*)(buf + pos); + int nObj = (bl->header) & 0xff; + pos += 12 + nObj * 4; + + switch (dataType) { + case CaloObjectType::Jet: + if (debug_) + std::cout << "Jets BX -> " << bl->bx << std::endl; + unpackJets(bl->obj, bl->bx, nObj); + break; + + case CaloObjectType::EGamma: + if (debug_) + std::cout << "E/Gammas BX -> " << bl->bx << std::endl; + unpackEGammas(bl->obj, bl->bx, nObj); + break; + + case CaloObjectType::Tau: + if (debug_) + std::cout << "Taus BX -> " << bl->bx << std::endl; + unpackTaus(bl->obj, bl->bx, nObj); + break; + + default: + throw cms::Exception("ScCaloRawToDigi::unpackOrbitFromTCP") << "Unknown data type."; + break; + } + + } // unpack sums and calo objects + + } // end of bx objects +} + +void ScCaloRawToDigi::unpackJets(uint32_t* dataBlock, int bx, int nObjets) { using namespace l1ScoutingRun3; int32_t ET(0), Eta(0), Phi(0), Qual(0); - for (uint32_t i = 0; i < 6; i++) { + for (int i = 0; i < nObjets; i++) { ET = ((dataBlock[i] >> demux::shiftsJet::ET) & demux::masksJet::ET); if (ET != 0) { @@ -153,11 +254,11 @@ void ScCaloRawToDigi::unpackLinkJets(uint32_t* dataBlock, int bx) { } // end link jets unpacking loop } -void ScCaloRawToDigi::unpackLinkEGammas(uint32_t* dataBlock, int bx) { +void ScCaloRawToDigi::unpackEGammas(uint32_t* dataBlock, int bx, int nObjets) { using namespace l1ScoutingRun3; int32_t ET(0), Eta(0), Phi(0), Iso(0); - for (uint32_t i = 0; i < 6; i++) { + for (int i = 0; i < nObjets; i++) { ET = ((dataBlock[i] >> demux::shiftsEGamma::ET) & demux::masksEGamma::ET); if (ET != 0) { Eta = ((dataBlock[i] >> demux::shiftsEGamma::eta) & demux::masksEGamma::eta); @@ -180,11 +281,11 @@ void ScCaloRawToDigi::unpackLinkEGammas(uint32_t* dataBlock, int bx) { } // end link e/gammas unpacking loop } -void ScCaloRawToDigi::unpackLinkTaus(uint32_t* dataBlock, int bx) { +void ScCaloRawToDigi::unpackTaus(uint32_t* dataBlock, int bx, int nObjets) { using namespace l1ScoutingRun3; int32_t ET(0), Eta(0), Phi(0), Iso(0); - for (uint32_t i = 0; i < 6; i++) { + for (int i = 0; i < nObjets; i++) { ET = ((dataBlock[i] >> demux::shiftsTau::ET) & demux::masksTau::ET); if (ET != 0) { Eta = ((dataBlock[i] >> demux::shiftsTau::eta) & demux::masksTau::eta); @@ -212,12 +313,12 @@ void ScCaloRawToDigi::unpackEtSums(uint32_t* dataBlock, int bx) { BxSums bxSums; - int32_t ETEt(0), ETEttem(0), ETMinBiasHFP0(0); // ET - int32_t HTEt(0), HTtowerCount(0), HTMinBiasHFM0(0); // HT - int32_t ETmissEt(0), ETmissPhi(0), ETmissASYMET(0), ETmissMinBiasHFP1(0); //ETMiss - int32_t HTmissEt(0), HTmissPhi(0), HTmissASYMHT(0), HTmissMinBiasHFM1(0); // HTMiss - int32_t ETHFmissEt(0), ETHFmissPhi(0), ETHFmissASYMETHF(0), ETHFmissCENT(0); // ETHFMiss - int32_t HTHFmissEt(0), HTHFmissPhi(0), HTHFmissASYMHTHF(0), HTHFmissCENT(0); // HTHFMiss + int32_t ETEt(0), ETEttem(0), ETMinBiasHFP0(0); // ET block + int32_t HTEt(0), HTtowerCount(0), HTMinBiasHFM0(0); // HT block + int32_t ETmissEt(0), ETmissPhi(0), ETmissASYMET(0), ETmissMinBiasHFP1(0); // ETMiss block + int32_t HTmissEt(0), HTmissPhi(0), HTmissASYMHT(0), HTmissMinBiasHFM1(0); // HTMiss block + int32_t ETHFmissEt(0), ETHFmissPhi(0), ETHFmissASYMETHF(0), ETHFmissCENT(0); // ETHFMiss block + int32_t HTHFmissEt(0), HTHFmissPhi(0), HTHFmissASYMHTHF(0), HTHFmissCENT(0); // HTHFMiss block // ET block ETEt = ((dataBlock[0] >> demux::shiftsESums::ETEt) & demux::masksESums::ETEt); @@ -321,8 +422,20 @@ void ScCaloRawToDigi::unpackEtSums(uint32_t* dataBlock, int bx) { void ScCaloRawToDigi::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { edm::ParameterSetDescription desc; - desc.setUnknown(); - descriptions.addDefault(desc); + desc.add("srcInputTag", edm::InputTag("rawDataCollector")); + { + edm::ParameterSetDescription dataSource; + dataSource.add("dataSourceMode", std::string("TCP")); + dataSource.add>("jetSourceIdList", std::vector({22})); + dataSource.add>("eGammaSourceIdList", std::vector({23})); + dataSource.add>("tauSourceIdList", std::vector({25})); + dataSource.add>("etSumSourceIdList", std::vector({24})); + dataSource.add("dmaSourceId", 2); + desc.add("dataSource", dataSource); + } + desc.add("enableAllSums", true); + desc.addUntracked("debug", false); + descriptions.add("ScCaloRawToDigi", desc); } DEFINE_FWK_MODULE(ScCaloRawToDigi); diff --git a/EventFilter/L1ScoutingRawToDigi/plugins/ScCALORawToDigi.h b/EventFilter/L1ScoutingRawToDigi/plugins/ScCALORawToDigi.h index ca1bcd34e1ea3..0c5e457c8cdaa 100644 --- a/EventFilter/L1ScoutingRawToDigi/plugins/ScCALORawToDigi.h +++ b/EventFilter/L1ScoutingRawToDigi/plugins/ScCALORawToDigi.h @@ -20,6 +20,7 @@ #include #include +#include class ScCaloRawToDigi : public edm::stream::EDProducer<> { public: @@ -31,11 +32,17 @@ class ScCaloRawToDigi : public edm::stream::EDProducer<> { private: void produce(edm::Event&, const edm::EventSetup&) override; - void unpackOrbit(const unsigned char* buf, size_t len); + enum class CaloObjectType { Jet, EGamma, Tau, EtSum }; - void unpackLinkJets(uint32_t* dataBlock, int bx); - void unpackLinkEGammas(uint32_t* dataBlock, int bx); - void unpackLinkTaus(uint32_t* dataBlock, int bx); + void unpackOrbitFromDMA(edm::Handle& ScoutingRawDataCollection, int sourceId); + void unpackTcpData(edm::Handle& ScoutingRawDataCollection, + std::vector sourceList, + CaloObjectType dataType); + void unpackOrbitFromTCP(const unsigned char* buf, size_t len, CaloObjectType dataType); + + void unpackJets(uint32_t* dataBlock, int bx, int nObjets); + void unpackEGammas(uint32_t* dataBlock, int bx, int nObjets); + void unpackTaus(uint32_t* dataBlock, int bx, int nObjets); void unpackEtSums(uint32_t* dataBlock, int bx); int nJetsOrbit_, nEGammasOrbit_, nTausOrbit_, nEtSumsOrbit_; @@ -47,7 +54,13 @@ class ScCaloRawToDigi : public edm::stream::EDProducer<> { std::vector> orbitBufferEtSums_; bool debug_ = false; - bool enableAllSums_ = false; - edm::InputTag srcInputTag; - edm::EDGetToken rawToken; + bool enableAllSums_ = false; // write the full sert of ET sums + edm::InputTag srcInputTag_; + edm::EDGetToken rawToken_; + std::string dataSourceMode_; // data from TCP / DMA + edm::ParameterSet dataSourceConfig_; + std::vector jetSourceIdList_; + std::vector eGammaSourceIdList_; + std::vector tauSourceIdList_; + std::vector etSumSourceIdList_; }; diff --git a/EventFilter/L1ScoutingRawToDigi/plugins/ScGMTRawToDigi.cc b/EventFilter/L1ScoutingRawToDigi/plugins/ScGMTRawToDigi.cc index 349c250d4bba2..f7e48fa9aac1e 100644 --- a/EventFilter/L1ScoutingRawToDigi/plugins/ScGMTRawToDigi.cc +++ b/EventFilter/L1ScoutingRawToDigi/plugins/ScGMTRawToDigi.cc @@ -3,6 +3,7 @@ ScGMTRawToDigi::ScGMTRawToDigi(const edm::ParameterSet& iConfig) { using namespace edm; srcInputTag = iConfig.getParameter("srcInputTag"); + skipInterm_ = iConfig.getParameter("skipInterm"); debug_ = iConfig.getUntrackedParameter("debug", false); // initialize orbit buffer for BX 1->3564; @@ -12,7 +13,7 @@ ScGMTRawToDigi::ScGMTRawToDigi(const edm::ParameterSet& iConfig) { } nMuonsOrbit_ = 0; - produces().setBranchAlias("MuonOrbitCollection"); + produces("Muon").setBranchAlias("MuonOrbitCollection"); rawToken = consumes(srcInputTag); } @@ -40,7 +41,7 @@ void ScGMTRawToDigi::produce(edm::Event& iEvent, const edm::EventSetup& iSetup) unpackedMuons->fillAndClear(orbitBuffer_, nMuonsOrbit_); // store collection in the event - iEvent.put(std::move(unpackedMuons)); + iEvent.put(std::move(unpackedMuons), "Muon"); } void ScGMTRawToDigi::unpackOrbit(const unsigned char* buf, size_t len) { @@ -78,7 +79,7 @@ void ScGMTRawToDigi::unpackOrbit(const unsigned char* buf, size_t len) { for (unsigned int i = 0; i < mAcount + mBcount; i++) { uint32_t interm = (bl->mu[i].extra >> ugmt::shiftsMuon::interm) & ugmt::masksMuon::interm; - if (interm == 1) { + if ((interm == 1) && (skipInterm_)) { if (debug_) { std::cout << " -> Excluding intermediate muon\n"; } @@ -101,9 +102,6 @@ void ScGMTRawToDigi::unpackOrbit(const unsigned char* buf, size_t len) { continue; } uint32_t qual = (bl->mu[i].f >> ugmt::shiftsMuon::qual) & ugmt::masksMuon::qual; - if (qual == 0) { - continue; - } // extract integer value for extrapolated phi int32_t iphiext = ((bl->mu[i].f >> ugmt::shiftsMuon::phiext) & ugmt::masksMuon::phiext); @@ -156,14 +154,14 @@ void ScGMTRawToDigi::unpackOrbit(const unsigned char* buf, size_t len) { } // end of bx } // end orbit while loop - - //muons->flatten(); } void ScGMTRawToDigi::fillDescriptions(edm::ConfigurationDescriptions& descriptions) { edm::ParameterSetDescription desc; - desc.setUnknown(); - descriptions.addDefault(desc); + desc.add("srcInputTag", edm::InputTag("rawDataCollector")); + desc.add("skipInterm", true); + desc.addUntracked("debug", false); + descriptions.add("ScGMTRawToDigi", desc); } DEFINE_FWK_MODULE(ScGMTRawToDigi); diff --git a/EventFilter/L1ScoutingRawToDigi/plugins/ScGMTRawToDigi.h b/EventFilter/L1ScoutingRawToDigi/plugins/ScGMTRawToDigi.h index 8b1622d327304..fd273b28c8e89 100644 --- a/EventFilter/L1ScoutingRawToDigi/plugins/ScGMTRawToDigi.h +++ b/EventFilter/L1ScoutingRawToDigi/plugins/ScGMTRawToDigi.h @@ -39,6 +39,7 @@ class ScGMTRawToDigi : public edm::stream::EDProducer<> { int nMuonsOrbit_; bool debug_ = false; + bool skipInterm_ = true; edm::InputTag srcInputTag; edm::EDGetToken rawToken; }; diff --git a/EventFilter/L1ScoutingRawToDigi/python/ScCaloRawToDigi_cfi.py b/EventFilter/L1ScoutingRawToDigi/python/ScCaloRawToDigi_cfi.py new file mode 100644 index 0000000000000..26bcf2294adca --- /dev/null +++ b/EventFilter/L1ScoutingRawToDigi/python/ScCaloRawToDigi_cfi.py @@ -0,0 +1,27 @@ +import FWCore.ParameterSet.Config as cms + +# default parameters for the DMA input source +dmaDataModeParameters = cms.PSet( + dataSourceMode=cms.string("DMA"), + dmaSourceId=cms.int32(2) +) + +# default parameters for the TCP source +tcpDataModeParameters = cms.PSet( + dataSourceMode=cms.string("TCP"), + jetSourceIdList = cms.vint32(22), + eGammaSourceIdList = cms.vint32(23), + tauSourceIdList = cms.vint32(25), + etSumSourceIdList = cms.vint32(24), +) + +ScCaloUnpacker = cms.EDProducer("ScCaloRawToDigi", + srcInputTag = cms.InputTag("rawDataCollector"), + # DMA / TCP mode configs + dataSource = tcpDataModeParameters, + # unpack the full set of energy sums + enableAllSums = cms.bool(True), + # print all objects + debug = cms.untracked.bool(False) +) + diff --git a/EventFilter/L1ScoutingRawToDigi/python/ScGMTRawToDigi_cfi.py b/EventFilter/L1ScoutingRawToDigi/python/ScGMTRawToDigi_cfi.py new file mode 100644 index 0000000000000..c184c7887127a --- /dev/null +++ b/EventFilter/L1ScoutingRawToDigi/python/ScGMTRawToDigi_cfi.py @@ -0,0 +1,10 @@ +import FWCore.ParameterSet.Config as cms + +ScGmtUnpacker = cms.EDProducer('ScGMTRawToDigi', + srcInputTag = cms.InputTag('rawDataCollector'), + # skip intermediate muons + skipInterm = cms.bool(True), + # print all objects + debug = cms.untracked.bool(False) +) + diff --git a/L1TriggerScouting/Utilities/interface/scales.h b/L1TriggerScouting/Utilities/interface/scales.h index 45995518619ff..f06ebc5546a5b 100644 --- a/L1TriggerScouting/Utilities/interface/scales.h +++ b/L1TriggerScouting/Utilities/interface/scales.h @@ -20,7 +20,7 @@ namespace l1ScoutingRun3 { namespace demux { struct scales { - static constexpr float phi_scale = 2. * M_PI / 144.; + static constexpr float phi_scale = 0.0435; static constexpr float eta_scale = 0.0435; static constexpr float et_scale = 0.5; };