Sdobbs splitting sim-recon

From GlueXWiki
Jump to: navigation, search


One of the difficulties in managing and deploying sim-recon this past year has been managing extra simulation branches. Although the raw data is only reconstructed a limited number of times, development affected simulated data continues on, and one often would like to use a more recent version of the simulation code, either with improved event generation or detector smearing, for example, with the same reconstruction code used for a particular data set. Practically, most development goes on in the master branch, and maintaining additional branches has proven to be time consuming.

To help with this development and deployment problem, we propose splitting off the code primarily used to for the generation of simulated data. One important consideration is that the original sim-recon is treated like a "parent" repository - the new simulation package is allowed to depend on libraries and include files in the original sim-recon, but the leftover packages are not allowed to depend on anything in the "new sim" repository.

Three main sections will need to be moved: - src/programs/Simulation -- These consist of HDGeant, used for simulating the detector response (soon to be deprecated in favor of HDGeant4); mcsmear, used for applying additional smearing; various event generators - src/plugins/Simulation -- Miscellaneous plugins, currently not very much used - src/libraries/AMPTOOLS_AMPS, AMPTOOLS_DATAIO, AMPTOOLS_MCGEN -- These libraries are mostly used by event generators and other user programs which use AmpTools, not reconstruction code, so the natural place for these libraries seems to be in this repository

We would like to do this before the version of code used for the next reconstruction launch is frozen.

Notes on splitting off gluex_sim


Need to split off src/programs/Simulation and src/plugins/Simulation from sim-recon


make new (empty) repo -
clone sim-recon git repo
cd sim-recon
git filter-branch --prune-empty --subdirectory-filter src/programs/Simulation/ master   # delete the rest of sim-recon
git remote set-url origin   # associate the remote master with the empty repo
git push origin master  # push src/programs/Simulation to new (temporary) remote repo

change to new (empty) gluex_sim repo
git subtree add --prefix=src/programs master   # move src/programs/Simulation from temp repo to gluex_sim along with history 

Note that minor modifications to SBMS were made.

Second try

Second iteration

Save the following directories:

  • src/programs/Simulation
  • src/plugins/Simulation
  • src/libraries/AMPTOOLS_AMPS
  • src/libraries/AMPTOOLS_DATAIO
  • src/libraries/AMPTOOLS_MCGEN

Create new repository (ex: and follow this example session:> mkdir ~/work/gluex_sim_migration> cd ~/work/gluex_sim_migration> git clone> cd sim-recon> git filter-branch --index-filter 'git rm --cached -qr --ignore-unmatch -- . && git reset -q $GIT_COMMIT -- src/programs/Simulation src/plugins/Simulation src/libraries/AMPTOOLS_AMPS src/libraries/AMPTOOLS_DATAIO src/libraries/AMPTOOLS_MCGEN' --prune-empty -- --all
# copy modified SBMS for new repo, see /w/halld-scifs17exp/home/sdobbs/gluex_sim_migration/sim-recon/src> cp -R ../../gluex_sim/src/SBMS .   
# copy and modify some SConscripts from sim-recon> cp $HALLD_HOME/src/libraries/SConscript libraries/> cp $HALLD_HOME/src/programs/SConscript programs/> cp $HALLD_HOME/src/plugins/SConscript plugins/