JAPAN/Data Handler

From PREX Wiki
Jump to: navigation, search

The JAPAN Data Handler classes are used to perform first pass analyses on the raw data as it is being decoded that then get stored in ROOT tree branches


Analysis Structure

  • The Parity/main/QwParity.cc main function keeps track of the components in the analyzer and generates the ROOT output. This class, which also serves as the main() function, is responsible for the data that gets used by Data Handler components to allow for further user configurable (.map file) analyses.
  • The Parity/include/VQwDataHandler.h class was introduced in Pull Request 57 by Paul King from the QWeak Analyzer.
    • This class acts as a base class to all regression based classes which inherit from it.
    • Parity/include/QwHelicityPattern.h constructs the objects for the different data handlers
      • Line 235 in Jan-30th Develop defines the existing instances of these data handlers: "QwCorrelator correlator; LRBCorrector regress_from_LRB; QwCombiner regression; QwCombiner running_regression;"
    • Parity/include/QwParityDB.h and Analysis/include/QwParameterFile.h defines the .map file methods and variables, and these are accessed in the Data Handler maps too.
    • Child classes, which are also all friended with Parity/include/QwSubsystemArrayParity.h that contains the methods that actually manipulate data (define the mathematical functions available for user configuration files to implement):
      • QwCombiner
      • QwCorrelator
      • LRBCorrector
  • The goal for Pull Request 61 is to allow for a user defined (.map or .conf file at runtime) initialization of multiple data handlers, instead of the hardcoded behavior shown in line 235 of Parity/include/QwHelicityPattern.h (as well as hardcoded references to these data handler sub-class instances in the QwHelicityPattern.cc file and Parity/main/QwParity.cc)
    • This will require creating a new method that searches for an arbitrary number of user command line passed options, in addition to or instead of the constructor methods of each data handler type individually requesting a single chunk of exclusive options.
  • We should make a temporary set of hook methods that do the hardcoded behavior and replace the lines of code with calls to those methods (inside the helicity pattern class).
    • But be careful about the structure of root file handling in Parity/main/QwParity.cc (treerootfile->FillTreeBranches(helicitypattern.return_regression());)