Mattione Particle Classes

From GlueXWiki
Revision as of 10:58, 20 June 2011 by Pmatt (Talk | contribs)

(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search

Current Class Structure

                                    DPhysicsEvent
                                         |
                               vector < DParticleSet >
                                  /      |       \
 vector < DVertex::shower_info_t >    DVertex     vector < vector < DVertex::track_info_t > > (one for each charged particle id)
                                    /    |    \
                                   /     |     \
  vector < DVertex::shower_info_t >    Misc.    vector < vector < DVertex::track_info_t > >
              /                \                                /         |           \
         DBCALShower       DFCALShower                tprojected    DTrackTimeBased    FOM


* DVertex::shower_info_t is a class that inherits from DKinematicData
* DVertex::track_info_t is a struct
* vector < vector < DVertex::track_info_t > > : for each DTrackCandidate there are multiple fit hypotheses, corresponding to different particle masses
  • Problems:
    • Storing final track information in DVertex subclasses is non-intuitive (especially the 2D track_info_t vector).
    • DVertex::track_info_t does not inherit from JObject: cannot add associated objects (DTOFPoint, etc.)
    • Cannot call JEventLoop->Get(DVertex::track_info_t) (No factories for the particles)
    • All neutral particles are assumed to be photons (could be neutrons, such as from Lambda decay).

Proposed Class Structure

                                             DPhysicsEvent
                                                  |
                                        vector < DParticleSet >
                                           /      |       \
                   vector < DNeutralTrack >    DVertex     vector < DChargedTrack >
                                             /    |    \
                                            /     |     \
                    vector < DNeutralTrack >    Misc.    vector < DChargedTrack >
                              |                                        |
          vector < DNeutralTrackHypothesis >             vector < DChargedTrackHypothesis >
           /             |             \                      /            |             \
 FOM, tprojected, DKinematicData, Particle_t         FOM, tprojected, DTrackTimeBased, Particle_t


* Particle_t is an enum defined in libraries/include/particleType.h that is used to store the particle id (values = Proton, PiPlus, etc.)
  * It uses the GEANT particle ID scheme. 

Notes on the particle (DChargedTrack, etc.) classes

  • Particle construction (creating the DChargedTrack, etc. objects) is still performed by the DVertex factory.
  • The particle objects (DChargedTrack, DChargedTrackHypothesis, DNeutralTrack, and DNeutralTrackHypothesis) will each have a factory so that they can be grabbed via JEventLoop->Get().
    • These factories would essentially call JEventLoop->Get(vector<const DVertex*>) to construct the particles, then return only the desired objects.
  • The particle objects (DChargedTrack, DChargedTrackHypothesis, DNeutralTrack, and DNeutralTrackHypothesis) will store the objects they are matched with (DBCALShower, DFCALShower, DTOFPoint, and DVertex) as associated objects.
  • One DNeutralTrackHypothesis would be generated for each combination of DVertex and mass hypothesis, each with a FOM.

Other Notes

  • In the proposed scheme DPhoton, DBCALPhoton, and DFCALPhoton would no longer be supported.
    • Would need to update associated programs (hdview2, ...?)
  • Simulations of the fractional energy deposited by neutrons in the calorimeters are needed to implement neutron energy reconstruction and identification.
    • In the meantime, neutron ID would be effectively disabled (FOM forced to zero)