Installing Geant4 Release 4.8.0p01 on Macintosh OSX.

 

Installation guides are available for a variety of different Geant4 releases and operating systems.  Be sure to use the appropriate guide for your Geant4 release and system.  The full set of guides can be found at:

http://geant4.slac.stanford.edu/installation

 

Contents:

 

What are the two pieces of software required for building Geant4?

 

Getting and Installing CLHEP

 

Getting Geant4

 

Doing the Initial Build

 

Creating the setup script

 

The Geant4 Work Directory

 

Selecting an Example Application

 

Configuring the Environment

 

Building an Example Application

 

Running

 

Single versus Multi-User Installation

 

What are the two pieces of software required for building Geant4?

 

XCode 2.0:

XCode 2.0 is the compiler that is recommended for Geant4 on Macintosh OSX.

Earlier versions of XCode will give you problems.  To check your version, go to the Apple menu, "About this Mac", "More InfoÉ", "Software Applications" and then find XCode.

 

CLHEP:

CLHEP is a set of base libraries that have long provided great functionality for the particle physics community.  They provide things like matrix manipulations and four-vector tools.  The Geant4 collaboration has chosen to use these libraries rather than re-invent these wheels.  Please note that while CLHEP and Geant4 both come out of the particle physics communities, they are separate products - the Geant4 collaboration is not responsible for maintenance, distribution or documentation of CLHEP.

 

Getting and Installing CLHEP

 

Go to the CLHEP precompiled binaries download page:

http://proj-clhep.web.cern.ch/proj-clhep/DISTRIBUTION/clhep.html

 

Select "Mac OS X 10.4(Tiger) CLHEP 1.9.2.2 for gcc 4.0"

which corresponds to:

http://proj-clhep.web.cern.ch/proj-clhep/DISTRIBUTION/distributions/clhep-1.9.2.2-osx104-gcc40.tgz

 

The file is about 19MB.

 

The file will automatically unzip and will be placed on your desktop as:

clhep-1.9.2.2-osx104-gcc40.tar

 

Click on the file.

It will automatically un-tar and leave you with a folder on your desktop:

clhep-1.9.2.2-osx104-gcc40

 

Put this into your Applications folder.

 

You're done setting up CLHEP.

 

Much more detailed instructions on installation of CLHEP are available from the CLHEP web site:

http://proj-clhep.web.cern.ch/proj-clhep/INSTALLATION/newCLHEP-install.html

 

Getting Geant4

 

From the top of the Geant4 home page:

http://geant4.web.cern.ch/geant4/

 

Select "Download" from near the top right corner of the page.

 

Select "Unix tar format, compressed using gzip"

which corresponds to:

http://geant4.web.cern.ch/geant4/support/source/geant4.8.0.p01.tar.gz

 

The file is about 14M.

 

The file will automatically unzip and will be placed on your desktop as:

geant4.8.0.p01.tar

 

Click on the file.

It will automatically un-tar and leave you with a folder on your desktop:

geant4.8.0.p01

 

Put this into your Applications folder.

 

Depending on the physics of your particular application, you may need to install additional data files.  These data files can be downloaded separately from the Geant4 source distribution page (the same place where you got Geant4 itself).

 

Create a new folder within /Applications/geant4.8.0.p01 to hold any of these required data files.

/Applications/geant4.8.0.p01/data

 

For now, pick up the "data files for low energy electromagnetic processes":

http://geant4.web.cern.ch/geant4/support/source/G4EMLOW.3.0.tar.gz

 

The file is about 7.6M.

 

The file will automatically unzip and will be placed on your desktop as:

G4EMLOW3.0.tar

 

Click on the file.

It will automatically un-tar and leave you with a folder on your desktop:

G4EMLOW3.0

 

Put this into your Applications/geant4.8.0.p01/data folder.

 

Doing the Initial Build

 

TAKE YOUR TIME AT THIS STAGE, DON'T RUSH IT.

Mistakes made at this stage can be very time-consuming to correct.  Slow down.

Maybe get a cup of coffee (or a glass of wine) before you proceed.  Breathe.

 

