function rgb_sig_init(pat)
%% input parameters
    n_cameras		= 4;
    f_length		= 20;
    f_number		= 4;
    dset			= 'interpolant_spill2';
    %root_dir		= '/Volumes/home/test';
    %sig_setup_dir	= '/Volumes/home/test';
    root_dir = "/Volumes/home/test";
    sig_setup_dir = "/Volumes/home/test";
    
    % path to camera model
    sig				= struct();
    sig.calib_dir	= [root_dir "/calib/"];
    sig.calib_pat	= '%s/C%d_f%0.0f_N%0.1f_%s.mat';
    sig.calib_file = "";
    if nargin < 1
        fprintf("sig: default calib file");
        sig.calib_file	= sprintf(sig.calib_pat, sig.calib_dir, n_cameras, f_length, f_number, dset);
    else
        sig.calib_file = strjoin([sig.calib_dir pat ".mat"],"");
    end
    % where to save
    sig_setup_pat	= '%s/SIG_C%d_f%0.0f_N%0.1f_%s.mat';
    if nargin < 1
        sig_setup_file	= sprintf(sig_setup_pat, sig_setup_dir, n_cameras, f_length, f_number, dset);
    else
        sig_setup_file = strjoin([root_dir '/SIG_' pat '.mat'],"");
    end
    
    % source data: point particle clouds with velocity, rescaled to physical
    % units (mm/s)
    sig.src_dir		= ['~/gigatrack_files/'];
    sig.src_pat		= '%s/z%03d_t%03d.mat';	
    sig.src_rng_t	= 1:1;
    sig.src_rng_z	= 1:1;
    % only sample a subset of particles?
    sig.n_subsample	= 5e5;%100000; 
    
    % additive poisson image noise
    sig.im_noise_level=2.5;
    sig.im_mean_bright=500; % mean brightness of particle, counts
    
    % output data: particle images
    if nargin < 1
        sig.dst_dir		= [root_dir '/' num2str(n_cameras) 'C_' dset '/'];
    else
        sig.dst_dir = strjoin([root_dir '/calib/' pat], "");
    end
    sig.dst_pat		= '%s/z%03d_t%03d.cam%d.tif';
    try
	    mkdir(sig.dst_dir);
    end
    
    %% save to file
    fprintf('saving configuration to %s\n', sig_setup_file);
    if exist(sig_setup_file, 'file') ~= 0
	    %error('configuration already exists, cannot overwrite');
    end
    save(sig_setup_file, '-struct', 'sig');
