Punchthrough AF3 implementation in FastG4
Implement AF3 punch-through simulation as part of the FastGeant4 (G4VFastSimulation).
Added option to toggle it on or off via --postExec e.g. with doPunchThrough=False (default to True).
Two PublicToolHandle(s) introduced to FastCaloSim.cxx (main driver code inheriting G4VFastSimulationModel):
- PunchThroughG4Tool (interfaced via IPunchThroughG4Tool)
- PunchThroughG4Classifier (interfaced via IPunchThroughG4Classifier)
Added LibXml2 and introduce ROOT into Simulation/G4Atlas/G4AtlasTools/CMakeLists.txt to parse the xml and ROOT config files. At the moment, the punchthrough probability is calculated from classifier using network lwtnn file (in the future there is plan to convert and use ONNX file directly as well).
ISF_InterfacesLib is needed to get ISF_Interfaces/IGeoIDSvc.h (defined as ISF::GeoIDSvc) as this is still using m_geoIDSvc->identifyNextGeoID(amg3DPosVec,amg3DMomVec) to check whether the particles point towards AtlasDetDescr::fAtlasCalo.
Minimum reproducibility/transform:
asetup Athena,24.0.68
AtlasG4_tf.py --CA --multithreaded --randomSeed '10' --maxEvents '20' --skipEvents '0' --preInclude 'sim:Campaigns.MC23aSimulationMultipleIoV,SimuJobTransforms.FastCaloSim' --postInclude 'default:PyJobTransforms.UseFrontier' --preExec 'AtlasG4Tf:doPunchThrough=True' --postExec 'from AthenaCommon.Constants import INFO,VERBOSE,DEBUG;from AthenaCommon.Logging import log;log.setLevel(VERBOSE);sim:cfg.addEventAlgo(CompFactory.JobOptsDumperAlg(FileName="CAConfig.txt"))' --inputEVNTFile '/cvmfs/atlas-nightlies.cern.ch/repo/data/data-art/CampaignInputs/mc21/EVNT/mc21_13p6TeV.601229.PhPy8EG_A14_ttbar_hdamp258p75_SingleLep.evgen.EVNT.e8453/EVNT.29328277._003902.pool.root.1' --outputHITSFile='test.MT.HITS.pool.root' --physicsList='FTFP_BERT_ATL' --conditionsTag 'default:OFLCOND-MC23-SDR-RUN3-01' --geometryVersion='default:ATLAS-R3S-2021-03-02-00' --verbose --imf False;
Tagging FCS conveners @zhangr , @jbeirer
Modifications:
- Add condition in
G4Atlas/G4AtlasTools/CMakeLists.txtto only build PunchThrough* files for non SIMULATIONBASE since the PunchThroughG4Classifier needs lwtnn to get the probability and project like AthSimulation needs to be minimally built (should be addressed once we decouple ISF components). - Split DECLARE_COMPONENT(...) for PunchThrough* and add
src/components/G4AtlasTools_PunchThroughG4_entries.cxxto filter it out for SIMULATIONBASE project.