Finally, unless you're absolutely sure your are starting from a nice clean system, make sure you don't have any pre-existing Geant4 environment variables.  You can use the "printenv" command to show all variables, and filter this with a "grep" for the string G4 as follows:

From a Terminal or xterm window:

printenv | grep G4

If any variables show up, find out what is setting them and remove them.  They might be coming from some other script that you invoke upon login for some other project.  Take the time now to find the cause and resolve it.

 

From a Terminal or xterm window:

cd /Applications/geant4.8.0.p01/

./Configure -build

 

You will be asked a series of questions.

In most cases, you can just take the default response (by hitting carriage return).

But pay close attention so that you do not accept the default for the following questions:

 

When it says:

Please, specify default directory where ALL the Geant4 data is installed:

Accept the default.

 

But at the next question, when it says almost but not quite the same thing:

Please, specify default directory where the Geant4 data is installed:

Enter: 1

This tells it that you are going to make a correction to the location of the first data file.

This is necessary due to a bug in this version of the configuration script.

 

It will then ask:

Where is Geant4 PhotonEvaporation data installed?

Enter something like: /Applications/geant4.8.0.p01/data/PhotonEvaporation2.0

That is, give it what it had suggested for the default but add on a "2.0" at the end.

 

It will say:

File /Applications/geant4.8.0.p01/data/PhotonEvaporation2.0 doesn't exist.  Use that name anyway?

Enter: y

 

You will have to repeat this procedure for one more data file as follows.

When it says:

Please, specify default directory where the Geant4 data is installed:

Enter: 2

 

It will then ask:

Where is Geant4 RadiativeDecay data installed?

Enter something like: /Applications/geant4.8.0.p01/data/RadiativeDecay3.0

That is, give it what it had suggested for the default but add on a "3.0" at the end.

 

It will say:

File /Applications/geant4.8.0.p01/data/RadiativeDecay3.0 doesn't exist.  Use that name anyway?

Enter: y

 

Once more you will see:

Please, specify default directory where the Geant4 data is installed:

 

You are done correcting the data file locations.

Hit enter to accept the values as they now stand.

 

Next, it will say:

Could not find CLHEP installed on this system!

 

First, confirm that you have installed your CLHEP to

/Applications/clhep-1.9.2.2-osx104-gcc40

 

Make sure you have lib, bin and include subdirectories in that directory.

If not, recheck your CLHEP installation.  If so, proceed.

 

Enter: /Applications/clhep-1.9.2.2-osx104-gcc40

Or wherever you've decided to keep CLHEP.

 

Take the default for everything else except:

 

When it asks about:

G4VIS_BUILD_OPENGLX_DRIVER

G4VIS_USE_OPENGLX

Enter: y

This tells Geant4 that you want to include the optional OpenGL Visualization driver.

 

When it asks about:

G4VIS_BUILD_RAYTRACERXX_DRIVER

G4VIS_USE_RAYTRACERX

Enter: y

This tells Geant4 that you want to include the optional RayTracerX Visualization driver.

 

When it asks about:

OGLHOME

Enter: /usr/X11R6

 

Take the default for everything else.

 

Once all of the questions have been answered, you will be told:

WARNING: the generated configuration file

can be edited if necessary!

You can introduce any change to the configuration file

/Applications/geant4.8.0.p01/.config/bin/Darwin-g++/config.sh before the final installation.

To do so, use a shell escape now (e.g. !vi /Applications/geant4.8.0.p01/.config/bin/Darwin-g++/config.sh).

 

Press [Enter] to start installation or use a shell escape to edit config.sh:

 

At this point, what you have seen in this question and answer session should match what you find in this web directory as:

Geant4Build.txt

 

You are ready to proceed with the build.

Hit Enter.

 

You will then see:

Now starting Geant4 libraries build...

 

On this machine the G4SYSTEM=Darwin-g++

On this machine the G4INSTALL=/Applications/geant4.8.0.p01

On this machine the G4TMP=/Applications/geant4.8.0.p01/tmp

On this machine the G4LIB=/Applications/geant4.8.0.p01/lib

On this machine the G4LEVELGAMMADATA=/Applications/geant4.8.0.p01/data/PhotonEvaporation2.0

On this machine the G4RADIOACTIVEDATA=/Applications/geant4.8.0.p01/data/RadiativeDecay3.0

