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.
1.
Cloud
Missing method "reset()" must be included in ICloud interface.
2.
Histogram
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.
3.
IXYData
An interface representing collection of points with errors,
IXYData,
should be included in AIDA.
4.
IFunction
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.
5. ITuple
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.
Method
"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
ITuples.
Also
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);
}