diff --git a/Configuration/Eras/python/Era_Phase2_cff.py b/Configuration/Eras/python/Era_Phase2_cff.py index 51e9a8d63cb3e..c345cc8145a4f 100644 --- a/Configuration/Eras/python/Era_Phase2_cff.py +++ b/Configuration/Eras/python/Era_Phase2_cff.py @@ -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) diff --git a/Configuration/Eras/python/Era_Run3_cff.py b/Configuration/Eras/python/Era_Run3_cff.py index 49ed0932d8da8..050caf1c155d2 100644 --- a/Configuration/Eras/python/Era_Run3_cff.py +++ b/Configuration/Eras/python/Era_Run3_cff.py @@ -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) diff --git a/Configuration/Eras/python/Modifier_ctpps_2021_cff.py b/Configuration/Eras/python/Modifier_ctpps_2022_cff.py similarity index 59% rename from Configuration/Eras/python/Modifier_ctpps_2021_cff.py rename to Configuration/Eras/python/Modifier_ctpps_2022_cff.py index 15c9d30d3a7e4..fe466b207b0de 100644 --- a/Configuration/Eras/python/Modifier_ctpps_2021_cff.py +++ b/Configuration/Eras/python/Modifier_ctpps_2022_cff.py @@ -1,3 +1,3 @@ import FWCore.ParameterSet.Config as cms -ctpps_2021 = cms.Modifier() +ctpps_2022 = cms.Modifier() diff --git a/Configuration/StandardSequences/python/Eras.py b/Configuration/StandardSequences/python/Eras.py index 78255fada01b3..45d44b8869724 100644 --- a/Configuration/StandardSequences/python/Eras.py +++ b/Configuration/StandardSequences/python/Eras.py @@ -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', @@ -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', diff --git a/EventFilter/CTPPSRawToDigi/python/ctppsDigiToRaw_cff.py b/EventFilter/CTPPSRawToDigi/python/ctppsDigiToRaw_cff.py index fec70961835d6..51fd91185b809 100644 --- a/EventFilter/CTPPSRawToDigi/python/ctppsDigiToRaw_cff.py +++ b/EventFilter/CTPPSRawToDigi/python/ctppsDigiToRaw_cff.py @@ -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 @@ -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)) diff --git a/EventFilter/RawDataCollector/python/rawDataCollector_cfi.py b/EventFilter/RawDataCollector/python/rawDataCollector_cfi.py index 2073d90f9f79e..1399733403726 100644 --- a/EventFilter/RawDataCollector/python/rawDataCollector_cfi.py +++ b/EventFilter/RawDataCollector/python/rawDataCollector_cfi.py @@ -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 diff --git a/Geometry/VeryForwardGeometry/python/commons_cff.py b/Geometry/VeryForwardGeometry/python/commons_cff.py index d4ae12c3e3886..74f85e83d5c43 100644 --- a/Geometry/VeryForwardGeometry/python/commons_cff.py +++ b/Geometry/VeryForwardGeometry/python/commons_cff.py @@ -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() diff --git a/RecoPPS/Configuration/python/recoCTPPS_cff.py b/RecoPPS/Configuration/python/recoCTPPS_cff.py index 3dd2e61d3c0b4..1f036f35c1e38 100644 --- a/RecoPPS/Configuration/python/recoCTPPS_cff.py +++ b/RecoPPS/Configuration/python/recoCTPPS_cff.py @@ -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) diff --git a/RecoPPS/Local/python/ctppsLocalTrackLiteProducer_cff.py b/RecoPPS/Local/python/ctppsLocalTrackLiteProducer_cff.py index 379be28dca719..716011d60c167 100644 --- a/RecoPPS/Local/python/ctppsLocalTrackLiteProducer_cff.py +++ b/RecoPPS/Local/python/ctppsLocalTrackLiteProducer_cff.py @@ -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, diff --git a/SimGeneral/MixingModule/python/mixObjects_cfi.py b/SimGeneral/MixingModule/python/mixObjects_cfi.py index 7e178d4ea3acf..8644ee7a254fd 100644 --- a/SimGeneral/MixingModule/python/mixObjects_cfi.py +++ b/SimGeneral/MixingModule/python/mixObjects_cfi.py @@ -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' ], diff --git a/SimPPS/Configuration/python/GenPPS_cff.py b/SimPPS/Configuration/python/GenPPS_cff.py index 5f245626016a6..c0626c2ada206 100644 --- a/SimPPS/Configuration/python/GenPPS_cff.py +++ b/SimPPS/Configuration/python/GenPPS_cff.py @@ -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)) diff --git a/SimPPS/Configuration/python/SimPPS_cff.py b/SimPPS/Configuration/python/SimPPS_cff.py index 92295d09946e8..4ee9d7fd4f806 100644 --- a/SimPPS/Configuration/python/SimPPS_cff.py +++ b/SimPPS/Configuration/python/SimPPS_cff.py @@ -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) diff --git a/SimPPS/Configuration/python/Utils.py b/SimPPS/Configuration/python/Utils.py new file mode 100644 index 0000000000000..e27b9d4bdf3b7 --- /dev/null +++ b/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 diff --git a/SimPPS/Configuration/python/directSimPPS_cff.py b/SimPPS/Configuration/python/directSimPPS_cff.py new file mode 100644 index 0000000000000..893df712c5424 --- /dev/null +++ b/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) diff --git a/SimPPS/DirectSimProducer/plugins/BuildFile.xml b/SimPPS/DirectSimProducer/plugins/BuildFile.xml new file mode 100644 index 0000000000000..f78d770a4d970 --- /dev/null +++ b/SimPPS/DirectSimProducer/plugins/BuildFile.xml @@ -0,0 +1,9 @@ + + + + + + + + + diff --git a/Validation/CTPPS/plugins/CTPPSDirectProtonSimulation.cc b/SimPPS/DirectSimProducer/plugins/PPSDirectProtonSimulation.cc similarity index 97% rename from Validation/CTPPS/plugins/CTPPSDirectProtonSimulation.cc rename to SimPPS/DirectSimProducer/plugins/PPSDirectProtonSimulation.cc index fe7f9ccce70d9..81b2def4610d5 100644 --- a/Validation/CTPPS/plugins/CTPPSDirectProtonSimulation.cc +++ b/SimPPS/DirectSimProducer/plugins/PPSDirectProtonSimulation.cc @@ -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); @@ -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("lhcInfoLabel")})), tokenBeamParameters_(esConsumes()), pixelTopologyToken_(esConsumes()), @@ -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("verbosity", 0); @@ -237,12 +237,12 @@ void CTPPSDirectProtonSimulation::fillDescriptions(edm::ConfigurationDescription desc.add("pitchPixelsHor", 100.e-3); desc.add("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 hepmc_prod; iEvent.getByToken(hepMCToken_, hepmc_prod); @@ -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, @@ -688,4 +688,4 @@ void CTPPSDirectProtonSimulation::processProton( //---------------------------------------------------------------------------------------------------- -DEFINE_FWK_MODULE(CTPPSDirectProtonSimulation); +DEFINE_FWK_MODULE(PPSDirectProtonSimulation); diff --git a/SimPPS/DirectSimProducer/python/matching_cff.py b/SimPPS/DirectSimProducer/python/matching_cff.py new file mode 100644 index 0000000000000..8c9855267c351 --- /dev/null +++ b/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 diff --git a/SimPPS/DirectSimProducer/python/ppsDirectProtonSimulation_cff.py b/SimPPS/DirectSimProducer/python/ppsDirectProtonSimulation_cff.py new file mode 100644 index 0000000000000..159197f9b9c3f --- /dev/null +++ b/SimPPS/DirectSimProducer/python/ppsDirectProtonSimulation_cff.py @@ -0,0 +1,37 @@ +import FWCore.ParameterSet.Config as cms +from CalibPPS.ESProducers.ctppsBeamParametersFromLHCInfoESSource_cfi import ctppsBeamParametersFromLHCInfoESSource as _esLHCinfo +from SimPPS.DirectSimProducer.ppsDirectProtonSimulation_cfi import ppsDirectProtonSimulation as _dirProtonSim +from IOMC.EventVertexGenerators.beamDivergenceVtxGenerator_cfi import beamDivergenceVtxGenerator as _vtxGen + +# vertex smearing +beamDivergenceVtxGenerator = _vtxGen.clone() + +# beam parameters as determined by PPS +ctppsBeamParametersFromLHCInfoESSource = _esLHCinfo.clone( + lhcInfoLabel = "", + # beam divergence (rad) + beamDivX45 = 30.e-6, + beamDivX56 = 30.e-6, + beamDivY45 = 30.e-6, + beamDivY56 = 30.e-6, + # vertex offset (cm) + vtxOffsetX45 = 0., + vtxOffsetX56 = 0., + vtxOffsetY45 = 0., + vtxOffsetY56 = 0., + vtxOffsetZ45 = 0., + vtxOffsetZ56 = 0., + # vertex sigma (cm) + vtxStddevX = 1.e-3, + vtxStddevY = 1.e-3, + vtxStddevZ = 5. +) + +# direct simulation +ppsDirectProtonSimulation = _dirProtonSim.clone( + hepMCTag = 'beamDivergenceVtxGenerator', + pitchStrips = 66.e-3 * 12 / 19, # effective value to reproduce real RP resolution + pitchPixelsHor = 50.e-3, + pitchPixelsVer = 80.e-3, + produceScoringPlaneHits = False, +) diff --git a/SimPPS/DirectSimProducer/python/profile_base_cff.py b/SimPPS/DirectSimProducer/python/profile_base_cff.py new file mode 100644 index 0000000000000..bbbd2e27a9d1e --- /dev/null +++ b/SimPPS/DirectSimProducer/python/profile_base_cff.py @@ -0,0 +1,33 @@ +import FWCore.ParameterSet.Config as cms + +profile_base = cms.PSet( + L_int = cms.double(1.), + # LHCInfo (default Run 3 values) + ctppsLHCInfo = cms.PSet( + xangle = cms.double(-1.), + betaStar = cms.double(-1.), + beamEnergy = cms.double(6.8e3), + xangleBetaStarHistogramFile = cms.string("CalibPPS/ESProducers/data/xangle_beta_distributions/version1.root"), + xangleBetaStarHistogramObject = cms.string("") + ), + # optics + ctppsOpticalFunctions = cms.PSet( + opticalFunctions = cms.VPSet(), + scoringPlanes = cms.VPSet() + ), + # alignment + ctppsRPAlignmentCorrectionsDataXML = cms.PSet( + MeasuredFiles = cms.vstring(), + RealFiles = cms.vstring(), + MisalignedFiles = cms.vstring() + ), + # direct simu data + ctppsDirectSimuData = cms.PSet( + empiricalAperture45 = cms.string(""), + empiricalAperture56 = cms.string(""), + timeResolutionDiamonds45 = cms.string("999"), + timeResolutionDiamonds56 = cms.string("999"), + efficienciesPerRP = cms.VPSet(), + efficienciesPerPlane = cms.VPSet() + ) +) diff --git a/SimPPS/DirectSimProducer/python/profiles_2016_cff.py b/SimPPS/DirectSimProducer/python/profiles_2016_cff.py new file mode 100644 index 0000000000000..e826e8c15d068 --- /dev/null +++ b/SimPPS/DirectSimProducer/python/profiles_2016_cff.py @@ -0,0 +1,49 @@ +import FWCore.ParameterSet.Config as cms +from SimPPS.DirectSimProducer.profile_base_cff import profile_base as _base +from CalibPPS.ESProducers.ctppsOpticalFunctions_non_DB_cff import optics_2016_preTS2, optics_2016_postTS2 + +# base profile settings for 2016 +_base_2016 = _base.clone( + ctppsLHCInfo = _base.ctppsLHCInfo.clone( + beamEnergy = 6500. + ) +) + +profile_2016_preTS2 = _base_2016.clone( + L_int = 6.138092276 + 3.654039035, + ctppsLHCInfo = _base_2016.ctppsLHCInfo.clone( + xangleBetaStarHistogramObject = "2016_preTS2/h2_betaStar_vs_xangle" + ), + ctppsOpticalFunctions = _base_2016.ctppsOpticalFunctions.clone( + opticalFunctions = optics_2016_preTS2.opticalFunctions, + scoringPlanes = optics_2016_preTS2.scoringPlanes, + ), + ctppsRPAlignmentCorrectionsDataXML = _base_2016.ctppsRPAlignmentCorrectionsDataXML.clone( + MisalignedFiles = ["Validation/CTPPS/alignment/2016_preTS2.xml"], + RealFiles = ["Validation/CTPPS/alignment/2016_preTS2.xml"] + ), + ctppsDirectSimuData = _base_2016.ctppsDirectSimuData.clone( + empiricalAperture45 = "3.76296E-05+(([xi]<0.117122)*0.00712775+([xi]>=0.117122)*0.0148651)*([xi]-0.117122)", + empiricalAperture56 = "1.85954E-05+(([xi]<0.14324)*0.00475349+([xi]>=0.14324)*0.00629514)*([xi]-0.14324)" + ) +) + +profile_2016_postTS2 = _base_2016.clone( + L_int = 5.007365807, + ctppsLHCInfo = _base_2016.ctppsLHCInfo.clone( + xangleBetaStarHistogramObject = "2016_postTS2/h2_betaStar_vs_xangle" + ), + ctppsOpticalFunctions = _base_2016.ctppsOpticalFunctions.clone( + opticalFunctions = optics_2016_postTS2.opticalFunctions, + scoringPlanes = optics_2016_postTS2.scoringPlanes, + ), + ctppsRPAlignmentCorrectionsDataXML = _base_2016.ctppsRPAlignmentCorrectionsDataXML.clone( + MisalignedFiles = ["Validation/CTPPS/alignment/2016_postTS2.xml"], + RealFiles = ["Validation/CTPPS/alignment/2016_postTS2.xml"] + ), + # direct simu data + ctppsDirectSimuData = _base_2016.ctppsDirectSimuData.clone( + empiricalAperture45 = "6.10374E-05+(([xi]<0.113491)*0.00795942+([xi]>=0.113491)*0.01935)*([xi]-0.113491)", + empiricalAperture56 = "([xi]-0.110)/130.0" + ) +) diff --git a/SimPPS/DirectSimProducer/python/profiles_2017_cff.py b/SimPPS/DirectSimProducer/python/profiles_2017_cff.py new file mode 100644 index 0000000000000..8a061e8b9f1d4 --- /dev/null +++ b/SimPPS/DirectSimProducer/python/profiles_2017_cff.py @@ -0,0 +1,48 @@ +import FWCore.ParameterSet.Config as cms +from SimPPS.DirectSimProducer.profile_base_cff import profile_base as _base +from CalibPPS.ESProducers.ctppsOpticalFunctions_non_DB_cff import optics_2017 as _optics + +# base profile settings for 2017 +_base_2017 = _base.clone( + ctppsLHCInfo = _base.ctppsLHCInfo.clone( + beamEnergy = 6500. + ), + ctppsOpticalFunctions = _base.ctppsOpticalFunctions.clone( + opticalFunctions = _optics.opticalFunctions, + scoringPlanes = _optics.scoringPlanes, + ) +) + +profile_2017_preTS2 = _base_2017.clone( + L_int = 15.012899190, + ctppsLHCInfo = _base_2017.ctppsLHCInfo.clone( + xangleBetaStarHistogramObject = "2017_preTS2/h2_betaStar_vs_xangle" + ), + ctppsRPAlignmentCorrectionsDataXML = _base_2017.ctppsRPAlignmentCorrectionsDataXML.clone( + MisalignedFiles = ["Validation/CTPPS/alignment/2017_preTS2.xml"], + RealFiles = ["Validation/CTPPS/alignment/2017_preTS2.xml"] + ), + ctppsDirectSimuData = _base_2017.ctppsDirectSimuData.clone( + empiricalAperture45 = "-(8.71198E-07*[xangle]-0.000134726)+(([xi]<(0.000264704*[xangle]+0.081951))*-(4.32065E-05*[xangle]-0.0130746)+([xi]>=(0.000264704*[xangle]+0.081951))*-(0.000183472*[xangle]-0.0395241))*([xi]-(0.000264704*[xangle]+0.081951))", + empiricalAperture56 = "3.43116E-05+(([xi]<(0.000626936*[xangle]+0.061324))*0.00654394+([xi]>=(0.000626936*[xangle]+0.061324))*-(0.000145164*[xangle]-0.0272919))*([xi]-(0.000626936*[xangle]+0.061324))", + timeResolutionDiamonds45 = "2*(-0.10784+0.105194*x-0.0182611*x^2+0.00134731*x^3-3.58212E-05*x^4)", + timeResolutionDiamonds56 = "2*(0.00735552+0.0272707*x-0.00247151*x^2+8.62788E-05*x^3-7.99605E-07*x^4)" + ) +) + +profile_2017_postTS2 = _base_2017.clone( + L_int = 22.179613387, + ctppsLHCInfo = _base_2017.ctppsLHCInfo.clone( + xangleBetaStarHistogramObject = "2017_postTS2/h2_betaStar_vs_xangle" + ), + ctppsRPAlignmentCorrectionsDataXML = _base_2017.ctppsRPAlignmentCorrectionsDataXML.clone( + MisalignedFiles = ["Validation/CTPPS/alignment/2017_postTS2.xml"], + RealFiles = ["Validation/CTPPS/alignment/2017_postTS2.xml"] + ), + ctppsDirectSimuData = _base_2017.ctppsDirectSimuData.clone( + empiricalAperture45 = "-(8.92079E-07*[xangle]-0.000150214)+(([xi]<(0.000278622*[xangle]+0.0964383))*-(3.9541e-05*[xangle]-0.0115104)+([xi]>=(0.000278622*[xangle]+0.0964383))*-(0.000108249*[xangle]-0.0249303))*([xi]-(0.000278622*[xangle]+0.0964383))", + empiricalAperture56 = "4.56961E-05+(([xi]<(0.00075625*[xangle]+0.0643361))*-(3.01107e-05*[xangle]-0.00985126)+([xi]>=(0.00075625*[xangle]+0.0643361))*-(8.95437e-05*[xangle]-0.0169474))*([xi]-(0.00075625*[xangle]+0.0643361))", + timeResolutionDiamonds45 = "2*(0.0152613+0.0498784*x-0.00824168*x^2+0.000599844*x^3-1.5923E-05*x^4)", + timeResolutionDiamonds56 = "2*(-0.00458856+0.0522619*x-0.00806666*x^2+0.000558331*x^3-1.42165E-05*x^4)" + ) +) diff --git a/SimPPS/DirectSimProducer/python/profiles_2018_cff.py b/SimPPS/DirectSimProducer/python/profiles_2018_cff.py new file mode 100644 index 0000000000000..76cf74773dae6 --- /dev/null +++ b/SimPPS/DirectSimProducer/python/profiles_2018_cff.py @@ -0,0 +1,64 @@ +import FWCore.ParameterSet.Config as cms +from SimPPS.DirectSimProducer.profile_base_cff import profile_base as _base +from CalibPPS.ESProducers.ctppsOpticalFunctions_non_DB_cff import optics_2018 as _optics + +# base profile settings for 2018 +_base_2018 = _base.clone( + ctppsLHCInfo = _base.ctppsLHCInfo.clone( + beamEnergy = 6500. + ), + ctppsOpticalFunctions = _base.ctppsOpticalFunctions.clone( + opticalFunctions = _optics.opticalFunctions, + scoringPlanes = _optics.scoringPlanes, + ), + ctppsDirectSimuData = _base.ctppsDirectSimuData.clone( + empiricalAperture45 = "-(8.44219E-07*[xangle]-0.000100957)+(([xi]<(0.000247185*[xangle]+0.101599))*-(1.40289E-05*[xangle]-0.00727237)+([xi]> = (0.000247185*[xangle]+0.101599))*-(0.000107811*[xangle]-0.0261867))*([xi]-(0.000247185*[xangle]+0.101599))", + empiricalAperture56 = "-(-4.74758E-07*[xangle]+3.0881E-05)+(([xi]<(0.000727859*[xangle]+0.0722653))*-(2.43968E-05*[xangle]-0.0085461)+([xi]> = (0.000727859*[xangle]+0.0722653))*-(7.19216E-05*[xangle]-0.0148267))*([xi]-(0.000727859*[xangle]+0.0722653))" + ) +) + +profile_2018_preTS1 = _base_2018.clone( + L_int = 18.488297964, + ctppsLHCInfo = _base_2018.ctppsLHCInfo.clone( + xangleBetaStarHistogramObject = "2018_preTS1/h2_betaStar_vs_xangle" + ), + ctppsRPAlignmentCorrectionsDataXML = _base_2018.ctppsRPAlignmentCorrectionsDataXML.clone( + MisalignedFiles = ["Validation/CTPPS/alignment/2018_preTS1.xml"], + RealFiles = ["Validation/CTPPS/alignment/2018_preTS1.xml"] + ), + ctppsDirectSimuData = _base_2018.ctppsDirectSimuData.clone( + # timing not available in this period + timeResolutionDiamonds45 = "0.200", + timeResolutionDiamonds56 = "0.200" + ) +) + +profile_2018_TS1_TS2 = _base_2018.clone( + L_int = 26.812002394, + ctppsLHCInfo = _base_2018.ctppsLHCInfo.clone( + xangleBetaStarHistogramObject = "2018_TS1_TS2/h2_betaStar_vs_xangle" + ), + ctppsRPAlignmentCorrectionsDataXML = _base_2018.ctppsRPAlignmentCorrectionsDataXML.clone( + MisalignedFiles = ["Validation/CTPPS/alignment/2018_TS1_TS2.xml"], + RealFiles = ["Validation/CTPPS/alignment/2018_TS1_TS2.xml"] + ), + ctppsDirectSimuData = _base_2018.ctppsDirectSimuData.clone( + timeResolutionDiamonds45 = "2*((x<16)*(-0.171784+0.175856*x-0.0322344*x^2+0.00231489*x^3-5.7575E-05*x^4)+(x>=16)*0.105)", + timeResolutionDiamonds56 = "2*((x<16)*(-0.014943+0.102806*x-0.0209404*x^2+0.00158264*x^3-4.08241E-05*x^4)+(x>=16)*0.089)" + ) +) + +profile_2018_postTS2 = _base_2018.clone( + L_int = 10.415769561, + ctppsLHCInfo = _base_2018.ctppsLHCInfo.clone( + xangleBetaStarHistogramObject = "2018_postTS2/h2_betaStar_vs_xangle" + ), + ctppsRPAlignmentCorrectionsDataXML = _base_2018.ctppsRPAlignmentCorrectionsDataXML.clone( + MisalignedFiles = ["Validation/CTPPS/alignment/2018_postTS2.xml"], + RealFiles = ["Validation/CTPPS/alignment/2018_postTS2.xml"] + ), + ctppsDirectSimuData = _base_2018.ctppsDirectSimuData.clone( + timeResolutionDiamonds45 = "2*((x<16)*(-0.381504+0.255095*x-0.0415622*x^2+0.00275877*x^3-6.47115E-05*x^4)+(x>=16)*0.118)", + timeResolutionDiamonds56 = "2*((x<16)*(-0.279298+0.219838*x-0.0384257*x^2+0.00268906*x^3-6.60572E-05*x^4)+(x>=16)*0.099)", + ) +) diff --git a/SimPPS/DirectSimProducer/python/profiles_2022_cff.py b/SimPPS/DirectSimProducer/python/profiles_2022_cff.py new file mode 100644 index 0000000000000..05bbefd0d9587 --- /dev/null +++ b/SimPPS/DirectSimProducer/python/profiles_2022_cff.py @@ -0,0 +1,31 @@ +import FWCore.ParameterSet.Config as cms +from SimPPS.DirectSimProducer.profile_base_cff import profile_base as _base +from CalibPPS.ESProducers.ctppsOpticalFunctions_non_DB_cff import optics_2021 as _optics + +# base profile settings for 2022 +_base_2022 = _base.clone( + ctppsOpticalFunctions = _base.ctppsOpticalFunctions.clone( + opticalFunctions = _optics.opticalFunctions, + scoringPlanes = _optics.scoringPlanes, + ), + ctppsDirectSimuData = _base.ctppsDirectSimuData.clone( + empiricalAperture45 = "1.e3*([xi] - 0.20)", + empiricalAperture56 = "1.e3*([xi] - 0.20)" + ) +) + +profile_2022_default = _base_2022.clone( + L_int = 1., + ctppsLHCInfo = _base_2022.ctppsLHCInfo.clone( + # NB: until a dedicated 2022 distributions are issued, it is OK to use 2021 ones here + xangleBetaStarHistogramObject = "2021/h2_betaStar_vs_xangle" + ), + ctppsRPAlignmentCorrectionsDataXML = _base_2022.ctppsRPAlignmentCorrectionsDataXML.clone( + MisalignedFiles = ["Validation/CTPPS/alignment/alignment_2022.xml"], + RealFiles = ["Validation/CTPPS/alignment/alignment_2022.xml"] + ), + ctppsDirectSimuData = _base_2022.ctppsDirectSimuData.clone( + timeResolutionDiamonds45 = "0.200", + timeResolutionDiamonds56 = "0.200" + ) +) diff --git a/SimPPS/DirectSimProducer/python/simPPS2016_cfi.py b/SimPPS/DirectSimProducer/python/simPPS2016_cfi.py new file mode 100644 index 0000000000000..b6b5467b51308 --- /dev/null +++ b/SimPPS/DirectSimProducer/python/simPPS2016_cfi.py @@ -0,0 +1,26 @@ +import FWCore.ParameterSet.Config as cms +from CalibPPS.ESProducers.ctppsCompositeESSource_cfi import ctppsCompositeESSource as _esComp +from CalibPPS.ESProducers.ppsAssociationCuts_non_DB_cff import use_single_infinite_iov_entry, p2016 +from CalibPPS.ESProducers.ppsAssociationCuts_non_DB_cff import ppsAssociationCutsESSource as _esAssCuts +from Geometry.VeryForwardGeometry.commons_cff import cloneGeometry +from SimPPS.DirectSimProducer.profiles_2016_cff import profile_2016_preTS2, profile_2016_postTS2 + +ppsAssociationCutsESSource = _esAssCuts.clone() +use_single_infinite_iov_entry(ppsAssociationCutsESSource, p2016) +# geometry (using 2017 here is OK) +XMLIdealGeometryESSource_CTPPS, ctppsGeometryESModule = cloneGeometry('Geometry.VeryForwardGeometry.geometryRPFromDD_2017_cfi') + +ctppsCompositeESSource = _esComp.clone( + generateEveryNEvents = 100, + periods = [profile_2016_preTS2, profile_2016_postTS2], + compactViewTag = ctppsGeometryESModule.compactViewTag, + isRun2 = ctppsGeometryESModule.isRun2 +) + +# RP ids +rpIds = cms.PSet( + rp_45_F = cms.uint32(3), + rp_45_N = cms.uint32(2), + rp_56_N = cms.uint32(102), + rp_56_F = cms.uint32(103) +) diff --git a/SimPPS/DirectSimProducer/python/simPPS2017_cfi.py b/SimPPS/DirectSimProducer/python/simPPS2017_cfi.py new file mode 100644 index 0000000000000..a006022511d59 --- /dev/null +++ b/SimPPS/DirectSimProducer/python/simPPS2017_cfi.py @@ -0,0 +1,25 @@ +import FWCore.ParameterSet.Config as cms +from CalibPPS.ESProducers.ctppsCompositeESSource_cfi import ctppsCompositeESSource as _esComp +from CalibPPS.ESProducers.ppsAssociationCuts_non_DB_cff import use_single_infinite_iov_entry, p2017 +from CalibPPS.ESProducers.ppsAssociationCuts_non_DB_cff import ppsAssociationCutsESSource as _esAssCuts +from Geometry.VeryForwardGeometry.commons_cff import cloneGeometry +from SimPPS.DirectSimProducer.profiles_2017_cff import profile_2017_preTS2, profile_2017_postTS2 + +ppsAssociationCutsESSource = _esAssCuts.clone() +use_single_infinite_iov_entry(ppsAssociationCutsESSource, p2017) +XMLIdealGeometryESSource_CTPPS, ctppsGeometryESModule = cloneGeometry('Geometry.VeryForwardGeometry.geometryRPFromDD_2017_cfi') + +ctppsCompositeESSource = _esComp.clone( + generateEveryNEvents = 100, + periods = [profile_2017_preTS2, profile_2017_postTS2], + compactViewTag = ctppsGeometryESModule.compactViewTag, + isRun2 = ctppsGeometryESModule.isRun2 +) + +# RP ids +rpIds = cms.PSet( + rp_45_F = cms.uint32(23), + rp_45_N = cms.uint32(3), + rp_56_N = cms.uint32(103), + rp_56_F = cms.uint32(123) +) diff --git a/SimPPS/DirectSimProducer/python/simPPS2018_cfi.py b/SimPPS/DirectSimProducer/python/simPPS2018_cfi.py new file mode 100644 index 0000000000000..36cbf289f8262 --- /dev/null +++ b/SimPPS/DirectSimProducer/python/simPPS2018_cfi.py @@ -0,0 +1,18 @@ +import FWCore.ParameterSet.Config as cms +from CalibPPS.ESProducers.ctppsCompositeESSource_cfi import ctppsCompositeESSource as _esComp +from CalibPPS.ESProducers.ppsAssociationCuts_non_DB_cff import use_single_infinite_iov_entry, p2018 +from CalibPPS.ESProducers.ppsAssociationCuts_non_DB_cff import ppsAssociationCutsESSource as _esAssCuts +from Geometry.VeryForwardGeometry.commons_cff import cloneGeometry +from SimPPS.DirectSimProducer.profiles_2018_cff import profile_2018_preTS1, profile_2018_TS1_TS2, profile_2018_postTS2 +from SimPPS.DirectSimProducer.simPPS2017_cfi import rpIds + +ppsAssociationCutsESSource = _esAssCuts.clone() +use_single_infinite_iov_entry(ppsAssociationCutsESSource, p2018) +XMLIdealGeometryESSource_CTPPS, ctppsGeometryESModule = cloneGeometry('Geometry.VeryForwardGeometry.geometryRPFromDD_2018_cfi') + +ctppsCompositeESSource = _esComp.clone( + generateEveryNEvents = 100, + periods = [profile_2018_preTS1, profile_2018_TS1_TS2, profile_2018_postTS2], + compactViewTag = ctppsGeometryESModule.compactViewTag, + isRun2 = ctppsGeometryESModule.isRun2 +) diff --git a/SimPPS/DirectSimProducer/python/simPPS2022_cfi.py b/SimPPS/DirectSimProducer/python/simPPS2022_cfi.py new file mode 100644 index 0000000000000..cf35280fb3c3e --- /dev/null +++ b/SimPPS/DirectSimProducer/python/simPPS2022_cfi.py @@ -0,0 +1,20 @@ +import FWCore.ParameterSet.Config as cms +from CalibPPS.ESProducers.ctppsCompositeESSource_cfi import ctppsCompositeESSource as _esComp +from CalibPPS.ESProducers.ppsAssociationCuts_non_DB_cff import use_single_infinite_iov_entry, p2022 +from CalibPPS.ESProducers.ppsAssociationCuts_non_DB_cff import ppsAssociationCutsESSource as _esAssCuts +from Geometry.VeryForwardGeometry.commons_cff import cloneGeometry +from SimPPS.DirectSimProducer.profiles_2022_cff import profile_2022_default +from SimPPS.DirectSimProducer.simPPS2017_cfi import rpIds + +ppsAssociationCutsESSource = _esAssCuts.clone() +use_single_infinite_iov_entry(ppsAssociationCutsESSource, p2022) +XMLIdealGeometryESSource_CTPPS, _ctppsGeometryESModule = cloneGeometry('Geometry.VeryForwardGeometry.geometryRPFromDD_2022_cfi') +# not cloning the ctppsGeometryESModule, as it is replaced by the composite ES source + +ctppsCompositeESSource = _esComp.clone( + generateEveryNEvents = 100, + periods = [profile_2022_default], + # geometry (using 2017 here is OK) + compactViewTag = _ctppsGeometryESModule.compactViewTag, + isRun2 = _ctppsGeometryESModule.isRun2 +) diff --git a/SimPPS/DirectSimProducer/test/test_miniAOD_cfg.py b/SimPPS/DirectSimProducer/test/test_miniAOD_cfg.py new file mode 100644 index 0000000000000..16a4abf6e079f --- /dev/null +++ b/SimPPS/DirectSimProducer/test/test_miniAOD_cfg.py @@ -0,0 +1,56 @@ +import FWCore.ParameterSet.Config as cms +from Configuration.StandardSequences.Eras import eras +process = cms.Process('PPS', eras.Run2_2018) + +process.load('Configuration.StandardSequences.Services_cff') +process.load('Configuration.EventContent.EventContent_cff') +process.load('SimGeneral.MixingModule.mixNoPU_cfi') +process.load('Configuration.StandardSequences.GeometryRecoDB_cff') +process.load('Configuration.StandardSequences.MagneticField_cff') +process.load('Configuration.StandardSequences.EndOfProcess_cff') +process.load('Configuration.StandardSequences.FrontierConditions_GlobalTag_cff') +process.load('SimPPS.Configuration.directSimPPS_cff') +process.load('RecoPPS.Configuration.recoCTPPS_cff') + +# minimum of logs +process.load('FWCore.MessageService.MessageLogger_cfi') +process.MessageLogger.cerr.threshold = cms.untracked.string('') +process.MessageLogger.cerr.FwkReport.reportEvery = cms.untracked.int32(100) + +# global tag +from Configuration.AlCa.GlobalTag import GlobalTag +process.GlobalTag = GlobalTag(process.GlobalTag, '106X_upgrade2018_realistic_v16_L1v1', '') + +# raw data source +process.source = cms.Source("PoolSource", + fileNames = cms.untracked.vstring( + #'/store/mc/RunIISummer20UL16MiniAODAPVv2/GGToMuMu_Pt-25_Elastic_13TeV-lpair/MINIAODSIM/106X_mcRun2_asymptotic_preVFP_v11-v1/280000/3870E880-4A47-7440-B122-C76062D2290F.root', + '/store/mc/RunIISummer20UL18MiniAODv2/GGToMuMu_Pt-25_Elastic_13TeV-lpair/MINIAODSIM/106X_upgrade2018_realistic_v16_L1v1-v2/260000/6EC2EE65-77C0-3C43-A51B-7B94FE441894.root', + ), +) + +process.maxEvents = cms.untracked.PSet( + input = cms.untracked.int32(1000) +) + +process.RandomNumberGeneratorService = cms.Service("RandomNumberGeneratorService", + beamDivergenceVtxGenerator = cms.PSet(initialSeed = cms.untracked.uint32(3849)), + ppsDirectProtonSimulation = cms.PSet(initialSeed = cms.untracked.uint32(4981)) +) + +from SimPPS.DirectSimProducer.matching_cff import matchDirectSimOutputsMiniAOD +matchDirectSimOutputsMiniAOD(process) + +process.p = cms.Path( + process.directSimPPS + * process.recoDirectSimPPS +) + +# output configuration +from RecoPPS.Configuration.RecoCTPPS_EventContent_cff import RecoCTPPSAOD +process.output = cms.OutputModule('PoolOutputModule', + fileName = cms.untracked.string('file:output.root'), + outputCommands = RecoCTPPSAOD.outputCommands +) + +process.outpath = cms.EndPath(process.output) diff --git a/SimTransport/PPSProtonTransport/python/PPSTransport_cff.py b/SimTransport/PPSProtonTransport/python/PPSTransport_cff.py index ed23c0fadb786..bdf7a80564d8f 100644 --- a/SimTransport/PPSProtonTransport/python/PPSTransport_cff.py +++ b/SimTransport/PPSProtonTransport/python/PPSTransport_cff.py @@ -27,8 +27,8 @@ ctpps_2018.toReplaceWith(_LHCTransportPSet,_hector_2018) #ctpps_2018.toReplaceWith(_LHCTransportPSet,_opticalfunctionsTransportSetup_2018) -from Configuration.Eras.Modifier_ctpps_2021_cff import ctpps_2021 +from Configuration.Eras.Modifier_ctpps_2022_cff import ctpps_2022 #ctpps_2021.toReplaceWith(_LHCTransportPSet, _hector_2021) # there is no LHCInfo tag for Run3 yet, force to use a nonDB propagation -ctpps_2021.toReplaceWith(_LHCTransportPSet, _opticalfunctionsTransportSetup_2021) # there is no LHCInfo tag for Run3 yet, force to use a nonDB propagation +ctpps_2022.toReplaceWith(_LHCTransportPSet, _opticalfunctionsTransportSetup_2021) # there is no LHCInfo tag for Run3 yet, force to use a nonDB propagation LHCTransport = cms.EDProducer("PPSSimTrackProducer",_commonParameters,_LHCTransportPSet) diff --git a/Validation/CTPPS/python/base_cff.py b/Validation/CTPPS/python/base_cff.py new file mode 100644 index 0000000000000..f9349c05440b9 --- /dev/null +++ b/Validation/CTPPS/python/base_cff.py @@ -0,0 +1,54 @@ +#---------------------------------------------------------------------------------------------------- +# utility functions + +def SetSmearingLevel1(obj): + obj.vtxStddevX = 0E-4 + obj.vtxStddevZ = 0 + + obj.beamDivX45 = 0E-6 + obj.beamDivX56 = 0E-6 + obj.beamDivY45 = 0E-6 + obj.beamDivY56 = 0E-6 + +def SetLevel1(process): + SetSmearingLevel1(process.ctppsBeamParametersFromLHCInfoESSource) + + process.ppsDirectProtonSimulation.roundToPitch = False + +def SetSmearingLevel2(obj): + obj.beamDivX45 = 0E-6 + obj.beamDivX56 = 0E-6 + obj.beamDivY45 = 0E-6 + obj.beamDivY56 = 0E-6 + +def SetLevel2(process): + SetSmearingLevel2(process.ctppsBeamParametersFromLHCInfoESSource) + + process.ppsDirectProtonSimulation.roundToPitch = False + +def SetLevel3(process): + process.ppsDirectProtonSimulation.roundToPitch = False + +def SetLevel4(process): + pass + +def SetLowTheta(process): + process.generator.theta_x_sigma = 0E-6 + process.generator.theta_y_sigma = 0E-6 + +def SetLargeTheta(process): + pass + +def UseConstantXangleBetaStar(process, xangle, betaStar): + for p in ctppsCompositeESSource.periods: + p.ctppsLHCInfo.xangle = xangle + p.ctppsLHCInfo.betaStar = betaStar + +def UseXangleBetaStarHistogram(process, f="", obj=""): + for p in ctppsCompositeESSource.periods: + p.ctppsLHCInfo.xangle = -1 # negative value indicates to use the xangle/beta* histogram + + if f: + p.ctppsLHCInfo.xangleBetaStarHistogramFile = f + if obj: + p.ctppsLHCInfo.xangleBetaStarHistogramObject = obj diff --git a/Validation/CTPPS/python/simu_config/base_cff.py b/Validation/CTPPS/python/simu_config/base_cff.py deleted file mode 100644 index f3ae25ba7903f..0000000000000 --- a/Validation/CTPPS/python/simu_config/base_cff.py +++ /dev/null @@ -1,181 +0,0 @@ -import FWCore.ParameterSet.Config as cms - -# load standard files (on top so as settings can be overwritten below) -from RecoPPS.ProtonReconstruction.ctppsProtons_cff import * - -# configuration for composite source of alignment, optics, ... -from CalibPPS.ESProducers.ctppsCompositeESSource_cfi import * -ctppsCompositeESSource.generateEveryNEvents = 100 - -profile_base = cms.PSet( - L_int = cms.double(1), - - # LHCInfo - ctppsLHCInfo = cms.PSet( - xangle = cms.double(-1), - betaStar = cms.double(-1), - beamEnergy = cms.double(0), - xangleBetaStarHistogramFile = cms.string("CalibPPS/ESProducers/data/xangle_beta_distributions/version1.root"), - xangleBetaStarHistogramObject = cms.string("") - ), - - # optics - ctppsOpticalFunctions = cms.PSet( - opticalFunctions = cms.VPSet(), - scoringPlanes = cms.VPSet() - ), - - # alignment - ctppsRPAlignmentCorrectionsDataXML = cms.PSet( - MeasuredFiles = cms.vstring(), - RealFiles = cms.vstring(), - MisalignedFiles = cms.vstring() - ), - - # direct simu data - ctppsDirectSimuData = cms.PSet( - empiricalAperture45 = cms.string(""), - empiricalAperture56 = cms.string(""), - - timeResolutionDiamonds45 = cms.string("999"), - timeResolutionDiamonds56 = cms.string("999"), - - efficienciesPerRP = cms.VPSet(), - efficienciesPerPlane = cms.VPSet() - ) -) - -# beam parameters as determined by PPS -ctppsBeamParametersFromLHCInfoESSource = cms.ESProducer("CTPPSBeamParametersFromLHCInfoESSource", - lhcInfoLabel = cms.string(""), - - # beam divergence (rad) - beamDivX45 = cms.double(30E-6), - beamDivX56 = cms.double(30E-6), - beamDivY45 = cms.double(30E-6), - beamDivY56 = cms.double(30E-6), - - # vertex offset (cm) - vtxOffsetX45 = cms.double(0.), - vtxOffsetX56 = cms.double(0.), - vtxOffsetY45 = cms.double(0.), - vtxOffsetY56 = cms.double(0.), - vtxOffsetZ45 = cms.double(0.), - vtxOffsetZ56 = cms.double(0.), - - # vertex sigma (cm) - vtxStddevX = cms.double(10E-4), - vtxStddevY = cms.double(10E-4), - vtxStddevZ = cms.double(5) -) - -# particle-data table -from SimGeneral.HepPDTESSource.pythiapdt_cfi import * - -# random seeds -RandomNumberGeneratorService = cms.Service("RandomNumberGeneratorService", - sourceSeed = cms.PSet(initialSeed = cms.untracked.uint32(98765)), - generator = cms.PSet(initialSeed = cms.untracked.uint32(98766)), - beamDivergenceVtxGenerator = cms.PSet(initialSeed = cms.untracked.uint32(3849)), - ctppsDirectProtonSimulation = cms.PSet(initialSeed = cms.untracked.uint32(4981)) -) - -# default source -source = cms.Source("EmptySource", - firstRun = cms.untracked.uint32(1), - numberEventsInLuminosityBlock = ctppsCompositeESSource.generateEveryNEvents -) - -# particle generator -from Configuration.Generator.randomXiThetaGunProducer_cfi import * -generator.xi_max = 0.25 -generator.theta_x_sigma = 60E-6 -generator.theta_y_sigma = 60E-6 - -# beam smearing -from IOMC.EventVertexGenerators.beamDivergenceVtxGenerator_cfi import * - -# direct simulation -from Validation.CTPPS.ctppsDirectProtonSimulation_cfi import * -ctppsDirectProtonSimulation.verbosity = 0 -ctppsDirectProtonSimulation.hepMCTag = cms.InputTag('beamDivergenceVtxGenerator') -ctppsDirectProtonSimulation.roundToPitch = True -ctppsDirectProtonSimulation.pitchStrips = 66E-3 * 12 / 19 # effective value to reproduce real RP resolution -ctppsDirectProtonSimulation.pitchPixelsHor = 50E-3 -ctppsDirectProtonSimulation.pitchPixelsVer = 80E-3 -ctppsDirectProtonSimulation.useEmpiricalApertures = True -ctppsDirectProtonSimulation.produceHitsRelativeToBeam = True -ctppsDirectProtonSimulation.produceScoringPlaneHits = False -ctppsDirectProtonSimulation.produceRecHits = True - -# local reconstruction -from CalibPPS.ESProducers.ppsTopology_cff import * - -from RecoPPS.Local.totemRPLocalReconstruction_cff import * -from RecoPPS.Local.ctppsPixelLocalReconstruction_cff import * -from RecoPPS.Local.ctppsDiamondLocalReconstruction_cff import * -from RecoPPS.Local.ctppsLocalTrackLiteProducer_cff import * - -totemRPUVPatternFinder.tagRecHit = cms.InputTag('ctppsDirectProtonSimulation') -ctppsPixelLocalTracks.tag = cms.InputTag('ctppsDirectProtonSimulation') -ctppsDiamondLocalTracks.recHitsTag = cms.InputTag('ctppsDirectProtonSimulation') - -ctppsLocalTrackLiteProducer.includeDiamonds = False - -# proton reconstruction -ctppsProtons.tagLocalTrackLite = cms.InputTag('ctppsLocalTrackLiteProducer') - -#---------------------------------------------------------------------------------------------------- -# utility functions - -def SetSmearingLevel1(obj): - obj.vtxStddevX = 0E-4 - obj.vtxStddevZ = 0 - - obj.beamDivX45 = 0E-6 - obj.beamDivX56 = 0E-6 - obj.beamDivY45 = 0E-6 - obj.beamDivY56 = 0E-6 - -def SetLevel1(process): - SetSmearingLevel1(process.ctppsBeamParametersFromLHCInfoESSource) - - process.ctppsDirectProtonSimulation.roundToPitch = False - -def SetSmearingLevel2(obj): - obj.beamDivX45 = 0E-6 - obj.beamDivX56 = 0E-6 - obj.beamDivY45 = 0E-6 - obj.beamDivY56 = 0E-6 - -def SetLevel2(process): - SetSmearingLevel2(process.ctppsBeamParametersFromLHCInfoESSource) - - process.ctppsDirectProtonSimulation.roundToPitch = False - -def SetLevel3(process): - process.ctppsDirectProtonSimulation.roundToPitch = False - -def SetLevel4(process): - pass - -def SetLowTheta(process): - process.generator.theta_x_sigma = 0E-6 - process.generator.theta_y_sigma = 0E-6 - -def SetLargeTheta(process): - pass - -def UseConstantXangleBetaStar(process, xangle, betaStar): - for p in ctppsCompositeESSource.periods: - p.ctppsLHCInfo.xangle = xangle - p.ctppsLHCInfo.betaStar = betaStar - -def UseXangleBetaStarHistogram(process, f="", obj=""): - for p in ctppsCompositeESSource.periods: - p.ctppsLHCInfo.xangle = -1 # negative value indicates to use the xangle/beta* histogram - - if f: - p.ctppsLHCInfo.xangleBetaStarHistogramFile = f - if obj: - p.ctppsLHCInfo.xangleBetaStarHistogramObject = obj diff --git a/Validation/CTPPS/python/simu_config/profile_2016_postTS2_cff.py b/Validation/CTPPS/python/simu_config/profile_2016_postTS2_cff.py deleted file mode 100644 index 82235542eb261..0000000000000 --- a/Validation/CTPPS/python/simu_config/profile_2016_postTS2_cff.py +++ /dev/null @@ -1,31 +0,0 @@ -import FWCore.ParameterSet.Config as cms - -from Validation.CTPPS.simu_config.year_2016_cff import * - -from CalibPPS.ESProducers.ctppsOpticalFunctions_non_DB_cff import optics_2016_postTS2 as selected_optics - -alignmentFile = "Validation/CTPPS/alignment/2016_postTS2.xml" - -profile_2016_postTS2 = profile_base_2016.clone( - L_int = 5.007365807, - - ctppsLHCInfo = dict( - xangleBetaStarHistogramObject = cms.string("2016_postTS2/h2_betaStar_vs_xangle") - ), - - ctppsOpticalFunctions = dict( - opticalFunctions = selected_optics.opticalFunctions, - scoringPlanes = selected_optics.scoringPlanes, - ), - - ctppsRPAlignmentCorrectionsDataXML = dict( - MisalignedFiles = [alignmentFile], - RealFiles = [alignmentFile] - ), - - # direct simu data - ctppsDirectSimuData = dict( - empiricalAperture45 = cms.string("6.10374E-05+(([xi]<0.113491)*0.00795942+([xi]>=0.113491)*0.01935)*([xi]-0.113491)"), - empiricalAperture56 = cms.string("([xi]-0.110)/130.0") - ) -) diff --git a/Validation/CTPPS/python/simu_config/profile_2016_preTS2_cff.py b/Validation/CTPPS/python/simu_config/profile_2016_preTS2_cff.py deleted file mode 100644 index faaf385087753..0000000000000 --- a/Validation/CTPPS/python/simu_config/profile_2016_preTS2_cff.py +++ /dev/null @@ -1,30 +0,0 @@ -import FWCore.ParameterSet.Config as cms - -from Validation.CTPPS.simu_config.year_2016_cff import * - -from CalibPPS.ESProducers.ctppsOpticalFunctions_non_DB_cff import optics_2016_preTS2 as selected_optics - -alignmentFile = "Validation/CTPPS/alignment/2016_preTS2.xml" - -profile_2016_preTS2 = profile_base_2016.clone( - L_int = 6.138092276 + 3.654039035, - - ctppsLHCInfo = dict( - xangleBetaStarHistogramObject = cms.string("2016_preTS2/h2_betaStar_vs_xangle") - ), - - ctppsOpticalFunctions = dict( - opticalFunctions = selected_optics.opticalFunctions, - scoringPlanes = selected_optics.scoringPlanes, - ), - - ctppsRPAlignmentCorrectionsDataXML = dict( - MisalignedFiles = [alignmentFile], - RealFiles = [alignmentFile] - ), - - ctppsDirectSimuData = dict( - empiricalAperture45 = cms.string("3.76296E-05+(([xi]<0.117122)*0.00712775+([xi]>=0.117122)*0.0148651)*([xi]-0.117122)"), - empiricalAperture56 = cms.string("1.85954E-05+(([xi]<0.14324)*0.00475349+([xi]>=0.14324)*0.00629514)*([xi]-0.14324)") - ) -) diff --git a/Validation/CTPPS/python/simu_config/profile_2017_postTS2_cff.py b/Validation/CTPPS/python/simu_config/profile_2017_postTS2_cff.py deleted file mode 100644 index c3565b0490cf0..0000000000000 --- a/Validation/CTPPS/python/simu_config/profile_2017_postTS2_cff.py +++ /dev/null @@ -1,26 +0,0 @@ -import FWCore.ParameterSet.Config as cms - -from Validation.CTPPS.simu_config.year_2017_cff import * - -alignmentFile = "Validation/CTPPS/alignment/2017_postTS2.xml" - -profile_2017_postTS2 = profile_base_2017.clone( - L_int = 22.179613387, - - ctppsLHCInfo = dict( - xangleBetaStarHistogramObject = "2017_postTS2/h2_betaStar_vs_xangle" - ), - - ctppsRPAlignmentCorrectionsDataXML = dict( - MisalignedFiles = [alignmentFile], - RealFiles = [alignmentFile] - ), - - ctppsDirectSimuData = dict( - empiricalAperture45 = "-(8.92079E-07*[xangle]-0.000150214)+(([xi]<(0.000278622*[xangle]+0.0964383))*-(3.9541e-05*[xangle]-0.0115104)+([xi]>=(0.000278622*[xangle]+0.0964383))*-(0.000108249*[xangle]-0.0249303))*([xi]-(0.000278622*[xangle]+0.0964383))", - empiricalAperture56 = "4.56961E-05+(([xi]<(0.00075625*[xangle]+0.0643361))*-(3.01107e-05*[xangle]-0.00985126)+([xi]>=(0.00075625*[xangle]+0.0643361))*-(8.95437e-05*[xangle]-0.0169474))*([xi]-(0.00075625*[xangle]+0.0643361))", - - timeResolutionDiamonds45 = "2*(0.0152613+0.0498784*x-0.00824168*x^2+0.000599844*x^3-1.5923E-05*x^4)", - timeResolutionDiamonds56 = "2*(-0.00458856+0.0522619*x-0.00806666*x^2+0.000558331*x^3-1.42165E-05*x^4)" - ) -) diff --git a/Validation/CTPPS/python/simu_config/profile_2017_preTS2_cff.py b/Validation/CTPPS/python/simu_config/profile_2017_preTS2_cff.py deleted file mode 100644 index 92d59fd66fc9e..0000000000000 --- a/Validation/CTPPS/python/simu_config/profile_2017_preTS2_cff.py +++ /dev/null @@ -1,26 +0,0 @@ -import FWCore.ParameterSet.Config as cms - -from Validation.CTPPS.simu_config.year_2017_cff import * - -alignmentFile = "Validation/CTPPS/alignment/2017_preTS2.xml" - -profile_2017_preTS2 = profile_base_2017.clone( - L_int = 15.012899190, - - ctppsLHCInfo = dict( - xangleBetaStarHistogramObject = "2017_preTS2/h2_betaStar_vs_xangle" - ), - - ctppsRPAlignmentCorrectionsDataXML = dict( - MisalignedFiles = [alignmentFile], - RealFiles = [alignmentFile] - ), - - ctppsDirectSimuData = dict( - empiricalAperture45 = "-(8.71198E-07*[xangle]-0.000134726)+(([xi]<(0.000264704*[xangle]+0.081951))*-(4.32065E-05*[xangle]-0.0130746)+([xi]>=(0.000264704*[xangle]+0.081951))*-(0.000183472*[xangle]-0.0395241))*([xi]-(0.000264704*[xangle]+0.081951))", - empiricalAperture56 = "3.43116E-05+(([xi]<(0.000626936*[xangle]+0.061324))*0.00654394+([xi]>=(0.000626936*[xangle]+0.061324))*-(0.000145164*[xangle]-0.0272919))*([xi]-(0.000626936*[xangle]+0.061324))", - - timeResolutionDiamonds45 = "2*(-0.10784+0.105194*x-0.0182611*x^2+0.00134731*x^3-3.58212E-05*x^4)", - timeResolutionDiamonds56 = "2*(0.00735552+0.0272707*x-0.00247151*x^2+8.62788E-05*x^3-7.99605E-07*x^4)" - ) -) diff --git a/Validation/CTPPS/python/simu_config/profile_2018_TS1_TS2_cff.py b/Validation/CTPPS/python/simu_config/profile_2018_TS1_TS2_cff.py deleted file mode 100644 index ad646db62d8b4..0000000000000 --- a/Validation/CTPPS/python/simu_config/profile_2018_TS1_TS2_cff.py +++ /dev/null @@ -1,23 +0,0 @@ -import FWCore.ParameterSet.Config as cms - -from Validation.CTPPS.simu_config.year_2018_cff import * - -alignmentFile = "Validation/CTPPS/alignment/2018_TS1_TS2.xml" - -profile_2018_TS1_TS2 = profile_base_2018.clone( - L_int = 26.812002394, - - ctppsLHCInfo = dict( - xangleBetaStarHistogramObject = "2018_TS1_TS2/h2_betaStar_vs_xangle" - ), - - ctppsRPAlignmentCorrectionsDataXML = dict( - MisalignedFiles = [alignmentFile], - RealFiles = [alignmentFile] - ), - - ctppsDirectSimuData = dict( - timeResolutionDiamonds45 = "2*((x<16)*(-0.171784+0.175856*x-0.0322344*x^2+0.00231489*x^3-5.7575E-05*x^4)+(x>=16)*0.105)", - timeResolutionDiamonds56 = "2*((x<16)*(-0.014943+0.102806*x-0.0209404*x^2+0.00158264*x^3-4.08241E-05*x^4)+(x>=16)*0.089)" - ) -) diff --git a/Validation/CTPPS/python/simu_config/profile_2018_postTS2_cff.py b/Validation/CTPPS/python/simu_config/profile_2018_postTS2_cff.py deleted file mode 100644 index 0360db04a32f1..0000000000000 --- a/Validation/CTPPS/python/simu_config/profile_2018_postTS2_cff.py +++ /dev/null @@ -1,23 +0,0 @@ -import FWCore.ParameterSet.Config as cms - -from Validation.CTPPS.simu_config.year_2018_cff import * - -alignmentFile = "Validation/CTPPS/alignment/2018_postTS2.xml" - -profile_2018_postTS2 = profile_base_2018.clone( - L_int = 10.415769561, - - ctppsLHCInfo = dict( - xangleBetaStarHistogramObject = "2018_postTS2/h2_betaStar_vs_xangle" - ), - - ctppsRPAlignmentCorrectionsDataXML = dict( - MisalignedFiles = [alignmentFile], - RealFiles = [alignmentFile] - ), - - ctppsDirectSimuData = dict( - timeResolutionDiamonds45 = "2*((x<16)*(-0.381504+0.255095*x-0.0415622*x^2+0.00275877*x^3-6.47115E-05*x^4)+(x>=16)*0.118)", - timeResolutionDiamonds56 = "2*((x<16)*(-0.279298+0.219838*x-0.0384257*x^2+0.00268906*x^3-6.60572E-05*x^4)+(x>=16)*0.099)", - ) -) diff --git a/Validation/CTPPS/python/simu_config/profile_2018_preTS1_cff.py b/Validation/CTPPS/python/simu_config/profile_2018_preTS1_cff.py deleted file mode 100644 index ffaffb5f830c6..0000000000000 --- a/Validation/CTPPS/python/simu_config/profile_2018_preTS1_cff.py +++ /dev/null @@ -1,24 +0,0 @@ -import FWCore.ParameterSet.Config as cms - -from Validation.CTPPS.simu_config.year_2018_cff import * - -alignmentFile = "Validation/CTPPS/alignment/2018_preTS1.xml" - -profile_2018_preTS1 = profile_base_2018.clone( - L_int = 18.488297964, - - ctppsLHCInfo = dict( - xangleBetaStarHistogramObject = "2018_preTS1/h2_betaStar_vs_xangle" - ), - - ctppsRPAlignmentCorrectionsDataXML = dict( - MisalignedFiles = [alignmentFile], - RealFiles = [alignmentFile] - ), - - ctppsDirectSimuData = dict( - # timing not available in this period - timeResolutionDiamonds45 = "0.200", - timeResolutionDiamonds56 = "0.200" - ) -) diff --git a/Validation/CTPPS/python/simu_config/profile_2021_default_cff.py b/Validation/CTPPS/python/simu_config/profile_2021_default_cff.py deleted file mode 100644 index 6273e2abda4d8..0000000000000 --- a/Validation/CTPPS/python/simu_config/profile_2021_default_cff.py +++ /dev/null @@ -1,23 +0,0 @@ -import FWCore.ParameterSet.Config as cms - -from Validation.CTPPS.simu_config.year_2021_cff import * - -alignmentFile = "Validation/CTPPS/alignment/2021.xml" - -profile_2021_default = profile_base_2021.clone( - L_int = 1, - - ctppsLHCInfo = dict( - xangleBetaStarHistogramObject = "2021/h2_betaStar_vs_xangle" - ), - - ctppsRPAlignmentCorrectionsDataXML = dict( - MisalignedFiles = [alignmentFile], - RealFiles = [alignmentFile] - ), - - ctppsDirectSimuData = dict( - timeResolutionDiamonds45 = "0.200", - timeResolutionDiamonds56 = "0.200" - ) -) diff --git a/Validation/CTPPS/python/simu_config/profile_2022_default_cff.py b/Validation/CTPPS/python/simu_config/profile_2022_default_cff.py deleted file mode 100644 index 18aa8d5171815..0000000000000 --- a/Validation/CTPPS/python/simu_config/profile_2022_default_cff.py +++ /dev/null @@ -1,24 +0,0 @@ -import FWCore.ParameterSet.Config as cms - -from Validation.CTPPS.simu_config.year_2022_cff import * - -alignmentFile = "Validation/CTPPS/alignment/alignment_2022.xml" - -profile_2022_default = profile_base_2022.clone( - L_int = 1, - - ctppsLHCInfo = dict( - # NB: until a dedicated 2022 distributions are issued, it is OK to use 2021 ones here - xangleBetaStarHistogramObject = "2021/h2_betaStar_vs_xangle" - ), - - ctppsRPAlignmentCorrectionsDataXML = dict( - MisalignedFiles = [alignmentFile], - RealFiles = [alignmentFile] - ), - - ctppsDirectSimuData = dict( - timeResolutionDiamonds45 = "0.200", - timeResolutionDiamonds56 = "0.200" - ) -) diff --git a/Validation/CTPPS/python/simu_config/year_2016_cff.py b/Validation/CTPPS/python/simu_config/year_2016_cff.py deleted file mode 100644 index f78408778ddec..0000000000000 --- a/Validation/CTPPS/python/simu_config/year_2016_cff.py +++ /dev/null @@ -1,44 +0,0 @@ -import FWCore.ParameterSet.Config as cms - -from Validation.CTPPS.simu_config.base_cff import * - -import CalibPPS.ESProducers.ppsAssociationCuts_non_DB_cff as ac -ac.use_single_infinite_iov_entry(ac.ppsAssociationCutsESSource, ac.p2016) -ppsAssociationCutsESSource = ac.ppsAssociationCutsESSource - -# base profile settings for 2016 -profile_base_2016 = profile_base.clone( - ctppsLHCInfo = dict( - beamEnergy = 6500 - ) -) - -# geometry (using 2017 here is OK) -from Geometry.VeryForwardGeometry.commons_cff import cloneGeometry -XMLIdealGeometryESSource_CTPPS, _ctppsGeometryESModule = cloneGeometry('Geometry.VeryForwardGeometry.geometryRPFromDD_2017_cfi') - -ctppsCompositeESSource.compactViewTag = _ctppsGeometryESModule.compactViewTag -ctppsCompositeESSource.isRun2 = _ctppsGeometryESModule.isRun2 - -# local reconstruction -ctppsLocalTrackLiteProducer.includeStrips = True -ctppsLocalTrackLiteProducer.includePixels = False - -reco_local = cms.Sequence( - totemRPUVPatternFinder - * totemRPLocalTrackFitter - * ctppsLocalTrackLiteProducer -) - -# RP ids -rpIds = cms.PSet( - rp_45_F = cms.uint32(3), - rp_45_N = cms.uint32(2), - rp_56_N = cms.uint32(102), - rp_56_F = cms.uint32(103) -) - -# default list of profiles -from Validation.CTPPS.simu_config.profile_2016_preTS2_cff import profile_2016_preTS2 -from Validation.CTPPS.simu_config.profile_2016_postTS2_cff import profile_2016_postTS2 -ctppsCompositeESSource.periods = [profile_2016_postTS2, profile_2016_preTS2] diff --git a/Validation/CTPPS/python/simu_config/year_2017_cff.py b/Validation/CTPPS/python/simu_config/year_2017_cff.py deleted file mode 100644 index 04283ea7fb137..0000000000000 --- a/Validation/CTPPS/python/simu_config/year_2017_cff.py +++ /dev/null @@ -1,53 +0,0 @@ -import FWCore.ParameterSet.Config as cms - -from Validation.CTPPS.simu_config.base_cff import * - -import CalibPPS.ESProducers.ppsAssociationCuts_non_DB_cff as ac -ac.use_single_infinite_iov_entry(ac.ppsAssociationCutsESSource, ac.p2017) -ppsAssociationCutsESSource = ac.ppsAssociationCutsESSource - -from CalibPPS.ESProducers.ctppsOpticalFunctions_non_DB_cff import optics_2017 as selected_optics - -# base profile settings for 2017 -profile_base_2017 = profile_base.clone( - ctppsLHCInfo = dict( - beamEnergy = 6500 - ), - - ctppsOpticalFunctions = dict( - opticalFunctions = selected_optics.opticalFunctions, - scoringPlanes = selected_optics.scoringPlanes, - ) -) - -# geometry -from Geometry.VeryForwardGeometry.commons_cff import cloneGeometry -XMLIdealGeometryESSource_CTPPS, _ctppsGeometryESModule = cloneGeometry('Geometry.VeryForwardGeometry.geometryRPFromDD_2017_cfi') -ctppsCompositeESSource.compactViewTag = _ctppsGeometryESModule.compactViewTag -ctppsCompositeESSource.isRun2 = _ctppsGeometryESModule.isRun2 - -# local reconstruction -ctppsLocalTrackLiteProducer.includeStrips = True -ctppsLocalTrackLiteProducer.includePixels = True -ctppsLocalTrackLiteProducer.includeDiamonds = True - -reco_local = cms.Sequence( - totemRPUVPatternFinder - * totemRPLocalTrackFitter - * ctppsPixelLocalTracks - * ctppsDiamondLocalReconstruction - * ctppsLocalTrackLiteProducer -) - -# RP ids -rpIds = cms.PSet( - rp_45_F = cms.uint32(23), - rp_45_N = cms.uint32(3), - rp_56_N = cms.uint32(103), - rp_56_F = cms.uint32(123) -) - -# default list of profiles -from Validation.CTPPS.simu_config.profile_2017_preTS2_cff import profile_2017_preTS2 -from Validation.CTPPS.simu_config.profile_2017_postTS2_cff import profile_2017_postTS2 -ctppsCompositeESSource.periods = [profile_2017_postTS2, profile_2017_preTS2] diff --git a/Validation/CTPPS/python/simu_config/year_2018_cff.py b/Validation/CTPPS/python/simu_config/year_2018_cff.py deleted file mode 100644 index b34cf9f7999e1..0000000000000 --- a/Validation/CTPPS/python/simu_config/year_2018_cff.py +++ /dev/null @@ -1,57 +0,0 @@ -import FWCore.ParameterSet.Config as cms - -from Validation.CTPPS.simu_config.base_cff import * - -import CalibPPS.ESProducers.ppsAssociationCuts_non_DB_cff as ac -ac.use_single_infinite_iov_entry(ac.ppsAssociationCutsESSource, ac.p2018) -ppsAssociationCutsESSource = ac.ppsAssociationCutsESSource - -from CalibPPS.ESProducers.ctppsOpticalFunctions_non_DB_cff import optics_2018 as selected_optics - -# base profile settings for 2018 -profile_base_2018 = profile_base.clone( - ctppsLHCInfo = dict( - beamEnergy = 6500 - ), - - ctppsOpticalFunctions = dict( - opticalFunctions = selected_optics.opticalFunctions, - scoringPlanes = selected_optics.scoringPlanes, - ), - - ctppsDirectSimuData = dict( - empiricalAperture45 = cms.string("-(8.44219E-07*[xangle]-0.000100957)+(([xi]<(0.000247185*[xangle]+0.101599))*-(1.40289E-05*[xangle]-0.00727237)+([xi]> = (0.000247185*[xangle]+0.101599))*-(0.000107811*[xangle]-0.0261867))*([xi]-(0.000247185*[xangle]+0.101599))"), - empiricalAperture56 = cms.string("-(-4.74758E-07*[xangle]+3.0881E-05)+(([xi]<(0.000727859*[xangle]+0.0722653))*-(2.43968E-05*[xangle]-0.0085461)+([xi]> = (0.000727859*[xangle]+0.0722653))*-(7.19216E-05*[xangle]-0.0148267))*([xi]-(0.000727859*[xangle]+0.0722653))") - ) -) - -# geometry -from Geometry.VeryForwardGeometry.commons_cff import cloneGeometry -XMLIdealGeometryESSource_CTPPS, _ctppsGeometryESModule = cloneGeometry('Geometry.VeryForwardGeometry.geometryRPFromDD_2018_cfi') -ctppsCompositeESSource.compactViewTag = _ctppsGeometryESModule.compactViewTag -ctppsCompositeESSource.isRun2 = _ctppsGeometryESModule.isRun2 - -# local reconstruction -ctppsLocalTrackLiteProducer.includeStrips = False -ctppsLocalTrackLiteProducer.includePixels = True -ctppsLocalTrackLiteProducer.includeDiamonds = True - -reco_local = cms.Sequence( - ctppsPixelLocalTracks - * ctppsDiamondLocalReconstruction - * ctppsLocalTrackLiteProducer -) - -# RP ids -rpIds = cms.PSet( - rp_45_F = cms.uint32(23), - rp_45_N = cms.uint32(3), - rp_56_N = cms.uint32(103), - rp_56_F = cms.uint32(123) -) - -# default list of profiles -from Validation.CTPPS.simu_config.profile_2018_preTS1_cff import profile_2018_preTS1 -from Validation.CTPPS.simu_config.profile_2018_postTS2_cff import profile_2018_postTS2 -from Validation.CTPPS.simu_config.profile_2018_TS1_TS2_cff import profile_2018_TS1_TS2 -ctppsCompositeESSource.periods = [profile_2018_postTS2, profile_2018_preTS1, profile_2018_TS1_TS2] diff --git a/Validation/CTPPS/python/simu_config/year_2021_cff.py b/Validation/CTPPS/python/simu_config/year_2021_cff.py deleted file mode 100644 index bb27220a5c5ed..0000000000000 --- a/Validation/CTPPS/python/simu_config/year_2021_cff.py +++ /dev/null @@ -1,57 +0,0 @@ -import FWCore.ParameterSet.Config as cms - -from Validation.CTPPS.simu_config.base_cff import * - -import CalibPPS.ESProducers.ppsAssociationCuts_non_DB_cff as ac -ac.use_single_infinite_iov_entry(ac.ppsAssociationCutsESSource, ac.p2021) -ppsAssociationCutsESSource = ac.ppsAssociationCutsESSource - -from CalibPPS.ESProducers.ctppsOpticalFunctions_non_DB_cff import optics_2021 as selected_optics - -# base profile settings for 2021 -profile_base_2021 = profile_base.clone( - ctppsLHCInfo = dict( - beamEnergy = 7000 - ), - - ctppsOpticalFunctions = dict( - opticalFunctions = selected_optics.opticalFunctions, - scoringPlanes = selected_optics.scoringPlanes, - ), - - ctppsDirectSimuData = dict( - empiricalAperture45 = cms.string("1E3*([xi] - 0.20)"), - empiricalAperture56 = cms.string("1E3*([xi] - 0.20)") - ) -) - -# adjust basic settings -generator.energy = profile_base_2021.ctppsLHCInfo.beamEnergy - -# geometry -from Geometry.VeryForwardGeometry.geometryRPFromDD_2021_cfi import * -ctppsCompositeESSource.compactViewTag = ctppsGeometryESModule.compactViewTag -del ctppsGeometryESModule # this functionality is replaced by the composite ES source - -# local reconstruction -ctppsLocalTrackLiteProducer.includeStrips = False -ctppsLocalTrackLiteProducer.includePixels = True -ctppsLocalTrackLiteProducer.includeDiamonds = True - -reco_local = cms.Sequence( - ctppsPixelLocalTracks - * ctppsDiamondLocalReconstruction - * ctppsLocalTrackLiteProducer -) - -# RP ids -rpIds = cms.PSet( - rp_45_F = cms.uint32(23), - rp_45_N = cms.uint32(3), - rp_56_N = cms.uint32(103), - rp_56_F = cms.uint32(123) -) - -# default list of profiles -from Validation.CTPPS.simu_config.profile_2021_default_cff import profile_2021_default -ctppsCompositeESSource.periods = [profile_2021_default] diff --git a/Validation/CTPPS/python/simu_config/year_2022_cff.py b/Validation/CTPPS/python/simu_config/year_2022_cff.py deleted file mode 100644 index 8d72c09294f82..0000000000000 --- a/Validation/CTPPS/python/simu_config/year_2022_cff.py +++ /dev/null @@ -1,56 +0,0 @@ -import FWCore.ParameterSet.Config as cms - -from Validation.CTPPS.simu_config.base_cff import * - -import CalibPPS.ESProducers.ppsAssociationCuts_non_DB_cff as ac -ac.use_single_infinite_iov_entry(ac.ppsAssociationCutsESSource, ac.p2022) -ppsAssociationCutsESSource = ac.ppsAssociationCutsESSource - -from CalibPPS.ESProducers.ctppsOpticalFunctions_non_DB_cff import optics_2022 as selected_optics - -# base profile settings for 2022 -profile_base_2022 = profile_base.clone( - ctppsLHCInfo = dict( - beamEnergy = 7000 - ), - - ctppsOpticalFunctions = dict( - opticalFunctions = selected_optics.opticalFunctions, - scoringPlanes = selected_optics.scoringPlanes, - ), - - ctppsDirectSimuData = dict( - empiricalAperture45 = cms.string("1E3*([xi] - 0.20)"), - empiricalAperture56 = cms.string("1E3*([xi] - 0.20)") - ) -) - -# adjust basic settings -generator.energy = profile_base_2022.ctppsLHCInfo.beamEnergy - -from Geometry.VeryForwardGeometry.geometryRPFromDD_2022_cfi import * -ctppsCompositeESSource.compactViewTag = ctppsGeometryESModule.compactViewTag -del ctppsGeometryESModule # this functionality is replaced by the composite ES source - -# local reconstruction -ctppsLocalTrackLiteProducer.includeStrips = False -ctppsLocalTrackLiteProducer.includePixels = True -ctppsLocalTrackLiteProducer.includeDiamonds = True - -reco_local = cms.Sequence( - ctppsPixelLocalTracks - * ctppsDiamondLocalReconstruction - * ctppsLocalTrackLiteProducer -) - -# RP ids -rpIds = cms.PSet( - rp_45_F = cms.uint32(23), - rp_45_N = cms.uint32(3), - rp_56_N = cms.uint32(103), - rp_56_F = cms.uint32(123) -) - -# default list of profiles -from Validation.CTPPS.simu_config.profile_2022_default_cff import profile_2022_default -ctppsCompositeESSource.periods = [profile_2022_default] diff --git a/Validation/CTPPS/test/simu/run_multiple b/Validation/CTPPS/test/simu/run_multiple index 24f0c47648254..2bc6cc5df6d53 100755 --- a/Validation/CTPPS/test/simu/run_multiple +++ b/Validation/CTPPS/test/simu/run_multiple @@ -49,8 +49,6 @@ RunOne "2017" "Run2_2017" RunOne "2018" "Run2_2018" -RunOne "2021" "Run3" - RunOne "2022" "Run3" rc=0 diff --git a/Validation/CTPPS/test/simu/template_cfg.py b/Validation/CTPPS/test/simu/template_cfg.py index 06a9943038ec3..6717d3facd383 100644 --- a/Validation/CTPPS/test/simu/template_cfg.py +++ b/Validation/CTPPS/test/simu/template_cfg.py @@ -3,11 +3,30 @@ from Configuration.Eras.Era_$ERA_cff import * process = cms.Process('CTPPSTest', $ERA) -# load config -import Validation.CTPPS.simu_config.year_$CONFIG_cff as config -process.load("Validation.CTPPS.simu_config.year_$CONFIG_cff") - +process.load('SimGeneral.HepPDTESSource.pythiapdt_cfi') +process.load('Validation.CTPPS.ctppsLHCInfoPlotter_cfi') +process.load('Configuration.Generator.randomXiThetaGunProducer_cfi') process.load("CondCore.CondDB.CondDB_cfi") + +# minimal logger settings +process.MessageLogger = cms.Service("MessageLogger", + statistics = cms.untracked.vstring(), + destinations = cms.untracked.vstring('cout'), + cout = cms.untracked.PSet( + threshold = cms.untracked.string('WARNING') + ) +) + +# particle generator +process.generator.xi_max = 0.25 +process.generator.theta_x_sigma = 60.e-6 +process.generator.theta_y_sigma = 60.e-6 + +# default source +process.source = cms.Source("EmptySource", + firstRun = cms.untracked.uint32(1), +) + process.CondDB.connect = 'frontier://FrontierProd/CMS_CONDITIONS' process.PoolDBESSource = cms.ESSource("PoolDBESSource", process.CondDB, @@ -17,60 +36,62 @@ )) ) -# minimal logger settings -process.MessageLogger = cms.Service("MessageLogger", - statistics = cms.untracked.vstring(), - destinations = cms.untracked.vstring('cout'), - cout = cms.untracked.PSet( - threshold = cms.untracked.string('WARNING') - ) +# random seeds +process.RandomNumberGeneratorService = cms.Service("RandomNumberGeneratorService", + sourceSeed = cms.PSet(initialSeed = cms.untracked.uint32(98765)), + generator = cms.PSet(initialSeed = cms.untracked.uint32(98766)), + beamDivergenceVtxGenerator = cms.PSet(initialSeed = cms.untracked.uint32(3849)), + ppsDirectProtonSimulation = cms.PSet(initialSeed = cms.untracked.uint32(4981)) ) # number of events process.maxEvents = cms.untracked.PSet( - input = cms.untracked.int32(int($N_EVENTS)) + input = cms.untracked.int32(int($N_EVENTS)) ) # LHCInfo plotter -process.load("Validation.CTPPS.ctppsLHCInfoPlotter_cfi") process.ctppsLHCInfoPlotter.outputFile = "$OUT_LHCINFO" # track distribution plotter process.ctppsTrackDistributionPlotter = cms.EDAnalyzer("CTPPSTrackDistributionPlotter", - tagTracks = cms.InputTag("ctppsLocalTrackLiteProducer"), - - rpId_45_F = process.rpIds.rp_45_F, - rpId_45_N = process.rpIds.rp_45_N, - rpId_56_N = process.rpIds.rp_56_N, - rpId_56_F = process.rpIds.rp_56_F, - - outputFile = cms.string("$OUT_TRACKS") + tagTracks = cms.InputTag("ctppsLocalTrackLiteProducer"), + outputFile = cms.string("$OUT_TRACKS") ) # reconstruction plotter process.ctppsProtonReconstructionPlotter = cms.EDAnalyzer("CTPPSProtonReconstructionPlotter", - tagTracks = cms.InputTag("ctppsLocalTrackLiteProducer"), - tagRecoProtonsSingleRP = cms.InputTag("ctppsProtons", "singleRP"), - tagRecoProtonsMultiRP = cms.InputTag("ctppsProtons", "multiRP"), + tagTracks = cms.InputTag("ctppsLocalTrackLiteProducer"), + tagRecoProtonsSingleRP = cms.InputTag("ctppsProtons", "singleRP"), + tagRecoProtonsMultiRP = cms.InputTag("ctppsProtons", "multiRP"), + outputFile = cms.string("$OUT_PROTONS") +) - rpId_45_F = process.rpIds.rp_45_F, - rpId_45_N = process.rpIds.rp_45_N, - rpId_56_N = process.rpIds.rp_56_N, - rpId_56_F = process.rpIds.rp_56_F, +process.generation = cms.Path(process.generator) - outputFile = cms.string("$OUT_PROTONS") +process.validation = cms.Path( + process.ctppsLHCInfoPlotter + * process.ctppsTrackDistributionPlotter + * process.ctppsProtonReconstructionPlotter ) # processing path -process.p = cms.Path( - process.generator - * process.beamDivergenceVtxGenerator - * process.ctppsDirectProtonSimulation +process.schedule = cms.Schedule( + process.generation, + process.validation +) - * process.reco_local - * process.ctppsProtons +from SimPPS.Configuration.Utils import setupPPSDirectSim +setupPPSDirectSim(process) - * process.ctppsLHCInfoPlotter - * process.ctppsTrackDistributionPlotter - * process.ctppsProtonReconstructionPlotter -) +process.ctppsBeamParametersFromLHCInfoESSource.vtxOffsetX45 = 0. +process.ctppsBeamParametersFromLHCInfoESSource.vtxOffsetY45 = 0. +process.ctppsBeamParametersFromLHCInfoESSource.vtxOffsetZ45 = 0. +process.source.numberEventsInLuminosityBlock = process.ctppsCompositeESSource.generateEveryNEvents +process.ctppsTrackDistributionPlotter.rpId_45_F = process.rpIds.rp_45_F +process.ctppsTrackDistributionPlotter.rpId_45_N = process.rpIds.rp_45_N +process.ctppsTrackDistributionPlotter.rpId_56_N = process.rpIds.rp_56_N +process.ctppsTrackDistributionPlotter.rpId_56_F = process.rpIds.rp_56_F +process.ctppsProtonReconstructionPlotter.rpId_45_F = process.rpIds.rp_45_F +process.ctppsProtonReconstructionPlotter.rpId_45_N = process.rpIds.rp_45_N +process.ctppsProtonReconstructionPlotter.rpId_56_N = process.rpIds.rp_56_N +process.ctppsProtonReconstructionPlotter.rpId_56_F = process.rpIds.rp_56_F