GlueX Analysis Software

From GlueXWiki
Jump to: navigation, search


This page is for analysis within the halld_recon framework, not within DSelectors.


  • In their plugin, a user specifies the reaction(s) they want to study (DReaction), along with the histograms and cuts to perform (if any) (DAnalysisAction), then just asks JANA for the results (DAnalysisResults).
  • These results can then be saved to a ROOT TTree (DEventWriterROOT), or can be used to make a physical REST skim (DEventWriterREST).
  • Through this process, the program creates all possible particle combinations for the desired reaction (DParticleCombo, kinematic fits the event to the reaction (if requested) (DKinFitResults), and creates a new (DParticleCombo) with the new kinfit information.
  • The DAnalysisAction objects encapsulate the setup and execution of an action (e.g. cut, histogram) into a single object.
    • Many common actions are predefined in DANA (see libraries/ANALYSIS/DHistogramActions.h and libraries/ANALYSIS/DCutActions.h), but the user can write custom ones for their analysis in their plugin.
  • The DAnalysisResults objects indicate which DParticleCombo objects have passed/failed the DAnalysisAction cuts for each DReaction.

Super Quick Start

  • See talk about using the ReactionFilter plugin to define channels on the command line and produce ROOT Trees automatically.

Manual Quick Start

  • Do not use any of this for DSelector work.
  • Use the perl script (it is installed to $PATH) to create a new plugin for your analysis.
    • Execute the script with no arguments for usage instructions. A minimum of one argument is required (the plugin name).
    • It is recommended that you run either script with unique names as the arguments. That way this plugin can be executed with other analysis plugins simultaneously.
  • Use the perl script (it is installed to $PATH) to create any desired custom DAnalysisAction objects for your analysis.
    • See existing analysis actions in sim-recon/src/libraries/ANALYSIS/DHistogramActions.h and sim-recon/src/libraries/ANALYSIS/DCutActions.h for examples.
  • In DReaction_factory::init(void), create a DReaction object (with a unique name!) for each analysis you want to perform, specify the kinematic fit type for it, specify the DAnalysisActions for each, and add them to _data.
    • The DAnalysisAction objects are executed sequentially for each possible particle combination (DParticleCombo) matching the given DReaction, until it fails a cut.
    • If more than one DAnalysisAction object of a given type is used in a DReaction, all of their constructors must be called with a unique identifier string (including the default "").
    • More details on analysis actions in sim-recon/src/libraries/ANALYSIS/: DAnalysisAction.*, DHistogramActions.*, DCutActions.*
  • Setup the DEventProcessor (e.g. grab results, save output to ROOT, etc.).
  • Compile and run hd_root with your plugin (preferably on REST data).

Known Issues

Missing Features

  • Other beam particles than γ (e.g. KLong) is not yet supported.
  • Missing beam particles is not yet supported.
  • Colliding beam particles is not yet supported.
  • Two missing final state particles is not yet supported.
  • Spacetime kinematic fit constraints are not yet supported.

ANALYSIS/PID Libraries: Minor Software Issues

  • PID/Detector-Matching:
    • Several variables in DDetectorMatches are not yet calculated, are set to 0.0 (e.g. BCAL dx, correlations, variances, etc.)
    • For PID Timing FOM calculation, hard-coded values/functions are used for the uncertainties, rather than the covariance matrices.
    • For PID dE/dx FOM calculation, the variance is hard-coded from a MC study.

More Information


Note: Start with the most recent presentations first. They are a bit black-boxy, but as you go back in time, the black box is gradually opened and more and more details are shown. If there are any contradictions between two talks, the most recent talk is the one that is currently correct.