Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[PPS] Direct simulation as sequence #38280

Merged
merged 18 commits into from Aug 4, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
18 commits
Select commit Hold shift + click to select a range
1828c83
Firt skeletton of direct simulation in SimPPS
forthommel Nov 11, 2021
ef1cb85
Moving things around in direct simu
forthommel Nov 12, 2021
2000e61
Safer cloning of geometry XML files list
forthommel Nov 17, 2021
d71c9c6
Still moving things a bit
forthommel Nov 17, 2021
b22c510
Updated energy for run3 simulations
forthommel Nov 18, 2021
fa041b2
Removing ctppsGeometryESModule from run3 recipes (loaded by default b…
forthommel Nov 18, 2021
264ffc4
New dedicated sequence for direct simulation reconstruction
forthommel Nov 18, 2021
d62ac2c
Added the vertex smearing as part of the simulation sequence ; new AO…
forthommel Nov 18, 2021
0e3b4df
Vertex unshifting utility added
forthommel Feb 24, 2022
f2b99e8
Reco: local tracks lite producer default behaviour now matches 2018/r…
forthommel Apr 29, 2022
1a5a9ea
Reco: moved matchDirectSimOutputs to a dedicated include file
forthommel May 3, 2022
0d91048
Test: added @michael-pitt's patch for miniAOD test
forthommel May 3, 2022
b3c3d70
Sim: added an ESPrefer rule for LHCInfo and association cuts
forthommel May 4, 2022
4e71886
Sim: splitted the matcher functions into their two AOD/miniAOD variants
forthommel May 4, 2022
dc405c9
Sim: added two customisation procedures for (mini)AOD direct simulati…
forthommel May 4, 2022
76cdd55
Config: adding rng service only if not found in process attributes ; …
forthommel Jun 7, 2022
9edfb94
Validation: simplification/sanitisation of validation template, set (…
forthommel Jun 7, 2022
8897905
More 2021->2022 PPS era modifications
forthommel Jul 29, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
4 changes: 2 additions & 2 deletions Configuration/Eras/python/Era_Phase2_cff.py
Expand Up @@ -15,7 +15,7 @@
from Configuration.Eras.Modifier_phase2_timing_cff import phase2_timing
from Configuration.Eras.Modifier_phase2_timing_layer_cff import phase2_timing_layer
from Configuration.Eras.Modifier_phase2_trigger_cff import phase2_trigger
from Configuration.Eras.Modifier_ctpps_2021_cff import ctpps_2021
from Configuration.Eras.Modifier_ctpps_2022_cff import ctpps_2022
from Configuration.ProcessModifiers.dd4hep_cff import dd4hep

Phase2 = cms.ModifierChain(Run3_noMkFit.copyAndExclude([phase1Pixel,trackingPhase1,ctpps_2021,dd4hep]), phase2_common, phase2_tracker, trackingPhase2PU140, phase2_ecal, phase2_hcal, phase2_hgcal, phase2_muon, phase2_GEM, hcalHardcodeConditions, phase2_timing, phase2_timing_layer, phase2_trigger)
Phase2 = cms.ModifierChain(Run3_noMkFit.copyAndExclude([phase1Pixel,trackingPhase1,ctpps_2022,dd4hep]), phase2_common, phase2_tracker, trackingPhase2PU140, phase2_ecal, phase2_hcal, phase2_hgcal, phase2_muon, phase2_GEM, hcalHardcodeConditions, phase2_timing, phase2_timing_layer, phase2_trigger)
4 changes: 2 additions & 2 deletions Configuration/Eras/python/Era_Run3_cff.py
Expand Up @@ -8,11 +8,11 @@
from Configuration.Eras.Modifier_run2_GEM_2017_cff import run2_GEM_2017
from Configuration.Eras.Modifier_stage2L1Trigger_2021_cff import stage2L1Trigger_2021
from Configuration.Eras.Modifier_ctpps_2018_cff import ctpps_2018
from Configuration.Eras.Modifier_ctpps_2021_cff import ctpps_2021
from Configuration.Eras.Modifier_ctpps_2022_cff import ctpps_2022
from Configuration.ProcessModifiers.dd4hep_cff import dd4hep
from Configuration.Eras.Modifier_run3_nanoAOD_devel_cff import run3_nanoAOD_devel
from Configuration.Eras.Modifier_run3_egamma_cff import run3_egamma
from Configuration.Eras.Modifier_run3_RPC_cff import run3_RPC

Run3 = cms.ModifierChain(Run2_2018.copyAndExclude([run2_GEM_2017, ctpps_2018]), run3_common, run3_egamma, run3_GEM, run3_HB, run3_HFSL, stage2L1Trigger_2021, ctpps_2021, dd4hep, run3_nanoAOD_devel, run3_RPC)
Run3 = cms.ModifierChain(Run2_2018.copyAndExclude([run2_GEM_2017, ctpps_2018]), run3_common, run3_egamma, run3_GEM, run3_HB, run3_HFSL, stage2L1Trigger_2021, ctpps_2022, dd4hep, run3_nanoAOD_devel, run3_RPC)

@@ -1,3 +1,3 @@
import FWCore.ParameterSet.Config as cms

ctpps_2021 = cms.Modifier()
ctpps_2022 = cms.Modifier()
6 changes: 4 additions & 2 deletions Configuration/StandardSequences/python/Eras.py
Expand Up @@ -63,7 +63,7 @@ def __init__(self):
'stage1L1Trigger', 'fastSim',
'peripheralPbPb', 'pA_2016',
'run2_HE_2017', 'stage2L1Trigger', 'stage2L1Trigger_2017', 'stage2L1Trigger_2018', 'stage2L1Trigger_2021',
'run2_HF_2017', 'run2_HCAL_2017', 'run2_HEPlan1_2017', 'run2_HB_2018','run2_HE_2018',
'run2_HF_2017', 'run2_HCAL_2017', 'run2_HEPlan1_2017', 'run2_HB_2018','run2_HE_2018',
'run3_HB', 'run3_HFSL', 'run3_common', 'run3_RPC',
'phase1Pixel', 'run3_GEM', 'run2_GEM_2017',
'run2_CSC_2018',
Expand All @@ -73,7 +73,9 @@ def __init__(self):
'phase2_timing_layer', 'phase2_etlV4', 'phase2_hcal', 'phase2_ecal','phase2_ecal_devel',
'phase2_trigger',
'phase2_squarePixels', 'phase2_3DPixels',
'trackingLowPU', 'trackingPhase1', 'ctpps', 'ctpps_2016', 'ctpps_2017', 'ctpps_2018', 'ctpps_2021', 'trackingPhase2PU140','highBetaStar_2018',
'trackingLowPU', 'trackingPhase1',
'ctpps', 'ctpps_2016', 'ctpps_2017', 'ctpps_2018', 'ctpps_2022',
'trackingPhase2PU140','highBetaStar_2018',
'tracker_apv_vfp30_2016', 'pf_badHcalMitigationOff', 'run2_miniAOD_80XLegacy','run2_miniAOD_94XFall17', 'run2_nanoAOD_92X',
'run2_nanoAOD_94XMiniAODv1', 'run2_nanoAOD_94XMiniAODv2', 'run2_nanoAOD_94X2016',
'run2_miniAOD_devel', 'run2_nanoAOD_102Xv1', 'run2_nanoAOD_106Xv1', 'run2_nanoAOD_106Xv2',
Expand Down
6 changes: 3 additions & 3 deletions EventFilter/CTPPSRawToDigi/python/ctppsDigiToRaw_cff.py
Expand Up @@ -7,7 +7,7 @@
ctppsRawData = cms.Task()
# The comment lines below will be included in the next PR for Run2

#from Configuration.Eras.Modifier_ctpps_2016_cff import ctpps_2016
#from Configuration.Eras.Modifier_ctpps_2016_cff import ctpps_2016
#ctpps_2016.toReplaceWith(ctppsRawData, cms.Task(ctppsTotemRawData))

#from Configuration.Eras.Modifier_ctpps_2017_cff import ctpps_2017
Expand All @@ -16,5 +16,5 @@
#from Configuration.Eras.Modifier_ctpps_2018_cff import ctpps_2018
#ctpps_2018.toReplaceWith(ctppsRawData, cms.Task(ctppsPixelRawData))

from Configuration.Eras.Modifier_ctpps_2021_cff import ctpps_2021
ctpps_2021.toReplaceWith(ctppsRawData, cms.Task(ctppsPixelRawData))
from Configuration.Eras.Modifier_ctpps_2022_cff import ctpps_2022
ctpps_2022.toReplaceWith(ctppsRawData, cms.Task(ctppsPixelRawData))
4 changes: 2 additions & 2 deletions EventFilter/RawDataCollector/python/rawDataCollector_cfi.py
Expand Up @@ -36,8 +36,8 @@
run3_GEM.toModify( rawDataCollector.RawCollectionList, func = lambda list: list.append(cms.InputTag("gemPacker")) )

# For Run2 it is needed to include the general ctpps era ctpps_2016
from Configuration.Eras.Modifier_ctpps_2021_cff import ctpps_2021
ctpps_2021.toModify(rawDataCollector.RawCollectionList, func = lambda list: list.extend([cms.InputTag("ctppsTotemRawData"),cms.InputTag("ctppsPixelRawData")]) )
from Configuration.Eras.Modifier_ctpps_2022_cff import ctpps_2022
ctpps_2022.toModify(rawDataCollector.RawCollectionList, func = lambda list: list.extend([cms.InputTag("ctppsTotemRawData"),cms.InputTag("ctppsPixelRawData")]) )

# Phase-2 Tracker
from Configuration.Eras.Modifier_phase2_tracker_cff import phase2_tracker
Expand Down
12 changes: 8 additions & 4 deletions Geometry/VeryForwardGeometry/python/commons_cff.py
Expand Up @@ -6,10 +6,14 @@ def cloneGeometry(mod_path):
# start by importing the actual module to be cloned
_geom = import_module(mod_path)
# clone all geometry DDL files
totemGeomXMLFiles = copy(_geom.totemGeomXMLFiles)
ctppsDiamondGeomXMLFiles = copy(_geom.ctppsDiamondGeomXMLFiles)
ctppsUFSDGeomXMLFiles = copy(_geom.ctppsUFSDGeomXMLFiles)
ctppsPixelGeomXMLFiles = copy(_geom.ctppsPixelGeomXMLFiles)
if hasattr(_geom, 'totemGeomXMLFiles'):
totemGeomXMLFiles = copy(_geom.totemGeomXMLFiles)
if hasattr(_geom, 'ctppsDiamondGeomXMLFiles'):
ctppsDiamondGeomXMLFiles = copy(_geom.ctppsDiamondGeomXMLFiles)
if hasattr(_geom, 'ctppsUFSDGeomXMLFiles'):
ctppsUFSDGeomXMLFiles = copy(_geom.ctppsUFSDGeomXMLFiles)
if hasattr(_geom, 'ctppsPixelGeomXMLFiles'):
ctppsPixelGeomXMLFiles = copy(_geom.ctppsPixelGeomXMLFiles)
# clone the ESSource and ESModule to be returned
XMLIdealGeometryESSource_CTPPS = _geom.XMLIdealGeometryESSource_CTPPS.clone()
ctppsGeometryESModule = _geom.ctppsGeometryESModule.clone()
Expand Down
30 changes: 22 additions & 8 deletions RecoPPS/Configuration/python/recoCTPPS_cff.py
Expand Up @@ -25,15 +25,29 @@
ctpps_2018.toReplaceWith(
recoCTPPSTask,
cms.Task(
totemRPLocalReconstructionTask ,
ctppsDiamondLocalReconstructionTask ,
totemTimingLocalReconstructionTask ,
ctppsPixelLocalReconstructionTask ,
ctppsLocalTrackLiteProducer ,
ctppsProtons
totemRPLocalReconstructionTask ,
ctppsDiamondLocalReconstructionTask ,
totemTimingLocalReconstructionTask ,
ctppsPixelLocalReconstructionTask ,
ctppsLocalTrackLiteProducer ,
ctppsProtons
)

)


recoCTPPS = cms.Sequence(recoCTPPSTask)

# reconstruction for direct simulation (RecHit-level info)

totemRPFromRHLocalReconstructionTask = totemRPLocalReconstructionTask.copyAndExclude([totemRPClusterProducer, totemRPRecHitProducer])
ctppsDiamondFromRHLocalReconstructionTask = ctppsDiamondLocalReconstructionTask.copyAndExclude([ctppsDiamondRecHits])
ctppsPixelFromRHLocalReconstructionTask = ctppsPixelLocalReconstructionTask.copyAndExclude([ctppsPixelClusters, ctppsPixelRecHits])

recoDirectSimPPSTask = cms.Task(
totemRPFromRHLocalReconstructionTask,
ctppsDiamondFromRHLocalReconstructionTask,
ctppsPixelFromRHLocalReconstructionTask,
ctppsLocalTrackLiteProducer,
ctppsProtons
)

recoDirectSimPPS = cms.Sequence(recoDirectSimPPSTask)
17 changes: 17 additions & 0 deletions RecoPPS/Local/python/ctppsLocalTrackLiteProducer_cff.py
Expand Up @@ -6,7 +6,24 @@

# enable the module for CTPPS era(s)
from Configuration.Eras.Modifier_ctpps_cff import ctpps
from Configuration.Eras.Modifier_ctpps_2016_cff import ctpps_2016
from Configuration.Eras.Modifier_ctpps_2017_cff import ctpps_2017

ctpps.toModify(
ctppsLocalTrackLiteProducer,
includeStrips = False,
includeDiamonds = True,
includePixels = True
)

ctpps_2016.toModify(
ctppsLocalTrackLiteProducer,
includeStrips = True,
includeDiamonds = False,
includePixels = False
)

ctpps_2017.toModify(
ctppsLocalTrackLiteProducer,
includeStrips = True,
includeDiamonds = True,
Expand Down
4 changes: 2 additions & 2 deletions SimGeneral/MixingModule/python/mixObjects_cfi.py
Expand Up @@ -305,8 +305,8 @@
)
)

from Configuration.Eras.Modifier_ctpps_2021_cff import ctpps_2021
ctpps_2021.toModify( theMixObjects,
from Configuration.Eras.Modifier_ctpps_2022_cff import ctpps_2022
ctpps_2022.toModify( theMixObjects,
mixSH = dict(
input = theMixObjects.mixSH.input + [ cms.InputTag("g4SimHits","TotemHitsRP"),cms.InputTag("g4SimHits","CTPPSPixelHits") ],
subdets = theMixObjects.mixSH.subdets + [ 'TotemHitsRP', 'CTPPSPixelHits' ],
Expand Down
4 changes: 2 additions & 2 deletions SimPPS/Configuration/python/GenPPS_cff.py
Expand Up @@ -15,5 +15,5 @@
#from Configuration.Eras.Modifier_ctpps_2018_cff import ctpps_2018
#ctpps_2018.toReplaceWith(PPSTransportTask, cms.Task(LHCTransport))

from Configuration.Eras.Modifier_ctpps_2021_cff import ctpps_2021
ctpps_2021.toReplaceWith(PPSTransportTask, cms.Task(LHCTransport))
from Configuration.Eras.Modifier_ctpps_2022_cff import ctpps_2022
ctpps_2022.toReplaceWith(PPSTransportTask, cms.Task(LHCTransport))
4 changes: 2 additions & 2 deletions SimPPS/Configuration/python/SimPPS_cff.py
Expand Up @@ -23,5 +23,5 @@
#from Configuration.Eras.Modifier_ctpps_2018_cff import ctpps_2018
#ctpps_2018.toReplaceWith(ctppsDigiTask, RPixDetDigitizerTask)

from Configuration.Eras.Modifier_ctpps_2021_cff import ctpps_2021
ctpps_2021.toReplaceWith(ctppsDigiTask, RPixDetDigitizerTask)
from Configuration.Eras.Modifier_ctpps_2022_cff import ctpps_2022
ctpps_2022.toReplaceWith(ctppsDigiTask, RPixDetDigitizerTask)
29 changes: 29 additions & 0 deletions SimPPS/Configuration/python/Utils.py
@@ -0,0 +1,29 @@
import FWCore.ParameterSet.Config as cms

def setupPPSDirectSim(process):
process.load('SimPPS.Configuration.directSimPPS_cff')
process.load('RecoPPS.Configuration.recoCTPPS_cff')
if not hasattr(process, 'RandomNumberGeneratorService'):
process.RandomNumberGeneratorService = cms.Service("RandomNumberGeneratorService")
if not hasattr(process.RandomNumberGeneratorService, 'beamDivergenceVtxGenerator'):
process.RandomNumberGeneratorService.beamDivergenceVtxGenerator = cms.PSet(initialSeed = cms.untracked.uint32(3849))
if not hasattr(process.RandomNumberGeneratorService, 'ppsDirectProtonSimulation'):
process.RandomNumberGeneratorService.ppsDirectProtonSimulation = cms.PSet(initialSeed = cms.untracked.uint32(4981))
process.ppsDirectSim = cms.Path(process.directSimPPS * process.recoDirectSimPPS)
process.schedule.append(process.ppsDirectSim)

from SimPPS.DirectSimProducer.matching_cff import matchDirectSimOutputs
matchDirectSimOutputs(process)
return process

def setupPPSDirectSimAOD(process):
setupPPSDirectSim(process)
from SimPPS.DirectSimProducer.matching_cff import matchDirectSimOutputsAOD
matchDirectSimOutputsAOD(process)
return process

def setupPPSDirectSimMiniAOD(process):
setupPPSDirectSim(process)
from SimPPS.DirectSimProducer.matching_cff import matchDirectSimOutputsMiniAOD
matchDirectSimOutputsMiniAOD(process)
return process
54 changes: 54 additions & 0 deletions SimPPS/Configuration/python/directSimPPS_cff.py
@@ -0,0 +1,54 @@
import FWCore.ParameterSet.Config as cms
from Configuration.StandardSequences.Eras import eras
from SimPPS.DirectSimProducer.ppsDirectProtonSimulation_cff import *

directSimPPSTask = cms.Task(
beamDivergenceVtxGenerator,
ppsDirectProtonSimulation
)

directSimPPS = cms.Sequence(directSimPPSTask)

def unshiftVertex(process, smearingParams):
"""Undo vertex smearing using the parameters used for the sample production"""
if not hasattr(process, 'ctppsBeamParametersFromLHCInfoESSource'):
return
from importlib import import_module
_params = import_module('IOMC.EventVertexGenerators.VtxSmearedParameters_cfi')
if not hasattr(_params, smearingParams):
raise ImportError('Failed to import {} from vertex smearing parameters!'.format(smearingParams))
_params = getattr(_params, smearingParams)
process.ctppsBeamParametersFromLHCInfoESSource.vtxOffsetX45 = cms.double(-_params.X0.value())
process.ctppsBeamParametersFromLHCInfoESSource.vtxOffsetY45 = cms.double(-_params.Y0.value())
process.ctppsBeamParametersFromLHCInfoESSource.vtxOffsetZ45 = cms.double(-_params.Z0.value())

# modify according to era

def _modify2016(process):
print('Process customised for 2016 PPS era')
process.load('SimPPS.DirectSimProducer.simPPS2016_cfi')
unshiftVertex(process, 'Realistic25ns13TeV2016CollisionVtxSmearingParameters')

def _modify2017(process):
print('Process customised for 2017 PPS era')
process.load('SimPPS.DirectSimProducer.simPPS2017_cfi')
unshiftVertex(process, 'Realistic25ns13TeVEarly2017CollisionVtxSmearingParameters')

def _modify2018(process):
print('Process customised for 2018 PPS era')
process.load('SimPPS.DirectSimProducer.simPPS2018_cfi')
unshiftVertex(process, 'Realistic25ns13TeVEarly2018CollisionVtxSmearingParameters')

def _modify2022(process):
print('Process customised for 2022 PPS era')
process.load('SimPPS.DirectSimProducer.simPPS2022_cfi')
if hasattr(process, 'generator'):
process.generator.energy = process.profile_2022_default.ctppsLHCInfo.beamEnergy
if hasattr(process, 'ctppsGeometryESModule'):
# replaced by the composite ESSource
delattr(process, 'ctppsGeometryESModule')

modifyConfigurationStandardSequencesFor2016_ = eras.ctpps_2016.makeProcessModifier(_modify2016)
modifyConfigurationStandardSequencesFor2017_ = eras.ctpps_2017.makeProcessModifier(_modify2017)
modifyConfigurationStandardSequencesFor2018_ = eras.ctpps_2018.makeProcessModifier(_modify2018)
modifyConfigurationStandardSequencesFor2022_ = eras.ctpps_2022.makeProcessModifier(_modify2022)
9 changes: 9 additions & 0 deletions SimPPS/DirectSimProducer/plugins/BuildFile.xml
@@ -0,0 +1,9 @@
<use name="CondFormats/DataRecord"/>
<use name="CondFormats/RunInfo"/>
<use name="Geometry/VeryForwardGeometryBuilder"/>
<use name="Geometry/VeryForwardRPTopology"/>
<use name="SimDataFormats/GeneratorProducts"/>
<use name="rootcore"/>
<library name="SimPPSDirectSimProducerPlugins" file="*.cc">
<flags EDM_PLUGIN="1"/>
</library>
Expand Up @@ -63,10 +63,10 @@

//----------------------------------------------------------------------------------------------------

class CTPPSDirectProtonSimulation : public edm::stream::EDProducer<> {
class PPSDirectProtonSimulation : public edm::stream::EDProducer<> {
public:
explicit CTPPSDirectProtonSimulation(const edm::ParameterSet &);
~CTPPSDirectProtonSimulation() override {}
explicit PPSDirectProtonSimulation(const edm::ParameterSet &);
~PPSDirectProtonSimulation() override {}

static void fillDescriptions(edm::ConfigurationDescriptions &descriptions);

Expand Down Expand Up @@ -149,7 +149,7 @@ class CTPPSDirectProtonSimulation : public edm::stream::EDProducer<> {

//----------------------------------------------------------------------------------------------------

CTPPSDirectProtonSimulation::CTPPSDirectProtonSimulation(const edm::ParameterSet &iConfig)
PPSDirectProtonSimulation::PPSDirectProtonSimulation(const edm::ParameterSet &iConfig)
: tokenLHCInfo_(esConsumes(edm::ESInputTag{"", iConfig.getParameter<std::string>("lhcInfoLabel")})),
tokenBeamParameters_(esConsumes()),
pixelTopologyToken_(esConsumes()),
Expand Down Expand Up @@ -209,7 +209,7 @@ CTPPSDirectProtonSimulation::CTPPSDirectProtonSimulation(const edm::ParameterSet

//----------------------------------------------------------------------------------------------------

void CTPPSDirectProtonSimulation::fillDescriptions(edm::ConfigurationDescriptions &descriptions) {
void PPSDirectProtonSimulation::fillDescriptions(edm::ConfigurationDescriptions &descriptions) {
edm::ParameterSetDescription desc;
desc.addUntracked<unsigned int>("verbosity", 0);

Expand Down Expand Up @@ -237,12 +237,12 @@ void CTPPSDirectProtonSimulation::fillDescriptions(edm::ConfigurationDescription
desc.add<double>("pitchPixelsHor", 100.e-3);
desc.add<double>("pitchPixelsVer", 150.e-3);

descriptions.add("ctppsDirectProtonSimulation", desc);
descriptions.add("ppsDirectProtonSimulation", desc);
}

//----------------------------------------------------------------------------------------------------

void CTPPSDirectProtonSimulation::produce(edm::Event &iEvent, const edm::EventSetup &iSetup) {
void PPSDirectProtonSimulation::produce(edm::Event &iEvent, const edm::EventSetup &iSetup) {
// get input
edm::Handle<edm::HepMCProduct> hepmc_prod;
iEvent.getByToken(hepMCToken_, hepmc_prod);
Expand Down Expand Up @@ -338,7 +338,7 @@ void CTPPSDirectProtonSimulation::produce(edm::Event &iEvent, const edm::EventSe

//----------------------------------------------------------------------------------------------------

void CTPPSDirectProtonSimulation::processProton(
void PPSDirectProtonSimulation::processProton(
const HepMC::GenVertex *in_vtx,
const HepMC::GenParticle *in_trk,
const CTPPSGeometry &geometry,
Expand Down Expand Up @@ -688,4 +688,4 @@ void CTPPSDirectProtonSimulation::processProton(

//----------------------------------------------------------------------------------------------------

DEFINE_FWK_MODULE(CTPPSDirectProtonSimulation);
DEFINE_FWK_MODULE(PPSDirectProtonSimulation);
31 changes: 31 additions & 0 deletions SimPPS/DirectSimProducer/python/matching_cff.py
@@ -0,0 +1,31 @@
import FWCore.ParameterSet.Config as cms

def matchDirectSimOutputs(process, AOD=False, miniAOD=False):
# match sources of rechits with direct simulation outputs
process.totemRPUVPatternFinder.tagRecHit = cms.InputTag('ppsDirectProtonSimulation')
process.ctppsPixelLocalTracks.tag = cms.InputTag('ppsDirectProtonSimulation')
process.ctppsDiamondLocalTracks.recHitsTag = cms.InputTag('ppsDirectProtonSimulation')
# handle clashes between simulation and GT conditions
process.es_prefer_composrc = cms.ESPrefer('CTPPSCompositeESSource', 'ctppsCompositeESSource')
process.es_prefer_pixtopo = cms.ESPrefer('PPSPixelTopologyESSource', 'ppsPixelTopologyESSource')
process.es_prefer_lhcinfo = cms.ESPrefer('CTPPSBeamParametersFromLHCInfoESSource', 'ctppsBeamParametersFromLHCInfoESSource')
process.es_prefer_assocuts = cms.ESPrefer('PPSAssociationCutsESSource', 'ppsAssociationCutsESSource')
return process

def matchDirectSimOutputsAOD(process):
matchDirectSimOutputs(process)
process.beamDivergenceVtxGenerator.src = cms.InputTag('')
process.beamDivergenceVtxGenerator.srcGenParticle = cms.VInputTag(
cms.InputTag('genPUProtons', 'genPUProtons'),
cms.InputTag('genParticles')
)
return process

def matchDirectSimOutputsMiniAOD(process):
matchDirectSimOutputs(process)
process.beamDivergenceVtxGenerator.src = cms.InputTag('')
process.beamDivergenceVtxGenerator.srcGenParticle = cms.VInputTag(
cms.InputTag('genPUProtons', 'genPUProtons'),
cms.InputTag('prunedGenParticles')
)
return process