AIDA user requirements and wish list: ------------------------------------- o Don't change the Interfaces with every release. o Define release policy and software process o Histograms have a pointer to their Factory - used for projections and slicing (to be added) forwarding to the factory - increment (adding another IHistogram to *this) - adding other IHistogram and returning new - other arithmetic operations o Create namespace AIDA (v.3) o AIDA binding to Python - __string__() to be meaningful for users (nbin, ...) - including user-convenience methods transforming from/to Python native types. Ad hoc "examples": class ITree : def __init__ (self) : ... def findH1D(self, path): ... class IHistogram1D : def toPyList(self): x = [] y = [] ... return x, y, ex, ey h1d.binHeight(i) h1d.binHeights()[i] h1d.label() ((( h1d.label using __getattr__ ???? ))) [mean, rms, ..., x, y, ex, ey] = h1dToPy(IHistogram1D hist) o Discriminate between Histograms (statistics) and Vectors of Points (and convert from IHist to VoP, not vice versa) o To create Objects without management, Factories can be created without management (Tree) o "Easier" for user to create Objects without explicit referencing to Factories o Define developer level interfaces to allow mixing of implementations o HistogramFactory has a pointer to a "creational" Factory (which may also deal with the management (in an expt. specific way) - used for the histo-operational methods o Tree: (global) state (cwd) is bad. o simplicity for users, while preserve flexibility on the implementation ("hbook(10,"foo",50,0,50) for users, IHistoFactory for developers) o