# 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],
Exemple #3
0
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
Exemple #4
0
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")
Exemple #6
0
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,
Exemple #7
0
                                  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],
Exemple #8
0
                        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
)
Exemple #9
0
# 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
Exemple #10
0
# 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
Exemple #11
0
# 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"
Exemple #14
0
# 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,
Exemple #15
0
# 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()
Exemple #16
0
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',
Exemple #17
0
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",
Exemple #19
0
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
Exemple #20
0


# 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)
Exemple #21
0
    "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")
Exemple #24
0
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
Exemple #25
0
## 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,
Exemple #26
0
    "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,
Exemple #29
0
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]