Jeremy's TODO List

NOTE: This is a set of miscellaneous TODO items. Anything like a bug or specific feature request should instead go into the SLAC Jira bug tracker.

Event Generation

    • setup on SLAC PRJ area (TB has existing setup)
    • generate new files for GeV = 350, 500, 1000 w/ TB (TB doing this)
    • setup on SLAC PRJ area
  • PPythia
    • apply Pandora patches to PandoraPythia in CVS
    • latest Pandora dist from Peskin into CVS
  • python "wrapper" framework
    • argument passing
    • f2py for composition and calling Fortran entry points

Sim Apps and Maintenance

  • SLIC
    • python bindings
  • Mokka
    • SLAC MySQL install for Mokka batch jobs using lsf
  • BDSim
    • setup at SLAC
    • support GDML from the MAD decks

Sim Jobs

  • Grid
    • SLIC jobs running on the Grid
    • need Grid certificate for ILC Grid (talk to Ties Behnke)
    • DAGS (Bala)
      • run analysis jobs interactively; requires no code changes
      • need to get setup at SLAC
  • SLIC
    • rangecut, steplen investigations with RC
    • ILC500 / 1000 jobs with SDJan03, SDFeb05 detectors
    • neutron
      • tungsten absorber
      • big R (question) for G10
      • polyethylene in front of gas
  • performance evaluation
    • SLIC vs. LCDG4
    • standalone singles and physics
  • comparison of SiD, GLD, D11
    • tubs models
    • Pflow
    • Eres


  • processing instructions
    • die on error
    • only process volumes to level X of hierarchy
    • enabling/disabling extensions
  • partial read/write
    • most subscribers can be used standalone for expressions library, solid database, material database, etc.
    • certain volumes in hierarchy e.g. MySubsys and all its daughters
    • to depth X in volume hierarchy
    • specific container elements, e.g. define, solid, etc.
  • support for XML Catalog
  • GDML Savannah Items
  • file inclusion and referencing
    • xs:include (e.g. preprocessor)
    • inter-file reference, ex - <materialref ref="MyMaterials.gdml#Flubber"/>
    • XLink
  • one file containing multiple GDML elements
    • remove requirement of a "world volume"
    • remove requirement for a "setup" element
    • which world volume to use should be specifiable as an external entity not within the current "gdml" tag
  • Java bindings
    • Julius Hrinivac's GDML Java classes and look at inclusion in GDML CVS, usage in org.lcsim
  • formal extension mechanism
    • register my "package" of processors and subscribers (for new elements)
    • register my new schema
    • register a new processor and/or subscriber
    • replace an existing processor (only one processor per element type)
    • replace an existing subscriber
    • put a new subscriber "behind" or "in-front" of some other subscriber
    • declare dependencies among subscribers
      • ex - volume subscriber requires all the other ones
  • merge different GDML files into one logical file, combining their container sections
  • common materials, elements include file (mostly for compact description) (see GeomConverter)
  • XSLT
    • extract the valid GDML from an LCDD file by stripping out LCDD's refs (sdref, etc.)
    • transform to VRML or other 3D format
    • make HTML page
      • summaries: #defines, # materials, #solids, # volumes, etc.
      • display volumes in tree view with links back to their solids/materials
  • AGDD features
    • arrays
    • iterators

Compact Detectors and GeomConverter

  • synchronize LCDetectors with
  • D11
    • model D11 in Mokka DB
  • GLD
    • prim constants from JLC
      • ParameterList files in JUPITER source
  • XSLT utilities for
    • info extrapolation to make super-compact description in HTML (use XSLT)
      • # layers, slice material and thickness
      • simplified side and beam views using XML -> SVG
  • Norman's requests
    1. verbatim include or reference to GDML for BDS, MDI system and supports
    2. abstract layering engine (mostly done though could use work!)
    3. "robustify" nonprojective segmentation (mostly done and GL working on this)
  • Tony's requests
    1. non-cylindrical shapes demo
    2. interface between org.lcsim and compact
    3. schema-fy compact description where possible
    4. new SDJan03 matching LCDG4's
    5. SiD repr w/ cylinders
    6. graphical repr of zip resources (constants, geo, etc.)
  • process compact description with stylesheet and produce
    1. beam and side views in SVG
    2. subdetectors w/ list of contants like slice thicknesses, num layers
    3. inlined comments
  • GeomConverter utilities in JAS
    1. tree viewer of geom data, all detectors
    2. default actions, like double-click on compact and get a HepRep view
    3. translate compact to lcdd (GeomConverter script now does this.)
    4. detector design whizard or GUI

