FMS cluster/photon StRoot code pre-review roundup

After much work, the StRoot FMS cluster/photon code is nearly ready for review. This code takes the cluster-finding and photon-fitting algorithms from the PSU package and incorporates them into a STAR maker, StFmsPointMaker, that runs in a BFC chain. Features include:

  • A fairly small body of well-documented code: StFmsPointMaker is ~2,800 lines, of which ~1,600 is code and ~1,200 comments.
  • Population of StEvent and StMuDst data structures with FMS clusters and photons.
  • Persistent cross-referencing between photons, clusters and hits.
  • Adherence to all the STAR code requirements, as explained here drupal.star.bnl.gov/STAR/comp/sofi/soft-n-libs/standards.

Everyone is welcome and encouraged to look at the code and provide feedback. However please try to do so soon, as I would now like to proceed rapidly through the STAR software review process, concluding it before I leave in August. In addition, I would appreciate help from 2-3 people to finish off some remaining tasks that need to be done before the review.

For everyone: code to look at

Please provide feedback on any and all features of the code - suitability, readability, naming etc. It is hosted on github github.com/yuxip/fms. Instructions for dowloading are in my previous post: drupal.star.bnl.gov/STAR/blog/tpb/overview-stroot-fms-clustering-code-reviewers. There are three main things to look at.

1 - StFmsPointMaker

This includes both code develoed from the PSU package, as well as the actual maker itself. The current version is here: github.com/yuxip/fms/tree/15c4bf2181366bb7b1a3818aad1e693469388696/StRoot/StFmsPointMaker

2 - StEvent

StFmsPointMaker now fills clusters and points in StEvent. The FMS data model was originally posted by Jingguo here: drupal.star.bnl.gov/STAR/subsys/fms/software/fms-data-model-steventstmudst
We largely followed that, with some slight changes. Here is what is currently implemented:

There have been no changes to the FMS hit class, StFmsHit.

3 - StMuDst

A stripped-down version of the StEvent clusters/points is propagated to the muDST. Here is what is currently implemented:

There have been no changes to the FMS hit class, StMuFmsHit.

For helpers

Please let me know if you are able to help. An overview of the work still on the to-do list is below.

1 - Outstanding code issues

We are using the github project to track issues; see github.com/yuxip/fms/issues. Most of these are simple code tweaks and clean-ups, though some may require more discussion.

2 - Documentation for reviewers

My previous blog post (linked above) gives an overview of the code and basic examples for running it. I would also like a page summarising how the clustering and photon fitting works in general terms i.e. the idea behind the procedures, rather than the details of the code. This would serve to orient the reviewers, and also be useful documentation for us in future. There are a number of pages on drupal, many listed here drupal.star.bnl.gov/STAR/blog/heppel/2011/jun/08/shower-shape-table-contents, but I think a single page describing how it all works will be more helpful (it can draw info from the pages listed there).

We should also generate Doxygen documentation for the code to aid the reviewers in navigating it. This may involve adding some additional Doxygen-style comments, though I have already used them quite liberally.

3 - "Test stand" for reviewers

There are already some example macros available for testing the code. These should be expanded and polished, some example output files generated, and a README written to guide the reviewers through what to run and what to expect the output to be.