Backward compatibility and legacy software configurations
While it is not at all guaranteed to be possible to correctly process with the current icaruscode
version
a sample produced with an older one, we attempt to keep that possibility open at least for a while
after a breaking change is introduced.
This page collects a summary of the compatibility configurations, to be used as a look-up index; the content of each of them is described on the top of their FHiCL configuration file.
name | from | to | configuration file name |
---|---|---|---|
icarus_v2 |
v09_18_00 |
v09_24_02_02 |
services_compat_icarus-v09_18_00-v09_24_02_02.fcl |
Configuration files are kept in the icaruscode/fcl/compatibility
directory of icaruscode
repository
and they are available out of the box in the release.
Using compatibility configurations
One way to obtain job configurations proper for processing an older sample is to overwrite a current configuration with a “compatibility” settings table. When one is provided, it usually follows the code name:
services_compat_icarus-<FirstRelease>-<LastRelease>.fcl
which implies that the provided compatibility settings (which usually are for service configurations)
are valid from <FirstRelease>
to <LastRelease>
, both included.
For example, services_compat_icarus-v09_18_00-v09_24_02_02.fcl
applies to samples produced with
icaruscode
releases from v09_18_00
to v09_24_02_02
.
Each of these release intervals is associated with a tag name (the one in the example is icarus_v2
).
These configurations are meant to overwrite an existing (current) configuration with the needed settings. They are designed to be included at the end of an existing job configuration file that needs to be amended. Since it overwrites values quite blindly, configurations with special customizations should make sure that these customizations are not lost. An example of turning a standard GEANT4 configuration into a legacy one:
#include "standard_g4_icarus.fcl"
# legacy configuration for older samples:
#include "services_compat_icarus-v09_18_00-v09_24_02_02.fcl"
Note that these configurations include the settings for all the services that need a configuration change. If the base job configuration does not need the service, then that service should be explicitly erased (or it will be loaded, which may or may not have consequences). For example:
#include "multitpc_detsim_icarus.fcl"
# legacy configuration for older samples:
#include "services_compat_icarus-v09_18_00-v09_24_02_02.fcl"
# remove unused services
services.PhotonVisibilityService: @erase
Each compatibility configuration should document in its heading the Configured services
.
Legacy geometry configurations
The geometry wiki page lists some geometry configurations
that are also supposed to be used for legacy processing. Those configurations affect only the geometry;
sometimes that is sufficient, sometimes there are other services that need to be adjusted as well.
The compatibility configurations listed here use those geometry legacy configurations as needed,
and may add more settings.
If it is certain that only the geometry service is required,
like in the multitpc_detsim_icarus.fcl
example above,
including only the legacy geometry configuration will suffice (and may save from some @erase
).