Analysis DParticleCombo

From GlueXWiki
Revision as of 06:46, 3 November 2017 by Pmatt (Talk | contribs) (Creation)

Jump to: navigation, search

Summary

  • Located in sim-recon/src/libraries/ANALYSIS/
  • DParticleComboStep: Contains a possible combination of particles for an interaction or decay step in a reaction.
    • DParticleComboStep nearly mirrors DReactionStep, containing particles instead of PIDs, but in the same order.
  • DParticleCombo: Contains a possible combination of DParticleComboStep objects for a reaction, along with a pointer to the corresponding DKinFitResults.
    • DParticleCombo nearly mirrors DReaction, containing DParticleComboStep objects instead of DReactionStep objects, but in the same order.

Creation

  • Any detected +/-/neutral particle can be any of the desired +/-/neutral particles in the DReaction: find all possible combinations.
    • This is regardless of PID: Only loose PID cuts are applied by default.
    • Note: If a DChargedTrack has hypotheses with different charges, tested as both + and -.
      • This can happen if the track reconstruction flips the sign of one of the hypotheses, but not the others.
  • There can be (very, very) many DParticleCombo objects for a single event: user should apply cuts to remove the (combinatoric) background combinations.
  • Select, built-in cuts can be enabled in both the DReaction and the command line to reduce the number of DParticleCombo objects created. These are detailed at DReaction Control Variables

Particles

  • Particle data is contained in either DChargedTrackHypothesis, DNeutralParticleHypothesis, DBeamPhoton, DMCThrown, or DKinematicData (for reconstructed missing or decaying particles) objects.
    • However, all of these objects are stored in DParticleComboStep as pointers to DKinematicData. If you want the DBeamPhoton, etc. objects, you need to cast them back that type.
  • Both the measured data and the kinematic fit data are accessible from these classes.
    • The measured data can be accessed by calling the Get_InitialParticle_Measured and Get_FinalParticle_Measured(size_t) functions on a particle combination, regardless of whether it came from the default factory or the "PreKinFit" tag factory.
    • The the Get_InitialParticle and Get_FinalParticle(size_t) functions return the Measured/Kinfit data on objects from the default/"PreKinFit" tag factories.
  • The source objects (DChargedTrack and DNeutralShower) are accessible by calling DParticleComboStep::Get_FinalParticle_SourceObject(size_t).
    • These objects are returned as type const JObject*, and may be cast to either DChargedTrack or DNeutralShower as appropriate.
  • Particles that are missing or are decaying may have NULL pointers stored for the objects.
    • The source and measured pointers will be NULL, and the "default" pointers will be NULL unless they are constrained by the kinematic fit (e.g. resonances are not constrained, but a Λ or a missing recoil proton will be).

Comparing Particles Between Combos (and/or Reactions)

  • To know whether a particle in one DParticleCombo is the same physical track/shower as a particle in another DParticleCombo, you cannot directly compare the particle-object pointers. This is because the specific instances of these particles are likely unique to their combinations.
  • Instead, you need to compare source objects (see above section).
  • Note that these source objects (DChargedTrack and DNeutralShower) are PID-agnostic.