Analysis and Reconstruction

  • geometry-independent clustering
    • using phi, theta, r
    • NN using global positions of hits (see "nearest point", "computational geometry", The Algorithm Design Manual)
  • NonprojectiveCylinder segmentation support (w/ GL)
  • continue discussions on common geo API with TJ, NG, GL, TB, FG, et al.
  • Run Control Parameter support with processor name as Java class w/o org.lcsim (see Marlin)
    • parameters with INI, attributes file, etc
    • simple list of processors and parameters
    • analysis manager loads the processors by org.lcsim.(package).(classname)
    • could be Python code
  • materials database (see online NIST data)
    • format could be GDML, another XML format, flat file, or database


  • ipython support via Jython
  • improve windowing
    • minimize, maximize
  • class browser
  • HTML help
  • customizable palettes of buttons rather than menus
  • write some new plugins (services, really!)
    • particle properties (YAPPI?)
    • materials
    • Geo / DD

Docs and WWW

  • www-lcsim
    • in sync w/ CVS
    • talk with TJ and NG about cleanup, autoupdate method, etc.
  • docbook
    • working XML, XSLT, FOP toolchain
    • talk with Dennis about setting up something for Geant4
  • move NICADD ~jeremy/ index/subpages to Confluence

Admin and MCPrj

  • create "mcprj" CVS module (help from TJ)
  • setup SLIC at NICADD


  • investigate component/plugin-based architecture for analysis and reco
    • make each component self-contained, "pluggable", and inspectable
  • checkout ROOT's VMC, VGM
    • writes GDML, AGDD
    • geometry from ROOT, Geant4
  • a python HepRep parser
  • python bindings to LCIO (using swig or boost)
  • experiment with a Java server
    • Tomcat (suggested by Tony)
    • MySQL
    • file catalog, linked histograms, simulation runs, etc.
  • LCIO/StdHep utilities (probably in Java)
    • actions
      • dump
      • concat (could perform better using low-level SIO block writing)
      • print number of events
      • print number of run headers
      • print start run number
      • print max run number
      • print start event number
      • print max event number
      • split
      • merge / overlay
      • select records
        • by criteria or number
      • transform records by some algorithm
      • convert records to another format by some algorithm

Current (Miscellaneous)

  • G4Java
    • test the navigator (for Mark)
  • GDML
    • examples for Julius (GraXML)
    • include mechanism in compact files (include GDML snippets)
    • CPP code generation
  • LCDD
    • xmlbeans for automatic code generation from schema
  • AGDD
    • generate via ROOT (but requires VMC)
  • GraXML
    • look at geometry framework, using in JAS
  • jobs
    • effect of splashback in the tracker (run events with and without calorimeters)
    • effect of pileup in the tracker (previous events)
  • No labels


  1. Instead of IPython and Jython (which might be pretty far away), there are some other projects that provide interactive consoles with code-completion for Jython:

    This one looks promising:

    Used by Eclipse:

    And another one: 

    In principle, with the JRuby developers now being employed by Sun and with the growing popularity of Ruby among Java developers, adding Ruby support might also increase the user base of JAS.

    1. Just found this:

      Claims to be close to ipython and is implemented in Swing. No Idea about the feasibility of this, though.

      1. Once you have used ipython a lot, other command shells may start to seem rather primitive. =p

  2. hehe, once you have used python a lot, other languages may start to seem rather primitive, too...