
There are 3 different main functions, in 

AnalysisFramework/main.cc_1
AnalysisFramework/main.cc_2
AnalysisFramework/main.cc_3

they differ in the handling of the event reading loop:
- in the first one the read loop is executed inside the main function,
  the completion of each analysis threads is then waited, if necessary,
  through the call to the "get" function of the associated "std::future"
  to retrieve the number of processed events
- in the second the read loop is executed inside a separate thread,
  the completion of each analysis threads is then waited in the same way
  as before
- in the third the read loop is executed inside a separate thread,
  the number of processed events by each thread are printed out as and when 
  they complete

to compile copy one of those main files to main.cc and issue the command:

compile

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

to run:

runAll input particle_events.dat [dump] [stat] [hist h.root] [threads 3]
or
runAll sim 100 [seed 234] [dump] [stat] [hist h.root] [threads 3]
(to simulate 100 events with random seed 234)
Square brackets indicate optional arguments.

other executables are produced:
runDump   - executable with the capability to dump events only
runStat   - executable with the capability to compute pt means/rms only
runHist   - executable with the capability to reconstruct B decays only

