Version 2.4 MCFAST with forward and central tracking The version v2.4 release of MCFAST contains a complete rewrite of the tracking code from v1.4, but is very similar to v2.3. The techniques are similar to those used in v1.4.1 which was based on the program trackerr. More complete documentation on the fitting method used in v2.4 can be found in ~bphys/docs/avery. The user needs to run the following script to set up mcfast on fsgi02.fnal.gov. ~bphyslib/setup_files/mcenv.fnalu v2.4 (csh) ~bphyslib/setup_files/mcenv.sh.fnalu v2.4 (sh) This will setup the proper paths to the mcfast libraries. If you are using mcfast at another site, be sure to change the $BPHYS path name in mcenv and check the file setup.$SITE_NAME. External libraries are set up in ~bphyslib/setup.$UNAME. The new version can be found in ~bphyslib/mcfast/v2.4. The following directories contain mcfast/v2.4/Explorer -- SGI 3-D graphics for mcfast mcfast/v2.4/db -- templates for geometry structures mcfast/v2.4/doc -- documentation for this release mcfast/v2.4/example -- Sample Makefiles, geometry and command files mcfast/v2.4/inc -- include files can be found in the subdirectories mcfast/v2.4/lib.$UNAME -- mcfast libraries mcfast/v2.4/src -- source code can be found in subdirectories mcfast/v2.4/example -- *.cmd command files for control of mcfast *.db geometry file *.fil list of data files Makefile stable.dec -- table for mcfast decays (set make_decays .TRUE. in .cmd file) mcfast/v2.4/inc/event -- include files and structure definitions for generator particles and tracks /geom -- include files and structure definitions for detector geometry /trig -- include files for the trigger mcfast/v2.4/src/datafile- data file management /dbin_mcfast -- routines for DBin interface /dst -- XDR filters and structure /gamma -- photon reconstruction routines /gen -- general routines for mcfast /geom -- read in and set up detector geometry /graph - interface to explorer routines /io -- xdr routines for i/o of structures /muon -- muon tracking - no bfield /shower -- em shower code /track -- tracking code /trig -- trigger code /user -- default user routines /util -- various utility routines /vertex -- vertex fitting User routines: see ~bphyslib/mcfast/v2.4/src/user usr_analysis.F -- user calls to mcfast tracking and analysis usr_before_trigger.F -- call to initiate trace of particles through the detector volume. Hit generation and decays in flight are also done here. usr_command.F -- called when "user" typed to the program during execution usr_filter.F -- user can filter events to save analysis time usr_generate_event.F -- controls the generation of internal events usr_hbinit.F -- initialize hbook output files usr_hbsummary.F -- close hbook files usr_hsinit.F -- initialize histoscope usr_init.F -- user initialization usr_mcfio_out.F -- user routine for calling output from MCFIO package usr_summary.F IMPORTANT NOTE TO USERS OF MCFAST: ************************************************************************ 1. All floating variables except those that are geometry related should be declared with the DFLOAT directive, rather than REAL or DOUBLE PRECISION. DFLOAT is a C-preprocessor flag which currently translates to "double precision" but can be changed in the future. DFLOAT is defined in the file dev2/inc/event/const.inc. Simply do the following in your programs: #include "const.inc" !Defines constants, units and default float type DFLOAT x, y, z !DFLOAT must be upper case The C-preprocessor will automatically translate DFLOAT to the string "double precision", so be careful not to have too many variables on the line lest you exceed the 72 character limit when DFLOAT is translated. Almost all variables defined in dev2/event/*.inc are defined as DFLOAT, as you can see for yourself. I have not changed the variables in the geometry area yet because of time. When you use ucopy and vzero with variables in a way that works when DFLOAT is set either to "real" or "double precision", simply change call ucopy(a_array, b_array, 10) to call ucopy(a_array, b_array, 10*FLOAT_WORD) where FLOAT_WORD is set to the number of standard machine words in a floating point word (1 for real and 2 for double precision). This parameter is defined in const.inc. ************************************************************************ 2. const.inc also contains definitions of units, so that there are no more implicit assumptions made about units in the program. For example, unit_meter = 100. !Length measured in centimeters unit_sec = 1.E9 !Time measured in nsec For example, if you want to define 100 microns in our defined units without knowing what those units are, simply use 1.E-4 * unit_meter mcfast uses standard units of cm, nsec, GeV and Tesla, but they can be changed to anything else by making the appropriate changes in const.inc and recompiling everything.