Sdobbs splitting sim-recon

From GlueXWiki
Revision as of 20:26, 3 June 2018 by Sdobbs (Talk | contribs) (Second try)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Proposal

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

Example: https://github.com/sdobbs/gluex_sim

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

Example:

make new (empty) repo - https://github.com/sdobbs/sim2.git
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 https://github.com/sdobbs/sim2.git   # 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 https://github.com/sdobbs/sim2.git 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: https://github.com/sdobbs/gluex_sim_test) and follow this example session:

ifarm1402.jlab.org> mkdir ~/work/gluex_sim_migration
ifarm1402.jlab.org> cd ~/work/gluex_sim_migration
ifarm1402.jlab.org> git clone https://github.com/JeffersonLab/sim-recon
ifarm1402.jlab.org> cd sim-recon
ifarm1402.jlab.org> 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
ifarm1401.jlab.org> cp -R ../../gluex_sim/src/SBMS .   
# copy and modify some SConscripts from sim-recon
ifarm1401.jlab.org> cp $HALLD_HOME/src/libraries/SConscript libraries/
ifarm1401.jlab.org> cp $HALLD_HOME/src/programs/SConscript programs/
ifarm1401.jlab.org> cp $HALLD_HOME/src/plugins/SConscript plugins/