# 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" from Configurables import SimG4Alg geantsim = SimG4Alg("SimG4Alg")
#geantservice.g4PostInitCommands += ["/tracking/verbose 1"] # Geant4 algorithm # Translates EDM to G4Event, passes the event to G4, writes out outputs via tools from Configurables import SimG4Alg, SimG4SaveTrackerHits # 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" # next, create the G4 algorithm, giving the list of names of tools ("XX/YY") pgun = SimG4SingleParticleGeneratorTool("GeantinoGun", etaMin=-5, etaMax=5, particleName="geantino") geantsim = SimG4Alg("SimG4Alg", outputs= ["SimG4SaveTrackerHits/saveTrackerHits" ], eventProvider=pgun) # PODIO algorithm from Configurables import PodioOutput out = PodioOutput("out", OutputLevel=DEBUG) out.outputCommands = ["keep *"] # ApplicationMgr from Configurables import ApplicationMgr ApplicationMgr( TopAlg = [geantsim, out], EvtSel = 'NONE', EvtMax = 10000, # order is important, as GeoSvc is needed by SimG4Svc ExtSvc = [podioevent, geoservice, geantservice],
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" resegment.outhits.Path = "newCaloHits" from Configurables import FCCDataSvc, PodioOutput
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", outputs=[ "SimG4SaveCalHits/saveECalBarrelHits", "SimG4SaveCalHits/saveECalEndcapHits" ], eventProvider=pgun) #Configure tools for calo reconstruction from Configurables import CalibrateInLayersTool calibcellsBarrel = CalibrateInLayersTool( "CalibrateBarrel", # sampling fraction obtained using SamplingFractionInLayers from DetStudies package samplingFraction=[0.12125] + [0.14283] + [0.16354] + [0.17662] + [0.18867] + [0.19890] + [0.20637] + [0.20802], readoutName="ECalBarrelEta", layerFieldName="layer") calibcellsEndcap = CalibrateInLayersTool( "CalibrateEndcap", # sampling fraction obtained using SamplingFractionInLayers from DetStudies package
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", ], eventProvider=particle_converter, OutputLevel=INFO) ############## Digitization (Merging hits into cells, EM scale calibration) # EM scale calibration (sampling fraction) from Configurables import CalibrateInLayersTool calibEcalBarrel = CalibrateInLayersTool("CalibrateECalBarrel", # sampling fraction obtained using SamplingFractionInLayers from DetStudies package samplingFraction = [0.24833] * 1 + [0.09482] * 1 + [0.12242] * 1 + [0.14182] * 1 + [0.15667] * 1 + [0.16923] * 1 + [0.17980] * 1 + [0.20085] * 1, readoutName = ecalBarrelReadoutName, layerFieldName = "layer") from Configurables import CalibrateCaloHitsTool calibHcells = CalibrateCaloHitsTool("CalibrateHCal", invSamplingFraction="41.66")
from Configurables import SimG4Svc geantservice = SimG4Svc("SimG4Svc", detector='SimG4DD4hepDetector', physicslist="SimG4FtfpBert", actions="SimG4FullSimActions") from Configurables import SimG4Alg, SimG4SaveCalHits, SimG4PrimariesFromEdmTool savehcaltool = SimG4SaveCalHits("saveECalHits", readoutNames=["ECalHits"]) savehcaltool.DataOutputs.caloClusters.Path = "caloClusters" savehcaltool.DataOutputs.caloHits.Path = "caloHits" particle_converter = SimG4PrimariesFromEdmTool("EdmConverter") particle_converter.DataInputs.genParticles.Path = "allGenParticles" geantsim = SimG4Alg( "SimG4Alg", outputs=["SimG4SaveCalHits/saveECalHits", "InspectHitsCollectionsTool"], eventProvider=particle_converter) from Configurables import FCCDataSvc, PodioOutput podiosvc = FCCDataSvc("EventDataSvc") out = PodioOutput("out", OutputLevel=DEBUG, filename="out_dd4hepCaloSD_2cm.root") out.outputCommands = ["keep *"] # ApplicationMgr from Configurables import ApplicationMgr ApplicationMgr( TopAlg=[gen, hepmc_converter, hepmc_dump, geantsim, out], EvtSel='NONE', EvtMax=1,
maxStep=1 * mm) # create overlay on top of FTFP_BERT physics list, attaching fast sim/parametrization process physicslisttool = SimG4UserLimitPhysicsList("Physics", fullphysics="SimG4FtfpBert") # attach those tools to the G4 service geantservice = SimG4Svc("SimG4Svc", physicslist=physicslisttool, regions=[regiontool]) # Geant4 algorithm # Translates EDM to G4Event, passes the event to G4, writes out outputs via tools from Configurables import SimG4Alg, SimG4PrimariesFromEdmTool # 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", eventProvider=particle_converter) # PODIO algorithm from Configurables import PodioOutput out = PodioOutput("out", filename="out_geant_userLimits.root") out.outputCommands = ["keep *"] out.OutputLevel = DEBUG # ApplicationMgr from Configurables import ApplicationMgr ApplicationMgr( TopAlg=[gen, hepmc_converter, geantsim, out], EvtSel='NONE', EvtMax=10, # order is important, as GeoSvc is needed by SimG4Svc ExtSvc=[podioevent, geoservice, geantservice],
regions=["SimG4FastSimOpFiberRegion/fastfiber"], actions=actionTool) from Configurables import SimG4Alg, SimG4PrimariesFromEdmTool # next, create the G4 algorithm, giving the list of names of tools ("XX/YY") edmConverter = SimG4PrimariesFromEdmTool("EdmConverter") from Configurables import SimG4SaveDRcaloHits, SimG4SaveDRcaloMCTruth saveDRcaloTool = SimG4SaveDRcaloHits("saveDRcaloTool", readoutNames=["DRcaloSiPMreadout"]) saveMCTruthTool = SimG4SaveDRcaloMCTruth( "saveMCTruthTool") # need SimG4DRcaloActions geantsim = SimG4Alg("SimG4Alg", outputs=[ "SimG4SaveDRcaloHits/saveDRcaloTool", "SimG4SaveDRcaloMCTruth/saveMCTruthTool" ], eventProvider=edmConverter) from Configurables import PodioOutput podiooutput = PodioOutput("PodioOutput", filename="sim.root") podiooutput.outputCommands = ["keep *"] from Configurables import RndmGenSvc, HepRndm__Engine_CLHEP__RanluxEngine_ rndmEngine = HepRndm__Engine_CLHEP__RanluxEngine_( "RndmGenSvc.Engine", SetSingleton=True, UseTable=True, Column=0, # 0 or 1 Row=123 # 0 to 214 )
# 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" savetrackertool = SimG4SaveTrackerHits( "saveTrackerHits", readoutNames=["TrackerBarrelReadout", "TrackerEndcapReadout"]) savetrackertool.positionedTrackHits.Path = "SimTrackerPositionedHits" savetrackertool.trackHits.Path = "hits" # next, create the G4 algorithm, giving the list of names of tools ("XX/YY") g4pconverter = SimG4GeantinosFromEdmTool() geantsim = SimG4Alg("SimG4Alg", outputs=[ "SimG4SaveTrackerHits/saveTrackerHits", "SimG4SaveTrajectory/saveTrajectory" ], eventProvider=g4pconverter) ## ouput from Configurables import PodioOutput out = PodioOutput("out", OutputLevel=INFO) out.outputCommands = ["keep *"] out.filename = 'output_trkExtrapolationTest.root' from Configurables import ApplicationMgr ApplicationMgr( TopAlg=[gen, hepmc_converter, extrapolationTest, geantsim, out], EvtSel='NONE', EvtMax=1000, # order is important, as GeoSvc is needed by SimG4Svc
# 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=["HCalBarrelReadout"]) 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_hcal_geantscan.root' from Configurables import ChronoAuditor chronoauditor = ChronoAuditor() from Configurables import MemStatAuditor memauditor = MemStatAuditor() from Configurables import MemoryAuditor
# Translates EDM to G4Event, passes the event to G4, writes out outputs via tools from Configurables import SimG4Alg, SimG4SaveSmearedParticles, SimG4SaveCalHits, SimG4PrimariesFromEdmTool # first, create a tool that saves the smeared particles # Name of that tool in GAUDI is "XX/YY" where XX is the tool class name ("SimG4SaveSmearedParticles") # and YY is the given name ("saveSmearedParticles") saveparticlestool = SimG4SaveSmearedParticles("saveSmearedParticles") saveparticlestool.particles.Path = "smearedParticles" saveparticlestool.particlesMCparticles.Path = "particleMCparticleAssociation" savecaltool = SimG4SaveCalHits("saveCalHits", readoutNames = ["ECalHitsPhiEta"]) savecaltool.positionedCaloHits.Path = "positionedCaloHits" savecaltool.caloHits.Path = "caloHits" # 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", outputs = [saveparticlestool, savecaltool], eventProvider=particle_converter) from Configurables import SimG4FastSimHistograms hist = SimG4FastSimHistograms("fastHist") hist.particlesMCparticles.Path = "particleMCparticleAssociation" THistSvc().Output = ["rec DATAFILE='out_geant_fastsim_histFormula.root' TYP='ROOT' OPT='RECREATE'"] THistSvc().PrintAll=True THistSvc().AutoSave=True THistSvc().AutoFlush=True THistSvc().OutputLevel=INFO from Configurables import PodioOutput ## PODIO algorithm out = PodioOutput("out", filename = "out_geant_fastsim.root") out.outputCommands = ["keep *"]
from Configurables import GeoSvc ## parse the given xml file path_to_detectors = os.environ.get("FCCDETECTORS", "") geoservice = GeoSvc("GeoSvc") geoservice.detectors = [ os.path.join(path_to_detectors, 'Detector/DetFCCeeIDEA/compact/FCCee_DectMaster.xml'), ] ApplicationMgr().ExtSvc += [geoservice] from Configurables import SimG4Alg from Configurables import SimG4SaveTrackerHits savetrackertool = SimG4SaveTrackerHits("saveTrackerHits_Barrel") savetrackertool.readoutNames = ["VertexBarrelCollection"] savetrackertool.SimTrackHits.Path = "TrackerHits_barrel" SimG4Alg("SimG4Alg").outputs += [savetrackertool] from Configurables import SimG4SaveTrackerHits savetrackertool_endcap = SimG4SaveTrackerHits("saveTrackerHits_Endcap") savetrackertool_endcap.readoutNames = ["VertexEndcapCollection"] savetrackertool_endcap.SimTrackHits.Path = "positionedHits_endcap" SimG4Alg("SimG4Alg").outputs += [savetrackertool_endcap] from Configurables import SimG4SaveTrackerHits savetrackertool_DCH = SimG4SaveTrackerHits("saveTrackerHits_DCH") savetrackertool_DCH.readoutNames = ["DriftChamberCollection"] savetrackertool_DCH.SimTrackHits.Path = "positionedHits_DCH" SimG4Alg("SimG4Alg").outputs += [savetrackertool_DCH] from Configurables import SimG4ConstantMagneticFieldTool field = SimG4ConstantMagneticFieldTool()
"saveTrackerHits_Endcap", readoutNames=["VertexEndcapCollection"]) savetrackertool_endcap.positionedTrackHits.Path = "positionedHits_endcap" savetrackertool_endcap.trackHits.Path = "hits_endcap" savetrackertool_endcap.digiTrackHits.Path = "digiHits_endcap" savetrackertool_DCH = SimG4SaveTrackerHits( "saveTrackerHits_DCH", readoutNames=["DriftChamberCollection"]) savetrackertool_DCH.positionedTrackHits.Path = "positionedHits_DCH" savetrackertool_DCH.trackHits.Path = "hits_DCH" savetrackertool_DCH.digiTrackHits.Path = "digiHits_DCH" geantsim = SimG4Alg("SimG4Alg", outputs=[ "SimG4SaveTrajectory/saveTrajectory", "SimG4SaveParticleHistory/saveHistory", "SimG4SaveTrackerHits/saveTrackerHits_Barrel", "SimG4SaveTrackerHits/saveTrackerHits_Endcap", "SimG4SaveTrackerHits/saveTrackerHits_DCH" ], eventProvider=particle_converter) from Configurables import MergeHits mergehits_barrel = MergeHits("MergeHitsBarrel", OutputLevel=INFO) mergehits_barrel.positionedHits.Path = "positionedHits_barrel" mergehits_barrel.trackHits.Path = "trackHits_barrel" mergehits_barrel.mergedHits.Path = "merged_barrel" mergehits_endcap = MergeHits("MergeHitsEndcap", OutputLevel=INFO) mergehits_endcap.positionedHits.Path = "positionedHits_endcap"
# and YY is the given name ("saveTrackerHits") savetrackertool = SimG4SaveTrackerHits( "saveTrackerHits", readoutNames=["TrackerBarrelReadout", "TrackerEndcapReadout"]) savetrackertool.positionedTrackHits.Path = "positionedHits" savetrackertool.trackHits.Path = "hits" savehisttool = SimG4SaveParticleHistory("saveHistory") savehisttool.mcParticles.Path = "simParticles" savehisttool.genVertices.Path = "simVertices" # 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", outputs=[ "SimG4SaveTrackerHits/saveTrackerHits", "SimG4SaveParticleHistory/saveHistory", ], eventProvider=particle_converter) # PODIO algorithm from Configurables import PodioOutput out = PodioOutput("out", OutputLevel=DEBUG) out.outputCommands = ["keep *"] out.filename = "tracker_with_field.root" # ApplicationMgr from Configurables import ApplicationMgr ApplicationMgr( TopAlg=[gen, hepmc_converter, geantsim, out], EvtSel='NONE', EvtMax=2,
# 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.01, etaMax=0.01, OutputLevel=DEBUG) geantsim = SimG4Alg("SimG4Alg", outputs=[ "SimG4SaveCalHits/saveHCalHits", "InspectHitsCollectionsTool/inspect" ], eventProvider=pgun, OutputLevel=DEBUG) # PODIO algorithm from Configurables import PodioOutput out = PodioOutput("out", OutputLevel=DEBUG) out.outputCommands = ["keep *"] out.filename = "output_hcalSim_e50GeV_eta0_10events.root" #CPU information from Configurables import AuditorSvc, ChronoAuditor chra = ChronoAuditor()
from Configurables import SimG4Alg, SimG4SaveTrackerHits, SimG4PrimariesFromEdmTool, InspectHitsCollectionsTool inspecttool = InspectHitsCollectionsTool("inspect", readoutNames=["TrackerSiliconHits"], OutputLevel=DEBUG) savetrackertool = SimG4SaveTrackerHits("SimG4SaveTrackerHits", readoutNames=["TrackerSiliconHits"]) savetrackertool.DataOutputs.trackClusters.Path = "clusters" savetrackertool.DataOutputs.trackHits.Path = "hits" savetrackertool.DataOutputs.trackHitsClusters.Path = "hitClusterAssociation" particle_converter = SimG4PrimariesFromEdmTool("EdmConverter") particle_converter.DataInputs.genParticles.Path = "allGenParticles" geantsim = SimG4Alg("SimG4Alg", outputs=[ "SimG4SaveTrackerHits/SimG4SaveTrackerHits", "InspectHitsCollectionsTool/inspect" ], eventProvider=particle_converter) from Configurables import FCCDataSvc, PodioOutput podiosvc = FCCDataSvc("EventDataSvc") out = PodioOutput("out", OutputLevel=DEBUG, filename="out_simpleTrackerSD_2cm.root") out.outputCommands = ["keep *"] # ApplicationMgr from Configurables import ApplicationMgr ApplicationMgr( TopAlg=[gen, hepmc_converter, hepmc_dump, geantsim, out], EvtSel='NONE',
geantservice = SimG4Svc("SimG4Svc", detector='SimG4DD4hepDetector', physicslist="SimG4FtfpBert", actions="SimG4FullSimActions") # Geant4 algorithm # Translates EDM to G4Event, passes the event to G4, writes out outputs via tools from Configurables import SimG4Alg, SimG4SaveTrackerHits, SimG4PrimariesFromEdmTool # 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" # 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", outputs = [savetrackertool], eventProvider=particle_converter) # PODIO algorithm from Configurables import PodioOutput out = PodioOutput() out.outputCommands = ["keep *"] out.filename = "out_geant_fullsim.root" # ApplicationMgr from Configurables import ApplicationMgr ApplicationMgr( TopAlg = [gen, hepmc_converter, geantsim, out], EvtSel = 'NONE', EvtMax = 1, # order is important, as GeoSvc is needed by SimG4Svc ExtSvc = [podioevent, geoservice, geantservice],
from Configurables import SimG4SingleParticleGeneratorTool pgun = SimG4SingleParticleGeneratorTool("SimG4SingleParticleGeneratorTool", saveEdm=True, particleName=particleType, energyMin=energy, energyMax=energy, etaMin=-5.0, etaMax=5.0, OutputLevel=DEBUG) geantsim = SimG4Alg("SimG4Alg", outputs=[ "SimG4SaveCalHits/saveECalBarrelHits", "SimG4SaveCalHits/saveECalEndcapHits", "SimG4SaveCalHits/saveECalFwdHits", "SimG4SaveCalHits/saveHCalHits", "SimG4SaveCalHits/saveExtHCalHits", "SimG4SaveCalHits/saveHCalEndcapHits", "SimG4SaveCalHits/saveHCalFwdHits" ], eventProvider=pgun, OutputLevel=INFO) #Configure tools for calo reconstruction # EM scale calibration from Configurables import CalibrateCaloHitsTool calibHcells = CalibrateCaloHitsTool("CalibrateHCal", invSamplingFraction="41.66") from Configurables import CalibrateInLayersTool calibEcalBarrel = CalibrateInLayersTool( "CalibrateECalBarrel",
geantservice = SimG4Svc("SimG4Svc", detector='SimG4DD4hepDetector', physicslist=physicslisttool, actions=actionstool) # Geant4 algorithm # Translates EDM to G4Event, passes the event to G4, writes out outputs via tools from Configurables import SimG4Alg, SimG4SaveSmearedParticles, SimG4PrimariesFromEdmTool # first, create a tool that saves the smeared particles # Name of that tool in GAUDI is "XX/YY" where XX is the tool class name ("SimG4SaveSmearedParticles") # and YY is the given name ("saveSmearedParticles") saveparticlestool = SimG4SaveSmearedParticles("saveSmearedParticles") saveparticlestool.DataOutputs.particles.Path = "smearedParticles" saveparticlestool.DataOutputs.particlesMCparticles.Path = "particleMCparticleAssociation" # 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 = ["SimG4SaveSmearedParticles/saveSmearedParticles"], eventProvider=particle_converter) from Configurables import SimG4FastSimHistograms hist = SimG4FastSimHistograms("fastHist") hist.DataInputs.particles.Path = "smearedParticles" hist.DataInputs.particlesMCparticles.Path = "particleMCparticleAssociation" THistSvc().Output = ["rec DATAFILE='histTklayout.root' TYP='ROOT' OPT='RECREATE'"] THistSvc().PrintAll=True THistSvc().AutoSave=True THistSvc().AutoFlush=True THistSvc().OutputLevel=VERBOSE # PODIO algorithm from Configurables import PodioOutput
# 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", outputs= [ #"SimG4SaveTrajectory/saveTrajectory", #"SimG4SaveParticleHistory/saveHistory", "SimG4SaveTrackerHits/saveTrackerHits_Barrel", "SimG4SaveTrackerHits/saveTrackerHits_Endcap", #, SimG4SaveTrackerHits/saveTrackerHits_DCH" "SimG4SaveTrackerHits/saveTrackerHits_IT_Barrel", "SimG4SaveTrackerHits/saveTrackerHits_IT_Endcap", "SimG4SaveTrackerHits/saveTrackerHits_OT_Barrel", "SimG4SaveTrackerHits/saveTrackerHits_OT_Endcap", "SimG4SaveCalHits/saveLumicalHits", "SimG4SaveCalHits/saveEcalBarrelHits", "SimG4SaveCalHits/saveEcalEndcapHits", "SimG4SaveCalHits/saveHcalBarrelHits", "SimG4SaveCalHits/saveHcalEndcapHits" ], eventProvider=particle_converter) # PODIO algorithm from Configurables import PodioOutput out = PodioOutput("out", filename=outfilename, OutputLevel=DEBUG)
"TrackerBarrelReadout", "TrackerEndcapReadout", ] savetrackertool.positionedTrackHits.Path = "TrackerHitsPosition" savetrackertool.trackHits.Path = "TrackerHits" savetrackertool.digiTrackHits.Path = "TrackerHitsDigiPostPoint" geant_output_tool_list += [savetrackertool] from Configurables import SimG4FullSimActions actions = SimG4FullSimActions() actions.enableHistory = True # set up output tools for included detectors # the algorithm itself is configured in the sim file from Configurables import SimG4Alg geantsim = SimG4Alg("SimG4Alg") geantsim.outputs += geant_output_tool_list from Configurables import SimG4ConstantMagneticFieldTool field = SimG4ConstantMagneticFieldTool("bField") field.FieldOn = True field.FieldZMax = 20 * units.m field.IntegratorStepper = "ClassicalRK4" from Configurables import SimG4DD4hepDetector geant_detector_tool = SimG4DD4hepDetector("SimG4DD4hepDetector") from Configurables import SimG4FtfpBert geant_physics_list = SimG4FtfpBert("PhysicsList") from Configurables import SimG4Svc
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) out.outputCommands = ["keep *"] out.filename = "positions_ecalInclinedSim.root" #CPU information from Configurables import AuditorSvc, ChronoAuditor
from Configurables import GeoSvc ## parse the given xml file path_to_detectors = os.environ.get("FCCDETECTORS", "") geoservice = GeoSvc("GeoSvc") geoservice.detectors = [ os.path.join(path_to_detectors, 'Detector/DetFCCeeCLD/compact/FCCee_o2_v02/FCCee_o2_v02.xml'), ] from Configurables import SimG4Alg from Configurables import SimG4SaveCalHits from Configurables import SimG4SaveTrackerHits savetrackertool = SimG4SaveTrackerHits("saveTrackerHits_Barrel") savetrackertool.readoutNames = ["VertexBarrelCollection"] savetrackertool.SimTrackHits.Path = "hits_VXD_barrel" SimG4Alg("SimG4Alg").outputs += [savetrackertool] from Configurables import SimG4SaveTrackerHits savetrackertool_endcap = SimG4SaveTrackerHits("saveTrackerHits_Endcap") savetrackertool_endcap.readoutNames = ["VertexEndcapCollection"] savetrackertool_endcap.SimTrackHits.Path = "hits_VXD_endcap" SimG4Alg("SimG4Alg").outputs += [savetrackertool_endcap] from Configurables import SimG4SaveTrackerHits savetrackertool_ITB = SimG4SaveTrackerHits("saveTrackerHits_IT_Barrel") savetrackertool_ITB.readoutNames = ["InnerTrackerBarrelCollection"] savetrackertool_ITB.SimTrackHits.Path = "hits_IT_barrel" SimG4Alg("SimG4Alg").outputs += [savetrackertool_ITB] from Configurables import SimG4SaveTrackerHits savetrackertool_ITE = SimG4SaveTrackerHits("saveTrackerHits_IT_Endcap")
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", outputs = ["SimG4SaveTrackerHits/saveTrackerHits", "SimG4SaveCalHits/saveECalBarrelHits", "SimG4SaveCalHits/saveECalEndcapHits", "SimG4SaveCalHits/saveECalFwdHits", "SimG4SaveCalHits/saveHCalHits"], eventProvider=particle_converter) from Configurables import PodioOutput out = PodioOutput("out", OutputLevel=DEBUG) out.outputCommands = ["keep *"] out.filename = "output_geant_pgun_fullsim.root" from Configurables import ApplicationMgr ApplicationMgr( TopAlg=[gen, hepmc_converter, geantsim, out], EvtSel='NONE', EvtMax=1, ## order is important, as GeoSvc is needed by SimG4Svc ExtSvc=[podioevent, geoservice, geantservice, ppservice], OutputLevel=DEBUG
## 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 from Configurables import ApplicationMgr ApplicationMgr( TopAlg=[ # gen reader, hepmc_converter, geantsim, out ], EvtSel='NONE', EvtMax=1,
"GeoSvc", detectors=['file:Test/TestGeometry/data/TestBoxCaloSD_volumes.xml']) from Configurables import SimG4Svc geantservice = SimG4Svc("SimG4Svc", detector='SimG4DD4hepDetector', physicslist='SimG4TestPhysicsList', actions='SimG4FullSimActions') from Configurables import SimG4Alg, SimG4SaveCalHits savecaltool = SimG4SaveCalHits("saveECalHits", readoutNames=["ECalHits"]) savecaltool.positionedCaloHits.Path = "positionedCaloHits" savecaltool.caloHits.Path = "caloHits" geantsim = SimG4Alg("SimG4Alg", outputs=["SimG4SaveCalHits/saveECalHits"]) from Configurables import FCCDataSvc, PodioOutput podiosvc = FCCDataSvc("EventDataSvc") out = PodioOutput("out", filename="testCellId_dd4hep_volumes.root") out.outputCommands = ["keep *"] # ApplicationMgr from Configurables import ApplicationMgr ApplicationMgr( TopAlg=[reader, hepmc_converter, hepmc_dump, geantsim, out], EvtSel='NONE', EvtMax=100, # order is important, as GeoSvc is needed by SimG4Svc
detector='SimG4DD4hepDetector', physicslist="SimG4FtfpBert", actions="SimG4FullSimActions", ) from Configurables import SimG4Alg, SimG4SaveTrackerHits, SimG4PrimariesFromEdmTool savetrackertool = SimG4SaveTrackerHits( "SimG4SaveTrackerHits", readoutNames=["TrackerBarrelReadout", "TrackerEndcapReadout"]) savetrackertool.DataOutputs.positionedTrackHits.Path = "positionedHits" savetrackertool.DataOutputs.trackHits.Path = "hits" particle_converter = SimG4PrimariesFromEdmTool("EdmConverter") particle_converter.DataInputs.genParticles.Path = "allGenParticles" geantsim = SimG4Alg("SimG4Alg", outputs=["SimG4SaveTrackerHits/SimG4SaveTrackerHits"], eventProvider=particle_converter) from Configurables import PodioOutput out = PodioOutput("out", filename="out_full_moreEvents.root", OutputLevel=DEBUG) out.outputCommands = ["keep *"] ApplicationMgr( TopAlg=[reader, hepmc_converter, geantsim, out], EvtSel='NONE', EvtMax=10, ## order! geo needed by geant ExtSvc=[podioevent, geoservice, geantservice], OutputLevel=DEBUG)
savehisttool = SimG4SaveParticleHistory("saveHistory") savehisttool.mcParticles.Path = "SimParticles" savehisttool.genVertices.Path = "SimVertices" savetrackertool = SimG4SaveTrackerHits( "saveTrackerHits", readoutNames=["TrackerBarrelReadout", "TrackerEndcapReadout"]) savetrackertool.positionedTrackHits.Path = "TrackerPositionedHits" savetrackertool.trackHits.Path = "TrackerHits" savetrackertool.digiTrackHits.Path = "TrackerDigiPostPoint" outputHitsTools = [] outputHitsTools += ["SimG4SaveTrackerHits/saveTrackerHits"] outputHitsTools += ["SimG4SaveParticleHistory/saveHistory"] geantsim = SimG4Alg("SimG4Alg", outputs=outputHitsTools) from Configurables import GaussSmearVertex, ConstPtParticleGun, GenAlg smeartool = GaussSmearVertex("GaussSmearVertex") if simargs.useVertexSmearTool: smeartool.xVertexSigma = 0.5 * units.mm smeartool.yVertexSigma = 0.5 * units.mm smeartool.zVertexSigma = 40 * units.mm smeartool.tVertexSigma = 180 * units.picosecond if simargs.singlePart: pgun_tool = ConstPtParticleGun(PdgCodes=[pdg], PhiMin=phiMin, PhiMax=phiMax, EtaMin=etaMin, EtaMax=etaMax,
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) geantsim = SimG4Alg("SimG4Alg", outputs=["SimG4SaveCalHits/saveHCalHits"], eventProvider=pgun, OutputLevel=DEBUG) # PODIO algorithm from Configurables import PodioOutput out = PodioOutput("out", OutputLevel=DEBUG) out.outputCommands = ["keep *"] out.filename = "output_hcalSim_e" + str(int( energy / 1000)) + "GeV_eta036_1events.root" #CPU information from Configurables import AuditorSvc, ChronoAuditor chra = ChronoAuditor() audsvc = AuditorSvc() audsvc.Auditors = [chra] geantsim.AuditExecute = True
import os from Gaudi.Configuration import * from Gaudi import Configurables # DD4hep geometry service from Configurables import GeoSvc ## parse the given xml file path_to_detectors = os.environ.get("FCCDETECTORS", "") geoservice = GeoSvc("GeoSvc") detectors = [ 'Detector/DetFCChhBaseline1/compact/FCChh_DectEmptyMaster.xml', 'Detector/DetFCChhTrackerTkLayout/compact/Tracker.xml', ] geoservice.detectors = [os.path.join(path_to_detectors, d) for d in detectors] geoservice.OutputLevel = INFO ApplicationMgr().ExtSvc += [geoservice] from Configurables import SimG4SaveTrackerHits savetrackertool = SimG4SaveTrackerHits("saveTrackerHits") savetrackertool.readoutNames = ["TrackerBarrelReadout", "TrackerEndcapReadout"] from Configurables import SimG4Alg SimG4Alg("SimG4Alg").outputs += [savetrackertool]