diff --git a/Simulation/FastShower/FastCaloSim/python/FastCaloSimFactoryNew.py b/Simulation/FastShower/FastCaloSim/python/FastCaloSimFactoryNew.py new file mode 100644 index 0000000000000000000000000000000000000000..58c0beb57ca7917cbe717901a61763eba5c1adaa --- /dev/null +++ b/Simulation/FastShower/FastCaloSim/python/FastCaloSimFactoryNew.py @@ -0,0 +1,91 @@ +# Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration + +from RngComps.RandomServices import RNG +from IOVDbSvc.IOVDbSvcConfig import addFolders +from AthenaConfiguration.ComponentFactory import CompFactory + +from TrkDetDescrSvc.TrkDetDescrJobProperties import TrkDetFlags +from ISF_FastCaloSimServices.ISF_FastCaloSimHelpers import AdditionalParticleParametrizationFileNames + +# Initialize Athena logging +from AthenaCommon.Logging import logging +mlog = logging.getLogger('FastCaloSimFactory::configure:') + +def NIMatEffUpdatorCfg(flags, name="ISF_NIMatEffUpdator", **kwargs): + return CompFactory.Trk.NIMatEffUpdator(name, **kwargs) + + +def NIPropagatorCfg(flags, name="ISF_NIPropagator", **kwargs): + mlog.info("Now configure the non-interacting propagator...") + kwargs.setdefault("MaterialEffects", False) + result = CompFactory.Trk.STEP_Propagator(name, **kwargs) + mlog.info("Configure non-interacting propagator finished.") + return result + + +def NITimedExtrapolatorCfg(flags, name="ISF_NITimedExtrapolator", **kwargs): + mlog.info("Now configure the TimedExtrapolator...") + kwargs.setdefault("MaterialEffectsUpdators", [NIMatEffUpdatorCfg(flags)]) + kwargs.setdefault("ApplyMaterialEffects", False) + kwargs.setdefault("STEP_Propagator", NIPropagatorCfg(flags)) + result = CompFactory.Trk.TimedExtrapolator(name, **kwargs) + mlog.info("Configure TimedExtrapolator finished.") + return result + + +# FastShowerCellBuilderTool +def FastShowerCellBuilderToolBaseCfg(flags, name, **kwargs): + + acc = RNG(flags.Random.Engine) + acc.merge(addFolders(flags, "/GLOBAL/AtlfastII/FastCaloSimParam", "GLOBAL_OFL", tag="FastCaloSim_v2")) + + localFileNameList = AdditionalParticleParametrizationFileNames() + localFileNameList.insert(0, "L1_L2_egamma_corr.config20.root") + kwargs.setdefault("AdditionalParticleParametrizationFileNames", localFileNameList) + + kwargs.setdefault("RandomService", acc.getService("AthRNGSvc")) + kwargs.setdefault("RandomStreamName", "AthRNGSvc") + kwargs.setdefault("DoSimulWithInnerDetectorTruthOnly", True) + kwargs.setdefault("ID_cut_off_r", [1150]) + kwargs.setdefault("ID_cut_off_z", [3490]) + kwargs.setdefault("DoSimulWithInnerDetectorV14TruthCuts", True) + kwargs.setdefault("DoNewEnergyEtaSelection", True) + kwargs.setdefault("DoEnergyInterpolation", True) + kwargs.setdefault("use_Ekin_for_depositions", True) + kwargs.setdefault("McLocation", flags.Sim.FastShower.InputCollection) + kwargs.setdefault("ParticleParametrizationFileName", "") + kwargs.setdefault("Extrapolator", NITimedExtrapolatorCfg(flags)) + # New kwarg from old FastCaloSimFactory + kwargs.setdefault("CaloEntrance", TrkDetFlags.InDetContainerName()) + + ####################################################################################################### + #theFastShowerCellBuilderTool.Invisibles=[12, 14, 16, 1000022] + ######################################################################################################### + + acc.setPrivateTools(CompFactory.FastShowerCellBuilderTool(name, **kwargs)) + return acc + + +def FastShowerCellBuilderToolCfg(flags, **kwargs): + + acc = FastShowerCellBuilderToolBaseCfg(flags, name="ISF_FastShowerCellBuilderTool", **kwargs) + tool = acc.popPrivateTools() + + try: + ParticleParametrizationFileName = tool.ParticleParametrizationFileName + except Exception: + ParticleParametrizationFileName = "" + + # TODO: Always False since len(Add...) = 636 + if ParticleParametrizationFileName == "" and len(tool.AdditionalParticleParametrizationFileNames) == 0: + ParticleParametrizationFileName = "FastCaloSim/v1/ParticleEnergyParametrization.root" + + tool.ParticleParametrizationFileName = ParticleParametrizationFileName + + # TODO: Do we need this: very long output? + mlog.info("ParticleParametrizationFile: %s", ParticleParametrizationFileName) + mlog.verbose("all values:") + mlog.verbose(tool) + + acc.setPrivateTools(tool) + return acc diff --git a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimParametrization/python/ISF_FastCaloSimParametrizationConfigNew.py b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimParametrization/python/ISF_FastCaloSimParametrizationConfigNew.py index ef788f5baa81f30d597f5dc08be4c254a4117884..d68568a75c9d09f15a72190e4ed1175c15e709fd 100644 --- a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimParametrization/python/ISF_FastCaloSimParametrizationConfigNew.py +++ b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimParametrization/python/ISF_FastCaloSimParametrizationConfigNew.py @@ -3,14 +3,14 @@ Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration """ from AthenaConfiguration.ComponentFactory import CompFactory - +from FastCaloSim.FastCaloSimFactoryNew import NITimedExtrapolatorCfg def FastCaloSimCaloExtrapolationCfg(flags, name="FastCaloSimCaloExtrapolation", **kwargs): kwargs.setdefault("CaloBoundaryR", [1148.0, 120.0, 41.0]) kwargs.setdefault("CaloBoundaryZ", [3550.0, 4587.0, 4587.0]) kwargs.setdefault("CaloMargin", 100) - kwargs.setdefault("Extrapolator", "TimedExtrapolator") # TODO prevent circular import with AdditionalConfigNew - kwargs.setdefault("CaloGeometryHelper", "FastCaloSimGeometryHelper") + kwargs.setdefault("Extrapolator", NITimedExtrapolatorCfg(flags)) + kwargs.setdefault("CaloGeometryHelper", FastCaloSimGeometryHelperCfg(flags)) kwargs.setdefault("CaloEntrance", "InDet::Containers::InnerDetector") return CompFactory.FastCaloSimCaloExtrapolation(name, **kwargs) diff --git a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/CMakeLists.txt b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/CMakeLists.txt index 15887e9773b88561b664e5c0e03122eeadbbdac2..38f60d7b5de766c8abba229b1f5349655a26983e 100644 --- a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/CMakeLists.txt +++ b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/CMakeLists.txt @@ -19,3 +19,5 @@ atlas_add_component( ISF_FastCaloSimServices # Install files from the package: atlas_install_python_modules( python/*.py ) +atlas_add_test( ISF_FastCaloSimServices_Config_test + SCRIPT test/FastCaloSimServices_test.py) \ No newline at end of file diff --git a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/python/AdditionalConfigNew.py b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/python/ISF_FastCaloSimHelpers.py similarity index 81% rename from Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/python/AdditionalConfigNew.py rename to Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/python/ISF_FastCaloSimHelpers.py index 2e087553a8094839d412e9bae839701db5d9e5d7..e3b6c6a5307ed015aee7b9c6aa5623811c2a77ea 100644 --- a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/python/AdditionalConfigNew.py +++ b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/python/ISF_FastCaloSimHelpers.py @@ -1,18 +1,9 @@ -"""ComponentAccumulator additional configuration of tools for ISF_FastCaloSimServices +"""ComponentAccumulator helper configuration for ISF_FastCaloSimServices Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration """ -from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator -from AthenaConfiguration.ComponentFactory import CompFactory -from RngComps.RandomServices import RNG -from BarcodeServices.BarcodeServicesConfigNew import BarcodeSvcCfg -from SubDetectorEnvelopes.SubDetectorEnvelopesConfigNew import EnvelopeDefSvcCfg -from IOVDbSvc.IOVDbSvcConfig import addFolders - -# TODO check this for new config -from ISF_Algorithms.collection_merger_helpers import generate_mergeable_collection_name - +#TODO: Do we need this to be function or can it just be an array? def AdditionalParticleParametrizationFileNames(): return [ "DB=/GLOBAL/AtlfastII/FastCaloSimParam:2:EnergyResults/pdgid_211/EN_1000/eta_central", @@ -651,288 +642,3 @@ def AdditionalParticleParametrizationFileNames(): "DB=/GLOBAL/AtlfastII/FastCaloSimParam:2:ShapeResults/pdgid_211/EN_50000/calosample_17", "DB=/GLOBAL/AtlfastII/FastCaloSimParam:2:ShapeResults/pdgid_211/EN_50000/calosample_4", ] - - -# definitions taken from file: -# FastSimulationJobTransforms/jobConfig.FastCaloSim_DB.py -def setAdditionalParticleParametrizationFileNames(FastShowerCellBuilderTool): - FastShowerCellBuilderTool.AdditionalParticleParametrizationFileNames = AdditionalParticleParametrizationFileNames() - - -def PunchThroughToolCfg(flags, name="ISF_PunchThroughTool", **kwargs): - acc = RNG(flags.Random.Engine) - kwargs.setdefault("RandomNumberService", acc.getService("AthRNGSvc")) - kwargs.setdefault("RandomStreamName", "AthRNGSvc") # TODO check - kwargs.setdefault("FilenameLookupTable", "CaloPunchThroughParametrisation.root") - kwargs.setdefault("PunchThroughInitiators", [211]) - kwargs.setdefault("PunchThroughParticles", [ 2212, 211, 22, 11, 13]) - kwargs.setdefault("DoAntiParticles" , [ False, True, False, True, True]) - kwargs.setdefault("CorrelatedParticle" , [ 211, 2212, 11, 22, 0]) - kwargs.setdefault("FullCorrelationEnergy", [100000., 100000., 100000., 100000., 0.]) - kwargs.setdefault("MinEnergy" , [ 938.3, 135.6, 50., 50., 105.7]) - kwargs.setdefault("MaxNumParticles" , [ -1, -1, -1, -1, -1]) - kwargs.setdefault("EnergyFactor" , [ 1., 1., 1., 1., 1.]) - acc_bar = BarcodeSvcCfg(flags) - kwargs.setdefault("BarcodeSvc", acc_bar.getPrimary()) - acc.merge(acc_bar) - acc.merge(EnvelopeDefSvcCfg(flags)) - kwargs.setdefault("EnvelopeDefSvc", acc.getService("AtlasGeometry_EnvelopeDefSvc")) - kwargs.setdefault("BeamPipeRadius", 500.) - acc.setPrivateTools(CompFactory.ISF.PunchThroughTool(name, **kwargs)) - return acc - - -def EmptyCellBuilderToolCfg(flags, name="ISF_EmptyCellBuilderTool", **kwargs): - return CompFactory.EmptyCellBuilderTool(name, **kwargs) - - -def NIMatEffUpdatorCfg(flags, name="ISF_NIMatEffUpdator", **kwargs): - return CompFactory.Trk.NIMatEffUpdator(name, **kwargs) - - -def NIPropagatorCfg(flags, name="ISF_NIPropagator", **kwargs): - kwargs.setdefault("MaterialEffects", False) - return CompFactory.Trk.STEP_Propagator(name, **kwargs) - - -def NITimedExtrapolatorCfg(flags, name="ISF_NITimedExtrapolator", **kwargs): - kwargs.setdefault("MaterialEffectsUpdators", [NIMatEffUpdatorCfg(flags)]) - kwargs.setdefault("ApplyMaterialEffects", False) - kwargs.setdefault("STEP_Propagator", NIPropagatorCfg(flags)) - return CompFactory.Trk.TimedExtrapolator(name, **kwargs) - - -def TimedExtrapolatorCfg(flags, name="TimedExtrapolator", **kwargs): - kwargs.setdefault("MaterialEffectsUpdators", [NIMatEffUpdatorCfg(flags)]) - kwargs.setdefault("ApplyMaterialEffects", False ) - kwargs.setdefault("STEP_Propagator", NIPropagatorCfg(flags)) - return CompFactory.Trk.TimedExtrapolator(name, **kwargs) - - -# FastShowerCellBuilderTool -def DefaultFastShowerCellBuilderToolCfg(flags, name, **kwargs): - acc = RNG(flags.Random.Engine) - kwargs.setdefault("RandomService", acc.getService("AthRNGSvc")) - kwargs.setdefault("RandomStreamName", "AthRNGSvc") # TODO check - kwargs.setdefault("DoSimulWithInnerDetectorTruthOnly", True) - kwargs.setdefault("ID_cut_off_r", [1150]) - kwargs.setdefault("ID_cut_off_z", [3490]) - kwargs.setdefault("DoSimulWithInnerDetectorV14TruthCuts", True) - kwargs.setdefault("DoNewEnergyEtaSelection", True) - kwargs.setdefault("DoEnergyInterpolation", True) - kwargs.setdefault("use_Ekin_for_depositions", True) - kwargs.setdefault("McLocation", flags.Sim.FastShower.InputCollection) - kwargs.setdefault("ParticleParametrizationFileName", "") - kwargs.setdefault("Extrapolator", NITimedExtrapolatorCfg(flags)) - # TODO migrate - from FastCaloSim.FastCaloSimFactory import FastCaloSimFactory - return FastCaloSimFactory(name, **kwargs) - - -def FastShowerCellBuilderToolCfg(flags, name="ISF_FastShowerCellBuilderTool", **kwargs): - localFileNameList = AdditionalParticleParametrizationFileNames() - localFileNameList.insert(0,"L1_L2_egamma_corr.config20.root") - kwargs.setdefault("AdditionalParticleParametrizationFileNames", localFileNameList) - acc = addFolders(flags, "/GLOBAL/AtlfastII/FastCaloSimParam", "GLOBAL_OFL", tag="FastCaloSim_v2") - acc.setPrivateTools(DefaultFastShowerCellBuilderToolCfg(flags, name, **kwargs)) # TODO - return acc - - -def LegacyFastShowerCellBuilderToolCfg(flags, name="ISF_LegacyFastShowerCellBuilderTool", **kwargs): - acc = FastShowerCellBuilderToolCfg(flags, name, **kwargs) - FastShowerCellBuilderTool = acc.popPrivateTools() - FastShowerCellBuilderTool.Invisibles += [13] - acc.setPrivateTools(FastShowerCellBuilderTool) - return acc - - -def PileupFastShowerCellBuilderToolCfg(flags, name="ISF_PileupFastShowerCellBuilderTool", **kwargs): - # weights from: FIXME dead link - # http://acode-browser.usatlas.bnl.gov/lxr/source/atlas/Simulation/FastShower/FastCaloSim/FastCaloSim/FastCaloSim_CaloCell_ID.h - weightsfcs = [ - ### LAr presampler - #FirstSample=CaloCell_ID::PreSamplerB, - 2.0, - ### LAr barrel - #PreSamplerB=CaloCell_ID::PreSamplerB, - #EMB1=CaloCell_ID::EMB1, - #EMB2=CaloCell_ID::EMB2, - #EMB3=CaloCell_ID::EMB3, - 2.0, 2.0, 2.0, 2.0, - ### LAr EM endcap - #PreSamplerE=CaloCell_ID::PreSamplerE, - #EME1=CaloCell_ID::EME1, - #EME2=CaloCell_ID::EME2, - #EME3=CaloCell_ID::EME3, - 2.0, 2.0, 2.0, 2.0, - ### Hadronic end cap cal. - #HEC0=CaloCell_ID::HEC0, - #HEC1=CaloCell_ID::HEC1, - #HEC2=CaloCell_ID::HEC2, - #HEC3=CaloCell_ID::HEC3, - 2.0, 2.0, 2.0, 2.0, - ### Tile barrel - #TileBar0=CaloCell_ID::TileBar0, - #TileBar1=CaloCell_ID::TileBar1, - #TileBar2=CaloCell_ID::TileBar2, - 1.0, 1.0, 1.0, - ### Tile gap (ITC & scint) - #TileGap1=CaloCell_ID::TileGap1, - #TileGap2=CaloCell_ID::TileGap2, - #TileGap3=CaloCell_ID::TileGap3, - 1.0, 1.0, 1.0, - ### Tile extended barrel - #TileExt0=CaloCell_ID::TileExt0, - #TileExt1=CaloCell_ID::TileExt1, - #TileExt2=CaloCell_ID::TileExt2, - 1.0, 1.0, 1.0, - ### Forward EM endcap - #FCAL0=CaloCell_ID::FCAL0, - #FCAL1=CaloCell_ID::FCAL1, - #FCAL2=CaloCell_ID::FCAL2, - 1.0, 1.0, 1.0, - ### Beware of MiniFCAL! We don"t have it, so different numbers after FCAL2 - #LastSample = CaloCell_ID::FCAL2, - #MaxSample = LastSample+1 - 1.0, 1.0, - ] - - kwargs.setdefault("sampling_energy_reweighting", weightsfcs ) - return FastShowerCellBuilderToolCfg(flags, name, **kwargs) - - -# TODO -def FastHitConvertToolCfg(flags, name="ISF_FastHitConvertTool", **kwargs): - mergeable_collection_suffix = "_FastCaloSim" - - EMB_hits_bare_collection_name = "LArHitEMB" - EMB_hits_merger_input_property = "LArEMBHits" - EMB_hits_collection_name = generate_mergeable_collection_name( - EMB_hits_bare_collection_name, - mergeable_collection_suffix, - EMB_hits_merger_input_property) - - EMEC_hits_bare_collection_name = "LArHitEMEC" - EMEC_hits_merger_input_property = "LArEMECHits" - EMEC_hits_collection_name = generate_mergeable_collection_name( - EMEC_hits_bare_collection_name, - mergeable_collection_suffix, - EMEC_hits_merger_input_property) - - FCAL_hits_bare_collection_name = "LArHitFCAL" - FCAL_hits_merger_input_property = "LArFCALHits" - FCAL_hits_collection_name = generate_mergeable_collection_name( - FCAL_hits_bare_collection_name, - mergeable_collection_suffix, - FCAL_hits_merger_input_property) - - HEC_hits_bare_collection_name = "LArHitHEC" - HEC_hits_merger_input_property = "LArHECHits" - HEC_hits_collection_name = generate_mergeable_collection_name( - HEC_hits_bare_collection_name, - mergeable_collection_suffix, - HEC_hits_merger_input_property) - - tile_hits_bare_collection_name = "TileHitVec" - tile_hits_merger_input_property = "TileHits" - tile_hits_collection_name = generate_mergeable_collection_name( - tile_hits_bare_collection_name, - mergeable_collection_suffix, - tile_hits_merger_input_property) - - kwargs.setdefault("embHitContainername", EMB_hits_collection_name) - kwargs.setdefault("emecHitContainername", EMEC_hits_collection_name) - kwargs.setdefault("fcalHitContainername", FCAL_hits_collection_name) - kwargs.setdefault("hecHitContainername", HEC_hits_collection_name) - kwargs.setdefault("tileHitContainername", tile_hits_collection_name) - - return CompFactory.FastHitConvertTool(name,**kwargs) - - -def CaloNoiseToolCfg(flags, name="ISF_FCS_CaloNoiseTool", **kwargs): - # TODO - from CaloTools.CaloNoiseToolDefault import CaloNoiseToolDefault - return CaloNoiseToolDefault(name, **kwargs) - - -def AddNoiseCellBuilderToolCfg(flags, name="ISF_AddNoiseCellBuilderTool", **kwargs): - # TODO - from FastCaloSim.AddNoiseCellBuilderToolDefault import AddNoiseCellBuilderToolDefault - return AddNoiseCellBuilderToolDefault(name, **kwargs) - - -def CaloCellContainerFinalizerToolCfg(flags, name="ISF_CaloCellContainerFinalizerTool", **kwargs): - return CompFactory.CaloCellContainerFinalizerTool(name, **kwargs) - - -def CaloCellContainerFCSFinalizerToolCfg(flags, name="ISF_CaloCellContainerFCSFinalizerTool", **kwargs): - return CompFactory.CaloCellContainerFCSFinalizerTool(name, **kwargs) - - -def FastHitConvAlgCfg(flags, name="ISF_FastHitConvAlg", **kwargs): - acc = ComponentAccumulator() - kwargs.setdefault("CaloCellsInputName" , flags.Sim.FastCalo.CaloCellsName) - # TODO: do we need this? - #from AthenaCommon.DetFlags import DetFlags - #if DetFlags.pileup.LAr_on() or DetFlags.pileup.Tile_on(): - # kwargs.setdefault("doPileup", True) - #else: - # kwargs.setdefault("doPileup", False) - acc.addEventAlgo(CompFactory.FastHitConv(name, **kwargs)) - return acc - - -def FastCaloToolBaseCfg(flags, name="ISF_FastCaloToolBase", **kwargs): - acc = ComponentAccumulator() - kwargs.setdefault("BatchProcessMcTruth" , False) - kwargs.setdefault("SimulateUndefinedBarcodeParticles", False) - kwargs.setdefault("CaloCellsOutputName" , flags.Sim.FastCalo.CaloCellsName) - kwargs.setdefault("PunchThroughTool" , acc.popToolsAndMerge(PunchThroughToolCfg(flags))) - kwargs.setdefault("DoPunchThroughSimulation" , False) - kwargs.setdefault("CaloCellMakerTools_setup" , [EmptyCellBuilderToolCfg(flags)]) - tool = acc.popToolsAndMerge(FastShowerCellBuilderToolCfg(flags)) - kwargs.setdefault("CaloCellMakerTools_simulate" , [tool]) - # TODO - kwargs.setdefault("CaloCellMakerTools_release" , [#"ISF_AddNoiseCellBuilderTool", - CaloCellContainerFinalizerToolCfg(flags), - FastHitConvertToolCfg(flags)]) - kwargs.setdefault("Extrapolator", NITimedExtrapolatorCfg(flags)) - # FIXME not migrated. Remove or replace - # register the FastCaloSim random number streams - #from G4AtlasApps.SimFlags import simFlags - #if not simFlags.RandomSeedList.checkForExistingSeed(ISF_FastCaloSimFlags.RandomStreamName()): - #simFlags.RandomSeedList.addSeed( ISF_FastCaloSimFlags.RandomStreamName(), 98346412, 12461240) - return CompFactory.ISF.FastCaloTool(name, **kwargs) - -def FastCaloToolCfg(flags, name="ISF_FastCaloTool", **kwargs): - return FastCaloToolBaseCfg(flags, name, **kwargs) - -def FastCaloPileupToolCfg(flags, name="ISF_FastCaloPileupTool", **kwargs): - acc = ComponentAccumulator() - kwargs.setdefault("CaloCellsOutputName", flags.Sim.FastCalo.CaloCellsName + "PileUp") - tool = acc.popToolsAndMerge(PileupFastShowerCellBuilderToolCfg(flags)) - kwargs.setdefault("CaloCellMakerTools_simulate", [tool]) - acc.merge(FastCaloToolBaseCfg(name, **kwargs)) - return acc - -def LegacyAFIIFastCaloToolCfg(flags, name="ISF_LegacyAFIIFastCaloTool", **kwargs): - acc = ComponentAccumulator() - kwargs.setdefault("BatchProcessMcTruth", True) - tool = acc.popToolsAndMerge(LegacyFastShowerCellBuilderToolCfg(flags)) - kwargs.setdefault("CaloCellMakerTools_simulate", [tool]) - acc.merge(FastCaloToolBaseCfg(name, **kwargs)) - return acc - -def FastCaloSimV2ToolCfg(flags, name="ISF_FastCaloSimV2Tool", **kwargs): - acc = ComponentAccumulator() - kwargs.setdefault("CaloCellsOutputName", flags.Sim.FastCalo.CaloCellsName) - kwargs.setdefault("CaloCellMakerTools_setup", [EmptyCellBuilderToolCfg(flags)] ) - kwargs.setdefault("CaloCellMakerTools_release", [CaloCellContainerFCSFinalizerToolCfg(flags), - FastHitConvertToolCfg(flags)]) - kwargs.setdefault("FastCaloSimCaloExtrapolation", "FastCaloSimCaloExtrapolation") # tool TODO - kwargs.setdefault("ParamSvc", "ISF_FastCaloSimV2ParamSvc") # TODO - acc.merge(RNG(flags.Random.Engine)) - kwargs.setdefault("RandomSvc", acc.getService("AthRNGSvc")) - kwargs.setdefault("RandomStream", "AthRNGSvc") # TODO check - kwargs.setdefault("PunchThroughTool", acc.popToolsAndMerge(PunchThroughToolCfg(flags))) - return CompFactory.ISF.FastCaloSimV2Tool(name, **kwargs) diff --git a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/python/ISF_FastCaloSimServicesConfigNew.py b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/python/ISF_FastCaloSimServicesConfigNew.py index eb6e3147be2aaab1066ea912a84143e17fb039fb..a7b7b92c50daa7b38c6713c3e83536925d575f4d 100644 --- a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/python/ISF_FastCaloSimServicesConfigNew.py +++ b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/python/ISF_FastCaloSimServicesConfigNew.py @@ -6,41 +6,297 @@ from AthenaConfiguration.ComponentAccumulator import ComponentAccumulator from AthenaConfiguration.ComponentFactory import CompFactory from RngComps.RandomServices import RNG +################################################################################################### +# Moved from AdditionalConfigNew + +from ISF_FastCaloSimParametrization.ISF_FastCaloSimParametrizationConfigNew import FastCaloSimCaloExtrapolationCfg +from FastCaloSim.FastCaloSimFactoryNew import (NITimedExtrapolatorCfg, + FastShowerCellBuilderToolCfg) + + +def PunchThroughToolCfg(flags, name="ISF_PunchThroughTool", **kwargs): + + from BarcodeServices.BarcodeServicesConfigNew import BarcodeSvcCfg + from SubDetectorEnvelopes.SubDetectorEnvelopesConfigNew import EnvelopeDefSvcCfg + + acc = RNG(flags.Random.Engine) + kwargs.setdefault("RandomNumberService", acc.getService("AthRNGSvc")) + kwargs.setdefault("RandomStreamName", "AthRNGSvc") # TODO check + kwargs.setdefault("FilenameLookupTable", "CaloPunchThroughParametrisation.root") + kwargs.setdefault("PunchThroughInitiators", [211]) + kwargs.setdefault("PunchThroughParticles", [ 2212, 211, 22, 11, 13]) + kwargs.setdefault("DoAntiParticles" , [ False, True, False, True, True]) + kwargs.setdefault("CorrelatedParticle" , [ 211, 2212, 11, 22, 0]) + kwargs.setdefault("FullCorrelationEnergy", [100000., 100000., 100000., 100000., 0.]) + kwargs.setdefault("MinEnergy" , [ 938.3, 135.6, 50., 50., 105.7]) + kwargs.setdefault("MaxNumParticles" , [ -1, -1, -1, -1, -1]) + kwargs.setdefault("EnergyFactor" , [ 1., 1., 1., 1., 1.]) + acc_bar = BarcodeSvcCfg(flags) + kwargs.setdefault("BarcodeSvc", acc_bar.getPrimary()) + acc.merge(acc_bar) + acc.merge(EnvelopeDefSvcCfg(flags)) + kwargs.setdefault("EnvelopeDefSvc", acc.getService("AtlasGeometry_EnvelopeDefSvc")) + kwargs.setdefault("BeamPipeRadius", 500.) + acc.setPrivateTools(CompFactory.ISF.PunchThroughTool(name, **kwargs)) + return acc + + +def EmptyCellBuilderToolCfg(flags, name="ISF_EmptyCellBuilderTool", **kwargs): + return CompFactory.EmptyCellBuilderTool(name, **kwargs) + + +def LegacyFastShowerCellBuilderToolCfg(flags, name="ISF_LegacyFastShowerCellBuilderTool", **kwargs): + acc = FastShowerCellBuilderToolCfg(flags, name, **kwargs) + FastShowerCellBuilderTool = acc.popPrivateTools() + FastShowerCellBuilderTool.Invisibles += [13] + acc.setPrivateTools(FastShowerCellBuilderTool) + return acc + +def PileupFastShowerCellBuilderToolCfg(flags, name="ISF_PileupFastShowerCellBuilderTool", **kwargs): + # weights from: + # https://acode-browser.usatlas.bnl.gov/lxr/source/athena/Simulation/FastShower/FastCaloSim/FastCaloSim/FastCaloSim_CaloCell_ID.h + weightsfcs = [ + ### LAr presampler + #FirstSample=CaloCell_ID::PreSamplerB, + 2.0, + ### LAr barrel + #PreSamplerB=CaloCell_ID::PreSamplerB, + #EMB1=CaloCell_ID::EMB1, + #EMB2=CaloCell_ID::EMB2, + #EMB3=CaloCell_ID::EMB3, + 2.0, 2.0, 2.0, 2.0, + ### LAr EM endcap + #PreSamplerE=CaloCell_ID::PreSamplerE, + #EME1=CaloCell_ID::EME1, + #EME2=CaloCell_ID::EME2, + #EME3=CaloCell_ID::EME3, + 2.0, 2.0, 2.0, 2.0, + ### Hadronic end cap cal. + #HEC0=CaloCell_ID::HEC0, + #HEC1=CaloCell_ID::HEC1, + #HEC2=CaloCell_ID::HEC2, + #HEC3=CaloCell_ID::HEC3, + 2.0, 2.0, 2.0, 2.0, + ### Tile barrel + #TileBar0=CaloCell_ID::TileBar0, + #TileBar1=CaloCell_ID::TileBar1, + #TileBar2=CaloCell_ID::TileBar2, + 1.0, 1.0, 1.0, + ### Tile gap (ITC & scint) + #TileGap1=CaloCell_ID::TileGap1, + #TileGap2=CaloCell_ID::TileGap2, + #TileGap3=CaloCell_ID::TileGap3, + 1.0, 1.0, 1.0, + ### Tile extended barrel + #TileExt0=CaloCell_ID::TileExt0, + #TileExt1=CaloCell_ID::TileExt1, + #TileExt2=CaloCell_ID::TileExt2, + 1.0, 1.0, 1.0, + ### Forward EM endcap + #FCAL0=CaloCell_ID::FCAL0, + #FCAL1=CaloCell_ID::FCAL1, + #FCAL2=CaloCell_ID::FCAL2, + 1.0, 1.0, 1.0, + ### Beware of MiniFCAL! We don"t have it, so different numbers after FCAL2 + #LastSample = CaloCell_ID::FCAL2, + #MaxSample = LastSample+1 + 1.0, 1.0, + ] + + kwargs.setdefault("sampling_energy_reweighting", weightsfcs ) + return FastShowerCellBuilderToolCfg(flags, name, **kwargs) + +def FastHitConvertToolCfg(flags, name="ISF_FastHitConvertTool", **kwargs): + from ISF_Algorithms.collection_merger_helpersNew import CollectionMergerCfg + + acc = ComponentAccumulator() + mergeable_collection_suffix = "_FastCaloSim" + + EMB_hits_bare_collection_name = "LArHitEMB" + EMB_hits_merger_input_property = "LArEMBHits" + acc1, EMB_hits_collection_name = CollectionMergerCfg( + flags, + EMB_hits_bare_collection_name, + mergeable_collection_suffix, + EMB_hits_merger_input_property) + acc.merge(acc1) + + EMEC_hits_bare_collection_name = "LArHitEMEC" + EMEC_hits_merger_input_property = "LArEMECHits" + acc2, EMEC_hits_collection_name = CollectionMergerCfg( + flags, + EMEC_hits_bare_collection_name, + mergeable_collection_suffix, + EMEC_hits_merger_input_property) + acc.merge(acc2) + + FCAL_hits_bare_collection_name = "LArHitFCAL" + FCAL_hits_merger_input_property = "LArFCALHits" + acc3, FCAL_hits_collection_name = CollectionMergerCfg( + flags, + FCAL_hits_bare_collection_name, + mergeable_collection_suffix, + FCAL_hits_merger_input_property) + acc.merge(acc3) + + HEC_hits_bare_collection_name = "LArHitHEC" + HEC_hits_merger_input_property = "LArHECHits" + acc4, HEC_hits_collection_name = CollectionMergerCfg( + flags, + HEC_hits_bare_collection_name, + mergeable_collection_suffix, + HEC_hits_merger_input_property) + acc.merge(acc4) + + tile_hits_bare_collection_name = "TileHitVec" + tile_hits_merger_input_property = "TileHits" + acc5, tile_hits_collection_name = CollectionMergerCfg( + flags, + tile_hits_bare_collection_name, + mergeable_collection_suffix, + tile_hits_merger_input_property) + acc.merge(acc5) + + kwargs.setdefault("embHitContainername", EMB_hits_collection_name) + kwargs.setdefault("emecHitContainername", EMEC_hits_collection_name) + kwargs.setdefault("fcalHitContainername", FCAL_hits_collection_name) + kwargs.setdefault("hecHitContainername", HEC_hits_collection_name) + kwargs.setdefault("tileHitContainername", tile_hits_collection_name) + + acc.setPrivateTools(CompFactory.FastHitConvertTool(name, **kwargs)) + return acc + +# TODO: do we need this - nowhere called? +# def CaloNoiseToolCfg(flags, name="ISF_FCS_CaloNoiseTool", **kwargs): +# from CaloTools.CaloNoiseToolDefault import CaloNoiseToolDefault +# return CaloNoiseToolDefault(name, **kwargs) + + +def AddNoiseCellBuilderToolCfg(flags, name="ISF_AddNoiseCellBuilderTool", **kwargs): + from FastCaloSim.AddNoiseCellBuilderToolConfig import AddNoiseCellBuilderToolCfg + return AddNoiseCellBuilderToolCfg(flags) + + +def CaloCellContainerFinalizerToolCfg(flags, name="ISF_CaloCellContainerFinalizerTool", **kwargs): + return CompFactory.CaloCellContainerFinalizerTool(name, **kwargs) + + +def CaloCellContainerFCSFinalizerToolCfg(flags, name="ISF_CaloCellContainerFCSFinalizerTool", **kwargs): + return CompFactory.CaloCellContainerFCSFinalizerTool(name, **kwargs) + + +def FastHitConvAlgCfg(flags, name="ISF_FastHitConvAlg", **kwargs): + acc = ComponentAccumulator() + kwargs.setdefault("CaloCellsInputName" , flags.Sim.FastCalo.CaloCellsName) + # TODO: do we need this? + #from AthenaCommon.DetFlags import DetFlags + #if DetFlags.pileup.LAr_on() or DetFlags.pileup.Tile_on(): + # kwargs.setdefault("doPileup", True) + #else: + # kwargs.setdefault("doPileup", False) + acc.addEventAlgo(CompFactory.FastHitConv(name, **kwargs)) + return acc + + +def FastCaloToolBaseCfg(flags, name="ISF_FastCaloTool", **kwargs): + acc = ComponentAccumulator() + kwargs.setdefault("BatchProcessMcTruth" , False) + kwargs.setdefault("SimulateUndefinedBarcodeParticles", False) + kwargs.setdefault("CaloCellsOutputName" , flags.Sim.FastCalo.CaloCellsName) + kwargs.setdefault("PunchThroughTool" , acc.popToolsAndMerge(PunchThroughToolCfg(flags))) + kwargs.setdefault("DoPunchThroughSimulation" , False) + kwargs.setdefault("CaloCellMakerTools_setup" , [EmptyCellBuilderToolCfg(flags)]) + kwargs.setdefault("CaloCellMakerTools_simulate" , [acc.popToolsAndMerge(FastShowerCellBuilderToolCfg(flags))]) + kwargs.setdefault("CaloCellMakerTools_release" , [# AddNoiseCellBuilderToolCfg(flags)", + CaloCellContainerFinalizerToolCfg(flags), + acc.popToolsAndMerge(FastHitConvertToolCfg(flags))]) + kwargs.setdefault("Extrapolator", NITimedExtrapolatorCfg(flags)) + # FIXME not migrated. Remove or replace + # register the FastCaloSim random number streams + #from G4AtlasApps.SimFlags import simFlags + #if not simFlags.RandomSeedList.checkForExistingSeed(ISF_FastCaloSimFlags.RandomStreamName()): + #simFlags.RandomSeedList.addSeed( ISF_FastCaloSimFlags.RandomStreamName(), 98346412, 12461240) + acc.setPrivateTools(CompFactory.ISF.FastCaloTool(name, **kwargs)) + return acc + +# TODO: Do we need this - can we only call FastCaloToolBaseCfg? +# def FastCaloToolCfg(flags, name="ISF_FastCaloTool", **kwargs): +# return FastCaloToolBaseCfg(flags, name, **kwargs) + +def FastCaloPileupToolCfg(flags, name="ISF_FastCaloPileupTool", **kwargs): + acc = ComponentAccumulator() + kwargs.setdefault("CaloCellsOutputName", flags.Sim.FastCalo.CaloCellsName + "PileUp") + tool = acc.popToolsAndMerge(PileupFastShowerCellBuilderToolCfg(flags)) + kwargs.setdefault("CaloCellMakerTools_simulate", [tool]) + acc.merge(FastCaloToolBaseCfg(name, **kwargs)) + return acc + +def LegacyAFIIFastCaloToolCfg(flags, name="ISF_LegacyAFIIFastCaloTool", **kwargs): + acc = ComponentAccumulator() + kwargs.setdefault("BatchProcessMcTruth", True) + tool = acc.popToolsAndMerge(LegacyFastShowerCellBuilderToolCfg(flags)) + kwargs.setdefault("CaloCellMakerTools_simulate", [tool]) + acc.merge(FastCaloToolBaseCfg(name, **kwargs)) + return acc + +def FastCaloSimV2ToolCfg(flags, name="ISF_FastCaloSimV2Tool", **kwargs): + acc = ComponentAccumulator() + kwargs.setdefault("CaloCellsOutputName", flags.Sim.FastCalo.CaloCellsName) + kwargs.setdefault("CaloCellMakerTools_setup", [EmptyCellBuilderToolCfg(flags)] ) + kwargs.setdefault("CaloCellMakerTools_release", [CaloCellContainerFCSFinalizerToolCfg(flags), + acc.popToolsAndMerge(FastHitConvertToolCfg(flags))]) + kwargs.setdefault("FastCaloSimCaloExtrapolation", FastCaloSimCaloExtrapolationCfg(flags)) + kwargs.setdefault("ParamSvc", acc.popToolsAndMerge(FastCaloSimV2ParamSvcCfg(flags))) + acc.merge(RNG(flags.Random.Engine)) + kwargs.setdefault("RandomSvc", acc.getService("AthRNGSvc")) + kwargs.setdefault("RandomStream", "AthRNGSvc") # TODO check + kwargs.setdefault("PunchThroughTool", acc.popToolsAndMerge(PunchThroughToolCfg(flags))) + + acc.setPrivateTools(CompFactory.ISF.FastCaloSimV2Tool(name, **kwargs)) + return acc + +################################################################################################### +# Config def FastCaloSimSvcCfg(flags, name="ISF_FastCaloSimSvc", **kwargs): acc = ComponentAccumulator() - kwargs.setdefault("SimulatorTool", "ISF_FastCaloTool") + if "SimulatorTool" not in kwargs: + tool = acc.popToolsAndMerge(FastCaloToolBaseCfg(flags)) + kwargs.setdefault("SimulatorTool", tool) kwargs.setdefault("Identifier", "FastCaloSim") acc.addService(CompFactory.ISF.LegacySimSvc(name, **kwargs)) return acc def FastCaloSimPileupSvcCfg(flags, name="ISF_FastCaloSimPileupSvc", **kwargs): - kwargs.setdefault("SimulatorTool", "ISF_FastCaloPileupTool") - return FastCaloSimSvcCfg(flags, name, **kwargs) + acc1 = FastCaloPileupToolCfg(flags) + kwargs.setdefault("SimulatorTool", acc1.popPrivateTools()) + acc = FastCaloSimSvcCfg(flags, name, **kwargs) + acc.merge(acc1) + return acc def LegacyAFIIFastCaloSimSvcCfg(flags, name="ISF_LegacyAFIIFastCaloSimSvc", **kwargs): - kwargs.setdefault("SimulatorTool", "ISF_LegacyAFIIFastCaloTool") - return FastCaloSimSvcCfg(flags, name, **kwargs) + acc1 = LegacyAFIIFastCaloToolCfg(flags) + kwargs.setdefault("SimulatorTool", acc1.popPrivateTools()) + acc = FastCaloSimSvcCfg(flags, name, **kwargs) + acc.merge(acc1) + return acc def FastHitConvAlgFastCaloSimSvcCfg(flags, name="ISF_FastHitConvAlgFastCaloSimSvc",**kwargs): - acc = ComponentAccumulator() - kwargs.setdefault("CaloCellMakerTools_release", ["ISF_AddNoiseCellBuilderTool", - "ISF_CaloCellContainerFCSFinalizerTool"]) + acc1 = FastHitConvAlgCfg(flags) + kwargs.setdefault("CaloCellMakerTools_release", [AddNoiseCellBuilderToolCfg(flags), + CaloCellContainerFCSFinalizerToolCfg(flags)]) # setup FastCaloSim hit converter and add it to the alg sequence: # -> creates HITS from reco cells - from AthenaCommon.AlgSequence import AlgSequence - topSequence=AlgSequence() - from AthenaCommon.CfgGetter import getAlgorithm - topSequence+=getAlgorithm("ISF_FastHitConvAlg") - acc.merge(FastCaloSimSvcCfg(flags, name, **kwargs)) + acc = FastCaloSimSvcCfg(flags, name, **kwargs) + acc.merge(acc1) return acc def FastHitConvAlgLegacyAFIIFastCaloSimSvcCfg(flags, name="ISF_FastHitConvAlgLegacyAFIIFastCaloSimSvc", **kwargs): - kwargs.setdefault("BatchProcessMcTruth", True) + kwargs.setdefault("BatchProcessMcTruth", True) #TODO: This seems not to exist return FastHitConvAlgFastCaloSimSvcCfg(flags, name, **kwargs) @@ -50,18 +306,18 @@ def FastCaloSimPileupOTSvcCfg(flags, name="ISF_FastCaloSimPileupOTSvc", **kwargs kwargs.setdefault("SimulateUndefinedBarcodeParticles", False) kwargs.setdefault("Identifier", "FastCaloSim") kwargs.setdefault("CaloCellsOutputName", flags.Sim.FastCalo.CaloCellsName + "PileUp") - kwargs.setdefault("PunchThroughTool", "ISF_PunchThroughTool") + kwargs.setdefault("PunchThroughTool", acc.popToolsAndMerge(PunchThroughToolCfg(flags))) kwargs.setdefault("DoPunchThroughSimulation", False) kwargs.setdefault("PUWeights_lar_bapre", flags.Sim.FastChain.PUWeights_lar_bapre) kwargs.setdefault("PUWeights_lar_hec", flags.Sim.FastChain.PUWeights_lar_hec) kwargs.setdefault("PUWeights_lar_em", flags.Sim.FastChain.PUWeights_lar_em) kwargs.setdefault("PUWeights_tile", flags.Sim.FastChain.PUWeights_tile) - kwargs.setdefault("CaloCellMakerTools_setup", ["ISF_EmptyCellBuilderTool"]) - kwargs.setdefault("CaloCellMakerTools_simulate", ["ISF_FastShowerCellBuilderTool"]) - kwargs.setdefault("CaloCellMakerTools_release", [#"ISF_AddNoiseCellBuilderTool", - "ISF_CaloCellContainerFCSFinalizerTool", - "ISF_FastHitConvertTool"]) - kwargs.setdefault("Extrapolator", "ISF_NITimedExtrapolator") + kwargs.setdefault("CaloCellMakerTools_setup", [EmptyCellBuilderToolCfg(flags)]) + kwargs.setdefault("CaloCellMakerTools_simulate", [acc.popToolsAndMerge(FastShowerCellBuilderToolCfg(flags))]) + kwargs.setdefault("CaloCellMakerTools_release", [ # AddNoiseCellBuilderToolCfg(flags), + CaloCellContainerFCSFinalizerToolCfg(flags), + acc.popToolsAndMerge(FastHitConvertToolCfg(flags))]) + kwargs.setdefault("Extrapolator", NITimedExtrapolatorCfg(flags)) # FIXME not migrated. Remove or replace # register the FastCaloSim random number streams #from G4AtlasApps.SimFlags import simFlags @@ -73,15 +329,15 @@ def FastCaloSimPileupOTSvcCfg(flags, name="ISF_FastCaloSimPileupOTSvc", **kwargs def FastCaloSimV2ParamSvcCfg(flags, name="ISF_FastCaloSimV2ParamSvc", **kwargs): acc = ComponentAccumulator() - kwargs.setdefault("ParamsInputFilename", flags.Sim.FastCaloParamsInputFilename) + kwargs.setdefault("ParamsInputFilename", flags.Sim.FastCalo.ParamsInputFilename) kwargs.setdefault("ParamsInputObject", "SelPDGID") acc.addService(CompFactory.ISF.FastCaloSimV2ParamSvc(name, **kwargs)) return acc -def FastCaloSimSvcV2Cfg(flags, name="ISF_FastCaloSimSvcV2", **kwargs): +def FastCaloSimV2SvcCfg(flags, name="ISF_FastCaloSimSvcV2", **kwargs): acc = ComponentAccumulator() - kwargs.setdefault("SimulatorTool", "ISF_FastCaloSimV2Tool") + kwargs.setdefault("SimulatorTool", acc.popToolsAndMerge(FastCaloSimV2ToolCfg(flags))) kwargs.setdefault("Identifier", "FastCaloSim") acc.addService(CompFactory.ISF.LegacySimSvc(name, **kwargs)) return acc @@ -89,12 +345,12 @@ def FastCaloSimSvcV2Cfg(flags, name="ISF_FastCaloSimSvcV2", **kwargs): def DNNCaloSimSvcCfg(flags, name="ISF_DNNCaloSimSvc", **kwargs): acc = ComponentAccumulator() - kwargs.setdefault("CaloCellsOutputName", flags.Sim.FastCaloCaloCellsName) - kwargs.setdefault("CaloCellMakerTools_setup", ["ISF_EmptyCellBuilderTool"]) - kwargs.setdefault("CaloCellMakerTools_release", ["ISF_CaloCellContainerFinalizerTool", - "ISF_FastHitConvertTool"]) #DR needed ? - kwargs.setdefault("ParamsInputFilename", flags.Sim.FastCaloParamsInputFilename) - kwargs.setdefault("FastCaloSimCaloExtrapolation", "FastCaloSimCaloExtrapolation") # tool TODO + kwargs.setdefault("CaloCellsOutputName", flags.Sim.FastCalo.CaloCellsName) + kwargs.setdefault("CaloCellMakerTools_setup", [EmptyCellBuilderToolCfg(flags)]) + kwargs.setdefault("CaloCellMakerTools_release", [CaloCellContainerFinalizerToolCfg(flags), + acc.popToolsAndMerge(FastHitConvertToolCfg(flags))]) #DR needed ? + kwargs.setdefault("ParamsInputFilename", flags.Sim.FastCalo.ParamsInputFilename) + kwargs.setdefault("FastCaloSimCaloExtrapolation", FastCaloSimCaloExtrapolationCfg(flags)) # FIXME not migrated. Remove or replace # register the FastCaloSim random number streams diff --git a/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/test/FastCaloSimServices_test.py b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/test/FastCaloSimServices_test.py new file mode 100755 index 0000000000000000000000000000000000000000..e14ca0c937f02fc8378b260372877e539516fe23 --- /dev/null +++ b/Simulation/ISF/ISF_FastCaloSim/ISF_FastCaloSimServices/test/FastCaloSimServices_test.py @@ -0,0 +1,64 @@ +#!/usr/bin/env python +"""Run tests for FastCaloSimServices configuration + +Copyright (C) 2002-2020 CERN for the benefit of the ATLAS collaboration +""" + +from AthenaCommon.Logging import log +from AthenaCommon.Constants import DEBUG +# log.setLevel(DEBUG) + +from AthenaCommon.Configurable import Configurable +from AthenaConfiguration.AllConfigFlags import ConfigFlags +from AthenaConfiguration.MainServicesConfig import MainServicesCfg +from AthenaPoolCnvSvc.PoolReadConfig import PoolReadCfg +from AthenaPoolCnvSvc.PoolWriteConfig import PoolWriteCfg +from ISF_FastCaloSimServices.ISF_FastCaloSimServicesConfigNew import FastCaloSimV2ParamSvcCfg, FastCaloSimV2SvcCfg, DNNCaloSimSvcCfg, FastCaloSimPileupOTSvcCfg, FastCaloToolBaseCfg + +# Set up new style config +Configurable.configurableRun3Behavior = True + +# Configure +ConfigFlags.Input.Files = ['/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/SimCoreTests/valid1.410000.PowhegPythiaEvtGen_P2012_ttbar_hdamp172p5_nonallhad.evgen.EVNT.e4993.EVNT.08166201._000012.pool.root.1'] #defaultTestFiles.EVNT +ConfigFlags.Output.HITSFileName = "myHITSnew.pool.root" +ConfigFlags.Sim.CalibrationRun = "Off" +ConfigFlags.Sim.RecordStepInfo = False +ConfigFlags.Sim.CavernBG = "Signal" +ConfigFlags.Sim.ISFRun = True +ConfigFlags.Sim.BeamPipeSimMode = 'FastSim' +ConfigFlags.Sim.ReleaseGeoModel = False +ConfigFlags.GeoModel.AtlasVersion = 'ATLAS-R2-2015-03-01-00' + +ConfigFlags.lock() + +# Function tests +accAlg = FastCaloSimV2ParamSvcCfg(ConfigFlags) +accAlg.__init__() + +accAlg = FastCaloSimV2SvcCfg(ConfigFlags) +accAlg.__init__() + +accAlg = DNNCaloSimSvcCfg(ConfigFlags) +accAlg.__init__() + +# # Construct our accumulator to run +# acc = MainServicesCfg(ConfigFlags) +# acc.merge(PoolReadCfg(ConfigFlags)) +# acc.merge(PoolWriteCfg(ConfigFlags)) + +# # Dump config +# accAlg.addEventAlgo(CompFactory.JobOptsDumperAlg(FileName="FCS_TestConfig.txt")) +# accAlg.getService("StoreGateSvc").Dump = True +# accAlg.getService("ConditionStore").Dump = True +# accAlg.printConfig(withDetails=True, summariseProps = True) + +# ConfigFlags.dump() + +# # Execute and finish +# sc = accAlg.run(maxEvents=4) + +# # Print and run +# f = open("test.pkl","wb") +# accAlg.store(f) +# f.close() +