diff --git a/Configuration/StandardSequences/python/RawToDigi_cff.py b/Configuration/StandardSequences/python/RawToDigi_cff.py index e36243fc32f16..c757e515ffc74 100644 --- a/Configuration/StandardSequences/python/RawToDigi_cff.py +++ b/Configuration/StandardSequences/python/RawToDigi_cff.py @@ -27,6 +27,9 @@ import EventFilter.RPCRawToDigi.rpcUnpacker_cfi muonRPCDigis = EventFilter.RPCRawToDigi.rpcUnpacker_cfi.rpcunpacker.clone() +import EventFilter.RPCRawToDigi.rpcDigiMerger_cfi +muonRPCNewDigis = EventFilter.RPCRawToDigi.rpcDigiMerger_cfi.rpcDigiMerger.clone() + import EventFilter.GEMRawToDigi.muonGEMDigis_cfi muonGEMDigis = EventFilter.GEMRawToDigi.muonGEMDigis_cfi.muonGEMDigis.clone() @@ -120,3 +123,19 @@ _hgcal_RawToDigi += hgcalDigis from Configuration.Eras.Modifier_phase2_hgcal_cff import phase2_hgcal phase2_hgcal.toReplaceWith(RawToDigi,_hgcal_RawToDigi) + +# RPC New Readout Validation +from Configuration.Eras.Modifier_stage2L1Trigger_2017_cff import stage2L1Trigger_2017 +_rpc_NewReadoutVal_RawToDigi = RawToDigi.copy() +_rpc_NewReadoutVal_RawToDigi_noTk = RawToDigi_noTk.copy() +_rpc_NewReadoutVal_RawToDigi += muonRPCNewDigis +_rpc_NewReadoutVal_RawToDigi_noTk += muonRPCNewDigis +stage2L1Trigger_2017.toReplaceWith(RawToDigi, _rpc_NewReadoutVal_RawToDigi) +stage2L1Trigger_2017.toReplaceWith(RawToDigi_noTk, _rpc_NewReadoutVal_RawToDigi) + +from Configuration.Eras.Modifier_fastSim_cff import fastSim +fastSim.toReplaceWith(RawToDigi, RawToDigi.copyAndExclude([muonRPCNewDigis])) +fastSim.toReplaceWith(RawToDigi_noTk, RawToDigi_noTk.copyAndExclude([muonRPCNewDigis])) + + + diff --git a/Configuration/StandardSequences/python/SimL1EmulatorRepack_Full_cff.py b/Configuration/StandardSequences/python/SimL1EmulatorRepack_Full_cff.py index 88276bd8054b6..e52f5cb2598c5 100644 --- a/Configuration/StandardSequences/python/SimL1EmulatorRepack_Full_cff.py +++ b/Configuration/StandardSequences/python/SimL1EmulatorRepack_Full_cff.py @@ -47,8 +47,8 @@ unpackRPC = EventFilter.RPCRawToDigi.rpcUnpacker_cfi.rpcunpacker.clone( InputLabel = cms.InputTag( 'rawDataCollector', processName=cms.InputTag.skipCurrentProcess())) - import EventFilter.RPCRawToDigi.RPCTwinMuxRawToDigi_cfi - unpackRPCTwinMux = EventFilter.RPCRawToDigi.RPCTwinMuxRawToDigi_cfi.RPCTwinMuxRawToDigi.clone( + import EventFilter.RPCRawToDigi.rpcTwinMuxRawToDigi_cfi + unpackRPCTwinMux = EventFilter.RPCRawToDigi.rpcTwinMuxRawToDigi_cfi.rpcTwinMuxRawToDigi.clone( inputTag = cms.InputTag( 'rawDataCollector', processName=cms.InputTag.skipCurrentProcess())) import EventFilter.L1TXRawToDigi.twinMuxStage2Digis_cfi diff --git a/DQM/Integration/python/clients/hcal_dqm_sourceclient-live_cfg.py b/DQM/Integration/python/clients/hcal_dqm_sourceclient-live_cfg.py index cae25daf74669..db46cc14a29e6 100644 --- a/DQM/Integration/python/clients/hcal_dqm_sourceclient-live_cfg.py +++ b/DQM/Integration/python/clients/hcal_dqm_sourceclient-live_cfg.py @@ -110,7 +110,6 @@ if isHeavyIon: process.csctfDigis.producer = cms.InputTag("rawDataRepacker") process.dttfDigis.DTTF_FED_Source = cms.InputTag("rawDataRepacker") - process.RPCTwinMuxRawToDigi.inputTag = cms.InputTag("rawDataRepacker") process.twinMuxStage2Digis.DTTM7_FED_Source = cms.InputTag("rawDataRepacker") process.omtfStage2Digis.inputLabel = cms.InputTag("rawDataRepacker") process.caloStage1Digis.InputLabel = cms.InputTag("rawDataRepacker") #new @@ -120,6 +119,8 @@ process.caloStage2Digis.InputLabel = cms.InputTag("rawDataRepacker") process.gmtStage2Digis.InputLabel = cms.InputTag("rawDataRepacker") process.gtStage2Digis.InputLabel = cms.InputTag("rawDataRepacker") + process.rpcTwinMuxRawToDigi.inputTag = cms.InputTag("rawDataRepacker") + process.rpcCPPFRawToDigi.inputTag = cms.InputTag("rawDataRepacker") # Exclude the laser FEDs. They contaminate the QIE10/11 digi collections. #from Configuration.Eras.Modifier_run2_HCAL_2017_cff import run2_HCAL_2017 diff --git a/DQM/Integration/python/clients/l1tstage2_dqm_sourceclient-live_cfg.py b/DQM/Integration/python/clients/l1tstage2_dqm_sourceclient-live_cfg.py index bb57bd794d842..a6362a54ffc17 100644 --- a/DQM/Integration/python/clients/l1tstage2_dqm_sourceclient-live_cfg.py +++ b/DQM/Integration/python/clients/l1tstage2_dqm_sourceclient-live_cfg.py @@ -139,7 +139,6 @@ process.gctDigis.inputLabel = cms.InputTag("rawDataRepacker") process.gtDigis.DaqGtInputTag = cms.InputTag("rawDataRepacker") process.twinMuxStage2Digis.DTTM7_FED_Source = cms.InputTag("rawDataRepacker") - process.RPCTwinMuxRawToDigi.inputTag = cms.InputTag("rawDataRepacker") process.bmtfDigis.InputLabel = cms.InputTag("rawDataRepacker") process.omtfStage2Digis.inputLabel = cms.InputTag("rawDataRepacker") process.emtfStage2Digis.InputLabel = cms.InputTag("rawDataRepacker") @@ -154,6 +153,8 @@ process.l1tStage2BmtfZeroSupp.rawData = cms.InputTag("rawDataRepacker") process.l1tStage2BmtfZeroSuppFatEvts.rawData = cms.InputTag("rawDataRepacker") process.selfFatEventFilter.rawInput = cms.InputTag("rawDataRepacker") + process.rpcTwinMuxRawToDigi.inputTag = cms.InputTag("rawDataRepacker") + process.rpcCPPFRawToDigi.inputTag = cms.InputTag("rawDataRepacker") #-------------------------------------------------- # L1T Online DQM Schedule diff --git a/DQM/Integration/python/clients/l1tstage2emulator_dqm_sourceclient-live_cfg.py b/DQM/Integration/python/clients/l1tstage2emulator_dqm_sourceclient-live_cfg.py index 7c0abd208c609..16a331a4bf81e 100644 --- a/DQM/Integration/python/clients/l1tstage2emulator_dqm_sourceclient-live_cfg.py +++ b/DQM/Integration/python/clients/l1tstage2emulator_dqm_sourceclient-live_cfg.py @@ -135,7 +135,6 @@ process.gctDigis.inputLabel = cms.InputTag("rawDataRepacker") process.gtDigis.DaqGtInputTag = cms.InputTag("rawDataRepacker") process.twinMuxStage2Digis.DTTM7_FED_Source = cms.InputTag("rawDataRepacker") - process.RPCTwinMuxRawToDigi.inputTag = cms.InputTag("rawDataRepacker") process.bmtfDigis.InputLabel = cms.InputTag("rawDataRepacker") process.valBmtfAlgoSel.feds = cms.InputTag("rawDataRepacker") process.omtfStage2Digis.inputLabel = cms.InputTag("rawDataRepacker") @@ -148,6 +147,8 @@ process.l1tdeStage2CaloLayer1.fedRawDataLabel = cms.InputTag("rawDataRepacker") process.gtStage2Digis.InputLabel = cms.InputTag("rawDataRepacker") process.selfFatEventFilter.rawInput = cms.InputTag("rawDataRepacker") + process.rpcTwinMuxRawToDigi.inputTag = cms.InputTag("rawDataRepacker") + process.rpcCPPFRawToDigi.inputTag = cms.InputTag("rawDataRepacker") #-------------------------------------------------- # L1T Emulator Online DQM Schedule diff --git a/DQM/Integration/python/clients/rpc_dqm_sourceclient-live_cfg.py b/DQM/Integration/python/clients/rpc_dqm_sourceclient-live_cfg.py index c5f6795262672..6998c73a5328b 100644 --- a/DQM/Integration/python/clients/rpc_dqm_sourceclient-live_cfg.py +++ b/DQM/Integration/python/clients/rpc_dqm_sourceclient-live_cfg.py @@ -30,8 +30,10 @@ # Condition for P5 cluster process.load("DQM.Integration.config.FrontierCondition_GT_cfi") # Condition for lxplus: change and possibly customise the GT +#process.load('Configuration.StandardSequences.FrontierConditions_GlobalTag_cff') #from Configuration.AlCa.GlobalTag import GlobalTag as gtCustomise #process.GlobalTag = gtCustomise(process.GlobalTag, 'auto:run2_data', '') +#process.GlobalTag.globaltag = "102X_dataRun2_Express_v4" process.GlobalTag.RefreshEachRun = cms.untracked.bool(True) ############# DQM Cetral Modules ################ @@ -53,15 +55,40 @@ doSynchro = cms.bool(False) ) +### RPC RawToDigi - from TwinMux +process.load("EventFilter.RPCRawToDigi.RPCTwinMuxRawToDigi_cff") + +### RPC RawToDigi - from CPPF +process.load("EventFilter.RPCRawToDigi.RPCCPPFRawToDigi_cff") +# process.load("EventFilter.RPCRawToDigi.RPCCPPFRawToDigi_sqlite_cff") #to load CPPF link maps from the local DB + +### RPC RawToDigi - from OMTF +process.omtfStage2Digis = cms.EDProducer("OmtfUnpacker", + inputLabel = cms.InputTag('rawDataCollector'), +) + +process.load("EventFilter.RPCRawToDigi.RPCDigiMerger_cff") + ################# RPC Rec Hits ################# process.load("RecoLocalMuon.RPCRecHit.rpcRecHits_cfi") process.rpcRecHits.rpcDigiLabel = 'rpcunpacker' - +####################################################### +### RPCRecHit - from Merger +process.rpcMergerRecHits = process.rpcRecHits.clone() +process.rpcMergerRecHits.rpcDigiLabel = cms.InputTag('rpcDigiMerger') ################ DQM Digi Module ################ +### DQM - from legacy process.load("DQM.RPCMonitorDigi.RPCDigiMonitoring_cfi") -process.rpcdigidqm.UseMuon = cms.untracked.bool(useMuons) -process.rpcdigidqm.NoiseFolder = cms.untracked.string("AllHits") +process.rpcdigidqm.UseMuon = useMuons +process.rpcdigidqm.NoiseFolder = cms.untracked.string("AllHits") +process.rpcdigidqm.RecHitLabel = cms.InputTag("rpcRecHits") +### DQM - from Merger +process.rpcMergerdigidqm = process.rpcdigidqm.clone() +process.rpcMergerdigidqm.NoiseFolder = cms.untracked.string("AllHitsMerger") +process.rpcMergerdigidqm.RecHitLabel = cms.InputTag("rpcMergerRecHits") + +####################################################### ################# DCS Info ###################### process.load("DQM.RPCMonitorDigi.RPCDcsInfo_cfi") @@ -73,7 +100,9 @@ process.rpcdqmclient.MinimumRPCEvents = cms.untracked.int32(100) process.rpcdqmclient.OfflineDQM = cms.untracked.bool(isOfflineDQM) process.rpcdqmclient.RecHitTypeFolder = cms.untracked.string("AllHits") - +### Merger +process.rpcMergerdqmclient = process.rpcdqmclient.clone() +process.rpcMergerdqmclient.RecHitTypeFolder = cms.untracked.string("AllHitsMerger") ################# Other Clients ################# #process.load("DQM.RPCMonitorClient.RPCMon_SS_Dbx_Global_cfi") @@ -87,6 +116,9 @@ process.rpcEventSummary.OfflineDQM = cms.untracked.bool(isOfflineDQM ) process.rpcEventSummary.MinimumRPCEvents = cms.untracked.int32(10000) process.rpcEventSummary.RecHitTypeFolder = cms.untracked.string("AllHits") +### Merger +process.rpcEventSummaryMerger = process.rpcEventSummary.clone() +process.rpcEventSummaryMerger.RecHitTypeFolder = cms.untracked.string("AllHitsMerger") ################# Quality Tests ################# process.qTesterRPC = cms.EDAnalyzer("QualityTester", @@ -101,15 +133,25 @@ process.rpcChamberQuality.OfflineDQM = cms.untracked.bool(isOfflineDQM ) process.rpcChamberQuality.RecHitTypeFolder = cms.untracked.string("AllHits") process.rpcChamberQuality.MinimumRPCEvents = cms.untracked.int32(10000) - +### Merger +process.rpcChamberQualityMerger = process.rpcChamberQuality.clone() +process.rpcChamberQualityMerger.RecHitTypeFolder = cms.untracked.string("AllHitsMerger") + ############### Sequences ###################### -process.rpcSource = cms.Sequence(process.rpcunpacker*process.rpcRecHits*process.scalersRawToDigi*process.rpcdigidqm*process.rpcMonitorRaw*process.rpcDcsInfo*process.qTesterRPC) -process.rpcClient = cms.Sequence(process.rpcdqmclient*process.rpcChamberQuality*process.rpcEventSummary*process.dqmEnv*process.dqmSaver) -#process.p = cms.Path(process.rpcSource*process.rpcClient) +process.rpcSource = cms.Sequence( process.rpcunpacker + * (process.rpcTwinMuxRawToDigi + process.rpcCPPFRawToDigi + process.omtfStage2Digis) + * process.rpcDigiMerger + * (process.rpcRecHits + process.rpcMergerRecHits) + * process.scalersRawToDigi + * (process.rpcdigidqm + process.rpcMergerdigidqm) + * process.rpcMonitorRaw*process.rpcDcsInfo*process.qTesterRPC + ) +process.rpcClient = cms.Sequence(process.rpcdqmclient*process.rpcMergerdqmclient*process.rpcChamberQuality*process.rpcChamberQualityMerger*process.rpcEventSummary*process.rpcEventSummaryMerger*process.dqmEnv*process.dqmSaver) process.p = cms.Path(process.hltTriggerTypeFilter*process.rpcSource*process.rpcClient) process.rpcunpacker.InputLabel = cms.InputTag("rawDataCollector") process.scalersRawToDigi.scalersInputTag = cms.InputTag("rawDataCollector") +process.rpcCPPFRawToDigi.inputTag = cms.InputTag("rawDataCollector") #-------------------------------------------------- # Heavy Ion Specific Fed Raw Data Collection Label #-------------------------------------------------- @@ -119,8 +161,11 @@ if (process.runType.getRunType() == process.runType.hi_run): process.rpcunpacker.InputLabel = cms.InputTag("rawDataRepacker") process.scalersRawToDigi.scalersInputTag = cms.InputTag("rawDataRepacker") + process.rpcTwinMuxRawToDigi.inputTag = cms.InputTag("rawDataRepacker") + process.rpcCPPFRawToDigi.inputTag = cms.InputTag("rawDataRepacker") + process.omtfStage2Digis.inputLabel = cms.InputTag("rawDataRepacker") process.rpcEventSummary.MinimumRPCEvents = cms.untracked.int32(100000) - + process.rpcEventSummaryMerger.MinimumRPCEvents = cms.untracked.int32(100000) ### process customizations included here from DQM.Integration.config.online_customizations_cfi import * diff --git a/EventFilter/RPCRawToDigi/plugins/RPCDigiMerger.cc b/EventFilter/RPCRawToDigi/plugins/RPCDigiMerger.cc new file mode 100644 index 0000000000000..0b085b94e2e13 --- /dev/null +++ b/EventFilter/RPCRawToDigi/plugins/RPCDigiMerger.cc @@ -0,0 +1,101 @@ +#include "EventFilter/RPCRawToDigi/plugins/RPCDigiMerger.h" + +#include + +#include "DataFormats/Common/interface/Handle.h" +#include "FWCore/Framework/interface/Event.h" +#include "FWCore/Framework/interface/EventSetup.h" +#include "FWCore/MessageLogger/interface/MessageLogger.h" +#include "FWCore/ParameterSet/interface/ConfigurationDescriptions.h" +#include "FWCore/ParameterSet/interface/ParameterSet.h" +#include "FWCore/ParameterSet/interface/ParameterSetDescription.h" +#include "FWCore/Utilities/interface/CRC16.h" +#include "FWCore/Utilities/interface/InputTag.h" + +#include "DataFormats/RPCDigi/interface/RPCDigiCollection.h" + +using namespace edm; +using namespace std; + + +RPCDigiMerger::RPCDigiMerger(edm::ParameterSet const & config) +{ + produces(); + twinMux_token_ = consumes(config.getParameter("inputTagTwinMuxDigis")); + omtf_token_ = consumes(config.getParameter("inputTagOMTFDigis")); + cppf_token_ = consumes(config.getParameter("inputTagCPPFDigis")); +} + +RPCDigiMerger::~RPCDigiMerger() +{} + +void RPCDigiMerger::fillDescriptions(edm::ConfigurationDescriptions & descs) +{ + edm::ParameterSetDescription desc; + desc.add("inputTagTwinMuxDigis", edm::InputTag("rpcTwinMuxRawToDigi", "")); + desc.add("inputTagOMTFDigis", edm::InputTag("omtfStage2Digis", "")); + desc.add("inputTagCPPFDigis", edm::InputTag("rpcCPPFRawToDigi", "")); + + descs.add("rpcDigiMerger", desc); +} + +void RPCDigiMerger::beginRun(edm::Run const & run, edm::EventSetup const & setup) +{} + +void RPCDigiMerger::produce(edm::Event & event, edm::EventSetup const & setup) +{ + + // Get the digis + // TwinMux + Handle TwinMux_digis; + event.getByToken(twinMux_token_,TwinMux_digis); + // OMTF + Handle OMTF_digis; + event.getByToken(omtf_token_,OMTF_digis); + // CPFF + Handle CPPF_digis; + event.getByToken(cppf_token_,CPPF_digis); + + // new RPCDigiCollection + std::unique_ptr rpc_digi_collection(new RPCDigiCollection()); + + + // loop over TwinMux digis + for (const auto & rpcdgIt : (*TwinMux_digis) ) { + // The layerId + const RPCDetId& rpcId = rpcdgIt.first; + // Get the iterators over the digis associated with this LayerId + const RPCDigiCollection::Range& range = rpcdgIt.second; + + rpc_digi_collection->put(range, rpcId); + } + + // loop over CPPF digis + for (const auto && rpcdgIt : (*CPPF_digis) ) { + // The layerId + const RPCDetId& rpcId = rpcdgIt.first; + // Get the iterators over the digis associated with this LayerId + const RPCDigiCollection::Range& range = rpcdgIt.second; + + rpc_digi_collection->put(range, rpcId); + } + + // loop over OMTF digis + for (const auto & rpcdgIt : (*OMTF_digis) ) { + // The layerId + const RPCDetId& rpcId = rpcdgIt.first; + // Get the iterators over the digis associated with this LayerId + const RPCDigiCollection::Range& range = rpcdgIt.second; + + // accepts only rings: RE-2_R3 ; RE-1_R3 ; RE+1_R3 ; RE+2_R3 ; + if ( ((rpcId.region() == -1 || rpcId.region() == 1) && (rpcId.ring() == 3) && (rpcId.station() == 1 || rpcId.station() == 2)) ) { + rpc_digi_collection->put(range, rpcId); + } + } + + // "put" into the event + event.put(std::move(rpc_digi_collection)); +} + +#include "FWCore/Framework/interface/MakerMacros.h" +DEFINE_FWK_MODULE(RPCDigiMerger); diff --git a/EventFilter/RPCRawToDigi/plugins/RPCDigiMerger.h b/EventFilter/RPCRawToDigi/plugins/RPCDigiMerger.h new file mode 100644 index 0000000000000..6c99aa0d652b7 --- /dev/null +++ b/EventFilter/RPCRawToDigi/plugins/RPCDigiMerger.h @@ -0,0 +1,44 @@ +#ifndef EventFilter_RPCRawToDigi_RPCDigiMerger_h +#define EventFilter_RPCRawToDigi_RPCDigiMerger_h + +#include +#include +#include +#include + +#include "FWCore/Framework/interface/ESHandle.h" +#include "FWCore/Framework/interface/ESWatcher.h" +#include "FWCore/Framework/interface/stream/EDProducer.h" + +#include "DataFormats/RPCDigi/interface/RPCDigi.h" +#include "DataFormats/RPCDigi/interface/RPCDigiCollection.h" + +namespace edm { +class ConfigurationDescriptions; +class Event; +class EventSetup; +class ParameterSet; +class Run; +} // namespace edm + +class RPCDigiMerger + : public edm::stream::EDProducer<> +{ +public: + RPCDigiMerger(edm::ParameterSet const & config); + ~RPCDigiMerger() override; + + static void fillDescriptions(edm::ConfigurationDescriptions & descs); + + void beginRun(edm::Run const & run, edm::EventSetup const & setup) override; + void produce(edm::Event & event, edm::EventSetup const & setup) override; + +protected: + + edm::EDGetTokenT twinMux_token_; + edm::EDGetTokenT omtf_token_; + edm::EDGetTokenT cppf_token_; + +}; + +#endif // EventFilter_RPCRawToDigi_RPCDigiMerger_h diff --git a/EventFilter/RPCRawToDigi/plugins/RPCTwinMuxRawToDigi.cc b/EventFilter/RPCRawToDigi/plugins/RPCTwinMuxRawToDigi.cc index c44688c5e354b..f39353b6cf3b0 100644 --- a/EventFilter/RPCRawToDigi/plugins/RPCTwinMuxRawToDigi.cc +++ b/EventFilter/RPCRawToDigi/plugins/RPCTwinMuxRawToDigi.cc @@ -54,7 +54,7 @@ void RPCTwinMuxRawToDigi::fillDescriptions(edm::ConfigurationDescriptions & desc desc.add("fillCounters", true); desc.add("bxMin", -2); desc.add("bxMax", 2); - descs.add("RPCTwinMuxRawToDigi", desc); + descs.add("rpcTwinMuxRawToDigi", desc); } void RPCTwinMuxRawToDigi::beginRun(edm::Run const & run, edm::EventSetup const & setup) diff --git a/EventFilter/RPCRawToDigi/python/RPCDigiMerger_cff.py b/EventFilter/RPCRawToDigi/python/RPCDigiMerger_cff.py new file mode 100644 index 0000000000000..c4c2beb44d417 --- /dev/null +++ b/EventFilter/RPCRawToDigi/python/RPCDigiMerger_cff.py @@ -0,0 +1,3 @@ +import FWCore.ParameterSet.Config as cms + +from EventFilter.RPCRawToDigi.rpcDigiMerger_cfi import rpcDigiMerger diff --git a/EventFilter/RPCRawToDigi/python/RPCTwinMuxRawToDigi_cff.py b/EventFilter/RPCRawToDigi/python/RPCTwinMuxRawToDigi_cff.py index 7057416951e65..6eec116bd6362 100644 --- a/EventFilter/RPCRawToDigi/python/RPCTwinMuxRawToDigi_cff.py +++ b/EventFilter/RPCRawToDigi/python/RPCTwinMuxRawToDigi_cff.py @@ -1,3 +1,3 @@ import FWCore.ParameterSet.Config as cms -from EventFilter.RPCRawToDigi.RPCTwinMuxRawToDigi_cfi import RPCTwinMuxRawToDigi +from EventFilter.RPCRawToDigi.rpcTwinMuxRawToDigi_cfi import rpcTwinMuxRawToDigi diff --git a/EventFilter/RPCRawToDigi/python/RPCTwinMuxRawToDigi_sqlite_cff.py b/EventFilter/RPCRawToDigi/python/RPCTwinMuxRawToDigi_sqlite_cff.py index 9e2010daaaab7..5559e5d236b37 100644 --- a/EventFilter/RPCRawToDigi/python/RPCTwinMuxRawToDigi_sqlite_cff.py +++ b/EventFilter/RPCRawToDigi/python/RPCTwinMuxRawToDigi_sqlite_cff.py @@ -1,4 +1,4 @@ import FWCore.ParameterSet.Config as cms from CondTools.RPC.RPCLinkMap_sqlite_cff import RPCLinkMapSource -from EventFilter.RPCRawToDigi.RPCTwinMuxRawToDigi_cfi import RPCTwinMuxRawToDigi +from EventFilter.RPCRawToDigi.rpcTwinMuxRawToDigi_cfi import rpcTwinMuxRawToDigi diff --git a/EventFilter/RPCRawToDigi/test/testRPCDigiMerger_cfg.py b/EventFilter/RPCRawToDigi/test/testRPCDigiMerger_cfg.py new file mode 100644 index 0000000000000..0e0272426146d --- /dev/null +++ b/EventFilter/RPCRawToDigi/test/testRPCDigiMerger_cfg.py @@ -0,0 +1,82 @@ +import FWCore.ParameterSet.Config as cms + +from FWCore.PythonUtilities.LumiList import LumiList +from FWCore.ParameterSet.VarParsing import VarParsing + +options = VarParsing("analysis") + +process = cms.Process("testRPCDigiMerger") + +process.load("FWCore.MessageService.MessageLogger_cfi") +process.MessageLogger.cerr.FwkReport.reportEvery = 1000 + +process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff") +process.GlobalTag.globaltag = "102X_dataRun2_Sep2018Rereco_test_v1" + +####################################################### +### RPC RawToDigi +### RPC RawToDigi - from Legacy +process.load("EventFilter.RPCRawToDigi.rpcUnpackingModule_cfi") + +### RPC RawToDigi - from TwinMux +process.load("EventFilter.RPCRawToDigi.RPCTwinMuxRawToDigi_cff") + +### RPC RawToDigi - from CPPF +process.load("EventFilter.RPCRawToDigi.RPCCPPFRawToDigi_cff") +# process.load("EventFilter.RPCRawToDigi.RPCCPPFRawToDigi_sqlite_cff") #to load CPPF link maps from the local DB + +### RPC RawToDigi - from OMTF +process.load('Configuration.StandardSequences.RawToDigi_Data_cff') +process.omtfStage2Digis = cms.EDProducer("OmtfUnpacker", + inputLabel = cms.InputTag('rawDataCollector'), +) + +process.load("EventFilter.RPCRawToDigi.RPCDigiMerger_cff") + +process.options = cms.untracked.PSet( wantSummary = cms.untracked.bool(True) ) + +# Source +process.source = cms.Source("PoolSource" + , fileNames = cms.untracked.vstring( + "/store/data/Run2018D/SingleMuon/RAW/v1/000/321/909/00000/34C0D29C-E3AA-E811-84FB-FA163EF5DB03.root", + "/store/data/Run2018D/SingleMuon/RAW/v1/000/321/909/00000/DEF27B09-E7AA-E811-B671-FA163EDF3211.root", + "/store/data/Run2018D/SingleMuon/RAW/v1/000/321/909/00000/163BB720-E7AA-E811-988D-FA163EC62C4D.root", + "/store/data/Run2018D/SingleMuon/RAW/v1/000/321/909/00000/B06CF0A5-E9AA-E811-AC1F-FA163EF7BA8C.root", + "/store/data/Run2018D/SingleMuon/RAW/v1/000/321/909/00000/AADE09C6-E9AA-E811-97DC-FA163E516F48.root", + "/store/data/Run2018D/SingleMuon/RAW/v1/000/321/909/00000/F4EB1DA6-E9AA-E811-8CF8-FA163ECCF441.root", + "/store/data/Run2018D/SingleMuon/RAW/v1/000/321/909/00000/A867DCA3-E9AA-E811-B8B3-FA163E1F69DA.root", + "/store/data/Run2018D/SingleMuon/RAW/v1/000/321/909/00000/DC0E29CC-E9AA-E811-AC0B-FA163E41F45F.root", + "/store/data/Run2018D/SingleMuon/RAW/v1/000/321/909/00000/8A5DAFA8-E9AA-E811-89C2-FA163EFF6119.root", + "/store/data/Run2018D/SingleMuon/RAW/v1/000/321/909/00000/B00828AF-E9AA-E811-8117-FA163E10FE53.root", + "/store/data/Run2018D/SingleMuon/RAW/v1/000/321/909/00000/28D7492E-E4AA-E811-9635-02163E013E90.root", + "/store/data/Run2018D/SingleMuon/RAW/v1/000/321/909/00000/FE2A5BAC-E9AA-E811-BC34-FA163E0639A2.root", + "/store/data/Run2018D/SingleMuon/RAW/v1/000/321/909/00000/7602E088-EDAA-E811-ABCA-FA163E749606.root", + "/store/data/Run2018D/SingleMuon/RAW/v1/000/321/909/00000/B49BB2AB-E9AA-E811-A0A0-FA163E3F57D2.root", + "/store/data/Run2018D/SingleMuon/RAW/v1/000/321/909/00000/14822C7E-EDAA-E811-8189-02163E01A095.root", + "/store/data/Run2018D/SingleMuon/RAW/v1/000/321/909/00000/B05E9DA8-EDAA-E811-B422-02163E016528.root", + ) +) + +process.maxEvents = cms.untracked.PSet( input = cms.untracked.int32(1000) ) + +process.p = cms.Path( + ( + process.rpcUnpackingModule + + process.rpcTwinMuxRawToDigi + + process.rpcCPPFRawToDigi + + process.omtfStage2Digis + ) + * process.rpcDigiMerger +) + +# Output +process.out = cms.OutputModule("PoolOutputModule" + , outputCommands = cms.untracked.vstring("drop *" + , "keep *_*_*_testRPCDigiMerger") + # , fileName = cms.untracked.string(options.outputFile) + , fileName = cms.untracked.string("testRPCDigiMerger.root") + #, fileName = cms.untracked.string("testRPCDigiMerger.root") + , SelectEvents = cms.untracked.PSet(SelectEvents = cms.vstring("p")) +) + +process.e = cms.EndPath(process.out) diff --git a/EventFilter/RPCRawToDigi/test/testRPCNewReadoutMergerWithDQM.py b/EventFilter/RPCRawToDigi/test/testRPCNewReadoutMergerWithDQM.py new file mode 100644 index 0000000000000..5ba4751faa199 --- /dev/null +++ b/EventFilter/RPCRawToDigi/test/testRPCNewReadoutMergerWithDQM.py @@ -0,0 +1,140 @@ +import FWCore.ParameterSet.Config as cms + +from FWCore.PythonUtilities.LumiList import LumiList +from FWCore.ParameterSet.VarParsing import VarParsing + +options = VarParsing("analysis") +options.register("runList" + , [320855] + , VarParsing.multiplicity.list + , VarParsing.varType.int + , "Run selection") +options.register("lumiList" + , "step1_lumiRanges.log" + , VarParsing.multiplicity.singleton + , VarParsing.varType.string + , "JSON file") +options.parseArguments() + +process = cms.Process("testRPCNewReadoutDQM") + +process.load("FWCore.MessageService.MessageLogger_cfi") +process.load("FWCore.MessageLogger.MessageLogger_cfi") + +process.load('Configuration.StandardSequences.GeometryRecoDB_cff') +process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff") +process.GlobalTag.globaltag = "102X_dataRun2_Sep2018Rereco_test_v1" + +####################################################### +### RPC RawToDigi +### RPC RawToDigi - from Legacy +process.load("EventFilter.RPCRawToDigi.rpcUnpackingModule_cfi") + +### RPC RawToDigi - from TwinMux +process.load("EventFilter.RPCRawToDigi.RPCTwinMuxRawToDigi_cff") + +### RPC RawToDigi - from CPPF +process.load("EventFilter.RPCRawToDigi.RPCCPPFRawToDigi_cff") +# process.load("EventFilter.RPCRawToDigi.RPCCPPFRawToDigi_sqlite_cff") #to load CPPF link maps from the local DB + +### RPC RawToDigi - from OMTF +process.load('Configuration.StandardSequences.RawToDigi_Data_cff') +process.omtfStage2Digis = cms.EDProducer("OmtfUnpacker", + inputLabel = cms.InputTag('rawDataCollector'), +) + +### RPC Digi Merger +process.load("EventFilter.RPCRawToDigi.RPCDigiMerger_cff") + +####################################################### +### RPCRecHit - from legacy +process.load('RecoLocalMuon.RPCRecHit.rpcRecHits_cfi') +from RecoLocalMuon.RPCRecHit.rpcRecHits_cfi import * +process.rpcLegacyRecHits = process.rpcRecHits.clone() +process.rpcLegacyRecHits.rpcDigiLabel = cms.InputTag('rpcUnpackingModule') +### RPCRecHit - from TwinMux +process.rpcTwinMuxRecHits = process.rpcRecHits.clone() +process.rpcTwinMuxRecHits.rpcDigiLabel = cms.InputTag('rpcTwinMuxRawToDigi') +### RPCRecHit - from CPPF +process.rpcCPPFRecHits = process.rpcRecHits.clone() +process.rpcCPPFRecHits.rpcDigiLabel = cms.InputTag('rpcCPPFRawToDigi') +### RPCRecHit - from OMTF +process.rpcOMTFRecHits = process.rpcRecHits.clone() +process.rpcOMTFRecHits.rpcDigiLabel = cms.InputTag('omtfStage2Digis') +### RPCRecHit - from Merger +process.rpcMergerRecHits = process.rpcRecHits.clone() +process.rpcMergerRecHits.rpcDigiLabel = cms.InputTag('rpcDigiMerger') + +### Print Summary +process.options = cms.untracked.PSet( wantSummary = cms.untracked.bool(True) ) + +####################################################### +### DQM - from legacy +process.load("DQM.RPCMonitorDigi.RPCDigiMonitoring_cfi") +process.rpcdigidqm.UseRollInfo = True +process.rpcdigidqm.UseMuon = False +process.rpcdigidqm.NoiseFolder = cms.untracked.string("AllHitsLegacy") +process.rpcdigidqm.RecHitLabel = cms.InputTag("rpcLegacyRecHits") +### DQM - from TwinMux +process.rpcTwinMuxdigidqm = process.rpcdigidqm.clone() +process.rpcTwinMuxdigidqm.NoiseFolder = cms.untracked.string("AllHitsTwinMux") +process.rpcTwinMuxdigidqm.RecHitLabel = cms.InputTag("rpcTwinMuxRecHits") +### DQM - from CPPF +process.rpcCPPFdigidqm = process.rpcdigidqm.clone() +process.rpcCPPFdigidqm.NoiseFolder = cms.untracked.string("AllHitsCPPF") +process.rpcCPPFdigidqm.RecHitLabel = cms.InputTag("rpcCPPFRecHits") +### DQM - from OMTF +process.rpcOMTFdigidqm = process.rpcdigidqm.clone() +process.rpcOMTFdigidqm.NoiseFolder = cms.untracked.string("AllHitsOMTF") +process.rpcOMTFdigidqm.RecHitLabel = cms.InputTag("rpcOMTFRecHits") +### DQM - from Merger +process.rpcMergerdigidqm = process.rpcdigidqm.clone() +process.rpcMergerdigidqm.NoiseFolder = cms.untracked.string("AllHitsMerger") +process.rpcMergerdigidqm.RecHitLabel = cms.InputTag("rpcMergerRecHits") + +####################################################### +### DQM Saver +process.load("Configuration.StandardSequences.DQMSaverAtJobEnd_cff") +process.dqmEnv.subSystemFolder = 'RPC' + +# Source +process.source = cms.Source("PoolSource" + , fileNames = cms.untracked.vstring( + "/store/data/Run2018D/SingleMuon/RAW/v1/000/321/909/00000/34C0D29C-E3AA-E811-84FB-FA163EF5DB03.root", + "/store/data/Run2018D/SingleMuon/RAW/v1/000/321/909/00000/DEF27B09-E7AA-E811-B671-FA163EDF3211.root", + "/store/data/Run2018D/SingleMuon/RAW/v1/000/321/909/00000/163BB720-E7AA-E811-988D-FA163EC62C4D.root", + "/store/data/Run2018D/SingleMuon/RAW/v1/000/321/909/00000/B06CF0A5-E9AA-E811-AC1F-FA163EF7BA8C.root", + "/store/data/Run2018D/SingleMuon/RAW/v1/000/321/909/00000/AADE09C6-E9AA-E811-97DC-FA163E516F48.root", + "/store/data/Run2018D/SingleMuon/RAW/v1/000/321/909/00000/F4EB1DA6-E9AA-E811-8CF8-FA163ECCF441.root", + "/store/data/Run2018D/SingleMuon/RAW/v1/000/321/909/00000/A867DCA3-E9AA-E811-B8B3-FA163E1F69DA.root", + "/store/data/Run2018D/SingleMuon/RAW/v1/000/321/909/00000/DC0E29CC-E9AA-E811-AC0B-FA163E41F45F.root", + "/store/data/Run2018D/SingleMuon/RAW/v1/000/321/909/00000/8A5DAFA8-E9AA-E811-89C2-FA163EFF6119.root", + "/store/data/Run2018D/SingleMuon/RAW/v1/000/321/909/00000/B00828AF-E9AA-E811-8117-FA163E10FE53.root", + "/store/data/Run2018D/SingleMuon/RAW/v1/000/321/909/00000/28D7492E-E4AA-E811-9635-02163E013E90.root", + "/store/data/Run2018D/SingleMuon/RAW/v1/000/321/909/00000/FE2A5BAC-E9AA-E811-BC34-FA163E0639A2.root", + "/store/data/Run2018D/SingleMuon/RAW/v1/000/321/909/00000/7602E088-EDAA-E811-ABCA-FA163E749606.root", + "/store/data/Run2018D/SingleMuon/RAW/v1/000/321/909/00000/B49BB2AB-E9AA-E811-A0A0-FA163E3F57D2.root", + "/store/data/Run2018D/SingleMuon/RAW/v1/000/321/909/00000/14822C7E-EDAA-E811-8189-02163E01A095.root", + "/store/data/Run2018D/SingleMuon/RAW/v1/000/321/909/00000/B05E9DA8-EDAA-E811-B422-02163E016528.root", + ) +) + +process.maxEvents = cms.untracked.PSet( input = cms.untracked.int32(1000) ) + +process.p = cms.Path( + (process.rpcUnpackingModule + process.rpcTwinMuxRawToDigi + process.rpcCPPFRawToDigi + process.omtfStage2Digis) + * process.rpcDigiMerger + * (process.rpcLegacyRecHits + process.rpcTwinMuxRecHits + process.rpcCPPFRecHits + process.rpcOMTFRecHits + process.rpcMergerRecHits) + * (process.rpcdigidqm + process.rpcTwinMuxdigidqm + process.rpcCPPFdigidqm + process.rpcOMTFdigidqm + process.rpcMergerdigidqm) + * process.DQMSaver + ) + +# Output +process.out = cms.OutputModule("PoolOutputModule" + , outputCommands = cms.untracked.vstring("drop *" + , "keep *_rpc*RecHits_*_*") + , fileName = cms.untracked.string("testRPCNewReadoutDQM.root") + , SelectEvents = cms.untracked.PSet(SelectEvents = cms.vstring("p")) +) + +process.e = cms.EndPath(process.out) diff --git a/L1Trigger/Configuration/python/L1TRawToDigi_cff.py b/L1Trigger/Configuration/python/L1TRawToDigi_cff.py index 2689d531aa7ba..d4385cab3b0dc 100644 --- a/L1Trigger/Configuration/python/L1TRawToDigi_cff.py +++ b/L1Trigger/Configuration/python/L1TRawToDigi_cff.py @@ -57,8 +57,9 @@ def unpack_stage1(): def unpack_stage2(): global L1TRawToDigi_Stage2 - global RPCTwinMuxRawToDigi, twinMuxStage2Digis, bmtfDigis, omtfStage2Digis, emtfStage2Digis, caloLayer1Digis, caloStage2Digis, gmtStage2Digis, gtStage2Digis,L1TRawToDigi_Stage2 - from EventFilter.RPCRawToDigi.RPCTwinMuxRawToDigi_cfi import RPCTwinMuxRawToDigi + global rpcTwinMuxRawToDigi, twinMuxStage2Digis, bmtfDigis, omtfStage2Digis, rpcCPPFRawToDigi, emtfStage2Digis, caloLayer1Digis, caloStage2Digis, gmtStage2Digis, gtStage2Digis,L1TRawToDigi_Stage2 + from EventFilter.RPCRawToDigi.rpcTwinMuxRawToDigi_cfi import rpcTwinMuxRawToDigi + from EventFilter.RPCRawToDigi.RPCCPPFRawToDigi_cfi import rpcCPPFRawToDigi from EventFilter.L1TRawToDigi.bmtfDigis_cfi import bmtfDigis from EventFilter.L1TRawToDigi.omtfStage2Digis_cfi import omtfStage2Digis from EventFilter.L1TRawToDigi.emtfStage2Digis_cfi import emtfStage2Digis @@ -67,7 +68,7 @@ def unpack_stage2(): from EventFilter.L1TRawToDigi.gmtStage2Digis_cfi import gmtStage2Digis from EventFilter.L1TRawToDigi.gtStage2Digis_cfi import gtStage2Digis from EventFilter.L1TXRawToDigi.twinMuxStage2Digis_cfi import twinMuxStage2Digis - L1TRawToDigi_Stage2 = cms.Sequence(RPCTwinMuxRawToDigi + twinMuxStage2Digis * bmtfDigis + omtfStage2Digis + emtfStage2Digis + caloLayer1Digis + caloStage2Digis + gmtStage2Digis + gtStage2Digis) + L1TRawToDigi_Stage2 = cms.Sequence(rpcTwinMuxRawToDigi + twinMuxStage2Digis * bmtfDigis + omtfStage2Digis + rpcCPPFRawToDigi + emtfStage2Digis + caloLayer1Digis + caloStage2Digis + gmtStage2Digis + gtStage2Digis) # # Legacy Trigger: diff --git a/RecoLocalMuon/Configuration/python/RecoLocalMuonCosmics_cff.py b/RecoLocalMuon/Configuration/python/RecoLocalMuonCosmics_cff.py index ba72d255c5101..42d65c33e8dd6 100644 --- a/RecoLocalMuon/Configuration/python/RecoLocalMuonCosmics_cff.py +++ b/RecoLocalMuon/Configuration/python/RecoLocalMuonCosmics_cff.py @@ -60,3 +60,22 @@ run3_GEM.toReplaceWith( muonlocalreco , _run3_muonlocalreco ) from Configuration.Eras.Modifier_phase2_muon_cff import phase2_muon phase2_muon.toReplaceWith( muonlocalreco , _phase2_muonlocalreco ) + + +# RPC New Readout Validation +from Configuration.Eras.Modifier_stage2L1Trigger_2017_cff import stage2L1Trigger_2017 +_rpc_NewReadoutVal_muonlocalreco_with_2DSegments = muonlocalreco_with_2DSegments.copy() +_rpc_NewReadoutVal_muonlocalreco = muonlocalreco.copy() +_rpc_NewReadoutVal_muonlocalrecoT0Seg = muonlocalrecoT0Seg.copy() +_rpc_NewReadoutVal_muonlocalreco_with_2DSegments += rpcNewRecHits +_rpc_NewReadoutVal_muonlocalreco += rpcNewRecHits +_rpc_NewReadoutVal_muonlocalrecoT0Seg += rpcNewRecHits +stage2L1Trigger_2017.toReplaceWith(muonlocalreco_with_2DSegments, _rpc_NewReadoutVal_muonlocalreco_with_2DSegments) +stage2L1Trigger_2017.toReplaceWith(muonlocalreco, _rpc_NewReadoutVal_muonlocalreco) +stage2L1Trigger_2017.toReplaceWith(muonlocalrecoT0Seg, _rpc_NewReadoutVal_muonlocalrecoT0Seg) + +from Configuration.Eras.Modifier_fastSim_cff import fastSim +fastSim.toReplaceWith(muonlocalreco_with_2DSegments, muonlocalreco_with_2DSegments.copyAndExclude([rpcNewRecHits])) +fastSim.toReplaceWith(muonlocalreco, muonlocalreco.copyAndExclude([rpcNewRecHits])) +fastSim.toReplaceWith(muonlocalrecoT0Seg, muonlocalrecoT0Seg.copyAndExclude([rpcNewRecHits])) + diff --git a/RecoLocalMuon/Configuration/python/RecoLocalMuon_cff.py b/RecoLocalMuon/Configuration/python/RecoLocalMuon_cff.py index 4805d78ca974c..c2605d92df53a 100644 --- a/RecoLocalMuon/Configuration/python/RecoLocalMuon_cff.py +++ b/RecoLocalMuon/Configuration/python/RecoLocalMuon_cff.py @@ -55,3 +55,16 @@ run3_GEM.toReplaceWith( muonlocalreco , _run3_muonlocalreco ) from Configuration.Eras.Modifier_phase2_muon_cff import phase2_muon phase2_muon.toReplaceWith( muonlocalreco , _phase2_muonlocalreco ) + +# RPC New Readout Validation +from Configuration.Eras.Modifier_stage2L1Trigger_2017_cff import stage2L1Trigger_2017 +_rpc_NewReadoutVal_muonlocalreco_with_2DSegments = muonlocalreco_with_2DSegments.copy() +_rpc_NewReadoutVal_muonlocalreco = muonlocalreco.copy() +_rpc_NewReadoutVal_muonlocalreco_with_2DSegments += rpcNewRecHits +_rpc_NewReadoutVal_muonlocalreco += rpcNewRecHits +stage2L1Trigger_2017.toReplaceWith(muonlocalreco_with_2DSegments, _rpc_NewReadoutVal_muonlocalreco_with_2DSegments) +stage2L1Trigger_2017.toReplaceWith(muonlocalreco, _rpc_NewReadoutVal_muonlocalreco) + +from Configuration.Eras.Modifier_fastSim_cff import fastSim +fastSim.toReplaceWith(muonlocalreco_with_2DSegments, muonlocalreco_with_2DSegments.copyAndExclude([rpcNewRecHits])) +fastSim.toReplaceWith(muonlocalreco, muonlocalreco.copyAndExclude([rpcNewRecHits])) diff --git a/RecoLocalMuon/RPCRecHit/python/rpcRecHits_cfi.py b/RecoLocalMuon/RPCRecHit/python/rpcRecHits_cfi.py index cf630a0a7c928..e7ca0f56cd9a6 100644 --- a/RecoLocalMuon/RPCRecHit/python/rpcRecHits_cfi.py +++ b/RecoLocalMuon/RPCRecHit/python/rpcRecHits_cfi.py @@ -13,6 +13,18 @@ deadvecfile = cms.FileInPath('RecoLocalMuon/RPCRecHit/data/RPCDeadVec.dat') ) +rpcNewRecHits = cms.EDProducer("RPCRecHitProducer", + recAlgoConfig = cms.PSet( + + ), + recAlgo = cms.string('RPCRecHitStandardAlgo'), + rpcDigiLabel = cms.InputTag('muonRPCNewDigis'), + maskSource = cms.string('File'), + maskvecfile = cms.FileInPath('RecoLocalMuon/RPCRecHit/data/RPCMaskVec.dat'), + deadSource = cms.string('File'), + deadvecfile = cms.FileInPath('RecoLocalMuon/RPCRecHit/data/RPCDeadVec.dat') +) + #disabling DIGI2RAW,RAW2DIGI chain for Phase2 from Configuration.Eras.Modifier_phase2_muon_cff import phase2_muon phase2_muon.toModify(rpcRecHits, rpcDigiLabel = cms.InputTag('simMuonRPCDigis'))