5 """Define methods to configure beam effects with the ComponentAccumulator""" 
    6 from AthenaConfiguration.ComponentAccumulator 
import ComponentAccumulator
 
    7 from AthenaConfiguration.ComponentFactory 
import CompFactory
 
    8 from AthenaConfiguration.Enums 
import BeamType, ProductionStep
 
   18     """Return a validity checker tool""" 
   20     acc.setPrivateTools(CompFactory.Simulation.GenEventValidityChecker(name, **kwargs))
 
   25     """Return a event rotator tool""" 
   27     acc.setPrivateTools(CompFactory.Simulation.GenEventRotator(name, **kwargs))
 
   32     """Return a lorentz booster tool""" 
   35     acc.setPrivateTools(CompFactory.Simulation.GenEventBeamEffectBooster(name, **kwargs))
 
   40     """Return a vertex positioner tool""" 
   45     from SimulationConfig.SimEnums 
import VertexSource
 
   46     if flags.Sim.VertexSource 
is VertexSource.MatchingBkg:
 
   48     elif flags.Sim.VertexSource 
is VertexSource.CondDB:
 
   50     elif flags.Sim.VertexSource 
is VertexSource.LongBeamspotVertexPositioner:
 
   52     elif flags.Sim.VertexSource 
is VertexSource.LRAPositioner:
 
   55     acc.setPrivateTools(CompFactory.Simulation.GenEventVertexPositioner(name, **kwargs))
 
   61     """Return a conditional (? todo) vertex positioner tool""" 
   62     from RngComps.RngCompsConfig 
import AthRNGSvcCfg
 
   66     kwargs.setdefault(
"RandomSvc", acc.getPrimaryAndMerge(
AthRNGSvcCfg(flags)))
 
   67     kwargs.setdefault(
"SimpleTimeSmearing", flags.Sim.VertexTimeSmearing)
 
   68     kwargs.setdefault(
"TimeWidth", flags.Sim.VertexTimeWidth)
 
   70     from BeamSpotConditions.BeamSpotConditionsConfig 
import BeamSpotCondAlgCfg
 
   73     acc.setPrivateTools(CompFactory.Simulation.VertexBeamCondPositioner(name, **kwargs))
 
   78     from RngComps.RngCompsConfig 
import AthRNGSvcCfg
 
   82     kwargs.setdefault(
"FileName", flags.Beam.vdMScan.ConfigFile)
 
   83     kwargs.setdefault(
"HistName", flags.Beam.vdMScan.PV.PDF)
 
   85     kwargs.setdefault(
"RNGService", acc.getPrimaryAndMerge(
AthRNGSvcCfg(flags)).name)
 
   87     acc.setPrivateTools(CompFactory.Simulation.LRAVertexPositioner(name, **kwargs))
 
   91     """Return a vertex positioner tool that reads a matching vertex from the background input file.""" 
   94     if flags.Overlay.DataOverlay:
 
   95         kwargs.setdefault(
"PrimaryVertexContainerName", f
"{flags.Overlay.BkgPrefix}PrimaryVertices")
 
   97         from SGComps.SGInputLoaderConfig 
import SGInputLoaderCfg
 
   98         acc.merge(
SGInputLoaderCfg(flags, [f
'xAOD::VertexContainer#{kwargs["PrimaryVertexContainerName"]}']))
 
  100     acc.setPrivateTools(CompFactory.Simulation.MatchingBkgVertexPositioner(name, **kwargs))
 
  105     """Return a Crab-Kissing vertex positioner tool""" 
  108     acc.setPrivateTools(CompFactory.Simulation.CrabKissingVertexPositioner(name, **kwargs))
 
  113     """Return a long beamspot vertex positioner tool""" 
  116     kwargs.setdefault(
"SimpleTimeSmearing", flags.Sim.VertexTimeSmearing)
 
  117     acc.setPrivateTools(CompFactory.Simulation.LongBeamspotVertexPositioner(name, **kwargs))
 
  122     """Return an accumulator and algorithm for beam effects, wihout output""" 
  125     from SimulationConfig.SimEnums 
import LArParameterization
 
  126     if flags.Sim.LArParameterization 
is LArParameterization.FastCaloSim:
 
  127         kwargs.setdefault(
"ISFRun", 
True)
 
  129         kwargs.setdefault(
"ISFRun", flags.Sim.ISFRun)
 
  132     if flags.Sim.DoFullChain 
