From 14c1b12754534b88d6a94fa8fd42c35900e95bf5 Mon Sep 17 00:00:00 2001
From: Dave Casper <dcasper@uci.edu>
Date: Sun, 23 Jun 2024 16:46:59 -0700
Subject: [PATCH] Recommission simulation scripts

---
 .../Generation/scripts/faser_particlegun.py   | 56 ++++++++++++++-----
 .../Simulation/scripts/faser_simulate.py      | 44 ++++++++++-----
 package_filters.txt                           |  2 +
 3 files changed, 73 insertions(+), 29 deletions(-)

diff --git a/Control/CalypsoExample/Generation/scripts/faser_particlegun.py b/Control/CalypsoExample/Generation/scripts/faser_particlegun.py
index 4a70ec152..b3206fe42 100755
--- a/Control/CalypsoExample/Generation/scripts/faser_particlegun.py
+++ b/Control/CalypsoExample/Generation/scripts/faser_particlegun.py
@@ -64,6 +64,14 @@ if __name__ == '__main__':
 # 
     configFlags.Output.HITSFileName = args.outfile
 #
+# More config flags (R24)
+#
+    configFlags.Common.MsgSourceLength = 30
+    configFlags.Input.MCCampaign = Campaign.Unknown
+    configFlags.Input.TypedCollections = []
+    configFlags.Input.MetadataItems = []
+    configFlags.Beam.Type = BeamType.Collisions
+#
 # Sim configFlags
 #
     configFlags.GeoModel.Layout = "FASER"
@@ -240,27 +248,35 @@ if __name__ == '__main__':
     cfg.merge(FaserParticleGunCfg(configFlags))
     from McEventSelector.McEventSelectorConfig import McEventSelectorCfg
     cfg.merge(McEventSelectorCfg(configFlags))
-
-#
-# Output file
-#
-    from AthenaPoolCnvSvc.PoolWriteConfig import PoolWriteCfg
-    cfg.merge(PoolWriteCfg(configFlags))
-
 #
-# Shift LOS
+# Shift LOS for particle gun (into AthBeginSeq)
 #
-
     if doShiftLOS:
+
         import McParticleEvent.Pythonizations
         from GeneratorUtils.ShiftLOSConfig import ShiftLOSCfg
-
         cfg.merge(ShiftLOSCfg(configFlags, 
-                              xcross = configFlags.Sim.Beam.xangle, 
-                              ycross = configFlags.Sim.Beam.yangle,
-                              xshift = configFlags.Sim.Beam.xshift,
-                              yshift = configFlags.Sim.Beam.yshift))
-
+                            xcross = configFlags.Sim.Beam.xangle, ycross = configFlags.Sim.Beam.yangle,
+                            xshift = configFlags.Sim.Beam.xshift, yshift = configFlags.Sim.Beam.yshift),
+                            sequenceName = "AthBeginSeq")
+# #
+# # Shift LOS
+# #
+
+#     if doShiftLOS:
+#         import McParticleEvent.Pythonizations
+#         from GeneratorUtils.ShiftLOSConfig import ShiftLOSCfg
+
+#         cfg.merge(ShiftLOSCfg(configFlags, 
+#                               xcross = configFlags.Sim.Beam.xangle, 
+#                               ycross = configFlags.Sim.Beam.yangle,
+#                               xshift = configFlags.Sim.Beam.xshift,
+#                               yshift = configFlags.Sim.Beam.yshift))
+#
+# Header conversion seems necessary to write events
+#
+    from xAODEventInfoCnv.xAODEventInfoCnvConfig import EventInfoCnvAlgCfg
+    cfg.merge(EventInfoCnvAlgCfg(configFlags, disableBeamSpot=True))
     
 #
 # Add the G4FaserAlg
@@ -277,6 +293,16 @@ if __name__ == '__main__':
         OutputStreamHITS = cfg.getEventAlgo("OutputStreamHITS")
         OutputStreamHITS.RequireAlgs = ["MuonFilter"]
 #
+# Output file
+#
+    AcceptAlgNames = ['G4FaserAlg']
+    from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
+    from G4FaserAlg.G4FaserAlgConfig import getG4FaserAlgItemList
+    cfg.merge(OutputStreamCfg(configFlags, "HITS", ItemList=getG4FaserAlgItemList(configFlags), disableEventTag=True, AcceptAlgs=AcceptAlgNames))
+    # Add in-file MetaData
+    from xAODMetaDataCnv.InfileMetaDataConfig import SetupMetaDataForStreamCfg
+    cfg.merge(SetupMetaDataForStreamCfg(configFlags, "HITS", AcceptAlgs=AcceptAlgNames))
+#
 # Dump config
 #
     from AthenaConfiguration.ComponentFactory import CompFactory
diff --git a/Control/CalypsoExample/Simulation/scripts/faser_simulate.py b/Control/CalypsoExample/Simulation/scripts/faser_simulate.py
index 411aee146..ba5a4b947 100755
--- a/Control/CalypsoExample/Simulation/scripts/faser_simulate.py
+++ b/Control/CalypsoExample/Simulation/scripts/faser_simulate.py
@@ -111,6 +111,8 @@ if __name__ == '__main__':
     from AthenaCommon.Logging import log
     from AthenaCommon.Constants import DEBUG, VERBOSE
     from AthenaCommon.Configurable import Configurable
