## Geant4 service # Configures the Geant simulation: geometry, physics list and user actions geantservice = SimG4Svc("SimG4Svc", detector='SimG4DD4hepDetector', physicslist="SimG4FtfpBert", actions="SimG4FullSimActions") from Configurables import SimG4Alg, SimG4SaveTrackerHits, SimG4SaveCalHits, SimG4PrimariesFromEdmTool ## Geant4 algorithm # Translates EDM to G4Event, passes the event to G4, writes out outputs via tools # first, create a tool that saves the tracker hits # Name of that tool in GAUDI is "XX/YY" where XX is the tool class name ("SimG4SaveTrackerHits") # and YY is the given name ("saveTrackerHits") savetrackertool = SimG4SaveTrackerHits("saveTrackerHits", readoutNames = ["TrackerBarrelReadout", "TrackerEndcapReadout"]) savetrackertool.positionedTrackHits.Path = "positionedHits" savetrackertool.trackHits.Path = "hits" # and a tool that saves the calorimeter hits with a name "SimG4SaveCalHits/saveCalHits" saveecaltool = SimG4SaveCalHits("saveECalBarrelHits", readoutNames = ["ECalBarrelEta"]) saveecaltool.positionedCaloHits.Path = "ECalBarrelPositionedHits" saveecaltool.caloHits.Path = "ECalBarrelHits" saveendcaptool = SimG4SaveCalHits("saveECalEndcapHits", readoutNames = ["EMECPhiEta"]) saveendcaptool.positionedCaloHits.Path = "ECalEndcapPositionedHits" saveendcaptool.caloHits.Path = "ECalEndcapHits" savefwdtool = SimG4SaveCalHits("saveECalFwdHits", readoutNames = ["EMFwdPhiEta"]) savefwdtool.positionedCaloHits.Path = "ECalFwdPositionedHits" savefwdtool.caloHits.Path = "ECalFwdHits" savehcaltool = SimG4SaveCalHits("saveHCalHits", readoutNames = ["BarHCal_Readout"]) savehcaltool.positionedCaloHits.Path = "HCalPositionedHits" savehcaltool.caloHits.Path = "HCalHits" # next, create the G4 algorithm, giving the list of names of tools ("XX/YY") particle_converter = SimG4PrimariesFromEdmTool("EdmConverter") particle_converter.genParticles.Path = "allGenParticles" geantsim = SimG4Alg("SimG4Alg",
# Geant4 service # Configures the Geant simulation: geometry, physics list and user actions from Configurables import SimG4Svc geantservice = SimG4Svc("SimG4Svc", detector='SimG4DD4hepDetector', physicslist="SimG4FtfpBert", actions="SimG4FullSimActions") geantservice.g4PostInitCommands += ["/run/setCut 0.1 mm"] # Geant4 algorithm # Translates EDM to G4Event, passes the event to G4, writes out outputs via tools # and a tool that saves the calorimeter hits from Configurables import SimG4Alg, SimG4SaveCalHits, SimG4SingleParticleGeneratorTool saveecaltool = SimG4SaveCalHits("saveECalBarrelHits", readoutNames=["ECalBarrelEta"]) saveecaltool.positionedCaloHits.Path = "ECalBarrelPositionedHits" saveecaltool.caloHits.Path = "ECalBarrelHits" from Configurables import SimG4SingleParticleGeneratorTool pgun = SimG4SingleParticleGeneratorTool("SimG4SingleParticleGeneratorTool", saveEdm=True, particleName="e-", energyMin=50000, energyMax=50000, etaMin=0, etaMax=0, OutputLevel=DEBUG) # next, create the G4 algorithm, giving the list of names of tools ("XX/YY") geantsim = SimG4Alg("SimG4Alg", outputs=["SimG4SaveCalHits/saveECalBarrelHits"],
from fcc_sim_config import * calo_readouts = { "EcalBarrel": ["ECalBarrelEta"], #"HcalBarrel": ["HCalBarrelReadout"], #"MiscCalo": [ # "ECalBarrelPhiEta", # "EMECPhiEta", # "EMFwdPhiEta", # "HCalExtBarrelReadout", # "HECPhiEta", # "HFwdPhiEta", # "Muons_Readout", # ] } from Configurables import SimG4SaveCalHits for calo_name in calo_readouts: savecaltool = SimG4SaveCalHits(calo_name) savecaltool.readoutNames = calo_readouts[calo_name] savecaltool.positionedCaloHits.Path = calo_name + "PositionedHits" savecaltool.caloHits.Path = calo_name + "Hits" geant_output_tool_list += [savecaltool] geantsim.outputs = geant_output_tool_list
], OutputLevel=INFO) # Geant4 service # Configures the Geant simulation: geometry, physics list and user actions from Configurables import SimG4Svc geantservice = SimG4Svc("SimG4Svc", detector='SimG4DD4hepDetector', physicslist="SimG4TestPhysicsList", actions="SimG4FullSimActions") # Geant4 algorithm # Translates EDM to G4Event, passes the event to G4, writes out outputs via tools # and a tool that saves the calorimeter hits from Configurables import SimG4Alg, SimG4SaveCalHits savetool = SimG4SaveCalHits("saveHits", readoutNames=["ECalHitsEta"]) savetool.positionedCaloHits.Path = "PositionedHits" savetool.caloHits.Path = "Hits" geantsim = SimG4Alg("SimG4Alg", outputs=["SimG4SaveCalHits/saveHits"], OutputLevel=DEBUG) from Configurables import CreateVolumeCaloPositions positions = CreateVolumeCaloPositions("positions", OutputLevel=VERBOSE) positions.hits.Path = "Hits" positions.positionedHits.Path = "Positions" # PODIO algorithm from Configurables import PodioOutput out = PodioOutput("out", OutputLevel=DEBUG)
# Geant4 algorithm # Translates EDM to G4Event, passes the event to G4, writes out outputs via tools # and a tool that saves the calorimeter hits # Detector readouts # ECAL ecalBarrelReadoutName = "ECalBarrelEta" ecalBarrelReadoutNamePhiEta = "ECalBarrelPhiEta" # HCAL hcalReadoutName = "HCalBarrelReadout" extHcalReadoutName = "HCalExtBarrelReadout" # Configure saving of calorimeter hits from Configurables import SimG4SaveCalHits saveecalbarreltool = SimG4SaveCalHits("saveECalBarrelHits", readoutNames = [ecalBarrelReadoutName]) saveecalbarreltool.CaloHits.Path = "ECalBarrelHits" savehcaltool = SimG4SaveCalHits("saveHCalBarrelHits",readoutNames = [hcalReadoutName]) savehcaltool.CaloHits.Path = "HCalBarrelHits" # next, create the G4 algorithm, giving the list of names of tools ("XX/YY") from Configurables import SimG4PrimariesFromEdmTool particle_converter = SimG4PrimariesFromEdmTool("EdmConverter") particle_converter.GenParticles.Path = "GenParticles" from Configurables import SimG4Alg geantsim = SimG4Alg("SimG4Alg", outputs= ["SimG4SaveCalHits/saveECalBarrelHits", "SimG4SaveCalHits/saveHCalBarrelHits", ],
hepmc_converter.hepmc.Path="hepmc" hepmc_converter.genparticles.Path="allGenParticles" hepmc_converter.genvertices.Path="allGenVertices" dumper = HepMCDumper("Dumper") dumper.hepmc.Path="hepmc" from Configurables import GeoSvc geoservice = GeoSvc("GeoSvc", detectors=['file:Test/TestGeometry/data/TestBoxCaloSD_3readouts.xml'], OutputLevel = INFO) from Configurables import SimG4Svc geantservice = SimG4Svc("SimG4Svc", physicslist='SimG4TestPhysicsList') from Configurables import SimG4Alg, SimG4SaveCalHits, InspectHitsCollectionsTool inspecttool = InspectHitsCollectionsTool("inspect", readoutNames=["ECalHits"], OutputLevel = DEBUG) savecaltool = SimG4SaveCalHits("saveECalHits", readoutNames = ["ECalHits"], OutputLevel = DEBUG) savecaltool.positionedCaloHits.Path = "positionedCaloHits" savecaltool.caloHits.Path = "caloHits" geantsim = SimG4Alg("SimG4Alg", outputs= ["SimG4SaveCalHits/saveECalHits","InspectHitsCollectionsTool/inspect"]) from Configurables import RedoSegmentation resegment = RedoSegmentation("ReSegmentation", # old bitfield (readout) oldReadoutName = "ECalHits", # specify which fields are going to be deleted oldSegmentationIds = ["x","y","z"], # new bitfield (readout), with new segmentation newReadoutName="ECalHitsReverseOrder", OutputLevel = DEBUG) # clusters are needed, with deposit position and cellID in bits resegment.inhits.Path = "positionedCaloHits"
detector='SimG4DD4hepDetector', physicslist="SimG4FtfpBert", actions="SimG4FullSimActions", magneticField=field) # range cut geantservice.g4PostInitCommands += ["/run/setCut 0.1 mm"] from Configurables import SimG4Alg, SimG4SaveCalHits, SimG4SingleParticleGeneratorTool, SimG4SaveTrackerHits savetrackertool = SimG4SaveTrackerHits( "saveTrackerHits", readoutNames=["TrackerBarrelReadout", "TrackerEndcapReadout"]) savetrackertool.positionedTrackHits.Path = "TrackerPositionedHits" savetrackertool.trackHits.Path = "TrackerHits" savetrackertool.digiTrackHits.Path = "TrackerDigiPostPoint" saveecaltool = SimG4SaveCalHits("saveECalBarrelHits", readoutNames=[ecalBarrelReadoutName]) saveecaltool.positionedCaloHits.Path = "ECalBarrelPositionedHits" saveecaltool.caloHits.Path = "ECalBarrelHits" savehcaltool = SimG4SaveCalHits("saveHCalBarrelHits", readoutNames=[hcalBarrelReadoutName]) savehcaltool.positionedCaloHits.Path = "HCalBarrelPositionedHits" savehcaltool.caloHits.Path = "HCalBarrelHits" outputHitsTools = [ "SimG4SaveCalHits/saveECalBarrelHits", "SimG4SaveCalHits/saveHCalBarrelHits" ] saveexthcaltool = SimG4SaveCalHits("saveHCalExtBarrelHits", readoutNames=[hcalExtBarrelReadoutName]) saveexthcaltool.positionedCaloHits.Path = "HCalExtBarrelPositionedHits" saveexthcaltool.caloHits.Path = "HCalExtBarrelHits" savecalendcaptool = SimG4SaveCalHits("saveECalEndcapHits",
"GeoSvc", detectors=[ 'file:Detector/DetFCChhBaseline1/compact/FCChh_DectEmptyMaster.xml', 'file:Detector/DetFCChhECalInclined/compact/FCChh_ECalBarrel_withCryostat.xml', 'file:Detector/DetFCChhCalDiscs/compact/Endcaps_coneCryo.xml' ], OutputLevel=INFO) from Configurables import SimG4Svc geantservice = SimG4Svc("SimG4Svc", detector='SimG4DD4hepDetector', physicslist="SimG4FtfpBert", actions="SimG4FullSimActions") geantservice.g4PostInitCommands += ["/run/setCut 0.1 mm"] from Configurables import SimG4Alg, SimG4SaveCalHits, SimG4SingleParticleGeneratorTool saveecaltool = SimG4SaveCalHits("saveECalBarrelHits", readoutNames=["ECalBarrelEta"]) saveecaltool.positionedCaloHits.Path = "ECalBarrelPositionedHits" saveecaltool.caloHits.Path = "ECalBarrelHits" savecalendcaptool = SimG4SaveCalHits("saveECalEndcapHits", readoutNames=["EMECPhiEta"]) savecalendcaptool.positionedCaloHits.Path = "ECalEndcapPositionedHits" savecalendcaptool.caloHits.Path = "ECalEndcapHits" from Configurables import SimG4SingleParticleGeneratorTool pgun = SimG4SingleParticleGeneratorTool("SimG4SingleParticleGeneratorTool", saveEdm=True, particleName="e-", energyMin=50000, energyMax=50000, etaMin=2., etaMax=2.) geantsim = SimG4Alg("SimG4Alg",
magneticField=field) geantservice.g4PostInitCommands += ["/tracking/storeTrajectory 1"] # Geant4 algorithm # Translates EDM to G4Event, passes the event to G4, writes out outputs via tools from Configurables import SimG4Alg, SimG4SaveTrackerHits, SimG4SaveTrajectory, SimG4GeantinosFromEdmTool # first, create a tool that saves the tracker hits # Name of that tool in GAUDI is "XX/YY" where XX is the tool class name ("SimG4SaveTrackerHits") # and YY is the given name ("saveTrackerHits") savetrajectorytool = SimG4SaveTrajectory("saveTrajectory") savetrajectorytool.trajectory.Path = "trajectory" savetrajectorytool.trajectoryPoints.Path = "trajectoryPoints" from Configurables import SimG4SaveCalHits savehcaltool = SimG4SaveCalHits( "saveHCalHits", readoutNames=["HCalBarrelDetailedWedgeReadout"]) savehcaltool.positionedCaloHits.Path = "HCalBarrelPositionedHits" savehcaltool.caloHits.Path = "HCalBarrelHits" # next, create the G4 algorithm, giving the list of names of tools ("XX/YY") g4pconverter = SimG4GeantinosFromEdmTool() geantsim = SimG4Alg("SimG4Alg", outputs=[savehcaltool, savetrajectorytool], eventProvider=g4pconverter) ## ouput from Configurables import PodioOutput out = PodioOutput("out", OutputLevel=INFO) out.outputCommands = ["keep *"] out.filename = 'output_hcaldetailedwedge_geantscan.root'
else: field = SimG4ConstantMagneticFieldTool("SimG4ConstantMagneticFieldTool", FieldOn=False) #Setting random seeds for Geant4 simulations #geantservice.g4PreInitCommands += ["/random/setSeeds "+str(x)+" 0"] #where x is the number you want #range cut geantservice.g4PreInitCommands += ["/run/setCut 0.1 mm"] # Geant4 algorithm # Translates EDM to G4Event, passes the event to G4, writes out outputs via tools # and a tool that saves the calorimeter hits from Configurables import SimG4Alg, SimG4SaveCalHits, InspectHitsCollectionsTool savehcaltool = SimG4SaveCalHits("saveHCalHits", readoutNames=["HCalBarrelReadout"]) savehcaltool.positionedCaloHits.Path = "HCalPositionedHits" savehcaltool.caloHits.Path = "HCalHits" # Change INFO to DEBUG for printout of each deposit saveexthcaltool = SimG4SaveCalHits("saveExtHCalHits", readoutNames=["HCalExtBarrelReadout"]) saveexthcaltool.positionedCaloHits.Path = "ExtHCalPositionedHits" saveexthcaltool.caloHits.Path = "ExtHCalHits" # next, create the G4 algorithm, giving the list of names of tools ("XX/YY") from Configurables import SimG4SingleParticleGeneratorTool pgun = SimG4SingleParticleGeneratorTool("SimG4SingleParticleGeneratorTool", saveEdm=True, particleName="e-", energyMin=energy,
# Parses the given xml file geoservice = GeoSvc( "GeoSvc", detectors=[ 'file:Detector/DetFCChhBaseline1/compact/FCChh_DectEmptyMaster.xml', 'file:Detector/DetFCChhECalSimple/compact/FCChh_ECalBarrel_Mockup.xml' ], OutputLevel=DEBUG) from Configurables import SimG4Alg, SimG4SaveCalHits, SimG4PrimariesFromEdmTool ## Geant4 algorithm # Translates EDM to G4Event, passes the event to G4, writes out outputs via tools # first, create a tool that saves the calorimeter hits (of type "ecal") # Name of that tool in GAUDI is "XX/YY" where XX is the tool class name ("SimG4SaveTrackerHits") # and YY is the given name ("saveTrackerHits") saveecaltool = SimG4SaveCalHits("saveECalHits", readoutNames=["BarECal_Readout"]) saveecaltool.DataOutputs.caloClusters.Path = "caloClusters" saveecaltool.DataOutputs.caloHits.Path = "caloHits" # next, create the G4 algorithm, giving the list of names of tools ("XX/YY") particle_converter = SimG4PrimariesFromEdmTool("EdmConverter") particle_converter.DataInputs.genParticles.Path = "allGenParticles" geantsim = SimG4Alg("SimG4Alg", outputs=["SimG4SaveCalHits/saveECalHits"], eventProvider=particle_converter) from Configurables import PodioOutput out = PodioOutput("out", OutputLevel=DEBUG) out.outputCommands = ["keep *"] from Configurables import ApplicationMgr ApplicationMgr(
hepmc_converter.hepmc.Path="hepmc" hepmc_converter.genparticles.Path="allGenParticles" hepmc_converter.genvertices.Path="allGenVertices" from Configurables import GeoSvc geoservice = GeoSvc("GeoSvc") geoservice.detectors = ['file:Test/TestGeometry/data/TestBoxCaloSD_segmentation.xml'] from Configurables import SimG4Svc geantservice = SimG4Svc("SimG4Svc") geantservice.detector='SimG4DD4hepDetector' geantservice.physicslist='SimG4TestPhysicsList' geantservice.actions='SimG4FullSimActions' from Configurables import SimG4SaveCalHits savecaltool = SimG4SaveCalHits("saveECalHits") savecaltool.readoutNames = ["ECalHits"] savecaltool.positionedCaloHits.Path = "positionedCaloHits" savecaltool.caloHits.Path = "caloHits" from Configurables import SimG4Alg geantsim = SimG4Alg("SimG4Alg") geantsim.outputs = [ "SimG4SaveCalHits/saveECalHits", "InspectHitsCollectionsTool", ] from Configurables import TestNeighbours neighbours = TestNeighbours("dbgNeighb") neighbours.readout = 'ECalHits' neighbours.inhits.Path = "caloHits"
# Geant4 algorithm # Translates EDM to G4Event, passes the event to G4, writes out outputs via tools # and a tool that saves the calorimeter hits # Detector readouts # ECAL ecalBarrelReadoutName = "ECalBarrelEta" ecalBarrelReadoutNamePhiEta = "ECalBarrelPhiEta" # HCAL hcalReadoutName = "HCalBarrelReadout" extHcalReadoutName = "HCalExtBarrelReadout" from Configurables import SimG4Alg from Configurables import SimG4SaveCalHits saveECalBarrelTool = SimG4SaveCalHits("saveECalBarrelHits") saveECalBarrelTool.readoutNames = ["ECalBarrelEta"] saveECalBarrelTool.CaloHits.Path = "ECalBarrelPositionedHits" SimG4Alg("SimG4Alg").outputs += [saveECalBarrelTool] from Configurables import SimG4SaveCalHits saveHCalTool = SimG4SaveCalHits("saveHCalBarrelHits") saveHCalTool.readoutNames = ["HCalBarrelReadout"] saveHCalTool.CaloHits.Path = "HCalBarrelPositionedHits" SimG4Alg("SimG4Alg").outputs += [saveHCalTool] # next, create the G4 algorithm, giving the list of names of tools ("XX/YY") from Configurables import SimG4PrimariesFromEdmTool particle_converter = SimG4PrimariesFromEdmTool("EdmConverter") particle_converter.GenParticles.Path = "GenParticles"
## Geant4 service # Configures the Geant simulation: geometry, physics list and user actions geantservice = SimG4Svc("SimG4Svc", detector='SimG4DD4hepDetector', physicslist="SimG4FtfpBert", actions="SimG4FullSimActions") from Configurables import SimG4Alg, SimG4SaveTrackerHits, SimG4SaveCalHits, SimG4PrimariesFromEdmTool ## Geant4 algorithm # Translates EDM to G4Event, passes the event to G4, writes out outputs via tools # first, create a tool that saves the tracker hits # Name of that tool in GAUDI is "XX/YY" where XX is the tool class name ("SimG4SaveTrackerHits") # and YY is the given name ("saveTrackerHits") savetrackertool = SimG4SaveTrackerHits("saveTrackerHits", readoutNames = ["TrackerBarrelReadout", "TrackerEndcapReadout"]) savetrackertool.DataOutputs.positionedTrackHits.Path = "positionedHits" savetrackertool.DataOutputs.trackHits.Path = "hits" # and a tool that saves the calorimeter hits with a name "SimG4SaveCalHits/saveCalHits" savehcaltool = SimG4SaveCalHits("saveCalHits", readoutNames = ["ECalHitsPhiEta","BarHCal_Readout"]) savehcaltool.DataOutputs.positionedCaloHits.Path = "positionedCaloHits" savehcaltool.DataOutputs.caloHits.Path = "caloHits" # next, create the G4 algorithm, giving the list of names of tools ("XX/YY") particle_converter = SimG4PrimariesFromEdmTool("EdmConverter") particle_converter.DataInputs.genParticles.Path = "allGenParticles" geantsim = SimG4Alg("SimG4Alg", outputs = ["SimG4SaveTrackerHits/saveTrackerHits", "SimG4SaveCalHits/saveCalHits"], eventProvider=particle_converter) from Configurables import PodioOutput out = PodioOutput("out", OutputLevel=DEBUG) out.outputCommands = ["keep *"]
ecalFwdReadoutName = "EMFwdPhiEta" # HCAL readouts hcalReadoutName = "HCalBarrelReadout" extHcalReadoutName = "HCalExtBarrelReadout" hcalEndcapReadoutName = "HECPhiEta" hcalFwdReadoutName = "HFwdPhiEta" # layers to be merged in endcaps & forward calo ecalEndcapNumberOfLayersToMerge = [26] * 5 + [27] ecalFwdNumberOfLayersToMerge = [7] * 5 + [8] hcalEndcapNumberOfLayersToMerge = [13] + [14] * 5 hcalFwdNumberOfLayersToMerge = [8] + [9] * 5 identifierName = "layer" volumeName = "layer" from Configurables import SimG4Alg, SimG4SaveCalHits saveecalbarreltool = SimG4SaveCalHits("saveECalBarrelHits", readoutNames=[ecalBarrelReadoutName]) saveecalbarreltool.positionedCaloHits.Path = "ECalBarrelPositionedHits" saveecalbarreltool.caloHits.Path = "ECalBarrelHits" saveecalendcaptool = SimG4SaveCalHits("saveECalEndcapHits", readoutNames=[ecalEndcapReadoutName]) saveecalendcaptool.positionedCaloHits.Path = "ECalEndcapPositionedHits" saveecalendcaptool.caloHits.Path = "ECalEndcapHits" saveecalfwdtool = SimG4SaveCalHits("saveECalFwdHits", readoutNames=[ecalFwdReadoutName]) saveecalfwdtool.positionedCaloHits.Path = "ECalFwdPositionedHits" saveecalfwdtool.caloHits.Path = "ECalFwdHits" savehcaltool = SimG4SaveCalHits("saveHCalHits", readoutNames=[hcalReadoutName]) savehcaltool.positionedCaloHits.Path = "HCalPositionedHits" savehcaltool.caloHits.Path = "HCalHits" saveexthcaltool = SimG4SaveCalHits("saveExtHCalHits", readoutNames=[extHcalReadoutName])
hepmc_dump = HepMCDumper("hepmc") hepmc_dump.hepmc.Path="hepmc" from Configurables import GeoSvc geoservice = GeoSvc("GeoSvc", detectors=['file:compact/Box_dd4hepStopParticleSD.xml'], OutputLevel = DEBUG) from Configurables import SimG4Svc geantservice = SimG4Svc("SimG4Svc", detector='SimG4DD4hepDetector', physicslist="SimG4FtfpBert", actions="SimG4FullSimActions") from Configurables import SimG4Alg, SimG4SaveCalHits, SimG4PrimariesFromEdmTool, InspectHitsCollectionsTool inspecttool = InspectHitsCollectionsTool("inspect", readoutNames=["Hits"], OutputLevel = DEBUG) saveParticletool = SimG4SaveCalHits("saveParticles", readoutNames = ["Hits"]) saveParticletool.positionedCaloHits.Path = "positionedCaloHits" saveParticletool.caloHits.Path = "caloHits" particle_converter = SimG4PrimariesFromEdmTool("EdmConverter") particle_converter.genParticles.Path = "allGenParticles" geantsim = SimG4Alg("SimG4Alg", outputs=["SimG4SaveCalHits/saveParticles", "InspectHitsCollectionsTool/inspect"], eventProvider=particle_converter) from Configurables import FCCDataSvc, PodioOutput podiosvc = FCCDataSvc("EventDataSvc") out = PodioOutput("out", OutputLevel=DEBUG, filename="out_dd4hepStopParticleSD.root") out.outputCommands = ["keep *"]
detectors=[ 'file:Detector/DetFCChhBaseline1/compact/FCChh_DectEmptyMaster.xml', 'file:Detector/DetFCChhCalDiscs/compact/Endcaps_coneCryo.xml' ], OutputLevel=INFO) # Geant4 service # Configures the Geant simulation: geometry, physics list and user actions from Configurables import SimG4Svc geantservice = SimG4Svc("SimG4Svc") # Geant4 algorithm # Translates EDM to G4Event, passes the event to G4, writes out outputs via tools # and a tool that saves the calorimeter hits from Configurables import SimG4Alg, SimG4SaveCalHits savecaltool = SimG4SaveCalHits("saveECalHits", readoutNames=["EMECPhiEta"]) savecaltool.positionedCaloHits.Path = "positionedCaloHits" savecaltool.caloHits.Path = "caloHits" from Configurables import SimG4SingleParticleGeneratorTool pgun = SimG4SingleParticleGeneratorTool("SimG4SingleParticleGeneratorTool", saveEdm=True, particleName="e-", energyMin=50000, energyMax=50000, etaMin=2, etaMax=2) geantsim = SimG4Alg("SimG4Alg", outputs=["SimG4SaveCalHits/saveECalHits"], eventProvider=pgun) from Configurables import CreateVolumeCaloPositions
SimG4Alg("SimG4Alg").outputs += [savetrackertool_ITE] from Configurables import SimG4SaveTrackerHits savetrackertool_OTB = SimG4SaveTrackerHits("saveTrackerHits_OT_Barrel") savetrackertool_OTB.readoutNames = ["OuterTrackerBarrelCollection"] savetrackertool_OTB.SimTrackHits.Path = "hits_OT_barrel" SimG4Alg("SimG4Alg").outputs += [savetrackertool_OTB] from Configurables import SimG4SaveTrackerHits savetrackertool_OTE = SimG4SaveTrackerHits("saveTrackerHits_OT_Endcap") savetrackertool_OTE.readoutNames = ["OuterTrackerEndcapCollection"] savetrackertool_OTE.SimTrackHits.Path = "hits_OT_endcap" SimG4Alg("SimG4Alg").outputs += [savetrackertool_OTE] from Configurables import SimG4SaveTrackerHits savelumicaltool = SimG4SaveCalHits("saveLumicalHits") savelumicaltool.readoutNames = ["LumiCalCollection"] savelumicaltool.CaloHits.Path = "hits_Lumical" SimG4Alg("SimG4Alg").outputs += [savelumicaltool] from Configurables import SimG4SaveCalHits saveEcalBarreltool = SimG4SaveCalHits("saveEcalBarrelHits") saveEcalBarreltool.readoutNames = ["ECalBarrelCollection"] saveEcalBarreltool.CaloHits.Path = "hits_EcalBarrel" SimG4Alg("SimG4Alg").outputs += [saveEcalBarreltool] from Configurables import SimG4SaveCalHits saveEcalEndcaptool = SimG4SaveCalHits("saveEcalEndcapHits") saveEcalEndcaptool.readoutNames = ["ECalEndcapCollection"] saveEcalEndcaptool.CaloHits.Path = "hits_EcalEndcap" SimG4Alg("SimG4Alg").outputs += [saveEcalEndcaptool]
# common HCAL specific information # readout name hcalReadoutName = "BarHCal_Readout" # new readout name newHcalReadoutName = hcalReadoutName + "_phieta" # readout name extHcalReadoutName = "ExtBarHCal_Readout" # new readout name newExtHcalReadoutName = extHcalReadoutName + "_phieta" # Geant4 algorithm # Translates EDM to G4Event, passes the event to G4, writes out outputs via tools # and a tool that saves the calorimeter hits from Configurables import SimG4Alg, SimG4SaveCalHits, InspectHitsCollectionsTool saveecaltool = SimG4SaveCalHits("saveECalBarrelHits", readoutNames=[ecalReadoutName], positionedCaloHits="ECalBarrelPositionedHits", caloHits="ECalBarrelHits") savehcaltool = SimG4SaveCalHits("saveHCalHits", readoutNames=[hcalReadoutName], positionedCaloHits="HCalPositionedHits", caloHits="HCalHits") saveexthcaltool = SimG4SaveCalHits("saveExtHCalHits", readoutNames=[extHcalReadoutName], positionedCaloHits="ExtHCalPositionedHits", caloHits="ExtHCalHits") # next, create the G4 algorithm, giving the list of names of tools ("XX/YY") from Configurables import SimG4SingleParticleGeneratorTool pgun = SimG4SingleParticleGeneratorTool("SimG4SingleParticleGeneratorTool", saveEdm=True, particleName=particleType,
gflash = SimG4GflashHomoCalo("gflash", material="G4_PbWO4") regiontoolcalo = SimG4FastSimCalorimeterRegion("modelCalo", volumeNames=["BarrelECal"], parametrisation=gflash) ## create overlay on top of FTFP_BERT physics list, attaching fast sim/parametrization process physicslisttool = SimG4FastSimPhysicsList("Physics", fullphysics="SimG4FtfpBert") ## attach those tools to the G4 service geantservice = SimG4Svc("SimG4Svc", physicslist=physicslisttool, regions=["SimG4FastSimCalorimeterRegion/modelCalo"]) # Geant4 algorithm # Translates EDM to G4Event, passes the event to G4, writes out outputs via tools from Configurables import SimG4Alg, SimG4SaveCalHits, SimG4PrimariesFromEdmTool savecaltool = SimG4SaveCalHits("saveCalHits", readoutNames=["ECalHits"]) savecaltool.DataOutputs.positionedCaloHits.Path = "positionedCaloHits" savecaltool.DataOutputs.caloHits.Path = "caloHits" # next, create the G4 algorithm, giving the list of names of tools ("XX/YY") particle_converter = SimG4PrimariesFromEdmTool("EdmConverter") particle_converter.DataInputs.genParticles.Path = "allGenParticles" geantsim = SimG4Alg("SimG4Alg", outputs=["SimG4SaveCalHits/saveCalHits"], eventProvider=particle_converter) from Configurables import PodioOutput ## PODIO algorithm out = PodioOutput("out", filename="out_fast_calo_100GeV_fullpi.root") out.outputCommands = ["keep *"] # ApplicationMgr
savetrackertool_ITE = SimG4SaveTrackerHits("saveTrackerHits_IT_Endcap", readoutNames = ["InnerTrackerEndcapCollection"]) savetrackertool_ITE.positionedTrackHits.Path = "positionedHits_IT_endcap" savetrackertool_ITE.trackHits.Path = "hits_IT_endcap" savetrackertool_ITE.digiTrackHits.Path = "digiHits_IT_endcap" savetrackertool_OTB = SimG4SaveTrackerHits("saveTrackerHits_OT_Barrel", readoutNames = ["OuterTrackerBarrelCollection"]) savetrackertool_OTB.positionedTrackHits.Path = "positionedHits_OT_barrel" savetrackertool_OTB.trackHits.Path = "hits_OT_barrel" savetrackertool_OTB.digiTrackHits.Path = "digiHits_OT_barrel" savetrackertool_OTE = SimG4SaveTrackerHits("saveTrackerHits_OT_Endcap", readoutNames = ["OuterTrackerEndcapCollection"]) savetrackertool_OTE.positionedTrackHits.Path = "positionedHits_OT_endcap" savetrackertool_OTE.trackHits.Path = "hits_OT_endcap" savetrackertool_OTE.digiTrackHits.Path = "digiHits_OT_endcap" savelumicaltool = SimG4SaveCalHits("saveLumicalHits", readoutNames = ["LumiCalCollection"]) savelumicaltool.positionedCaloHits.Path = "positionedHits_Lumical" savelumicaltool.caloHits.Path = "hits_Lumical" saveEcalBarreltool = SimG4SaveCalHits("saveEcalBarrelHits", readoutNames = ["ECalBarrelCollection"]) saveEcalBarreltool.positionedCaloHits.Path = "positionedHits_EcalBarrel" saveEcalBarreltool.caloHits.Path = "hits_EcalBarrel" saveEcalEndcaptool = SimG4SaveCalHits("saveEcalEndcapHits", readoutNames = ["ECalEndcapCollection"]) saveEcalEndcaptool.positionedCaloHits.Path = "positionedHits_EcalEndcap" saveEcalEndcaptool.caloHits.Path = "hits_EcalEndcap" saveHcalBarreltool = SimG4SaveCalHits("saveHcalBarrelHits", readoutNames = ["HCalBarrelCollection"]) saveHcalBarreltool.positionedCaloHits.Path = "positionedHits_HcalBarrel" saveHcalBarreltool.caloHits.Path = "hits_HcalBarrel"
IntegratorStepper="ClassicalRK4") else: field = SimG4ConstantMagneticFieldTool("SimG4ConstantMagneticFieldTool", FieldOn=False) #Setting random seeds for Geant4 simulations #geantservice.g4PreInitCommands += ["/random/setSeeds "+str(x)+" 0"] #where x is the number you want #range cut geantservice.g4PreInitCommands += ["/run/setCut 0.1 mm"] # Geant4 algorithm # Translates EDM to G4Event, passes the event to G4, writes out outputs via tools # and a tool that saves the calorimeter hits from Configurables import SimG4Alg, SimG4SaveCalHits, InspectHitsCollectionsTool savehcaltool = SimG4SaveCalHits("saveHCalHits", readoutNames=["BarHCal_Readout"]) savehcaltool.positionedCaloHits.Path = "HCalPositionedHits" savehcaltool.caloHits.Path = "HCalHits" # Change INFO to DEBUG for printout of each deposit # next, create the G4 algorithm, giving the list of names of tools ("XX/YY") from Configurables import SimG4SingleParticleGeneratorTool pgun = SimG4SingleParticleGeneratorTool("SimG4SingleParticleGeneratorTool", saveEdm=True, particleName="e-", energyMin=energy, energyMax=energy, etaMin=-0.36, etaMax=0.36, OutputLevel=DEBUG)
os.path.join(path_to_detectors, 'Detector/DetFCChhBaseline1/compact/FCChh_DectMaster.xml'), ] geoservice.OutputLevel = INFO ApplicationMgr().ExtSvc += [geoservice] # Set up SaveTools that write from Configurables import SimG4SaveTrackerHits savetrackertool = SimG4SaveTrackerHits("saveTrackerHits") savetrackertool.readoutNames = ["TrackerBarrelReadout", "TrackerEndcapReadout"] from Configurables import SimG4Alg SimG4Alg("SimG4Alg").outputs += [savetrackertool] from Configurables import SimG4SaveCalHits saveecaltool = SimG4SaveCalHits("saveECalBarrelHits") saveecaltool.readoutNames = ["ECalBarrelEta"] saveecaltool.CaloHits.Path = "ECalBarrelHits" SimG4Alg("SimG4Alg").outputs += [saveecaltool] from Configurables import SimG4SaveCalHits saveendcaptool = SimG4SaveCalHits("saveECalEndcapHits") saveendcaptool.readoutNames = ["EMECPhiEta"] saveendcaptool.CaloHits.Path = "ECalEndcapHits" SimG4Alg("SimG4Alg").outputs += [saveendcaptool] from Configurables import SimG4SaveCalHits savefwdtool = SimG4SaveCalHits("saveECalFwdHits") savefwdtool.readoutNames = ["EMFwdPhiEta"] savefwdtool.CaloHits.Path = "ECalFwdHits" SimG4Alg("SimG4Alg").outputs += [savefwdtool]