MPI: Timestamps: move qint64 -> long long.
MPI: Renamed Group to LocalGroup.

Should give better consistency with other references to "local group" in
the code.

As a reminder: Local group is the group consisting of one reader and
it's associated consumers.
MPI: Improve initialization, memory consumption and checks.

Massively speed up the initialization phase for MPI jobs. Now only the
ACQt files which will later be sent to the consumers are read by each
reader.

Siginificantly reduced memory consumption per process in case time
histograms are used.

Checks for final number of processed events have been greatly simplified
and are more efficienct now.

Details:

- Added MPI communicators for all readers and all consumers. Only one of
  these will be constructed per process, depending on the type of
  process (reader or consumer)

- After reading the number of events for their sublist readers sum the
  global total number of events and synchronize that number among each
  other. The summing is done with MPI_Reduce, which simplifies the code
  and is very efficient.

- First and last event timestamps are NOT synchronized at the
  moment (although it would be easy to do). Therefore, time histograms
  will only stretch from the first to the last event time for the local
  group! This greatly reduces memory consumption for each process. Time
  histograms can be merged later, resulting in one large histogram at
  that time, but not before.

- The final check for the total number of events was greatly simplified
  and should be more efficient due to the use of MPI_Reduce on all
  consumers combined with a single message to the master process.

Outlook:

Code could be simplified even more if we don't communicate between
different local groups at all. We don't need to know the total number of
events globally (exception: INFO_OUT statement with this number is nice
to have...).

In that case all readers could check their respective consumers to see
if they processed all events. Combining all these checks logically would
yield the same result. However, these are details and will not change
the global performance of the code.
MPI: Clarify code by use of FirstConsumerTask().
Simplify standard checks on ConfigHandler in programs.

Use PerformChecksAfterOptionParsing() in all programs where possible.

The function no longer needs argc, which is now cached in ConfigHandler.
Enable tab-completion features of zsh for ACsoft.

Get a list of options for all ACsoft programs at a
press of the tab key.

In order to use the tab-completion features:

  - use the zsh
  - add the following lines to your .zshrc:
   fpath=($HOME/.zsh_completion $fpath)
   autoload -Uz compinit
   compinit

  - run the following script once:
   $ACROOTSOFTWARE/scripts/make_completion_scripts
  - open a new shell

Have fun!
Suppress nasty warnings on HPC.
Try to treat options that expect a file correctly.
MPI: Added function to get total number of files.

Also added member variables for fTotalEntries and fTotalNumberOfFiles.

This commit fixes the INFO_OUT_ON_MASTER line which stated how many
entries and files were added. (nFiles was previously just the local
number of added files)
Hotfix: Fix crash with ECALShower::DepositedEnergyInMeV() for old files.

In 5.8.0 ACQt files do not contain the fDepositedEnergies vector, so
it mustn't be used for those files.
Hotfix: Fix accessors for BDTv4 and ESEv3.

Order of estimators changed from ACQt 5.8.0 to 5.9.0, so we now need to
look in different places in the estimator vector.

Also unitized dummy return value in case there is no estimator
available. It should now be -999.9 everywhere.
Hotfix: Turns out the Ecal ESEv3 accessor was wrong already for 5.8.0.

Looking at the producer code for 5.8.0 the ESEv3 value was stored in
index 2 and not in index 1. This is confirmed by dumping the values in a
few events in 5.8.0 and 5.7.0 files.
Hotfix: ECALShower: Restore accessors for fTheta and fPhi for 5.8.0.

The functions Theta() and Phi() were returning values which are only
available in 5.9.0. For 5.8.0 we still want to be able to access the
values stored in those files.
Give user flexibilty where to store completion files.

Also rename ACSOFT_COMPLETION variable to ACSOFT_ZSH_COMPLETION.

refs #1394
Exit when ACSOFT_ZSH_COMPLETION does not exist.

Instead of creating random directories let's be safe and just exit the
script.
Fixed documentation of --write-completion-script.
Added help text to completion script.
Automatically create the programs which support tab-completion.
Merge branch 'tab_completion' into dev

Signed-off-by: Bastian Beischer <beischer@physik.rwth-aachen.de>
MPI: Move parsing of config options out of MPIEnvironment's constructor.

Problem was that --MPI/xxx options only appeared in program --help and
in tab-completion script if the program was started with mpirun. This is
not very useful: You want to get these options even if you don't run the
program in mpirun, otherwise you can't do things like this:

produce_alignment_histograms --help

Now the options are always parsed, but the MPIEnvironment is still only
created if you're running your program with mpirun.