Runs experiments.
If nuThreads > 1 it runs them concurrently, i.e. individual runs are distributed to available threads. Therefore a unique task is defined by its algorithmName, instanceName and its runNumber.
If you have one algorithm called "myAlgorithm" and one instance called "myInstance", and you need to run "myAlgorithm" on "myInstance" three times with three threads then "myAlgorithm","myInstance",run1 runs on the first thread, "myAlgorithm", "myInstance", run2 on the second etc.
You can register whatever analysisTool you require by implementing and registering CalculationListener. Then your tool is informed just before a calculation starts as well as just after a calculation has been finished.
@see CalculationListener
@throws IllegalStateException if either no algorithm or no instance has been specified