diff --git a/FastSimulation/Calorimetry/python/Calorimetry_cff.py b/FastSimulation/Calorimetry/python/Calorimetry_cff.py index c09738cb2e21b..b52357cefeb28 100644 --- a/FastSimulation/Calorimetry/python/Calorimetry_cff.py +++ b/FastSimulation/Calorimetry/python/Calorimetry_cff.py @@ -5,6 +5,7 @@ #Global fast calorimetry parameters from FastSimulation.Calorimetry.HcalResponse_cfi import * from FastSimulation.Calorimetry.HSParameters_cfi import * +from Geometry.HcalSimData.HFParameters_cff import * #from FastSimulation.Configuration.CommonInputs_cff import * from FastSimulation.Calorimetry.ECALResponse_cfi import * @@ -262,22 +263,13 @@ timeShiftHF = cms.vdouble(50.7, 52.5, 52.9, 53.9, 54.5, 55.1, 55.1, 55.7, 55.9, 56.1, 56.1, 56.1, 56.5), ), HFShower = cms.PSet( - ProbMax = cms.double(1.0), - CFibre = cms.double(0.5), - OnlyLong = cms.bool(True) + HFShowerBlock = cms.PSet(refToPSet_ = cms.string("HFShowerBlock")) ), HFShowerLibrary = cms.PSet( useShowerLibrary = cms.untracked.bool(True), useCorrectionSL = cms.untracked.bool(True), - FileName = cms.FileInPath('SimG4CMS/Calo/data/HFShowerLibrary_oldpmt_noatt_eta4_16en_v3.root'), - BackProbability = cms.double(0.2), - TreeEMID = cms.string('emParticles'), - TreeHadID = cms.string('hadParticles'), - Verbosity = cms.untracked.bool(False), ApplyFiducialCut = cms.bool(True), - BranchEvt = cms.untracked.string(''), - BranchPre = cms.untracked.string(''), - BranchPost = cms.untracked.string('') + HFLibraryFileBlock = cms.PSet(refToPSet_ = cms.string("HFLibraryFileBlock")) ) ), GFlash = cms.PSet( @@ -299,6 +291,3 @@ FamosCalorimetryBlock.Calorimetry.HCAL.Digitizer = True from Configuration.Eras.Modifier_run2_common_cff import run2_common -run2_common.toModify(FamosCalorimetryBlock.Calorimetry.HFShowerLibrary, FileName = 'SimG4CMS/Calo/data/HFShowerLibrary_npmt_noatt_eta4_16en_v4.root' ) - -run2_common.toModify(FamosCalorimetryBlock.Calorimetry.HFShower, ProbMax = 0.5 ) diff --git a/Geometry/HcalSimData/python/HFParameters_cff.py b/Geometry/HcalSimData/python/HFParameters_cff.py new file mode 100644 index 0000000000000..e79157a943118 --- /dev/null +++ b/Geometry/HcalSimData/python/HFParameters_cff.py @@ -0,0 +1,28 @@ +import FWCore.ParameterSet.Config as cms + +# Several parameters needed for HF simulation + +HFLibraryFileBlock = cms.PSet( + FileName = cms.FileInPath('SimG4CMS/Calo/data/HFShowerLibrary_oldpmt_noatt_eta4_16en_v3.root'), + BackProbability = cms.double(0.2), + TreeEMID = cms.string('emParticles'), + TreeHadID = cms.string('hadParticles'), + ApplyFiducialCut= cms.bool(True), + Verbosity = cms.untracked.bool(False), + BranchPost = cms.untracked.string(''), + BranchEvt = cms.untracked.string(''), + BranchPre = cms.untracked.string('') +) + +HFShowerBlock = cms.PSet( + ProbMax = cms.double(1.0), + CFibre = cms.double(0.5), + OnlyLong = cms.bool(True) +) + +## +## Change the HFShowerLibrary file from Run 2 +## +from Configuration.Eras.Modifier_run2_common_cff import run2_common +run2_common.toModify( HFLibraryFileBlock, FileName = 'SimG4CMS/Calo/data/HFShowerLibrary_npmt_noatt_eta4_16en_v4.root' ) +run2_common.toModify( HFShowerBlock, ProbMax = 0.5) diff --git a/SimG4CMS/Calo/src/HFFibre.cc b/SimG4CMS/Calo/src/HFFibre.cc index dde911db22e78..78ee32ea90403 100644 --- a/SimG4CMS/Calo/src/HFFibre.cc +++ b/SimG4CMS/Calo/src/HFFibre.cc @@ -18,7 +18,8 @@ HFFibre::HFFibre(const std::string& name, const HcalSimulationParameters* hps, edm::ParameterSet const& p) : hcalConstant_(hcons), hcalsimpar_(hps) { - edm::ParameterSet m_HF = p.getParameter("HFShower"); + edm::ParameterSet m_HF = + (p.getParameter("HFShower")).getParameter("HFShowerBlock"); cFibre = c_light * (m_HF.getParameter("CFibre")); edm::LogVerbatim("HFShower") << "HFFibre:: Speed of light in fibre " << cFibre << " m/ns"; diff --git a/SimG4CMS/Calo/src/HFShower.cc b/SimG4CMS/Calo/src/HFShower.cc index aaa2e0a6dff4e..729b035b56d2c 100644 --- a/SimG4CMS/Calo/src/HFShower.cc +++ b/SimG4CMS/Calo/src/HFShower.cc @@ -26,7 +26,8 @@ HFShower::HFShower(const std::string &name, : hcalConstant_(hcons), chkFibre_(chk) { edm::ParameterSet m_HF = p.getParameter("HFShower"); applyFidCut_ = m_HF.getParameter("ApplyFiducialCut"); - probMax_ = m_HF.getParameter("ProbMax"); + edm::ParameterSet m_HF2 = m_HF.getParameter("HFShowerBlock"); + probMax_ = m_HF2.getParameter("ProbMax"); edm::LogVerbatim("HFShower") << "HFShower:: Maximum probability cut off " << probMax_ << " Check flag " << chkFibre_; diff --git a/SimG4CMS/Calo/src/HFShowerLibrary.cc b/SimG4CMS/Calo/src/HFShowerLibrary.cc index 6226ea3d0ae4f..a4e5f18e14790 100644 --- a/SimG4CMS/Calo/src/HFShowerLibrary.cc +++ b/SimG4CMS/Calo/src/HFShowerLibrary.cc @@ -25,10 +25,12 @@ HFShowerLibrary::HFShowerLibrary(const std::string& name, const HcalSimulationParameters* hps, edm::ParameterSet const& p) : hcalConstant_(hcons), hf(nullptr), emBranch(nullptr), hadBranch(nullptr), npe(0) { - edm::ParameterSet m_HF = p.getParameter("HFShower"); + edm::ParameterSet m_HF = + (p.getParameter("HFShower")).getParameter("HFShowerBlock"); probMax = m_HF.getParameter("ProbMax"); - edm::ParameterSet m_HS = p.getParameter("HFShowerLibrary"); + edm::ParameterSet m_HS = + (p.getParameter("HFShowerLibrary")).getParameter("HFLibraryFileBlock"); edm::FileInPath fp = m_HS.getParameter("FileName"); std::string pTreeName = fp.fullPath(); backProb = m_HS.getParameter("BackProbability"); diff --git a/SimG4CMS/Calo/src/HFShowerParam.cc b/SimG4CMS/Calo/src/HFShowerParam.cc index 22a6a56062076..debb8bc48500e 100644 --- a/SimG4CMS/Calo/src/HFShowerParam.cc +++ b/SimG4CMS/Calo/src/HFShowerParam.cc @@ -32,12 +32,13 @@ HFShowerParam::HFShowerParam(const std::string& name, edm::ParameterSet const& p) : hcalConstants_(hcons), fillHisto_(false) { edm::ParameterSet m_HF = p.getParameter("HFShower"); + edm::ParameterSet m_HF2 = m_HF.getParameter("HFShowerBlock"); pePerGeV_ = m_HF.getParameter("PEPerGeV"); trackEM_ = m_HF.getParameter("TrackEM"); bool useShowerLibrary = m_HF.getParameter("UseShowerLibrary"); bool useGflash = m_HF.getParameter("UseHFGflash"); edMin_ = m_HF.getParameter("EminLibrary"); - onlyLong_ = m_HF.getParameter("OnlyLong"); + onlyLong_ = m_HF2.getParameter("OnlyLong"); ref_index_ = m_HF.getParameter("RefIndex"); double lambdaMean = m_HF.getParameter("LambdaMean"); aperture_ = cos(asin(m_HF.getParameter("Aperture"))); diff --git a/SimG4CMS/Calo/test/python/runEta37_cfg.py b/SimG4CMS/Calo/test/python/runEta37_cfg.py new file mode 100644 index 0000000000000..7d8c8477aa75b --- /dev/null +++ b/SimG4CMS/Calo/test/python/runEta37_cfg.py @@ -0,0 +1,78 @@ +import FWCore.ParameterSet.Config as cms + +from Configuration.Eras.Era_Run3_cff import Run3 +process = cms.Process("PROD",Run3) +process.load("Configuration.Geometry.GeometryExtended2021Reco_cff") + +#from Configuration.Eras.Era_Run3_dd4hep_cff import Run3_dd4hep +#process = cms.Process("PROD",Run3_dd4hep) +#process.load("Configuration.Geometry.GeometryDD4hepExtended2021Reco_cff") + +process.load("SimGeneral.HepPDTESSource.pythiapdt_cfi") +process.load('FWCore.MessageService.MessageLogger_cfi') +process.load("IOMC.EventVertexGenerators.VtxSmearedGauss_cfi") +process.load("Configuration.StandardSequences.MagneticField_cff") +process.load("Configuration.EventContent.EventContent_cff") +process.load('Configuration.StandardSequences.Generator_cff') +process.load('Configuration.StandardSequences.SimIdeal_cff') +process.load("Configuration.StandardSequences.FrontierConditions_GlobalTag_cff" +) +from Configuration.AlCa.GlobalTag import GlobalTag +process.GlobalTag = GlobalTag(process.GlobalTag, 'auto:phase1_2021_realistic', '') + +process.MessageLogger.cerr.FwkReport.reportEvery = 5 +if hasattr(process,'MessageLogger'): + process.MessageLogger.G4cerr=dict() + process.MessageLogger.HcalSim=dict() + process.MessageLogger.HFShower=dict() + +process.load("IOMC.RandomEngine.IOMC_cff") +process.RandomNumberGeneratorService.generator.initialSeed = 456789 +process.RandomNumberGeneratorService.g4SimHits.initialSeed = 9876 +process.RandomNumberGeneratorService.VtxSmeared.initialSeed = 123456789 + +process.maxEvents = cms.untracked.PSet( + input = cms.untracked.int32(5) +) + +process.source = cms.Source("EmptySource") + +process.generator = cms.EDProducer("FlatRandomEGunProducer", + PGunParameters = cms.PSet( + PartID = cms.vint32(211), + MinEta = cms.double(4.25), + MaxEta = cms.double(4.25), + MinPhi = cms.double(-3.14159265359), + MaxPhi = cms.double(3.14159265359), + MinE = cms.double(30.0), + MaxE = cms.double(30.0) + ), + Verbosity = cms.untracked.int32(0), + AddAntiParticle = cms.bool(False), + firstRun = cms.untracked.uint32(1) +) + +process.output = cms.OutputModule("PoolOutputModule", + process.FEVTSIMEventContent, + fileName = cms.untracked.string('simevent030eta37.root') +) + +process.Timing = cms.Service("Timing") + +process.generation_step = cms.Path(process.pgen) +process.simulation_step = cms.Path(process.psim) +process.out_step = cms.EndPath(process.output) + +process.g4SimHits.Physics.type = 'SimG4Core/Physics/FTFP_BERT_EMM' +#process.g4SimHits.G4Commands = ['/tracking/verbose 1'] + +# Schedule definition +process.schedule = cms.Schedule(process.generation_step, + process.simulation_step, + process.out_step + ) + +# filter all path with the production filter sequence +for path in process.paths: + getattr(process,path)._seq = process.generator * getattr(process,path)._seq + diff --git a/SimG4Core/Application/python/g4SimHits_cfi.py b/SimG4Core/Application/python/g4SimHits_cfi.py index 20c3333abbeca..c820f25a472fb 100644 --- a/SimG4Core/Application/python/g4SimHits_cfi.py +++ b/SimG4Core/Application/python/g4SimHits_cfi.py @@ -5,6 +5,9 @@ ## HF Raddam Dose Class in /SimG4CMS/Calo from SimG4CMS.Calo.HFDarkeningParams_cff import * +## HF shower parameters +from Geometry.HcalSimData.HFParameters_cff import * + ## This object is used to customise g4SimHits for different running scenarios common_heavy_suppression = cms.PSet( @@ -394,14 +397,11 @@ HFShower = cms.PSet( common_UsePMT, common_UseHF, - ProbMax = cms.double(1.0), - CFibre = cms.double(0.5), PEPerGeV = cms.double(0.31), TrackEM = cms.bool(False), UseShowerLibrary = cms.bool(True), UseHFGflash = cms.bool(False), EminLibrary = cms.double(0.0), - OnlyLong = cms.bool(True), LambdaMean = cms.double(350.0), ApplyFiducialCut = cms.bool(True), RefIndex = cms.double(1.459), @@ -409,18 +409,11 @@ ApertureTrapped = cms.double(0.22), CosApertureTrapped= cms.double(0.5), SinPsiMax = cms.untracked.double(0.5), - ParametrizeLast = cms.untracked.bool(False) + ParametrizeLast = cms.untracked.bool(False), + HFShowerBlock = cms.PSet(refToPSet_ = cms.string("HFShowerBlock")) ), HFShowerLibrary = cms.PSet( - FileName = cms.FileInPath('SimG4CMS/Calo/data/HFShowerLibrary_oldpmt_noatt_eta4_16en_v3.root'), - BackProbability = cms.double(0.2), - TreeEMID = cms.string('emParticles'), - TreeHadID = cms.string('hadParticles'), - Verbosity = cms.untracked.bool(False), - ApplyFiducialCut= cms.bool(True), - BranchPost = cms.untracked.string(''), - BranchEvt = cms.untracked.string(''), - BranchPre = cms.untracked.string('') + HFLibraryFileBlock = cms.PSet(refToPSet_ = cms.string("HFLibraryFileBlock")) ), HFShowerPMT = cms.PSet( common_UsePMT, @@ -604,8 +597,6 @@ ## Change the HFShowerLibrary file from Run 2 ## from Configuration.Eras.Modifier_run2_common_cff import run2_common -run2_common.toModify( g4SimHits.HFShowerLibrary, FileName = 'SimG4CMS/Calo/data/HFShowerLibrary_npmt_noatt_eta4_16en_v4.root' ) -run2_common.toModify( g4SimHits.HFShower, ProbMax = 0.5) ## ## Change HCAL numbering scheme in 2017