On this machine the G4LEDATA=/Applications/geant4.8.0.p01/data/G4EMLOW3.0

On this machine the NeutronHPCrossSections=/Applications/geant4.8.0.p01/data/G4NDL3.7

On this machine the G4ELASTICDATA=/Applications/geant4.8.0.p01/data/G4ELASTIC1.1

On this machine the CLHEP_BASE_DIR=/Applications/clhep-1.9.2.2-osx104-gcc40

On this machine the CLHEP_INCLUDE_DIR=/Applications/clhep-1.9.2.2-osx104-gcc40/include

On this machine the CLHEP_LIB_DIR=/Applications/clhep-1.9.2.2-osx104-gcc40/lib

On this machine the CLHEP_LIB=CLHEP

On this machine the G4VIS_BUILD_OPENGLX_DRIVER=1

On this machine the G4VIS_BUILD_RAYTRACERX_DRIVER=1

On this machine the G4VIS_USE_OPENGLX=1

On this machine the G4VIS_USE_RAYTRACERX=1

On this machine the OGLHOME=/usr

On this machine the G4LIB_BUILD_STATIC=1

On this machine the G4LIB_USE_GRANULAR=1

 

Starting build...

 

*************************************************************

 Installation Geant4 version : geant4-08-00-patch-01

                            Copyright : Geant4 Collaboration

*************************************************************

Making dependency for file src/G4ios.cc ...

Making dependency for file src/G4coutDestination.cc ...

Making dependency for file src/G4VStateDependent.cc ...

Making dependency for file src/G4VExceptionHandler.cc ...

Making dependency for file src/G4UnitsTable.cc ...

Making dependency for file src/G4Timer.cc ...

Making dependency for file src/G4StateManager.cc ...

Making dependency for file src/G4PhysicsVector.cc ...

Making dependency for file src/G4PhysicsTable.cc ...

Making dependency for file src/G4PhysicsOrderedFreeVector.cc ...

Making dependency for file src/G4PhysicsLogVector.cc ...

Making dependency for file src/G4PhysicsLnVector.cc ...

Making dependency for file src/G4PhysicsLinearVector.cc ...

Making dependency for file src/G4PhysicsFreeVector.cc ...

Making dependency for file src/G4OrderedTable.cc ...

Making dependency for file src/G4LPhysicsFreeVector.cc ...

Making dependency for file src/G4Exception.cc ...

Making dependency for file src/G4DataVector.cc ...

Making dependency for file src/G4AllocatorPool.cc ...

Compiling G4AllocatorPool.cc ...

Compiling G4DataVector.cc ...

Compiling G4Exception.cc ...

 

Once you see any lines like:

Compiling G4AllocatorPool.cc ...

with no errors,

the compilation is successfully under way.

 

Adjust your machine's power management properties so that it doesn't go to sleep, and then walk away for a long long time.  Wait, and wait, and wait, for the initial compilation to run.

 

The same information that is showing on the console is also being written to a log file so that you can review it later if necessary.  The information will appear in:

/Applications/geant4.8.0.p01/.config/bin/Darwin-g++/g4make.log

 

An example of how this log file should look can be found in this same web directory as:

Geant4Make.txt

 

When you get to the part about G4OpenGL, you will see some warning messages that can be ignored.  They will have the form:

Creating/replacing object files in /Applications/geant4.8.0.p01/lib/Darwin-g++/libG4OpenGL.a ...

ar: creating archive /Applications/geant4.8.0.p01/lib/Darwin-g++/libG4OpenGL.a

ranlib: file: /Applications/geant4.8.0.p01/lib/Darwin-g++/libG4OpenGL.a(G4OpenGLImmediateWin32.o) has no symbols

ranlib: file: /Applications/geant4.8.0.p01/lib/Darwin-g++/libG4OpenGL.a(G4OpenGLImmediateWin32Viewer.o) has no symbols

ranlib: file: /Applications/geant4.8.0.p01/lib/Darwin-g++/libG4OpenGL.a(G4OpenGLImmediateXm.o) has no symbols

 

You can ignore these.  OpenGL will still be usable.

 