and flags.Digitization.PileUp:
 
  133         kwargs.setdefault(
"InputMcEventCollection", 
"OriginalEvent_SG+GEN_EVENT")
 
  135         kwargs.setdefault(
"InputMcEventCollection", 
"GEN_EVENT")
 
  137     if flags.Sim.DoFullChain 
and flags.Common.isOverlay 
and not flags.Overlay.DataOverlay:
 
  138         kwargs.setdefault(
'OutputMcEventCollection', f
"{flags.Overlay.SigPrefix}TruthEvent")
 
  140         kwargs.setdefault(
'OutputMcEventCollection', 
'BeamTruthEvent')
 
  145     from SimulationConfig.SimEnums 
import VertexSource
 
  146     if not flags.Sim.VertexSource == VertexSource.AsGenerated:
 
  148         from SimulationConfig.SimEnums 
import CavernBackground
 
  149         if flags.Beam.Type 
not in [BeamType.Cosmics, BeamType.TestBeam] 
and flags.Sim.CavernBackground 
is not CavernBackground.Read:
 
  153     kwargs.setdefault(
"GenEventManipulators", manipulators)
 
  155     acc.addEventAlgo(CompFactory.Simulation.BeamEffectsAlg(name, **kwargs), primary=
True)
 
  160     """Return an accumulator and algorithm for beam effects, with output""" 
  163     alg = acc.getPrimary()
 
  164     ItemList = [
"McEventCollection#" + alg.OutputMcEventCollection]
 
  165     from OutputStreamAthenaPool.OutputStreamConfig 
import OutputStreamCfg
 
  166     acc.merge(
OutputStreamCfg(flags, 
"HITS", ItemList=ItemList, disableEventTag=
True))
 
  171     from BeamSpotConditions.BeamSpotConditionsConfig 
import BeamSpotCondAlgCfg
 
  174     kwargs.setdefault(
"InputKey", 
"Input_EventInfo")
 
  175     if flags.Common.ProductionStep == ProductionStep.PileUpPresampling:
 
  176         kwargs.setdefault(
"OutputKey", flags.Overlay.BkgPrefix + 
"EventInfo")
 
  178         kwargs.setdefault(
"OutputKey", 
"EventInfo")
 
  180     acc.addEventAlgo(CompFactory.Simulation.BeamSpotFixerAlg(name, **kwargs))
 
  186     kwargs.setdefault(
'ApplyPatch', 
True)
 
  187     kwargs.setdefault(
'RemovePatch', 
True)
 
  188     result.addService(CompFactory.Simulation.ZeroLifetimePositioner(name, **kwargs), primary = 
True)
 
  193     from BeamSpotConditions.BeamSpotConditionsConfig 
import BeamSpotCondAlgCfg
 
  196     kwargs.setdefault(
"Input_beam_sigma_z", flags.Digitization.InputBeamSigmaZ)
 
  198     acc.addEventAlgo(CompFactory.Simulation.BeamSpotReweightingAlg(name, **kwargs))
 
  201     from AthenaConfiguration.MainServicesConfig 
import OutputUsageIgnoreCfg
 
  207 if __name__ == 
"__main__":
 
  208     from AthenaCommon.Logging 
import log
 
  210     from AthenaConfiguration.MainServicesConfig 
import MainServicesCfg
 
  211     from AthenaPoolCnvSvc.PoolReadConfig 
import PoolReadCfg
 
  213     from AthenaConfiguration.TestDefaults 
import defaultGeometryTags
 
  214     from AthenaConfiguration.AllConfigFlags 
import initConfigFlags
 
  221     inputDir = os.environ.get(
"ATLAS_REFERENCE_DATA",
 
  222                               "/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art")
 
  224     flags.Input.Files = [
 
  226         "/SimCoreTests/e_E50_eta34_49.EVNT.pool.root" 
  230     flags.Output.HITSFileName = 
"myHITS.pool.root" 
  233     from SimulationConfig.SimEnums 
import VertexSource
 
  235     flags.Sim.VertexSource = VertexSource.CondDB
 
  239     flags.Input.isMC = 
True 
  240     flags.GeoModel.AtlasVersion = defaultGeometryTags.RUN2
 
  241     flags.IOVDb.GlobalTag = 
"OFLCOND-MC16-SDR-14"   
  242     flags.Input.RunNumbers = [284500]  
 
  255     cfg.getService(
"StoreGateSvc").Dump = 
True 
  256     cfg.printConfig(withDetails=
True)
 
  260     with open(
"BeamEffectsAlg.pkl", 
"wb") 
as f:
 
  264     cfg.run(maxEvents=20)