Below we describe proposed fixes and small changes to the AIDA interfaces. Changes are based on our experience with current version of AIDA and attempts to extend it.
Missing method "reset()" must be included in ICloud interface.
In order to make profile and efficiency histograms, "String options" in "create…" method of ITupleFactory should be allowed to contain "type=profile" and "type=efficiency" strings.
An interface representing collection of points with errors, IXYData, should be included in AIDA.
It would be convenient for fitting and plotting purposes to be able to get value of a function without changing its internal state:
public interface IFunction
// Get value of the function without changing value of parameters
public double value(double point, double parameters);
There will be more about IFunctions in the Fitting Proposal section.
It looks convenient to be able to manipulate ITuples
- create new ITuple by applying
cuts to the original one, make one ITuple by combining several smaller ones:
public interface ITupleFactory
// New methods
public ITuple create(String name, String label, ITuple tuple, IFilter filter);
public ITuple create(String name, String label, String columns, ITuple tuple, IFilter filter);
public ITuple chain(String name, String label, ITuple set);
public ITuple merge(String name, String label, ITuple set);
"create" methods really create a new ITuple: copy data to a new place. "columns" is array of column names that will be copied to a new ITuple. Same functionality can also be provided by some external package (say hep.aida.util) by using already defined AIDA interfaces.
"chain()" makes a chain of ITuples with the same internal structure,
while "merge()" creates a union of columns from all ITuples in the
set. Exact rules how to do it must be defined. "chain()" and "merge()"
do not copy data, but rather provide a "wrapper" around existing
more flexibility is needed while making ITuple projections:
public interface ITuple
// New methods
// Need more "project" methods. Same with 2D and 3D histograms and clouds.
public boolean project(IHistogram1D hist, IEvaluator value);
public boolean project(IHistogram1D hist, IEvaluator value, IEvaluator weight);
public boolean project(IHistogram1D hist, IEvaluator value, IEvaluator weight, IFilter filter);