Eventually, you will see messages stating that libname.map has been built, then you will see messages about successful completion:

libmap stage:

Searching for GNUmakefiles and sorting ...

Weeding out paths and files ...

Making libname.map starter file ...

Making libname.map ...

  Reading library name map file...

warning: this program uses gets(), which is unsafe.

  Reading dependency files...

  Checking for circular dependencies...

  Reordering according to dependencies...

  Writing new library map file...

 

####################################################

# Your Geant4 installation seems to be successful! 

# To be sure please have a look into the log file: 

# /Applications/geant4.8.0.p01/.config/bin/Darwin-g++/g4make.log                                 

####################################################

 

Creating the setup script

 

The configure process has set up some environment variables that you will want to have in future sessions.  Have configure make you an environment setup script by typing:

./Configure

(that was with no options, as opposed to ./Configure -build that you typed earlier).

 

You will see the following:

                --- Geant4 Toolkit Installation  ---

                  (setting environments for USER )

 

---------------------------------------------------

The Geant4 toolkit installation was found.

The files env.[c]sh will be copied to your current directory.

For setting Geant4 environments you should make:

 

source env.csh

or

. env.sh

 

It will also check G4WORKDIR setting and set it to

your HOME if needed.

You can use these files also for further modifications

(adding your own environments).

---------------------------------------------------

 

Your directory /Applications/geant4.8.0.p01 will now contain two scripts:

env.sh

and

env.csh

 

The Geant4 Work Directory

 

You have now built the Geant4 toolkit.  If you have learned a little about Geant4, you will know that Geant4 is not an application but rather a toolkit from which you can build any number of applications.  So before you can test Geant4, you need an example application.

 

You should create a new directory, outside of your Geant4 installation area, where you will keep your example applications.  This separation of spaces will help you avoid accidentally messing up your main Geant4 installation, and will insure that if you eventually update your main Geant4 installation (for example when a newer Geant4 release is available), your personal application work will not be disturbed.

 

Create a new directory for your work, and designate it as your G4WORKDIR.

 

For example, if you want your work to be in /Applications/g4work:

export G4WORKDIR=/Applications/g4work

 

Selecting an Example Application

 

You can try any of the Geant4 examples.  Some suggested starting points are any of the Novice examples

/Applications/geant4.8.0.p01/examples/novice

or the analysis example

/Applications/geant4.8.0.p01/examples/extended/analysis/A01

 

Each example is described in a detailed README it the example's top level directory.

 

Whichever example you choose, copy it to your Geant4 work directory.

For example, you might end up with:

/Applications/g4work/A01

 

Configuring the Environment

 

Note that this step needs to be redone any time you start a fresh Terminal or xterm window.

 

Type:

export G4WORKDIR=/Applications/g4work

source /Applications/geant4.8.0.p01/env.sh

 

It will respond:

On this machine the G4SYSTEM=Darwin-g++

On this machine the G4INSTALL=/Applications/geant4.8.0.p01

On this machine the G4LIB=/Applications/geant4.8.0.p01/lib

On this machine the G4LEVELGAMMADATA=/Applications/geant4.8.0.p01/data/PhotonEvaporation2.0

On this machine the G4RADIOACTIVEDATA=/Applications/geant4.8.0.p01/data/RadiativeDecay3.0

On this machine the G4LEDATA=/Applications/geant4.8.0.p01/data/G4EMLOW3.0

On this machine the NeutronHPCrossSections=/Applications/geant4.8.0.p01/data/G4NDL3.7

On this machine the G4ELASTICDATA=/Applications/geant4.8.0.p01/data/G4ELASTIC1.1

On this machine the CLHEP_BASE_DIR=/Applications/clhep-1.9.2.2-osx104-gcc40

On this machine the CLHEP_INCLUDE_DIR=/Applications/clhep-1.9.2.2-osx104-gcc40/include

On this machine the CLHEP_LIB_DIR=/Applications/clhep-1.9.2.2-osx104-gcc40/lib

On this machine the CLHEP_LIB=CLHEP

On this machine the G4VIS_BUILD_OPENGLX_DRIVER=1

On this machine the G4VIS_BUILD_RAYTRACERX_DRIVER=1

