|
|
Line 34: |
Line 34: |
| [[Image:Mattione_Study_b1pi_InvMass_X2000.gif|thumb|left|400px]] | | [[Image:Mattione_Study_b1pi_InvMass_X2000.gif|thumb|left|400px]] |
| <br style="clear:both;"/> | | <br style="clear:both;"/> |
− |
| |
− | == Classes ==
| |
− | === Current Class Structure ===
| |
− | <pre>
| |
− | 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
| |
− | </pre>
| |
− |
| |
− | * 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 ===
| |
− |
| |
− | <pre>
| |
− | 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.
| |
− | </pre>
| |
− |
| |
− | ==== 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)
| |