Analysis DParticleCombo

From GlueXWiki
Revision as of 16:29, 18 February 2013 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 particle types, but in the same order.
  • DParticleCombo: Contains a possible combination of DParticleComboStep objects for a reaction, along with a pointers to the corresponding DReaction and (optional) 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: PID cuts are not applied by default: they must be enabled/performed by the user.
    • 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

Versions

  • There are two different versions of DParticleCombo objects: pre-kinematic fit and post-kinematic fit.
  • Accessing pre-kinematic fit DParticleCombo objects:
vector<const DParticleCombo*> locParticleCombos;
locEventLoop->Get(locParticleCombos, "PreKinFit");
  • Accessing post-kinematic fit DParticleCombo objects (if no kinematic fit was specified in DReaction, these are identical to the pre-kinematic fit combos):
vector<const DParticleCombo*> locParticleCombos;
locEventLoop->Get(locParticleCombos);

Particles

  • Particle data is contained in either DChargedTrackHypothesis, DNeutralParticleHypothesis, DBeamPhoton, 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.
    • In DParticleCombo objects grabbed from the default (no tag) factory, the kinematic data is stored in the "default" members (dFinalParticles and dInitialParticle) and the measured data is stored in the "measured" members (dFinalParticles_Measured and dInitialParticle_Measured).
    • In DParticleCombo objects grabbed from the "PreKinFit" tag factory, the measured data is stored in the both the "default" and the "measured" members.
    • To access these particles, call DParticleComboStep functions such as: Get_InitialParticle(size_t), Get_InitialParticle_Measured(size_t), Get_FinalParticle(size_t), Get_FinalParticle_Measured(size_t)
  • 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).