On this machine the G4VIS_USE_OPENGLX=1

On this machine the G4VIS_USE_RAYTRACERX=1

On this machine the OGLHOME=/usr/X11R6

On this machine the G4LIB_BUILD_STATIC=1

On this machine the G4LIB_USE_GRANULAR=1

On this machine the G4UI_USE_TCSH=1

In your environment you have the G4WORKDIR=/Applications/g4work

 

A further note about the environment setup scripts:

The env scripts do not set every environment variable that could be used by Geant4.  They only set those variables that you had declared to non-default values in the configure process.  This works fine because any variable that Geant4 does not find is assumed to be default.  But if you are also setting some of your Geant4 environment variables elsewhere, you can end up with inconsistent results.  That is why you were strongly advised to make sure you had no pre-existing Geant4 variables set before you began the Geant4 build.

 

Building an Example Application

 

Did you "Configure the Environment" as described above?  Remember that you need to do this every time you start a new Terminal or xterm window.

 

Build your example by typing:

cd $G4WORKDIR/A01

make

 

You will see output beginning with:

Making dependency for file A01app.cc ...

Making dependency for file src/A01Trajectory.cc ...

Making dependency for file src/A01TrackingAction.cc ...

Making dependency for file src/A01PrimaryGeneratorMessenger.cc ...

Making dependency for file src/A01PrimaryGeneratorAction.cc ...

 

And ending with:

Compiling A01app.cc ...

warning: this program uses gets(), which is unsafe.

Using granular libraries ...

Linking A01app ...

/usr/bin/ld: warning multiple definitions of symbol _glPointParameteri

/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib(gll_api.o) definition of _glPointParameteri

/usr/X11R6/lib/libGL.dylib(dri_dispatch.o) definition of _glPointParameteri

/usr/bin/ld: warning multiple definitions of symbol _glPointParameteriv

/System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib(gll_api.o) definition of _glPointParameteriv

/usr/X11R6/lib/libGL.dylib(dri_dispatch.o) definition of _glPointParameteriv

/usr/bin/ld: warning suggest use of -bind_at_load, as lazy binding may result in errors or different symbols being used

symbol _glPointParameteri used from dynamic library /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib(gll_api.o) not from earlier dynamic library /usr/X11R6/lib/libGL.1.dylib(dri_dispatch.o)

symbol _glPointParameteriv used from dynamic library /System/Library/Frameworks/OpenGL.framework/Versions/A/Libraries/libGL.dylib(gll_api.o) not from earlier dynamic library /usr/X11R6/lib/libGL.1.dylib(dri_dispatch.o)

 

The complete output from the above command can be found in this same web directory as:

A01Make.txt

 

If the build is successful, you will see the completed application file in your $G4WORKDIR directory such as:

$G4WORKDIR/bin/Darwin-g++/A01app

 

Running

 

Since the example will be using OpenGL for visualization, you need to run it from an xterm window rather than a Terminal window (open the X11 application and then from its "Applications" menu, select "xterm").

 

As always for a new xterm or Terminal window, configure the environment:

export G4WORKDIR=/Applications/g4work

source /Applications/geant4.8.0.p01/env.sh

 

Then, to run your example, cd to the example's top level directory, such as:

cd $G4WORKDIR/A01

 

And from there, run the newly created executable:

$G4WORKDIR/bin/Darwin-g++/A01app

 

You will see a response that starts with:

*************************************************************

 Geant4 version Name: geant4-08-00-patch-01    (10-February-2006)

                      Copyright : Geant4 Collaboration

                      Reference : NIM A 506 (2003), 250-303

                            WWW : http://cern.ch/geant4

*************************************************************

 

Visualization Manager instantiating...

Visualization Manager initialising...

Registering graphics systems...

 

 

You have successfully registered the following graphics systems.

Current available graphics systems are:

  ASCIITree (ATree)

  DAWNFILE (DAWNFILE)

  GAGTree (GAGTree)

  G4HepRep (HepRepXML)

  G4HepRepFile (HepRepFile)

  RayTracer (RayTracer)

  VRML1FILE (VRML1FILE)

  VRML2FILE (VRML2FILE)

  OpenGLImmediateX (OGLIX)

  OpenGLStoredX (OGLSX)

  RayTracerX (RayTracerX)

 

