Introduction to the OO Companion

MINFAST is an interactive event display and analysis tool. It is written in C++
and based on the OO application framework
ROOT.
MINFAST has a Graphical User Interface (GUI) which makes the event display
very easy to use. Being based on ROOT, fragments of C++ code, called
macros, can be composed and entered into the program at execution time.
These allow the user to access and manipulate all its internal structures, thereby
turning MINFAST into an effective analysis tool. To use this aspect of
MINFAST requires that the user has at least some knowledge of:-

OO concepts

C++ syntax

The ROOT framework

The MINOS class library

It would be quite unacceptable if it were required that the user master all, or
indeed, any of
the above before being able to do analysis. Fortunately, it is not necessary either.
At the heart of the OO paradigm is the tenet that objects, the building blocks of the software,
should hide their complexity and present simple, robust, interfaces to their
users. So with very little understanding of the above, users will be able to
interact and extend the system. The following sections of the Companion:-

have been written to provide just enough information to get users to understand simple
MINFAST macros. To speed the process some
Example Macros
are analysed and cross-referenced in terms of OO concepts, C++ syntax, ROOT and the MINOS
Class library. All this information is designed to be read piecemeal, the user follows the thread
that interests him/her and ends with bite-sized bit of information. The chances of
intellectual indigestion are minimised! In this way the user accumulates a core of knowledge
that is driven by practical examples that do things they want to do.

An alternative, independent way to get started is to look at
First Steps: In C++ and ROOT
This is a hands-on tutorial that gets the user creating simple C++ objects and creating, drawing, storing and fitting ROOT histograms and n-tuples.

It must be emphasised that this method of "on the job training" is good for getting users
working rapidly but cannot, by itself, make them proficient in OO. Having mastered
the information contained in the above sections, users are strongly urged to read a
proper C++ primer and a more systematic treatment of ROOT. In that way their understanding
can develop and they can migrate from just writing C++ fragments to writing C++ code that can
be linked into MINFAST as a permanent extension to it.