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

  1. Access rates (online):
  2. Access rates (offline):
  3. Serial vs random access:
  4. Granularity of access: Row/column/element
  5. Foreign Input and Output Formats: Available via F, C, C++ API
  6. Specialized output formats: Available via F, C, C++ API

DATA ANALYSIS

    Scripting Language:

  1. 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.
  2. analysis tool's object model double precision matrices
  3. 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.
  4. express complex mathematical expressions That's what it does
  5. debugging facilities Yes, and profiling
  6. interface the scripting language to dynamically linked compiled high level languages Yes - scripting language can call .dll or equivalent
  7. User Control:

  8. control functions Yes
  9. Mathematical operations Matrix operations, ODE solvers, FFT's, curve fitting...
  10. 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.
  11. 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
  12. Data Selection:

  13. program selection criteria using extracted dataYes
  14. display selection criteria as text Yes
  15. Input/Output:

  16. support its own object I/O format. Yes - double[][]
  17. allow its own format object files to be read or written from compiled programs. Yes - std dll's produced
  18. read or write object files in foreign formats No
  19. write selected event objects to one or more output streams Yes
  20. object definition language and/or be able to define new object formats programmatically. Yes
  21. read events in one format, convert and write them out in a different format. Yes
  22. virtual streaming
  23. Numeric and Mathematical Functionality:

  24. accurate and precise numerical functionality, including double precision. Yes - default model
  25. Analysis capabilities applied to fetched data as well as subsequent renditions Yes
  26. Functions operating on multiple data sets Yes
  27. fit, parameterize, and calculate statistical quantities from data Yes - built-in hist, bar3(lego) functions, polynomial fits, error bar plot
  28. user control of fitting algorithms. Yes, or implement you own or use a library one pretty easily.

    Offline Compatibility:

  29. tailor the sequence of mathematical operations Yes
  30. ability to include external software in their analysis. As long as it eventually matches data model
  31. functionality of the analysis package linked into user defined code.
  32. Prototyping:

  33. 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
  34. Prototyped sequences contain the full interface of an arbitrarily complex version. Yes

DATA PRESENTATION

  1. Interactive visualization: Yes, with capability to write callbacks for additional functionality. Native "Handle Graphics". Also many advanced vis features - texture, lighting, ...
  2. Presentation quality graphical output: Yes - see demo
  3. 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

  1. Batch vs. interactive processing: Yes - licenses are cheaper too
  2. Sharing data structures:
  3. Shared access by several clients:
  4. Parallel processing (using distinct data streams):
  5. Debugging and profiling: Yes
  6. Modularity (user code): Yes
  7. Modularity (system code): N/A
  8. Access to source code: No
  9. Robustness: Seems good - error messages are precise, and the facility to trap and recover from errors in user code is present.
  10. Web based documentation: Yes
  11. Use of standards: N/A
  12. Portability: All platforms
  13. Scalability: Excellent
  14. Performance: Good
  15. User Friendliness: Outstanding