Run II Physics Analysis Software Requirements Checklist for MATLAB
Disclaimer - This report contains a combination of fact,
observation, and opinion. It is our best understanding of the
situation under our particular circumstances, and is not
guaranteed to be correct or to apply to conditions other than
those under which the evaluation was made. It is for the use of
the Fermilab / HEP community only.
DATA ACCESS
- Access rates (online):
- Access rates (offline):
- Serial vs random access:
- Granularity of access: Row/column/element
- Foreign Input and Output Formats: Available via F, C, C++ API
- Specialized output formats: Available via F, C, C++ API
DATA ANALYSIS
Scripting Language:
- full featured scripting language Yes. MATLAB has its own scripting language which is
complete and includes looping, arg passing, and "capture" capabilities. These can be stored in .m files using a history
capture mechanism or the built-in editor.
- analysis tool's object model double precision matrices
- extract data from events Yes - commands to extract rows, columns, elements. It is also possible to have C structures in the arrays, so variable lengths are available.
- express complex mathematical expressions That's what it does
- debugging facilities Yes, and profiling
- interface the scripting language to dynamically
linked compiled high level languages Yes - scripting language can call .dll or equivalent
User Control:
- control functions Yes
- Mathematical operations Matrix operations, ODE solvers, FFT's, curve fitting...
- Results of analysis available to users At any point - rows/columns can be stored to
their own variables or printed out from the current array.
- command line recall and interacive command line editing. Yes. Full command line editing,
with good editor (NT version) to save work. Both the command line editor and the command file editor have Win32 controls (ctl-C -
ctl-V). Win32 version provides DOS directory traversal
Data Selection:
- program selection criteria using extracted dataYes
- display selection criteria as text Yes
Input/Output:
- support its own object I/O format. Yes - double[][]
- allow its own format object files to be read or written from compiled programs. Yes - std dll's produced
- read or write object files in foreign formats No
- write selected event objects to one or more output streams Yes
- object definition language and/or be able to define new object formats programmatically. Yes
- read events in one format, convert and write them out in a different format. Yes
- virtual streaming
Numeric and Mathematical Functionality:
- accurate and precise numerical functionality, including double precision. Yes - default model
- Analysis capabilities applied to fetched data as well as subsequent renditions Yes
- Functions operating on multiple data sets Yes
- fit, parameterize, and calculate statistical quantities from data Yes - built-in hist,
bar3(lego) functions, polynomial fits, error bar plot
- user control of fitting algorithms. Yes, or implement you own or use a library one
pretty easily.
Offline Compatibility:
- tailor the sequence of mathematical operations Yes
- ability to include external software in their analysis. As long as it eventually matches data model
- functionality of the analysis package linked into user defined code.
Prototyping:
- prototyping of simple versions which can later be expanded upon. Yes - major strength.
These .m files are simple to write, can be combined/split/changed to code
- Prototyped sequences contain the full interface of
an arbitrarily complex version. Yes
DATA PRESENTATION
- Interactive visualization: Yes, with capability to write callbacks for additional
functionality. Native "Handle Graphics". Also many advanced vis features - texture, lighting, ...
- Presentation quality graphical output:
Yes - see demo
- Formal publication of graphical output: Yes.
There also exists the capability to save the graphics in a native .m file for inclusion later. Printing can be in
mono/color, level1/level2, eps/ps, Adobe Illustrator illustration file. There is an "online Notebook" feature using MS Word
USABILITY
- Batch vs. interactive processing: Yes - licenses are cheaper too
- Sharing data structures:
- Shared access by several clients:
- Parallel processing (using distinct data streams):
- Debugging and profiling: Yes
- Modularity (user code): Yes
- Modularity (system code): N/A
- Access to source code: No
- Robustness: Seems good - error messages are precise, and the facility to trap and
recover from errors in user code is present.
- Web based documentation: Yes
- Use of standards: N/A
- Portability: All platforms
- Scalability: Excellent
- Performance: Good
- User Friendliness: Outstanding