Refer to the VMS program builder documentation in d0$docs:program_builder.doc for general information about the program builder.
The program builder executable is invoked by typing "pbd" followed by any standard program builder command line switches (/frame, etc.). Note the following points:
% pbd /frame=d0user/pack=isagenMultiple packages:
% pbd /frame=d0user/name=isagen/pack=\(isagen,isanalyze\)A combined package:
% pbd /frame=d0geant/pack=fulld0%A complex example:
% pbd /frame=d0user \
/name=bprime \
/zebcom=200000 \
/zebstp=500000 \
/pawc=500000 \
/packages=\(calor,\
verify_zebra,\
run_select,\
strip_trig,\
udst_to_dst,\
reco_version_select,\
duplicate_event_filter,\
drop_caph_alg,\
compute_em_quality,\
compute_mu_quality,\
cafix,\
fix_jet_et,\
particle_select,\
top_btag,\
make_udst,\
unix_utility\)
As the last example shows, the UNIX command line can accomodate a large
number of continuation lines (lines that end with \ are continued on the next
line). Such a complex invocation of the program builder would normally be
stored in a shell script. Alternatively, one can create a combined
package.
In UNIX, the concept of link options files does not exist. Therefore, the content of the VMS .opt files is contained in the UNIX link script directly.
The UNIX version of the program builder does not automatically compile the fortran hooks file. This too is automatically handled by the link script.
Upon termination, the link and setup scripts generated by program builder are not executable. They must be made executable by hand. The following command suffices to do this:
% chmod +x *.cshAs in VMS, the UNIX version of the program builder looks for framework, package and combined package .pbd files in the current working directory and in the pbd section of d0library ($d0pbd).
% pbd /frame=d0user/pack=isagen # Run program builder % chmod +x *.csh # Make program builder scripts executable % isagen_d0user_lnk.csh debug # Link debug executable, deb_isagen_d0user.x % isagen_d0user_lnk.csh # Link optimized executable, isagen_d0user.x % isagen_d0user.csh # Setup symbolic links % isagen_d0user.x # Run optimized version of program
The first argument to the link script specifies whether to link in debug or optimized mode. If the first argument is the word "debug", or reasonable variants, such as "deb" or "DEBUG", then a debug executable is created. Otherwise, an optimized executable is created.
The second and subsequent arguments to the link script are interpreted as additional link objects (e.g. object files and libraries). These arguments are intended for the inclusion of private code, which can either be replacements for standard d0library code, or unreleased code.
% pbd /frame=d0geant/pack=fulld0% # Run program builder
% chmod +x *.csh # Make program builder scripts executable
% userlib local/*.for # Generate makefile for private code
% make debug # Compile private code into debug library,
# deb_userlib.a
% fulld0_d0geant_lnk.csh debug `force_load deb_userlib.a`
# Link debug executable including private
# code from deb_userlib.a
The first three of the above steps only need to be done once. The last
two steps should be done whenever any private code needs to be modified.
The program builder setup script can be invoked with up to four arguments. The user is prompted for any missing arguments.
The fourth argument is always the "rcp type" argument. This argument takes values specified in package pbd files, such as "MC" for Monte Carlo data, "TB" for test beam data, "COSMIC" for cosmic ray data, and "" (nothing) for regular data. This argument is case sensitive and should normally be specified in upper case.
The first three arguments are framework specific. The d0user and d0geant frameworks do not look at these arguments. The d0reco framework interprets the framework-specific arguments as "input file", "sta directory" and "dst directory" respectively.
In the case of the d0user framework, an input stream consisting of multiple files of any of the above types can be specified using wildcards or file lists (see d0$d0user$frame:zbinpf.for ). A file list is a file or symbolic link with the specific name "file_names" that contains a list of input files to be processed.