In general, there are three types of users:
the end user,
the application programmer,
and for large simulation tasks:
the framework provider.
The end user runs the simulation program by controlling run time parameters. The interface with the program may be a graphical user interface, an interactive command line interface, or the macro-based system for batch. The end user needs a basic knowledge of how to control the program flow but does not necessarily have to know object-oriented programming or C++.
The application programmer is central to any simulation task. A firm knowledge of C++ is required to implement code in user action classes to specify, at a minimum, the detector description, the relevant particles and physics processes, and the initial event kinematics. A manual for the application programmer is found in the User's Guide: For Application Developers .
Using standard components of Geant4, a framework provider would add interfaces to external tools, such as for example, to Computer Aided Design (CAD) programs, Object-Oriented Data Base Management Systems (ODBMS) and graphics systems. This requires the development of new classes overloading standard Geant4 functionality and hence a solid understanding of object-oriented Programming. A manual for the framework provider is found in the User's Guide: For Toolkit Developers .
All user documentation can be found on the Geant4 homepage http://cern.ch/geant4 .
References for Object-Oriented Technology:
Grady Booch, Object-Oriented Analysis and Design with Applications The Benjamin/Cummings Publishing Co. Inc, 1994, ISBN 0-8053-5340-2
R.C.Martin, Designing Object-Oriented C++ Applications Using The Booch Method, Prentice Hall 1995, ISBN 0-13-203837-4;
E. Gamma, et al., Design Patterns - Elements of Reusable Object-Oriented Software, Addison Wesley 1995, ISBN 0-201-63361-2;
References for C++:
B.Stroustrup, C++ Programming Language 3rd Edition, Addison Wesley, ISBN: 0-201-88954-4
I.Pohl, Object-Oriented Programming Using C++, 2nd Edition, Addison Wesley, ISBN: 0-201-89550-1.