Implementation of Isolation for Run 3
As discussed during the WP3 meeting (https://indico.cern.ch/event/1195028/), some aspects related to the current implementation of Isolation tools for Run 3 have already been covered and some other are still missing or under development.
This issue aims at reporting the current status of the implementation of the isolation algorithm for Run3 and how to get the isolation variables for offline analysis:
-
Currently, an algorithm, named WeightedRelTableAlg
, has been developed to save extra tracks or neutral objects from the event. An example of the algorithm application is presented as follows:
@configurable
def extra_outputs_for_isolation(name, ref_particles, extra_particles,
selection):
"""
Save TES locations in extra outputs based on selection of extra particles information
Args:
name: Name of the TES location to store extra particles
ref_particles: Containers of reference particles
extra_particles: Containers of extra particles
selection: Expression to select combinations
"""
RelTableAlg = WeightedRelTableAlg(
InputCandidates=extra_particles(),
ReferenceParticles=ref_particles,
Cut=selection)
RelTable = RelTableAlg.OutputRelations
selection_to_persist = SelectionFromWeightedRelationTable(
InputRelations=RelTable)
extra_outputs = [(name, selection_to_persist.OutputLocation)]
return extra_outputs
An application example can be found here (thanks @rjhunter!)
The algorithm receives as input the ReferenceParticles
(i.e. particles of your decay) and InputCandidates
(i.e. extra particles from the event that should be stored) and returns as output an object of type Relation1D<Particle, Particle>
that associates a given reference particle to the extra particles satisfying the Cut
expression.
-
The expression specified in the Cut
predicate is applied to both sets of input particles (ReferenceParticles
andInputCandidates
), therefore binary functors, i.e. functors that receive two inputs, could be used to select particles. Examples of this kind of functors are listed here: - DPHI, DETA, DR2
- COMB_MASS
- SHARE_BPV
- SHARE_TRACKS
- FIND_IN_TREE
- RPPVIPCHI2
Through functors' composition it could be possible to make a selection either on the ReferenceParticles
set (Functor @ FORWARDARG0
) or on the InputCandidates
set (Functor @ FORWARDARG1
).
-
To get information from the output relation table which associates reference particles with selected extra particles it is possible to use combined functors based on the RELATIONS
functor. Some examples of functors that reads-back from the relation table are listed as follows: -
MAP_INPUT, MAP_INPUT_ARRAY, MAP_INPUT_SIZE, MAP_WEIGHT
-
SUMCONE, MAXCONE, MINCONE, ASYM
-
Particle (track and neutral) isolation variables are currently implemented as functorcollection
(see here) -> Update Analysis!996 (merged) -
Vertex isolation variables are under implementation as functorcollection
(related open MR: Rec!3090 (merged), Analysis!913 (merged), DaVinci!741 (merged)) -
Additionally, for isolation purposes it is necessary to remove from the selected extra particles those that belong to the decay. For this purpose, it has been developed functors which recognize whenever a particle belongs to the signal decay Rec!3441 (merged) -
To be checked how to persist from online the information carried by the relation table output from the WeightedRelTableAlg
algorithm -> Development of an algorithmSelectionFromWeightedRelationTable
which retrieves a persistable object (LHCb::Particle::Selection
) to compute offline the isolation -
Different physics groups are interested in the implementation of isolation to improve the online/offline selection. At which stage could it be optimal making this selection? Is it possible to generalize part of the implementation for applying to different lines -
for RD: !2147 (merged)
-
for Charm: !2420 (merged)
-
for QEE: already implemented cone isolation requirements in
Hlt2QEE_SingleHighPtMuonIsoLine
, with new feature of signal removal in !2398 (merged) -
Possible other applications besides the isolation. -
Define the best way to document the work -> Discussion in #602
Any feedback and comments are appreciated!
Feel free to tag any relevant person to discuss it
cc: @poluekt, @mvesteri, @erodrigu, @pkoppenb, @graven, @cmarinbe, @fpolci