Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
R
reconstruction_benchmarks
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
EIC
benchmarks
reconstruction_benchmarks
Commits
eb0fbd8e
Commit
eb0fbd8e
authored
2 years ago
by
Wouter Deconinck
Browse files
Options
Downloads
Patches
Plain Diff
fix: benchmarks for background overlay
parent
6bbcc86c
No related branches found
No related tags found
1 merge request
!260
Draft: Tracking with background overlay
Changes
2
Hide whitespace changes
Inline
Side-by-side
Showing
2 changed files
benchmarks/tracking/central_electrons.sh
+64
-20
64 additions, 20 deletions
benchmarks/tracking/central_electrons.sh
benchmarks/tracking/options/track_reconstruction_with_overlay.py
+219
-0
219 additions, 0 deletions
...rks/tracking/options/track_reconstruction_with_overlay.py
with
283 additions
and
20 deletions
benchmarks/tracking/central_electrons.sh
+
64
−
20
View file @
eb0fbd8e
#!/bin/bash
function
print_the_help
{
echo
"USAGE:
${
0
}
[-
-rec-only]
"
echo
"USAGE:
${
0
}
[-
f,--force] [-b,--background] [--rec-only] [--ana-only]
"
echo
" OPTIONS: "
echo
" --force force rerun even if files exist"
echo
" --background include overlay of background"
echo
" --rec-only only run gaudi reconstruction part"
echo
" --ana-only only run analysis part"
exit
}
BKG
=
FORCE
=
REC_ONLY
=
ANALYSIS_ONLY
=
...
...
@@ -20,6 +25,14 @@ do
shift
# past argument
print_the_help
;;
-b
|
--background
)
shift
# past argument
BKG
=
1
;;
-f
|
--force
)
shift
# past argument
FORCE
=
1
;;
--rec-only
)
REC_ONLY
=
1
shift
# past value
...
...
@@ -61,6 +74,7 @@ export JUGGLER_FILE_NAME_TAG="central_electrons"
export
JUGGLER_GEN_FILE
=
"
${
JUGGLER_FILE_NAME_TAG
}
.hepmc"
export
JUGGLER_SIM_FILE
=
"sim_
${
JUGGLER_FILE_NAME_TAG
}
.edm4hep.root"
export
JUGGLER_BKG_FILE
=
"bkg_
${
JUGGLER_FILE_NAME_TAG
}
.edm4hep.root"
export
JUGGLER_REC_FILE
=
"rec_
${
JUGGLER_FILE_NAME_TAG
}
.root"
echo
"JUGGLER_N_EVENTS =
${
JUGGLER_N_EVENTS
}
"
...
...
@@ -71,34 +85,64 @@ if [[ -z "${REC_ONLY}" && -z "${ANALYSIS_ONLY}" ]] ;
then
## generate the input events
root
-b
-q
"benchmarks/tracking/scripts/gen_central_electrons.cxx+(
${
JUGGLER_N_EVENTS
}
,
\"
${
JUGGLER_FILE_NAME_TAG
}
.hepmc
\"
)"
if
[[
"
$?
"
-ne
"0"
]]
;
then
echo
"ERROR running script"
exit
1
if
[
-n
"
${
FORCE
}
"
-o
!
-f
${
JUGGLER_FILE_NAME_TAG
}
.hepmc
]
;
then
root
-b
-q
"benchmarks/tracking/scripts/gen_central_electrons.cxx+(
${
JUGGLER_N_EVENTS
}
,
\"
${
JUGGLER_FILE_NAME_TAG
}
.hepmc
\"
)"
if
[[
"
$?
"
-ne
"0"
]]
;
then
echo
"ERROR running script"
exit
1
fi
fi
echo
"Running geant4 simulation"
## run geant4 simulations
ddsim
--runType
batch
\
--part
.minimalKineticEnergy 1000
*
GeV
\
--filter
.tracker edep0
\
-v
WARNING
\
--numberOfEvents
${
JUGGLER_N_EVENTS
}
\
--compactFile
${
DETECTOR_PATH
}
/
${
DETECTOR_CONFIG
}
.xml
\
--inputFiles
${
JUGGLER_FILE_NAME_TAG
}
.hepmc
\
--outputFile
${
JUGGLER_SIM_FILE
}
if
[[
"
$?
"
-ne
"0"
]]
;
then
echo
"ERROR running script"
exit
1
if
[
-n
"
${
FORCE
}
"
-o
!
-f
${
JUGGLER_SIM_FILE
}
]
;
then
echo
"Running geant4 simulation"
ddsim
--runType
batch
\
--part
.minimalKineticEnergy 1000
*
GeV
\
--filter
.tracker edep0
\
-v
WARNING
\
--numberOfEvents
${
JUGGLER_N_EVENTS
}
\
--compactFile
${
DETECTOR_PATH
}
/
${
DETECTOR_CONFIG
}
.xml
\
--inputFiles
${
JUGGLER_FILE_NAME_TAG
}
.hepmc
\
--outputFile
${
JUGGLER_SIM_FILE
}
if
[[
"
$?
"
-ne
"0"
]]
;
then
echo
"ERROR running script"
exit
1
fi
rootls
-t
${
JUGGLER_SIM_FILE
}
fi
fi
rootls
-t
${
JUGGLER_SIM_FILE
}
## run geant4 simulations (background)
if
[[
-n
"
${
BKG
}
"
]]
;
then
if
[
-n
"
${
FORCE
}
"
-o
!
-f
${
JUGGLER_BKG_FILE
}
]
;
then
echo
"Running geant4 simulation (background)"
ddsim
--runType
batch
\
--part
.minimalKineticEnergy 1000
*
GeV
\
--filter
.tracker edep0
\
-v
WARNING
\
--numberOfEvents
${
JUGGLER_N_EVENTS
}
\
--compactFile
${
DETECTOR_PATH
}
/
${
DETECTOR_CONFIG
}
.xml
\
--enableGun
--gun
.particle e-
\
--gun
.momentumMin 0.0
*
GeV
--gun
.momentumMax 10.0
*
GeV
\
--gun
.thetaMin 45.0
*
deg
--gun
.thetaMax 135.0
*
deg
\
--gun
.distribution
"cos(theta)"
\
--outputFile
${
JUGGLER_BKG_FILE
}
if
[[
"
$?
"
-ne
"0"
]]
;
then
echo
"ERROR running script"
exit
1
fi
rootls
-t
${
JUGGLER_BKG_FILE
}
fi
fi
fi
if
[[
-z
"
${
ANALYSIS_ONLY
}
"
]]
;
then
# Need to figure out how to pass file name to juggler from the commandline
gaudirun.py benchmarks/tracking/options/track_reconstruction.py
if
[[
-n
"
${
BKG
}
"
]]
;
then
gaudirun.py benchmarks/tracking/options/track_reconstruction_with_overlay.py
else
gaudirun.py benchmarks/tracking/options/track_reconstruction.py
fi
if
[[
"
$?
"
-ne
"0"
]]
;
then
echo
"ERROR running juggler"
exit
1
...
...
This diff is collapsed.
Click to expand it.
benchmarks/tracking/options/track_reconstruction_with_overlay.py
0 → 100644
+
219
−
0
View file @
eb0fbd8e
from
Gaudi.Configuration
import
*
from
Configurables
import
ApplicationMgr
,
EICDataSvc
,
PodioOutput
,
GeoSvc
from
GaudiKernel
import
SystemOfUnits
as
units
detector_name
=
"
topside
"
if
"
DETECTOR_CONFIG
"
in
os
.
environ
:
detector_name
=
str
(
os
.
environ
[
"
DETECTOR_CONFIG
"
])
detector_path
=
""
if
"
DETECTOR_PATH
"
in
os
.
environ
:
detector_path
=
str
(
os
.
environ
[
"
DETECTOR_PATH
"
])
detector_version
=
'
default
'
if
"
DETECTOR_VERSION
"
in
os
.
environ
:
env_version
=
str
(
os
.
environ
[
"
DETECTOR_VERSION
"
])
# todo add checks
input_sim_file
=
str
(
os
.
environ
[
"
JUGGLER_SIM_FILE
"
])
input_bkg_file
=
str
(
os
.
environ
[
"
JUGGLER_BKG_FILE
"
])
output_rec_file
=
str
(
os
.
environ
[
"
JUGGLER_REC_FILE
"
])
n_events
=
str
(
os
.
environ
[
"
JUGGLER_N_EVENTS
"
])
## note: old version of material map is called material-maps.XXX, new version is materials-map.XXX
## these names are somewhat inconsistent, and should probably all be renamed to 'material-map.XXX'
## FIXME
geo_service
=
GeoSvc
(
"
GeoSvc
"
,
detectors
=
[
"
{}/{}.xml
"
.
format
(
detector_path
,
detector_name
)],
materials
=
"
calibrations/materials-map.cbor
"
,
OutputLevel
=
WARNING
)
podioevent
=
EICDataSvc
(
"
EventDataSvc
"
,
inputs
=
[
input_sim_file
],
OutputLevel
=
WARNING
)
from
Configurables
import
PodioInput
from
Configurables
import
Jug__Digi__SimTrackerHitsCollector
as
SimTrackerHitsCollector
from
Configurables
import
Jug__Digi__SiliconTrackerDigi
as
TrackerDigi
from
Configurables
import
Jug__Reco__TrackerHitReconstruction
as
TrackerHitReconstruction
from
Configurables
import
Jug__Reco__TrackingHitsCollector2
as
TrackingHitsCollector
from
Configurables
import
Jug__Reco__TrackerSourceLinker
as
TrackerSourceLinker
from
Configurables
import
Jug__Reco__TrackParamTruthInit
as
TrackParamTruthInit
from
Configurables
import
Jug__Reco__TrackParamClusterInit
as
TrackParamClusterInit
from
Configurables
import
Jug__Reco__TrackParamVertexClusterInit
as
TrackParamVertexClusterInit
from
Configurables
import
Jug__Reco__TrackFindingAlgorithm
as
TrackFindingAlgorithm
from
Configurables
import
Jug__Reco__ParticlesFromTrackFit
as
ParticlesFromTrackFit
from
Configurables
import
Jug__Reco__TrackProjector
as
TrackProjector
from
Configurables
import
Jug__Reco__SimpleClustering
as
SimpleClustering
algorithms
=
[
]
tracker_endcap_collections
=
[
'
TrackerEndcapHits1
'
,
'
TrackerEndcapHits2
'
,
'
TrackerEndcapHits3
'
,
'
TrackerEndcapHits4
'
,
'
TrackerEndcapHits5
'
,
'
TrackerEndcapHits6
'
]
tracker_barrel_collections
=
[
'
TrackerBarrelHits
'
]
vertex_barrel_collections
=
[
'
VertexBarrelHits
'
]
gem_endcap_collections
=
[
'
GEMTrackerEndcapHits1
'
,
'
GEMTrackerEndcapHits2
'
,
'
GEMTrackerEndcapHits3
'
]
vertex_endcap_collections
=
[
'
VertexEndcapHits
'
]
mpgd_barrel_collections
=
[
'
MPGDTrackerBarrelHits1
'
,
'
MPGDTrackerBarrelHits2
'
]
input_collections
=
[
'
MCParticles
'
]
+
tracker_endcap_collections
+
tracker_barrel_collections
+
vertex_barrel_collections
+
gem_endcap_collections
input_collections
+=
mpgd_barrel_collections
podioinput
=
PodioInput
(
"
PodioReader
"
,
collections
=
input_collections
)
algorithms
.
append
(
podioinput
)
# use the pileuptool to specify the number of pileup
from
Configurables
import
ConstPileUp
pileuptool
=
ConstPileUp
(
"
MyPileupTool
"
,
numPileUpEvents
=
10
)
# edm data from simulation: hits and positioned hits
from
Configurables
import
PileupHitMergeTool_edm4hep__SimTrackerHitCollection_
as
PileupTrackHitMergeTool
trackhitsmergetool
=
PileupTrackHitMergeTool
(
"
MyTrackHitMergeTool
"
)
# branchnames for the pileup
trackhitsmergetool
.
pileupHitsBranch
=
"
hits
"
# branchnames for the signal
trackhitsmergetool
.
signalHits
=
"
hits
"
# branchnames for the output
trackhitsmergetool
.
mergedHits
=
"
overlaidTrackHits
"
# algorithm for the overlay
from
Configurables
import
PileupOverlayAlg
overlay
=
PileupOverlayAlg
()
overlay
.
pileupFilenames
=
[
input_bkg_file
]
overlay
.
randomizePileup
=
False
overlay
.
mergeTools
=
[
"
PileupTrackHitMergeTool/MyTrackHitMergeTool
"
]
overlay
.
PileUpTool
=
pileuptool
overlay
.
OutputLevel
=
DEBUG
trk_b_coll
=
SimTrackerHitsCollector
(
"
trk_b_coll
"
,
inputSimTrackerHits
=
tracker_barrel_collections
,
outputSimTrackerHits
=
"
TrackerBarrelAllHits
"
)
algorithms
.
append
(
trk_b_coll
)
trk_b_digi
=
TrackerDigi
(
"
trk_b_digi
"
,
inputHitCollection
=
trk_b_coll
.
outputSimTrackerHits
,
outputHitCollection
=
"
TrackerBarrelRawHits
"
,
timeResolution
=
8
)
algorithms
.
append
(
trk_b_digi
)
vtx_b_coll
=
SimTrackerHitsCollector
(
"
vtx_b_coll
"
,
inputSimTrackerHits
=
vertex_barrel_collections
,
outputSimTrackerHits
=
"
VertexBarrelAllHits
"
)
algorithms
.
append
(
vtx_b_coll
)
vtx_b_digi
=
TrackerDigi
(
"
vtx_b_digi
"
,
inputHitCollection
=
vtx_b_coll
.
outputSimTrackerHits
,
outputHitCollection
=
"
VertexBarrelRawHits
"
,
timeResolution
=
8
)
algorithms
.
append
(
vtx_b_digi
)
mm_b_coll
=
SimTrackerHitsCollector
(
"
mm_b_coll
"
,
inputSimTrackerHits
=
mpgd_barrel_collections
,
outputSimTrackerHits
=
"
MPGDTrackerBarrelAllHits
"
)
algorithms
.
append
(
mm_b_coll
)
mm_b_digi
=
TrackerDigi
(
"
mm_b_digi
"
,
inputHitCollection
=
mm_b_coll
.
outputSimTrackerHits
,
outputHitCollection
=
"
MPGDTrackerBarrelRawHits
"
,
timeResolution
=
8
)
algorithms
.
append
(
mm_b_digi
)
# Tracker and vertex reconstruction
trk_b_reco
=
TrackerHitReconstruction
(
"
trk_b_reco
"
,
inputHitCollection
=
trk_b_digi
.
outputHitCollection
,
outputHitCollection
=
"
TrackerBarrelRecHits
"
)
algorithms
.
append
(
trk_b_reco
)
vtx_b_reco
=
TrackerHitReconstruction
(
"
vtx_b_reco
"
,
inputHitCollection
=
vtx_b_digi
.
outputHitCollection
,
outputHitCollection
=
"
VertexBarrelRecHits
"
)
algorithms
.
append
(
vtx_b_reco
)
mm_b_reco
=
TrackerHitReconstruction
(
"
mm_b_reco
"
,
inputHitCollection
=
mm_b_digi
.
outputHitCollection
,
outputHitCollection
=
"
MPGDTrackerBarrelRecHits
"
)
algorithms
.
append
(
mm_b_reco
)
input_tracking_hits
=
[
str
(
trk_b_reco
.
outputHitCollection
),
str
(
vtx_b_reco
.
outputHitCollection
),
]
input_tracking_hits
.
append
(
str
(
mm_b_reco
.
outputHitCollection
))
trk_hit_col
=
TrackingHitsCollector
(
"
trk_hit_col
"
,
inputTrackingHits
=
input_tracking_hits
,
trackingHits
=
"
trackingHits
"
)
algorithms
.
append
(
trk_hit_col
)
# Hit Source linker
sourcelinker
=
TrackerSourceLinker
(
"
sourcelinker
"
,
inputHitCollection
=
trk_hit_col
.
trackingHits
,
outputSourceLinks
=
"
TrackSourceLinks
"
,
outputMeasurements
=
"
TrackMeasurements
"
)
algorithms
.
append
(
sourcelinker
)
## Track param init
truth_trk_init
=
TrackParamTruthInit
(
"
truth_trk_init
"
,
inputMCParticles
=
"
MCParticles
"
,
outputInitialTrackParameters
=
"
InitTrackParams
"
)
algorithms
.
append
(
truth_trk_init
)
# Tracking algorithms
trk_find_alg
=
TrackFindingAlgorithm
(
"
trk_find_alg
"
,
inputSourceLinks
=
sourcelinker
.
outputSourceLinks
,
inputMeasurements
=
sourcelinker
.
outputMeasurements
,
inputInitialTrackParameters
=
"
InitTrackParams
"
,
outputTrajectories
=
"
trajectories
"
)
algorithms
.
append
(
trk_find_alg
)
parts_from_fit
=
ParticlesFromTrackFit
(
"
parts_from_fit
"
,
inputTrajectories
=
"
trajectories
"
,
outputParticles
=
"
ReconstructedParticles
"
,
outputTrackParameters
=
"
outputTrackParameters
"
)
algorithms
.
append
(
parts_from_fit
)
trk_proj
=
TrackProjector
(
"
trajs_from_fit
"
,
inputTrajectories
=
trk_find_alg
.
outputTrajectories
,
outputTrackSegments
=
"
outputTrackSegments
"
)
algorithms
.
append
(
trk_proj
)
out
=
PodioOutput
(
"
out
"
,
filename
=
output_rec_file
)
out
.
outputCommands
=
[
"
keep *
"
,
"
drop BarrelTrackSourceLinks
"
,
"
drop InitTrackParams
"
,
"
drop trajectories
"
,
"
drop outputSourceLinks
"
,
"
drop outputInitialTrackParameters
"
,
"
keep MCParticles
"
]
algorithms
.
append
(
out
)
ApplicationMgr
(
TopAlg
=
algorithms
,
EvtSel
=
'
NONE
'
,
EvtMax
=
n_events
,
ExtSvc
=
[
podioevent
,
geo_service
],
OutputLevel
=
WARNING
)
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment