Sdobbs splitting sim-recon
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/