-
Notifications
You must be signed in to change notification settings - Fork 38
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Refinement of relations between Vertex
and ReconstructedParticle
#320
Comments
Another option that we (BH, JMC, FG) currently would favor, is to add the reco particles to the vertex as suggested above - but have no Vertex association in the RecoParticle. |
In that suggestion, would the particles attached to the Vertex also be duplicated to the ReconstructedParticle that can be reconstructed from the ones attached to the Vertex? Should we then also add a vertex position (+ cov matrix) to the |
The following is a summary of discussions with @gaede and should serve as a basis for further discussion and some process documentation for the solution that is chosen at the end.
Currently the
Vertex
has a one-to-one relation to aReconstructedParticle
(associatedParticle
) and theReconstructedParticle
has an association has a one-to-one relation to aVertex
(startVertex
):Vertex
relations:EDM4hep/edm4hep.yaml
Lines 563 to 564 in bd9f450
ReconstructedParticle
relation:EDM4hep/edm4hep.yaml
Lines 591 to 596 in bd9f450
The rationale in LCIO (where this originates from) was that the
associatedParticle
is the incoming particle that decays at theVertex
it is attached to and that theparticles
that are attached to thatReconstructedParticle
are the outgoing particles from the vertex (i.e. the decay products). This has some (arguably partially biased by personal preferences) drawbacks:An alternative approach would be to have the following
Vertex
(relation) definitionand a slightly changed
ReconstructedParticle
This would lead to a slightly more intuitive definition (IMHO), and it would decouple the vertex finding / fitting from the creation of the incoming particle.
From a practical point of view the current definition and the proposed definition are effectively equivalent in what can be represented with them. However, the newly proposed definition allows for a slightly leaner "implementation".
Case 1: Simultaneous vertex finding / fitting and high level reco
Consider the case where we have

RecoParticles
collection that serve as inputs to the Vertex finding / fitting, which in this case also directly does some high level reconstruction. Assume that the outputs are aVtxColl
and aHLRecos
collection containing the vertices and the corresponding particles that decayed at the vertices. The situation then looks like this for the two cases (red for current, green for proposed)In this case the two solutions are more or less equivalent, the major difference being the access to the decay particles from the high level reco particles:
hlReco.getParticles()
hlReco.getDecayVertex().getParticles()
which could be made completely equivalent if we also populate the
particles
of the high level reconstructed particles, duplicating that information.Case 2: Split vertex finding / fitting and high level reco
Consider now the case where we want to split vertex finding / fitting and the subsequent high(er) level reconstruction, e.g. in order to allow multiple of these reconstructions to run. We start from the same as above: a
RecoParticles
input collection to the vertexing, this case only producing aVtxColl
(as desired output).In this case the proposed solution effectively looks like Case 1, only that we omit also producing the
HLRecos
collection. On the other hand the current implementation requires us to create an "intermediate"VtxParticles
collection that effectively only acts as a container for all the decay products, because we cannot directly attach them to theVertex
. This means that we have to effectively carry around two collections now to have access to the same information as with the new proposal. Additionally, the access to the decay products from the high level reconstructed particle looks works like thishlReco.getVertex().getAssociatedParticle().getParticles()
hlReco.getDecayVertex().getParticles()
which could again be made equivalent by populating the
particles
of the high level reconstructed particles, duplicating that information.Other considerations
Vertex
would be a convention rather than a strict requirement (as also touched on in the cases above)Potentially even further reaching proposals
ReconstructedParticle
(s) entirely from theVertex
, effectively making it a container only for fit quality and position information.Vertex
into theReconstructedParticle
, similar to the situation on theMCParticle
sideBoth of these would require quite a bit of conceptual work especially in the conversion.
The text was updated successfully, but these errors were encountered: