Skip to content

Commit

Permalink
Merge pull request #24907 from slezki/CMSSW_10_3_X
Browse files Browse the repository at this point in the history
Backport of the PR #24613 and #24902: RPC digi merger and test new readouts
  • Loading branch information
cmsbuild authored Oct 29, 2018
2 parents e9c7ae0 + 499fa7a commit d280985
Show file tree
Hide file tree
Showing 18 changed files with 502 additions and 20 deletions.
19 changes: 19 additions & 0 deletions Configuration/StandardSequences/python/RawToDigi_cff.py
Original file line number Diff line number Diff line change
Expand Up @@ -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()

Expand Down Expand Up @@ -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]))



Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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")
Expand All @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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")
Expand All @@ -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
Expand Down
63 changes: 54 additions & 9 deletions DQM/Integration/python/clients/rpc_dqm_sourceclient-live_cfg.py
Original file line number Diff line number Diff line change
Expand Up @@ -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 ################
Expand All @@ -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")
Expand All @@ -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")

Expand All @@ -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",
Expand All @@ -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
#--------------------------------------------------
Expand All @@ -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 *
Expand Down
101 changes: 101 additions & 0 deletions EventFilter/RPCRawToDigi/plugins/RPCDigiMerger.cc
Original file line number Diff line number Diff line change
@@ -0,0 +1,101 @@
#include "EventFilter/RPCRawToDigi/plugins/RPCDigiMerger.h"

#include <memory>

#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<RPCDigiCollection>();
twinMux_token_ = consumes<RPCDigiCollection>(config.getParameter<edm::InputTag>("inputTagTwinMuxDigis"));
omtf_token_ = consumes<RPCDigiCollection>(config.getParameter<edm::InputTag>("inputTagOMTFDigis"));
cppf_token_ = consumes<RPCDigiCollection>(config.getParameter<edm::InputTag>("inputTagCPPFDigis"));
}

RPCDigiMerger::~RPCDigiMerger()
{}

void RPCDigiMerger::fillDescriptions(edm::ConfigurationDescriptions & descs)
{
edm::ParameterSetDescription desc;
desc.add<edm::InputTag>("inputTagTwinMuxDigis", edm::InputTag("rpcTwinMuxRawToDigi", ""));
desc.add<edm::InputTag>("inputTagOMTFDigis", edm::InputTag("omtfStage2Digis", ""));
desc.add<edm::InputTag>("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<RPCDigiCollection> TwinMux_digis;
event.getByToken(twinMux_token_,TwinMux_digis);
// OMTF
Handle<RPCDigiCollection> OMTF_digis;
event.getByToken(omtf_token_,OMTF_digis);
// CPFF
Handle<RPCDigiCollection> CPPF_digis;
event.getByToken(cppf_token_,CPPF_digis);

// new RPCDigiCollection
std::unique_ptr<RPCDigiCollection> 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);
44 changes: 44 additions & 0 deletions EventFilter/RPCRawToDigi/plugins/RPCDigiMerger.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
#ifndef EventFilter_RPCRawToDigi_RPCDigiMerger_h
#define EventFilter_RPCRawToDigi_RPCDigiMerger_h

#include <cstdint>
#include <vector>
#include <utility>
#include <set>

#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<RPCDigiCollection> twinMux_token_;
edm::EDGetTokenT<RPCDigiCollection> omtf_token_;
edm::EDGetTokenT<RPCDigiCollection> cppf_token_;

};

#endif // EventFilter_RPCRawToDigi_RPCDigiMerger_h
2 changes: 1 addition & 1 deletion EventFilter/RPCRawToDigi/plugins/RPCTwinMuxRawToDigi.cc
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ void RPCTwinMuxRawToDigi::fillDescriptions(edm::ConfigurationDescriptions & desc
desc.add<bool>("fillCounters", true);
desc.add<int>("bxMin", -2);
desc.add<int>("bxMax", 2);
descs.add("RPCTwinMuxRawToDigi", desc);
descs.add("rpcTwinMuxRawToDigi", desc);
}

void RPCTwinMuxRawToDigi::beginRun(edm::Run const & run, edm::EventSetup const & setup)
Expand Down
3 changes: 3 additions & 0 deletions EventFilter/RPCRawToDigi/python/RPCDigiMerger_cff.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import FWCore.ParameterSet.Config as cms

from EventFilter.RPCRawToDigi.rpcDigiMerger_cfi import rpcDigiMerger
2 changes: 1 addition & 1 deletion EventFilter/RPCRawToDigi/python/RPCTwinMuxRawToDigi_cff.py
Original file line number Diff line number Diff line change
@@ -1,3 +1,3 @@
import FWCore.ParameterSet.Config as cms

from EventFilter.RPCRawToDigi.RPCTwinMuxRawToDigi_cfi import RPCTwinMuxRawToDigi
from EventFilter.RPCRawToDigi.rpcTwinMuxRawToDigi_cfi import rpcTwinMuxRawToDigi
Original file line number Diff line number Diff line change
@@ -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
Loading

0 comments on commit d280985

Please sign in to comment.