And ends with:

EMcalorimeterPhysical[0] EMcalorimeterLogical 1 CsI

      cellPhysical[-1] cellLogical 0 CsI /EMcalorimeter

    HadCalorimeterPhysical[0] HadCalorimeterLogical 1 Lead

      HadCalColumnPhysical[-1] HadCalColumnLogical 1 Lead

        HadCalCellPhysical[-1] HadCalCellLogical 1 Lead

          HadCalLayerPhysical[-1] HadCalLayerLogical 1 Lead

            HadCalScintiPhysical[0] HadCalScintiLogical 0 Scintillator /HadCalorimeter

Idle>

 

The complete output from the above command can be found in this same web directory as:

A01Run.txt

 

Make sure your output included a mention of the graphics systems:

  OpenGLImmediateX (OGLIX)

  OpenGLStoredX (OGLSX)

 

If those didn't show up, you have missed something in the above instructions.

Did you correctly answered the questions about OpenGL in the ./Configure -build procedure?

Did you get error messages during that procedure?

Did you follow the instructions in the above section, "Creating the setup script"?

Did you follow the instructions above about "As always for a new xterm or Terminal window, configure the environmentÉ."?

 

If you still can't figure out why you don't have OpenGL, you can still proceed, but you will have to use some other graphics driver.  See some notes a little later in this document about how to use the HepRepFile driver.

 

From here, we'll assume you have OpenGL successfully loaded.

 

From the idle prompt, visualize the example by typing the following:

/vis/scene/create

/vis/open OGLIX

 

You will get the following response:

WARNING: objects with visibility flag set to "false" will not be drawn!

  "/vis/viewer/set/culling global false" to Draw such objects.

  Also see other "/vis/viewer/set" commands.

G4Scene::AddWorldIfEmpty: The scene was empty,

   "world" has been added.

 

And an OpenGL window will appear and the example geometry will be drawn, as in:

 

To add trajectories and hits to the visualization, and then run an event:

/vis/scene/add/trajectories

/vis/scene/add/hits

/run/beamOn 1

 

You will then see:

 

When you are finished with your Geant4 session, just type:

exit

 

For more details on using OpenGL for Geant4, see:

http://geant4.slac.stanford.edu/Presentations/vis/G4OpenGLTutorial/G4OpenGLTutorial.html

 

Here's another example.  This one makes output go to a HepRep file, suitable for viewing in the WIRED3 HepRep Browser:

$G4WORKDIR/bin/Darwin-g++/A01app

/vis/scene/create

/vis/open HepRepFile

/vis/viewer/flush

/vis/scene/add/trajectories

/vis/scene/add/hits

/run/beamOn 1

 

For more details on using WIRED3 for Geant4, see:

http://geant4.slac.stanford.edu/Presentations/vis/G4WIREDTutorial/G4WIREDTutorial.html

 

Note: WIRED3 and Geant4 do not have to run on the same machine.  You can copy the .heprep file from the Geant4 machine to the machine with Wired3, or you can simply make the .heprep file visible from the web, and let Wired pick it up via the url.

Also note that the .heprep file can be zipped to about 5 percent of original size and Wired3 can then read in the zipped version (you don't need to unzip the file).

 

You now have Geant4 installed and have demonstrated a few examples using two different visualization systems.

 

Single versus Multi-User Installation

 

The above instructions assumed you were doing a single-user installation.  They had you keep all of the build products in the same area as your CLHEP and Geant4 source.  Note however that both of these packages support standard multi-user installation processes.

 

For CLHEP, just specify a different value for "--prefix".

 

For Geant4, when ./Configure -build asks you to "Specify the path where Geant4 libraries and source files should be installed", specify whatever area you want instead of taking the default.  When you are asked about the CLHEP library, be sure to specify the same location that you specified during the CLHEP installation.  Then, after you've installed Geant4 as described below, issue an additional command (as root user), ./Configure -install.

 

 

I hope these instructions have been helpful.

If you find any problems or can suggest corrections, please let me know.

 

Joseph Perl

Stanford Linear Accelerator Center

14 December 2006