Difference between revisions of "Analysis Actions"
From GlueXWiki
(→Setup and Execution) |
(→Reaction-Independent Actions) |
||
Line 10: | Line 10: | ||
== Reaction-Independent Actions == | == Reaction-Independent Actions == | ||
− | * Reaction-independent actions are actions that can be executed independently from the rest of the analysis framework. They do not depend on DReaction or DParticleCombo in any way. | + | * Reaction-independent actions are actions that can be executed independently from the rest of the analysis framework. They do not depend on <span style="color:#0000FF">DReaction</span> or <span style="color:#0000FF">DParticleCombo</span> in any way. |
− | * However, they can be added to DReaction objects and executed in sequence with the other DAnalysisAction objects. | + | * However, they can be added to <span style="color:#0000FF">DReaction</span> objects and executed in sequence with the other <span style="color:#0000FF">DAnalysisAction</span> objects. |
− | ** This can be used to histogram reaction-independent quantities for events that satisfy cuts on your DReaction. | + | ** This can be used to histogram reaction-independent quantities for events that satisfy cuts on your <span style="color:#0000FF">DReaction</span>. |
** E.g.: Histogram the track multiplicity for events that satisfy a kinematic fit confidence level cut. | ** E.g.: Histogram the track multiplicity for events that satisfy a kinematic fit confidence level cut. | ||
Line 32: | Line 32: | ||
=== Setup and Execution === | === Setup and Execution === | ||
* There are (or should be) three different constructors for reaction-independent objects: | * There are (or should be) three different constructors for reaction-independent objects: | ||
− | ** (const DReaction* locReaction, string locActionUniqueString = ""): Use this constructor if you want to add the action to a DReaction. | + | ** (const <span style="color:#0000FF">DReaction</span>* locReaction, <span style="color:#0000FF">string</span> locActionUniqueString = ""): Use this constructor if you want to add the action to a <span style="color:#0000FF">DReaction</span>. |
− | ** (void) and (string locActionUniqueString): Use these constructors when executing completely independently of any DReaction. | + | ** (<span style="color:#0000FF">void</span>) and (<span style="color:#0000FF">string</span> locActionUniqueString): Use these constructors when executing completely independently of any <span style="color:#0000FF">DReaction</span>. |
* The "locActionUniqueString" is used to distinguish the histograms between different instances of the same action. | * The "locActionUniqueString" is used to distinguish the histograms between different instances of the same action. | ||
− | ** For example, you may wish to create two sets of DHistogramAction_DetectedParticleKinematics histograms and have them filled under different scenarios. | + | ** For example, you may wish to create two sets of <span style="color:#0000FF">DHistogramAction_DetectedParticleKinematics</span> histograms and have them filled under different scenarios. |
** locActionUniqueString should only be left unspecified (== "") up to one time (per thread), and other instances should be assigned a unique, distinguishing string. | ** locActionUniqueString should only be left unspecified (== "") up to one time (per thread), and other instances should be assigned a unique, distinguishing string. | ||
Revision as of 15:51, 17 February 2013
Summary
- It is often desirable to place cuts and make histograms of the data in JANA prior to making a ROOT TTree.
- For example: data monitoring, cuts to reduce the # of kinematic fits, cuts on the pid or kinematic fit confidence levels, comparison of mass distributions before/after the kinematic fit, skim cuts, etc.
- DAnalysisAction objects enable users to easily integrate these tasks into an analysis: they encapsulate the setup and execution of a given action.
- These actions can be executed directly, but if they are added to the DReaction they will be executed sequentially by the DAnalysisResults_factory.
- Actions will be executed on a given DParticleCombo object until it fails a cut, after which the remaining actions won't be executed on that object.
- Many common actions have been pre-defined in DHistogramActions.* and DCutActions.*, located in sim-recon/src/libraries/ANALYSIS/
- Additional, custom actions can be created in any plugin.
Reaction-Independent Actions
- Reaction-independent actions are actions that can be executed independently from the rest of the analysis framework. They do not depend on DReaction or DParticleCombo in any way.
- However, they can be added to DReaction objects and executed in sequence with the other DAnalysisAction objects.
- This can be used to histogram reaction-independent quantities for events that satisfy cuts on your DReaction.
- E.g.: Histogram the track multiplicity for events that satisfy a kinematic fit confidence level cut.
Pre-defined Actions
- DHistogramAction_TrackMultiplicity: Histogram how many protons, pions, kaons, neutrals, etc. are reconstructed in each event.
- Note: For particle ID, it uses the matching to the thrown tracks if available (from DMCThrownMatching), and the PID FOM if not available.
- Note: You can histogram for different particle types by modifying the public dFinalStatePIDs variable before calling the function-call operator.
- DHistogramAction_ThrownParticleKinematics: Histogram the kinematics of the thrown particles, including momentum, θ, φ, vertex position, and vertex time.
- Note: You can histogram for different particle types by modifying the public dFinalStatePIDs variable before calling the function-call operator.
- DHistogramAction_DetectedParticleKinematics: Histogram the kinematics of the detected particles, including momentum, θ, φ, vertex position, vertex time, β, Δβ, and tracking FOM.
- Note: For particle ID, it uses the matching to the thrown tracks if available (from DMCThrownMatching), and the PID FOM if not available.
- Note: You can histogram for different particle types by modifying the public dFinalStatePIDs variable before calling the function-call operator.
- DHistogramAction_GenReconTrackComparison: Histogram the difference between the reconstructed and thrown track kinematics, including momentum, θ, φ, vertex position, and vertex time.
- Note: You can histogram for different particle types by modifying the public dFinalStatePIDs variable before calling the function-call operator.
- DHistogramAction_TOFHitStudy: Histogram the difference between the reconstructed and thrown TOF point information, including hit position, energy, and time.
- Note: This action does not work on REST data, as the generated TOF hits are no longer available.
Setup and Execution
- There are (or should be) three different constructors for reaction-independent objects:
- (const DReaction* locReaction, string locActionUniqueString = ""): Use this constructor if you want to add the action to a DReaction.
- (void) and (string locActionUniqueString): Use these constructors when executing completely independently of any DReaction.
- The "locActionUniqueString" is used to distinguish the histograms between different instances of the same action.
- For example, you may wish to create two sets of DHistogramAction_DetectedParticleKinematics histograms and have them filled under different scenarios.
- locActionUniqueString should only be left unspecified (== "") up to one time (per thread), and other instances should be assigned a unique, distinguishing string.
- Example:
//Define the actions (e.g., in plugin proccessor header file): DHistogramAction_TrackMultiplicity dHist_TrackMultiplicity; DHistogramAction_ThrownParticleKinematics dHist_ThrownParticleKinematics; DHistogramAction_DetectedParticleKinematics dHist_DetectedParticleKinematics; DHistogramAction_GenReconTrackComparison dHist_GenReconTrackComparison; //Execute the actions (e.g., in plugin processor evnt() method): //The histograms are created upon first-execution dHist_TrackMultiplicity(locEventLoop); dHist_ThrownParticleKinematics(locEventLoop); dHist_DetectedParticleKinematics(locEventLoop); dHist_GenReconTrackComparison(locEventLoop);