From 1c2b9c0de6ce33f363c6e8ccabb68dd5e412d386 Mon Sep 17 00:00:00 2001 From: Massimo Casarsa Date: Fri, 17 Dec 2021 13:46:54 +0100 Subject: [PATCH] Electron gun sample --- evtgen/013-electrongun/README.md | 5 + evtgen/013-electrongun/gen_electron_gun.py | 140 ++ reconstruction/013-electrongun/README.md | 1 + .../013-electrongun/ntuplizer_all.xml | 199 ++ .../013-electrongun/reco_steer_all.xml | 1629 +++++++++++++++++ simulation/013-electrongun/README.md | 4 + simulation/013-electrongun/sim_steer.py | 244 +++ 7 files changed, 2222 insertions(+) create mode 100644 evtgen/013-electrongun/README.md create mode 100644 evtgen/013-electrongun/gen_electron_gun.py create mode 100644 reconstruction/013-electrongun/README.md create mode 100644 reconstruction/013-electrongun/ntuplizer_all.xml create mode 100644 reconstruction/013-electrongun/reco_steer_all.xml create mode 100644 simulation/013-electrongun/README.md create mode 100644 simulation/013-electrongun/sim_steer.py diff --git a/evtgen/013-electrongun/README.md b/evtgen/013-electrongun/README.md new file mode 100644 index 0000000..dcdd2eb --- /dev/null +++ b/evtgen/013-electrongun/README.md @@ -0,0 +1,5 @@ +Electron gun: + +- pT: uniform between 1-1500 GeV; +- theta: uniform between 10-170 deg; +- phi: uniform between 0-360 deg. diff --git a/evtgen/013-electrongun/gen_electron_gun.py b/evtgen/013-electrongun/gen_electron_gun.py new file mode 100644 index 0000000..2a2db57 --- /dev/null +++ b/evtgen/013-electrongun/gen_electron_gun.py @@ -0,0 +1,140 @@ +##################################### +# +# simple script to create lcio files with single particle +# events - modify as needed +# @author F.Gaede, DESY +# @date 1/07/2014 +# +# initialize environment: +# export PYTHONPATH=${LCIO}/src/python:${ROOTSYS}/lib +# +##################################### +import math +import random +from array import array + +# --- LCIO dependencies --- +from pyLCIO import UTIL, EVENT, IMPL, IO, IOIMPL + +#---- number of events ---------------------- +nevt = 100000 + +outfile = "electronGun_gen.slcio" + +#-------------------------------------------- + + +wrt = IOIMPL.LCFactory.getInstance().createLCWriter( ) + +wrt.open( outfile , EVENT.LCIO.WRITE_NEW ) + +random.seed() + + +#========== particle properties =================== + +# particles per event +npart = 1 + +pdg = 11 + +mass = 0.00051099895 +charge = -1. + +decayLen = 1.e32 + +genstat = 1 + +pt_min = 1. +pt_max = 1500. + +theta_min = 10./180.*math.pi +theta_max = 170./180.*math.pi + + +#================================================= + + +for j in range( 0, nevt ): + + col = IMPL.LCCollectionVec( EVENT.LCIO.MCPARTICLE ) + evt = IMPL.LCEventImpl() + + evt.setEventNumber( j ) + + evt.addCollection( col , "MCParticle" ) + + print (j, "-----------------------------") + + for ipart in range( 0, npart ): + + pt = random.uniform(pt_min, pt_max) + theta = random.uniform(theta_min, theta_max) + phi = random.random() * math.pi * 2. + + p = pt/math.sin( theta ) + energy = math.sqrt( mass*mass + p * p ) + + px = pt * math.cos( phi ) + py = pt * math.sin( phi ) + pz = p * math.cos( theta ) + + momentum = array('f',[ px, py, pz ] ) + + + # --- endpoint + + epx = decayLen * math.cos( phi ) * math.sin( theta ) + epy = decayLen * math.sin( phi ) * math.sin( theta ) + epz = decayLen * math.cos( theta ) + + endpoint = array('d',[ epx, epy, epz ] ) + + + # --- production vertex + + vpx = 0. + vpy = 0. + vpz = 0. + + vertex = array('d',[ vpx, vpy, vpz ] ) + + time = 0. + + + # --- particle charge + + if j % 2 == 1: + pdg = -pdg + charge = -charge + + + +#--------------- create MCParticle ------------------- + + mcp = IMPL.MCParticleImpl() + + mcp.setGeneratorStatus( genstat ) + mcp.setMass( mass ) + mcp.setPDG( pdg ) + mcp.setMomentum( momentum ) + mcp.setCharge( charge ) + mcp.setVertex( vertex ) + mcp.setTime( time ) + + if( decayLen < 1.e9 ) : # arbitrary ... + mcp.setEndpoint( endpoint ) + + print (" ", ipart, pdg, charge, pt, phi, theta) + + +#------------------------------------------------------- + + + col.addElement( mcp ) + + + wrt.writeEvent( evt ) + + +wrt.close() diff --git a/reconstruction/013-electrongun/README.md b/reconstruction/013-electrongun/README.md new file mode 100644 index 0000000..fe9eaf3 --- /dev/null +++ b/reconstruction/013-electrongun/README.md @@ -0,0 +1 @@ +Electro gun. \ No newline at end of file diff --git a/reconstruction/013-electrongun/ntuplizer_all.xml b/reconstruction/013-electrongun/ntuplizer_all.xml new file mode 100644 index 0000000..2021759 --- /dev/null +++ b/reconstruction/013-electrongun/ntuplizer_all.xml @@ -0,0 +1,199 @@ + + + + + + + + + + + + + + + + + + + + + + + + + input_file.slcio + + + + + MESSAGE0 + + + + + + + + + + + + + + + + + + + + + + + + JetOut + + + + + + + + + RecoMCTruthLink + + + + + r2 + + + + + + + + MCParticle + + + + + + + MergedRecoParticles + + + + + + + + SiTracks_Refitted + + + + + + + + + PrimaryVertices + + false + + false + + false + + false + + false + + false + + false + + false + + false + + false + + false + + + + + kt_algorithm 0.5 + Inclusive 5 + JetOut + PandoraPFOs + + E_scheme + + + + outputfile.slcio + WRITE_NEW + + + + + + + + + + + + 0 + + + VBTrackerHits + VETrackerHits + IBTrackerHits + IETrackerHits + OBTrackerHits + OETrackerHits + + MergedTrackerHits + + + + 0 + + + VertexBarrelCollection + VertexEndcapCollection + InnerTrackerBarrelCollection + InnerTrackerEndcapCollection + OuterTrackerBarrelCollection + OuterTrackerEndcapCollection + + MergedTrackerSimHits + + + + 0 + + + VBTrackerHitRelations + VETrackerHitRelations + IBTrackerHitsRelations + IETrackerHitsRelations + OBTrackerHitsRelations + OETrackerHitsRelations + + MergedTrackerHitsRelations + + + + + + + + + diff --git a/reconstruction/013-electrongun/reco_steer_all.xml b/reconstruction/013-electrongun/reco_steer_all.xml new file mode 100644 index 0000000..cc8df97 --- /dev/null +++ b/reconstruction/013-electrongun/reco_steer_all.xml @@ -0,0 +1,1629 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + DEBUG7 + + False + + False BIB + + Conformal + + Truth Conformal + + OFF + + ON OFF + + MESSAGE0 + + + + 1 + MESSAGE + + + + + + + + + + + + + + + + + + + + + + input_file.slcio + + + + + + WARNING + + + + + + + + + + + + + output_file.slcio + EfficientMCParticles InefficientMCParticles + + + WARNING + + + + + + + + + + + + + + + + + + /opt/ilcsoft/muonc/detector-simulation/geometries/MuColl_v1/MuColl_v1.xml + + + + GlobalTrackerReadoutID + + + + + + + + + + + + + + MCParticle + + MCPhysicsParticles + + + + + + + + + + + VertexBarrelCollection -0.18 0.24 + VertexEndcapCollection -0.18 0.24 + + InnerTrackerBarrelCollection -0.36 0.48 + InnerTrackerEndcapCollection -0.36 0.48 + + OuterTrackerBarrelCollection -0.36 0.48 + OuterTrackerEndcapCollection -0.36 0.48 + + ECalBarrelCollection 10. + ECalEndcapCollection 10. + + HCalBarrelCollection 10. + HCalEndcapCollection 10. + + YokeBarrelCollection 10. + YokeEndcapCollection 10. + + + + + + + + + + + + + + /dev/null + + + + + + + /data/BIB/sim_mupl-1e3x500-26m-lowth-excl_j8.slcio + + + + WARNING + + + + + + + + + + + + + + + Vertex + + + false + + 0.005 + + 0.005 + + VertexBarrelCollection + + VBTrackerHitsRelations + + VBTrackerHits + + 0.03 + + true + + + + -0.09 + + 0.15 + + WARNING + + + + Vertex + + + false + + 0.005 + + 0.005 + + VertexEndcapCollection + + VETrackerHitsRelations + + VETrackerHits + + 0.03 + + true + + + + -0.09 + + 0.15 + + WARNING + + + + + InnerTrackers + + false + + 0.007 + + 0.090 + + InnerTrackerBarrelCollection + + IBTrackerHitsRelations + + IBTrackerHits + + 0.06 + + true + + + + -0.18 + + 0.3 + + WARNING + + + + + InnerTrackers + + false + + 0.007 + + 0.090 + + InnerTrackerEndcapCollection + + IETrackerHitsRelations + + IETrackerHits + + 0.06 + + true + + + + -0.18 + + 0.3 + + WARNING + + + + + OuterTrackers + + false + + 0.007 + + 0.090 + + OuterTrackerBarrelCollection + + OBTrackerHitsRelations + + OBTrackerHits + + 0.06 + + true + + + + -0.18 + + 0.3 + + WARNING + + + + + OuterTrackers + + false + + 0.007 + + 0.090 + + OuterTrackerEndcapCollection + + OETrackerHitsRelations + + OETrackerHits + + 0.06 + + true + + + + -0.18 + + 0.3 + + WARNING + + + + + + + + + + + + + + + + + VBTrackerHits + VETrackerHits + IBTrackerHits + IETrackerHits + OBTrackerHits + OETrackerHits + + + MCParticle + + + VBTrackerHitsRelations + VETrackerHitsRelations + IBTrackerHitsRelations + IETrackerHitsRelations + OBTrackerHitsRelations + OETrackerHitsRelations + + + SiTracksCT + + DebugHits + + 4 + + 4 + + false + + false + + false + 10000 + + true + + + [VXDBarrel] + @Collections : VBTrackerHits + @Parameters : MaxCellAngle : 0.005; MaxCellAngleRZ : 0.005; Chi2Cut : 100; MinClustersOnTrack : 4; MaxDistance : 0.02; SlopeZRange: 10.0; HighPTCut: 10.0; + @Flags : HighPTFit, VertexToTracker + @Functions : CombineCollections, BuildNewTracks + [VXDEncap] + @Collections : VETrackerHits + @Parameters : MaxCellAngle : 0.005; MaxCellAngleRZ : 0.005; Chi2Cut : 100; MinClustersOnTrack : 4; MaxDistance : 0.02; SlopeZRange: 10.0; HighPTCut: 0.0; + @Flags : HighPTFit, VertexToTracker + @Functions : CombineCollections, ExtendTracks + [LowerCellAngle1] + @Collections : VBTrackerHits, VETrackerHits + @Parameters : MaxCellAngle : 0.025; MaxCellAngleRZ : 0.025; Chi2Cut : 100; MinClustersOnTrack : 4; MaxDistance : 0.02; SlopeZRange: 10.0; HighPTCut: 10.0; + @Flags : HighPTFit, VertexToTracker, RadialSearch + @Functions : CombineCollections, BuildNewTracks + [LowerCellAngle2] + @Collections : + @Parameters : MaxCellAngle : 0.05; MaxCellAngleRZ : 0.05; Chi2Cut : 2000; MinClustersOnTrack : 4; MaxDistance : 0.02; SlopeZRange: 10.0; HighPTCut: 10.0; + @Flags : HighPTFit, VertexToTracker, RadialSearch + @Functions : BuildNewTracks, SortTracks + [Tracker] + @Collections : IBTrackerHits, OBTrackerHits, IETrackerHits, OETrackerHits + @Parameters : MaxCellAngle : 0.05; MaxCellAngleRZ : 0.05; Chi2Cut : 2000; MinClustersOnTrack : 4; MaxDistance : 0.02; SlopeZRange: 10.0; HighPTCut: 0.0; + @Flags : HighPTFit, VertexToTracker, RadialSearch + @Functions : CombineCollections, ExtendTracks + [Displaced] + @Collections : VBTrackerHits, VETrackerHits, IBTrackerHits, OBTrackerHits, IETrackerHits, OETrackerHits + @Parameters : MaxCellAngle : 0.05; MaxCellAngleRZ : 0.05; Chi2Cut : 1000; MinClustersOnTrack : 5; MaxDistance : 0.015; SlopeZRange: 10.0; HighPTCut: 10.0; + @Flags : OnlyZSchi2cut, RadialSearch + @Functions : CombineCollections, BuildNewTracks + + + 0.7 + 0.05 + + DEBUG7 + + + + + + true + + + VBTrackerHits + VETrackerHits + IBTrackerHits + IETrackerHits + OBTrackerHits + OETrackerHits + + + VBTrackerHitsRelations + VETrackerHitsRelations + IBTrackerHitsRelations + IETrackerHitsRelations + OBTrackerHitsRelations + OETrackerHitsRelations + + + MCParticle + + SiTracks + + SiTrackRelations + + false + SILENT + + + + SiTracksCT + SiTracks + true + true + false + true + 0.59 + 0.99 + 0.69 + false + + + + + + true + + SiTrackRelations + + SiTracks + + 1.79769e+30 + + true + + + SiTracks_Refitted_Relation + + + + SiTracks_Refitted + + + -1 + + false + + + + true + + 3 + + + + + + + + + + + + + + 0 + Digi_SiW.root + + RelationCaloHit + + 3.6 + + + + + + + ECalBarrelCollection ECalEndcapCollection ECalPlugCollection + + ECALBarrel + + ECALEndcap + + ECALOther + + 0 + + 41 100 + + 000000000000000 + + 9 + + + 0.0001 + + 35.8411424188 35.8411424188 + + 5e-05 + + GeV + + 1.0672142727 + + 1 + + 1 + + 0.0 + + 0 + + + 10000 + + 0.05 + + 7 + + 0 + + 0 + + false + + 0 + + 2500 + + 0 + + 0 + + false + + 0.05 + + 1e+06 + + + 1 + + 1 + + -1 + + 10 + + 10 + + true + + 10 + + 10 + + + + + HCalBarrelCollection HCalEndcapCollection HCalRingCollection + + HCALBarrel + + HCALEndcap + + HCALOther + + 0 + + 100 + + + 0.0001 + + 49.2031079063 + + + 53.6263377733 + + 62.2125698179 + + 0.00025 + + GeV + + 1.000 + + 1 + + 0.5 + + + 400 + + 0.05 + + 10 + + 0 + + 0 + + false + + 0 + + 200 + + 0 + + 0 + + false + + 0 + + + 1 + + 1 + + -1 + + 10 + + 10 + + true + + 10 + + 10 + + + + + + + + + + + + config/PandoraSettings/PandoraSettingsDefault.xml + + 1.61741 -0.00444385 2.29683e-05 -0.0731236 -0.00157099 -7.09546e-07 0.868443 1.0561 -0.0238574 + 0 2. 5. 7.5 9.5 13. 16. 20. 23.5 28. 33. 40. 50. 75. 100. + 110. + 2000. + + SiTracks_Refitted + ECALBarrel ECALEndcap ECALOther + HCALBarrel HCALEndcap HCALOther + MUON + MCParticle + RelationCaloHit RelationMuonHit + SiTracks_Refitted_Relation + KinkVertices + ProngVertices + SplitVertices + V0Vertices + PandoraClusters + PandoraPFOs + + 181.818 + 40.8163 + 0.5 + 0.3 + 1.02373335516 + 1.02373335516 + 1.24223718397 + 1.24223718397 + 1.01799349172 + 19607.8 + 0 + 1000000 + + 0 + 0 + WARNING + + + + + + false + + + + 0 + + 0 + + 0 + + 0 + + 0 + + 0 + + 0 + + + + -100 + + -50 + + 1 + + 0 + + 0 + + 0 + + 5 + + 1 + + 0 + + 0 + + 1 + + 200 + + 5 + + 250 + + 5000 + + 0.15 + + 0.00015 + + 200 + + 5 + + + PandoraPFANew + + PandoraStartVertices + + + 0 0 1 + + 0 0 1 + + 0 0 1 + + -1.5 + + 0.01 + + + 0.01 + + 0.17 + + 0.03 + + 0.6 + + + + + + 250 + + 3 + + 0 + + + 200 + + + 0.1 + + 0.5 + + 0.01 + + + 0.5 + + + 1 + + + DDTrackCreatorCLIC + + DDKalTest + + + + + + 0 + + 0 + + 1 + + 1 + + 1 + + 1 + + 0 + + 1 + + 1 + + 1 + + 1 + + 0 + + + + + + + 0 + + PandoraPFOs + MergedRecoParticles + + + + 0 + + PandoraClusters + MergedClusters + + + + + + + + + + + + + + 70.1 + + 2.0 + + + YokeBarrelCollection YokeEndcapCollection + + MUON + + 1e-06 + + RelationMuonHit + + + + + + + + + + + + + trktree + + puritytree + + mctree + + SiTracks_Refitted + + + VBTrackerHits + VETrackerHits + IBTrackerHits + IETrackerHits + OBTrackerHits + OETrackerHits + + + + VBTrackerHitsRelations + VETrackerHitsRelations + IBTrackerHitsRelations + IETrackerHitsRelations + OBTrackerHitsRelations + OETrackerHitsRelations + + + MCParticle + + MCPhysicsParticles + + MCParticleNotReco + EfficientMCParticles + InefficientMCParticles + + + true + + ILDLike + + 1 + + + + + + + + MCParticle + + SiTracks_Refitted + + SiTracksMCTruthLink + + checktree + + true + + + + + + + + 1 + + CalohitMCTruthLink + + MergedClusters + + ClusterMCTruthLink + + false + + false + + + 22 111 310 13 211 321 3120 + + MCPhysicsParticles + + MCParticlesSkimmed + + + + + + + + + RecoMCTruthLink + + MergedRecoParticles + + false + + + ECalBarrelCollection + ECalEndcapCollection + ECalPlugCollection + HCalBarrelCollection + HCalEndcapCollection + HCalRingCollection + YokeBarrelCollection + YokeEndcapCollection + + + + RelationCaloHit RelationMuonHit + + + + VertexBarrelCollection + VertexEndcapCollection + InnerTrackerBarrelCollection + OuterTrackerBarrelCollection + InnerTrackerEndcapCollection + OuterTrackerEndcapCollection + + + SiTracks_Refitted + + SiTracksMCTruthLink + + + VBTrackerHitsRelations + VETrackerHitsRelations + IBTrackerHitsRelations + OBTrackerHitsRelations + IETrackerHitsRelations + OETrackerHitsRelations + + + true + + false + + MESSAGE + + 10 + + + + + + + true + + 1000 + + true + + false + + SiTracks_Refitted + + residuals.root + + restree + + + + + + + + + + + + + + + 3 + + -1 + + -0.5 + + 0 + + 4 + + 1.5 + + 0 + + 0 + + 10 + + 0 + + 1 + + 1 + + 0.975 + + 0.95 + + 10 + + 20 + + 10 + + 1 + + PandoraPFOs + + 1 + + 2 + + 5 + + 5 + + 0.5 + + 0.5 + + 1 + + 0 + + 1 + + 2 + + 1 + + 3.5 + + 2.5 + + 0 + + 8 + + 1.5 + + 2 + + 1 + + 2 + + 0 + + 4 + + 1 + + 0.75 + + SelectedPandoraPFOs + + 1 + + 0 + + MESSAGE + + + SelectedPandoraPFOs + + + + + + -2.0 + + -2.0 + + 1000. + + 0.0 + + 0.25 + + + 2.5 + + 1.5 + + 2. + + 2. + + LooseSelectedPandoraPFOs + 0 + + + + + + 2.0 + + -0.5 + + -0.25 + + 1.0 + + 0.95 + + 1.5 + + 1.0 + + 1.5 + + 0.5 + + 0.2 + + 1.0 + + TightSelectedPandoraPFOs + + 0 + 0 + + + + + + + LE_SelectedPandoraPFOs + + + + + 0.0 + 2.0 + 5.0 + 2.5 + 0.0 + 2.0 + 5.0 + 1.0 + 0.0 + 4.0 + 10.0 + 3.0 + -5.0 + -2.0 + 10. + 0.0 + 5.0 + 0.0 + 4.0 + 2.0 + 5 + 2.5 + + + + + + + LE_LooseSelectedPandoraPFOs + + 0.0 + + + + 2.0 + 10.0 + 5.0 + 0.0 + 2.0 + 10.0 + 2.5 + 0.0 + 4.0 + 10.0 + 5.0 + -20.0 + -20.0 + 50. + 0.0 + 5.0 + 0.0 + 10.0 + 5.0 + 10 + 5 + + + + + + + LE_TightSelectedPandoraPFOs + + 0.0 + + + + 3.0 + 4.0 + 2.0 + 0.0 + 2.0 + 1.0 + 1.0 + 0.0 + 3.0 + 4.0 + 2.0 + -2.0 + -1.0 + 10. + 0.0 + 5.0 + 0.75 + 2.0 + 2.0 + 4 + 2 + + + + + + + + + + + + + + 0 + + PandoraPFOs + PFOsFromJets + + + + + ValenciaPlugin 1.2 1.0 0.7 + ExclusiveNJets 2 + E_scheme + TightSelectedPandoraPFOs + JetsAfterGamGamRemoval + true + PFOsFromJets + + + + + + + + + + + + PrimaryVertexFinder BuildUpVertex + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + 1 + + + + + + + + + + 0 + + + + + + JetClustering JetVertexRefiner + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/simulation/013-electrongun/README.md b/simulation/013-electrongun/README.md new file mode 100644 index 0000000..ed3475d --- /dev/null +++ b/simulation/013-electrongun/README.md @@ -0,0 +1,4 @@ +Electron gun: + +- MuonColliderSoft version: v02-05-MC +- geometry: MuCollv1 diff --git a/simulation/013-electrongun/sim_steer.py b/simulation/013-electrongun/sim_steer.py new file mode 100644 index 0000000..f12a04a --- /dev/null +++ b/simulation/013-electrongun/sim_steer.py @@ -0,0 +1,244 @@ +import os + +from DDSim.DD4hepSimulation import DD4hepSimulation +from g4units import mm, GeV, MeV, m, deg +SIM = DD4hepSimulation() + +## The compact XML file +SIM.compactFile = "/opt/ilcsoft/muonc/detector-simulation/geometries/MuColl_v1/MuColl_v1.xml" +## Lorentz boost for the crossing angle, in radian! +SIM.crossingAngleBoost = 0. +SIM.enableDetailedShowerMode = True +SIM.enableG4GPS = False +SIM.enableG4Gun = False +SIM.enableGun = False +## InputFiles for simulation .stdhep, .slcio, .HEPEvt, .hepevt, .hepmc files are supported +SIM.inputFiles = ["input_file.hepmc"] +## HepMC reader v3 is not supported +SIM.hepmc3.useHepMC3 = True +## Macro file to execute for runType 'run' or 'vis' +SIM.macroFile = [] +## number of events to simulate, used in batch mode +SIM.numberOfEvents = -1 +## Outputfile from the simulation,only lcio output is supported +# SIM.outputFile = "out/digi/sim_mod1_mumu2H2bb750.slcio" +SIM.outputFile = "output_file.slcio" +# SIM.outputFile = "out/sim_mod1_mcparticles.slcio" +## Verbosity use integers from 1(most) to 7(least) verbose +## or strings: VERBOSE, DEBUG, INFO, WARNING, ERROR, FATAL, ALWAYS +SIM.printLevel = 3 +## The type of action to do in this invocation +## batch: just simulate some events, needs numberOfEvents, and input file or gun +## vis: enable visualisation, run the macroFile if it is set +## run: run the macroFile and exit +## shell: enable interactive session +SIM.runType = "batch" +## Skip first N events when reading a file +SIM.skipNEvents = 0 +## Steering file to change default behaviour +SIM.steeringFile = None +## FourVector of translation for the Smearing of the Vertex position: x y z t +SIM.vertexOffset = [0.0, 0.0, 0.0, 0.0] +## FourVector of the Sigma for the Smearing of the Vertex position: x y z t +SIM.vertexSigma = [0.0, 0.0, 0.0, 0.0] + + +################################################################################ +## Action holding sensitive detector actions +## The default tracker and calorimeter actions can be set with +## +## >>> SIM = DD4hepSimulation() +## >>> SIM.action.tracker = "Geant4TrackerAction" +## >>> SIM.action.calo = "Geant4CalorimeterAction" +## +## for specific subdetectors specific sensitive detectors can be set based on pattern matching +## +## >>> SIM = DD4hepSimulation() +## >>> SIM.action.mapActions['tpc'] = "TPCSDAction" +## +## and additional parameters for the sensitive detectors can be set when the map is given a tuple +## +## >>> SIM = DD4hepSimulation() +## >>> SIM.action.mapActions['ecal'] =( "CaloPreShowerSDAction", {"FirstLayerNumber": 1} ) +## +## +################################################################################ + +## set the default tracker action +SIM.action.tracker = "Geant4TrackerWeightedAction" + +## set the default calorimeter action +SIM.action.calo = "Geant4ScintillatorCalorimeterAction" + +## create a map of patterns and actions to be applied to sensitive detectors +## example: SIM.action.mapActions['tpc'] = "TPCSDAction" +SIM.action.mapActions = {} + + +################################################################################ +## Configuration for the magnetic field (stepper) +################################################################################ +SIM.field.delta_chord = 0.25*mm +SIM.field.delta_intersection = 0.001*mm +SIM.field.delta_one_step = 0.01*mm +SIM.field.eps_max = 0.001*mm +SIM.field.eps_min = 5e-05*mm +SIM.field.equation = "Mag_UsualEqRhs" +SIM.field.largest_step = 10.0*m +SIM.field.min_chord_step = 0.01*mm +SIM.field.stepper = "ClassicalRK4" + + +################################################################################ +## Configuration for sensitive detector filters +## +## Set the default filter for tracker or caliromter +## >>> SIM.filter.tracker = "edep1kev" +## >>> SIM.filter.calo = "" +## +## Assign a filter to a sensitive detector via pattern matching +## >>> SIM.filter.mapDetFilter['FTD'] = "edep1kev" +## +## Or more than one filter: +## >>> SIM.filter.mapDetFilter['FTD'] = ["edep1kev", "geantino"] +## +## Don't use the default filter or anything else: +## >>> SIM.filter.mapDetFilter['TPC'] = None ## or "" or [] +## +## Create a custom filter. The dictionary is used to instantiate the filter later on +## >>> SIM.filter.filters['edep3kev'] = dict(name="EnergyDepositMinimumCut/3keV", parameter={"Cut": 3.0*keV} ) +## +## +################################################################################ + +## default filter for calorimeter sensitive detectors; this is applied if no other filter is used for a calorimeter +SIM.filter.calo = "edep0" + +## list of filter objects: map between name and parameter dictionary +SIM.filter.filters = {'edep0': {'parameter': {'Cut': 0.0}, 'name': 'EnergyDepositMinimumCut/Cut0'}, 'geantino': {'parameter': {}, 'name': 'GeantinoRejectFilter/GeantinoRejector'}, 'edep1kev': {'parameter': {'Cut': 0.001}, 'name': 'EnergyDepositMinimumCut'}} + +## a map between patterns and filter objects, using patterns to attach filters to sensitive detector +SIM.filter.mapDetFilter = {} + +## default filter for tracking sensitive detectors; this is applied if no other filter is used for a tracker +SIM.filter.tracker = "edep1kev" + + +################################################################################ +## Configuration for the DDG4 ParticleGun +################################################################################ + +## direction of the particle gun, 3 vector +# SIM.gun.direction = (0, 0, 1) + +## choose the distribution of the random direction for theta +## +## Options for random distributions: +## +## 'uniform' is the default distribution, flat in theta +## 'cos(theta)' is flat in cos(theta) +## 'eta', or 'pseudorapidity' is flat in pseudorapity +## 'ffbar' is distributed according to 1+cos^2(theta) +## +## Setting a distribution will set isotrop = True +## +SIM.gun.distribution = "uniform" +SIM.gun.energy = 10.0*GeV + +## isotropic distribution for the particle gun +## +## use the options phiMin, phiMax, thetaMin, and thetaMax to limit the range of randomly distributed directions +## if one of these options is not None the random distribution will be set to True and cannot be turned off! +## +SIM.gun.isotrop = True +SIM.gun.multiplicity = 10 +SIM.gun.particle = "mu-" +SIM.gun.phiMax = None + +## Minimal azimuthal angle for random distribution +SIM.gun.phiMin = None + +## position of the particle gun, 3 vector +SIM.gun.position = (0.0, 0.0, 0.0) +SIM.gun.thetaMax = 172*deg +SIM.gun.thetaMin = 8*deg + + +################################################################################ +## Configuration for the output levels of DDG4 components +################################################################################ + +## Output level for input sources +SIM.output.inputStage = 3 + +## Output level for Geant4 kernel +SIM.output.kernel = 3 + +## Output level for ParticleHandler +SIM.output.part = 3 + +## Output level for Random Number Generator setup +SIM.output.random = 6 + + +################################################################################ +## Configuration for the Particle Handler/ MCTruth treatment +################################################################################ + +## Keep all created particles +SIM.part.keepAllParticles = False + +## Minimal distance between particle vertex and endpoint of parent after +## which the vertexIsNotEndpointOfParent flag is set +## +SIM.part.minDistToParentVertex = 2.2e-14 + +## MinimalKineticEnergy to store particles created in the tracking region +SIM.part.minimalKineticEnergy = 1.0*MeV + +## Printout at End of Tracking +SIM.part.printEndTracking = True + +## Printout at Start of Tracking +SIM.part.printStartTracking = True + +## List of processes to save, on command line give as whitespace separated string in quotation marks +SIM.part.saveProcesses = ['Decay'] + + +################################################################################ +## Configuration for the PhysicsList +################################################################################ +SIM.physics.decays = False +SIM.physics.list = "QGSP_BERT" + +## location of particle.tbl file containing extra particles and their lifetime information +## +SIM.physics.pdgfile = os.path.join( os.environ.get("DD4HEP"), "DDG4/examples/particle.tbl" ) + +## The global geant4 rangecut for secondary production +## +## Default is 0.7 mm as is the case in geant4 10 +## +## To disable this plugin and be absolutely sure to use the Geant4 default range cut use "None" +## +## Set printlevel to DEBUG to see a printout of all range cuts, +## but this only works if range cut is not "None" +## +SIM.physics.rangecut = 0.7*mm + +SIM.physics.rejectPDGs = {1,2,3,4,5,6,21,23,24,25} + +################################################################################ +## Properties for the random number generator +################################################################################ + +## If True, calculate random seed for each event based on eventID and runID +## allows reproducibility even when SkippingEvents +SIM.random.enableEventSeed = True +SIM.random.file = None +SIM.random.luxury = 1 +SIM.random.replace_gRandom = True +SIM.random.seed = None +SIM.random.type = None +