Concept Overviews
Are you a beginner?
- if so then see the
Tutorials
This page provides a links to a series of Overviews that serve 3 purposes:-
- To provide the essential concepts of the key elements of our
software and support tools plus, where appropriate, additional
information allowing novice users to put theory into practise.
- As an index into our documentation on the 3 click principle:-
- Click the required topic link on the table of contents below to move
down the page to a section on that topic.
- Click the appropriate subtopic link to go to a separate page on the
subtopic.
- The subtopic page starts with one or more slides followed by
a Notes and Further References which should have links to all
relevant WebDoc materials
This isn't fully working yet but if you cannot get to an existing
WedDoc document in 3 clicks then please email
Nick West
saying where you were trying to get to and where you tried looking
on this page. Remember click,click,click or email Nick!
- As the base material for a Set of
Tutorials
There is also a set of
Package Overviews
that are aimed specfically at people running
loon jobs.
- Background
Looking at OO, and C++ and the tools we use to build OO programs
in C++
- Organisation
Who are the people involved in the off-line software and
on what platforms does it run?
- Software Structure
Our Monte Carlo is currently in Fortran and our reconstruction
and analysis is in C++.
- Accessing the Repository
How do we get the software from FNAL?
- Installing the Base Release
How do we install the software for the first time?
- Updating the Base Release
How do we get updates when the software changes?
- Running Standard Jobs
How do we run standard jobs?
- Working with ROOT
How can ROOT be used to analyse job output?
- The Framework
How is the C++ code organised and what are the main services
it offers?
- MySQL Database
What type of database do we have and how to we manage and access it?
- Private Program Development
How do we extend the functionality of our code?
- Public Program Development
How do we add code to the code base?
- Getting Help
Where can we find help when something goes wrong or we just want
to know more?
- The OO Paradigm
The Object Oriented approach to software breaks a program
into objects,
which are bundles of data embedded in a protective
software coat.
- The C++ Language
C++ supports OO. The class
statement defines how objects are
created, behave and are finally destroyed.
- make
The is the low-level tool for program building. The user provides
a set of rules, one for each step in the build process and
then make optimizes the build process.
- cvs
The Concurrent Versioning System allows a distributed group
to develop a software collectively, catching, and helping resolve,
conflicts and tracking the full development history.
- srt
Software Release Tools is the high-level tool used by
MINOS build releases. It simplifies and standardises
the use of make and
supports builds both of the current code and frozen
releases.
- Global Organisation
Globally we are organised into a Core Group
who support
both Physicist Programmers
who develop physics applications
and End Users
who run these applications. Platform support
is strictly limited.
- Local Organisation
Each site needs to elect a Software Librarian
to install
the standard software and identify Mentors
to help local users.
- gminos and reco_minos
gminos
is the Fortran77 Monte Carlo and reco_minos
a framework
for user analysis of its results. It comes with
LABYRINTH - its own
updating and build system.
- minossoft
This is the C++ Framework used to develop reconstruction
and analysis applications. Eventually it will host the
Monte Carlo as well.
- Data Flows
gminos
and reco_minos
output cannot be directly read by
minossoft applications
but have to go through the converter reroot.
- Remote cvs access
We use a server client cvs
model. The cvs
server is at FNAL and talks
to local cvs
clients giving everyone access to our code.
- Installing the Base Release
Our software requires a number of free 3rd party libraries be installed
by local software librarians
before it can be built.
Initial installation of our libraries is via a tar file that provides
the basic srt
tools to load the latest code release. The local
software librarian
is responsible for adding a site specific
configuration file to customise it to the local site.
- Tracking Changes
The code base at FNAL is constantly being updated and its up to the
local software librarian
to use an srt tool to get the latest
updates and rebuild libraries and executables.
- Preparation
Before End Users
can run jobs they have to ensure that the
base release has been installed locally and that their environmental
variables are correctly set to point to it.
- The Standard Jobs
Currently the standard jobs are minfastjob
, for looking at MC
output, MIDAD
for data display and demojob
for user analysis.
- Configuring Jobs
MIDAD
and demojob
are both native framework applications which means that
the user can specify the job flow and configure the individual modules
at execution time via a .jcm
file.
- Writing ROOT macros
This is a very simple way to add software to extend
what our software can do.
- The ROOT Program
root is an interactive program that allows you to call our software
and analyse our data using C++ as the command language.
- ROOT as a replacement for PAW
ROOT supports all the analysis tools of PAW and more besides.
- ROOT as a Framework
The minossoft framework uses ROOT for much of its low-level
services such as I/O
Pete Border has written a
talk
describing the type of database we have and how we manage and access it.
- Creating a test release
Eventually running standard jobs augmented with
macros
will not suffice and then its time to write code
but to do that you need a
test release.
- Using Demojob
Demojob demonstrates many key features of our framework
and is a good place to start private code development.
- When you get stuck or want to know more
The build system is considerably more complex
than the old FORTRAN days and there are a number
of ways to get help solving errors.
WebDocs
is our off-line documentation base with pages on
every aspect of our code and with useful links into the wider
web
- Browsing the Code
if all else fails!
Go Back to the
The OO Companion Top Page
If you have any comments about this page please send them to
Nick West