First check Algorithms to see if they have explicit circular data dependencies (ie both read and write DataHandles have been declared for the same object). This is an error condition.
Also, adds a boolean Property (
FilterCircularDependencies) to Algorithm to selectively
filter out circular data dependencies that may have been inherited from child
AlgTool. After the full set of data dependencies of the Alg and its AlgTools
have been assembled by the DataHandleHolderVisitor, check again for circular
dependencies. If the Property is set True, cirular deps will be filtered out
by removing the Input dep. A WARNING will be issued. If set False, an ERROR
will be printed, and Algorithm::initialize() will return a StatusCode::FAILURE.
Current default for the Property is True. This should be changed to False in the future.