+    from Campaigns.Utils import Campaign
+    from AthenaConfiguration.Enums import BeamType
     log.setLevel(DEBUG)
     Configurable.configurableRun3Behavior = 1
 #
@@ -143,6 +145,14 @@ if __name__ == '__main__':
 # 
     configFlags.Output.HITSFileName = outfile
 #
+# More config flags (R24)
+#
+    configFlags.Common.MsgSourceLength = 30
+    configFlags.Input.MCCampaign = Campaign.Unknown
+    configFlags.Input.TypedCollections = []
+    configFlags.Input.MetadataItems = []
+    configFlags.Beam.Type = BeamType.Collisions
+#
 # Sim configFlags
 #
     configFlags.GeoModel.Layout = "FASER"
@@ -226,9 +236,9 @@ if __name__ == '__main__':
         from HEPMCReader.HepMCReaderConfig import HepMCReaderCfg
 
         if doShiftLOS:
-            cfg.merge(HepMCReaderCfg(configFlags, McEventKey = "BeamTruthEvent_ATLASCoord"))
+            cfg.merge(HepMCReaderCfg(configFlags, McEventKey = "BeamTruthEvent_ATLASCoord"), sequenceName = "AthBeginSeq")
         else:
-            cfg.merge(HepMCReaderCfg(configFlags))
+            cfg.merge(HepMCReaderCfg(configFlags), sequenceName = "AthBeginSeq")
 
         from McEventSelector.McEventSelectorConfig import McEventSelectorCfg
         cfg.merge(McEventSelectorCfg(configFlags))
@@ -244,12 +254,6 @@ if __name__ == '__main__':
             # Rename old truth collection to add ATLAS coord to can still use BeamTruthEvent for the one in FASER Coords
             cfg.merge(InputOverwriteCfg("McEventCollection", "BeamTruthEvent", "McEventCollection", "BeamTruthEvent_ATLASCoord"))
 
-#
-# Output file
-#
-    from AthenaPoolCnvSvc.PoolWriteConfig import PoolWriteCfg
-    cfg.merge(PoolWriteCfg(configFlags))
-
 #
 # Shift LOS
 #
@@ -258,18 +262,30 @@ if __name__ == '__main__':
         import McParticleEvent.Pythonizations
         from GeneratorUtils.ShiftLOSConfig import ShiftLOSCfg
         cfg.merge(ShiftLOSCfg(configFlags, 
-                              xcross = configFlags.Sim.Beam.xangle, 
-                              ycross = configFlags.Sim.Beam.yangle,
-                              xshift = configFlags.Sim.Beam.xshift,
-                              yshift = configFlags.Sim.Beam.yshift))
-
-
+                              xcross = configFlags.Sim.Beam.xangle, ycross = configFlags.Sim.Beam.yangle,
+                              xshift = configFlags.Sim.Beam.xshift, yshift = configFlags.Sim.Beam.yshift),
+                              sequenceName = "AthAlgSeq")
+#
+# Header conversion seems necessary to write events
+#
+    from xAODEventInfoCnv.xAODEventInfoCnvConfig import EventInfoCnvAlgCfg
+    cfg.merge(EventInfoCnvAlgCfg(configFlags, disableBeamSpot=True))
 #
 # Add the G4FaserAlg
 #
     from G4FaserAlg.G4FaserAlgConfig import G4FaserAlgCfg
     cfg.merge(G4FaserAlgCfg(configFlags))
 #
+# Output file
+#
+    AcceptAlgNames = ['G4FaserAlg']
+    from OutputStreamAthenaPool.OutputStreamConfig import OutputStreamCfg
+    from G4FaserAlg.G4FaserAlgConfig import getG4FaserAlgItemList
+    cfg.merge(OutputStreamCfg(configFlags, "HITS", ItemList=getG4FaserAlgItemList(configFlags), disableEventTag=True, AcceptAlgs=AcceptAlgNames))
+    # Add in-file MetaData
+    from xAODMetaDataCnv.InfileMetaDataConfig import SetupMetaDataForStreamCfg
+    cfg.merge(SetupMetaDataForStreamCfg(configFlags, "HITS", AcceptAlgs=AcceptAlgNames))
+#
 # Dump config
 #
     from AthenaConfiguration.ComponentFactory import CompFactory
diff --git a/package_filters.txt b/package_filters.txt
index f5b94017c..c284cbcef 100644
--- a/package_filters.txt
+++ b/package_filters.txt
@@ -13,11 +13,13 @@
 #+Calorimeter/FaserCaloSimEvent
 +Calorimeter/.*
 +Control/CalypsoConfiguration
++Control/CalypsoExample/Generation
 +Control/CalypsoExample/GenEventExample
 +Control/CalypsoExample/GeoModelTest
 +Control/CalypsoExample/RDOReadExample
 +Control/CalypsoExample/Reconstruction
 +Control/CalypsoExample/SimHitExample
++Control/CalypsoExample/Simulation
 +Control/CalypsoExample/TrackerDataAccessExample
 +Control/CalypsoExample/TriggerDataAccessExample
 +Control/CalypsoExample/WaveformAnalysisExample
-- 
GitLab